ngx-histaff-alpha 4.5.4 → 4.5.6
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.
|
@@ -47,7 +47,7 @@ export class CoreCheckboxComponent extends CoreFormControlBaseComponent {
|
|
|
47
47
|
multi: true,
|
|
48
48
|
useExisting: CoreCheckboxComponent
|
|
49
49
|
}
|
|
50
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label>\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
50
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label [class.has-text]=\"!!text && !!text.length\">\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container:has(label.has-text){display:inline-block;width:unset;vertical-align:middle}.core-checkbox-container>label.has-text{height:var(--container-size);line-height:var(--container-size);vertical-align:middle;display:inline-block;width:unset}.core-checkbox-container>label.has-text>a{margin-top:3.5px}.core-checkbox-container>label.has-text>span{height:var(--container-size);line-height:var(--container-size)}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreCheckboxComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
@@ -62,7 +62,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
62
62
|
multi: true,
|
|
63
63
|
useExisting: CoreCheckboxComponent
|
|
64
64
|
}
|
|
65
|
-
], template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label>\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"] }]
|
|
65
|
+
], template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label [class.has-text]=\"!!text && !!text.length\">\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container:has(label.has-text){display:inline-block;width:unset;vertical-align:middle}.core-checkbox-container>label.has-text{height:var(--container-size);line-height:var(--container-size);vertical-align:middle;display:inline-block;width:unset}.core-checkbox-container>label.has-text>a{margin-top:3.5px}.core-checkbox-container>label.has-text>span{height:var(--container-size);line-height:var(--container-size)}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"] }]
|
|
66
66
|
}], ctorParameters: () => [{ type: i1.MultiLanguageService }], propDecorators: { text: [{
|
|
67
67
|
type: Input
|
|
68
68
|
}], tooltipPosition: [{
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
76
76
|
}], onClick: [{
|
|
77
77
|
type: Output
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUc3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBcUJuRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsNEJBQTRCO0lBU3JFLHlCQUF5QjtJQUV6QixZQUNVLEdBQXlCO1FBR2pDLEtBQUssRUFBRSxDQUFDO1FBSEEsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFOekIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUE7UUFFL0Msa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBUW5DLENBQUM7SUFFRCxRQUFRO1FBQ04sZ0RBQWdEO1FBQ2hELG9GQUFvRjtRQUNwRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDN0MsQ0FBQTtJQUVILENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBZ0I7UUFDMUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBRVEsVUFBVSxDQUFDLEdBQVk7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFNO1FBQ2pCLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUM7WUFDdkIsT0FBTTtTQUNQO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBakRVLHFCQUFxQjtrR0FBckIscUJBQXFCLCtOQVJyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxxQkFBcUI7YUFDbkM7U0FDRixzRUMxQkgseWJBTU0sMjdFRE9GLFlBQVksOEJBQ1osV0FBVywyZ0JBQ1gsYUFBYSxrREFDYixnQkFBZ0I7OzJGQVlQLHFCQUFxQjtrQkFuQmpDLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCLGFBR1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyx1QkFBdUI7eUJBQ25DO3FCQUNGO3lGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNZLFFBQVE7c0JBQXpCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgSW5qZWN0b3IsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCAvKk5nQ29udHJvbCovIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWNoZWNrYm94JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlQ2hlY2tib3hDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHRleHQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXAhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5wdXRWYWx1ZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgb3ZlcnJpZGUgZGlzYWJsZWQhOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXHJcbiAgbGFuZyE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIC8vIG5nQ29udHJvbCE6IE5nQ29udHJvbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy90aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQ29yZUNoZWNrYm94Q29tcG9uZW50XCIsIHRoaXMubmdDb250cm9sLm5hbWUgKyBcIjogXCIgKyB0aGlzLmlucHV0VmFsdWUpXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuICAgXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhlOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoISFlWydpbnB1dFZhbHVlJ10pXHJcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShlWydpbnB1dFZhbHVlJ10uY3VycmVudFZhbHVlKVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgfVxyXG5cclxuICBvbkxhYmVsQ2xpY2soXzogYW55KSB7XHJcbiAgICBpZih0aGlzLmRpc2FibGVkID09IHRydWUpe1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSAhdGhpcy52YWx1ZTtcclxuICAgIHRoaXMub25DbGljay5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgLy8gcHJvcGVydHkgdG91Y2ggdG8gdXNlIHdoZW4gYWN0aW9uIHRoaXMgY29udHJvbCB0aGVuIHJ1biBsb2dpYyAuLi5cclxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1jaGVja2JveC1jb250YWluZXJcIiAoY2xpY2spPVwib25MYWJlbENsaWNrKCRldmVudClcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAvPlxyXG4gIDxsYWJlbCBbY2xhc3MuaGFzLXRleHRdPVwiISF0ZXh0ICYmICEhdGV4dC5sZW5ndGhcIj5cclxuICAgIDxhIGNsYXNzPVwiY2hlY2ttYXJrXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+PC9hPlxyXG4gICAgPHNwYW4gW2FwcFRvb2x0aXBdPVwidGV4dCB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbcG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCI+e3sgdGV4dCB8IHRyYW5zbGF0ZSA6IGxhbmcgfX08L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuPC9kaXY+Il19
|
|
@@ -193,7 +193,7 @@ export class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
193
193
|
this.searchObject = newSearchObject;
|
|
194
194
|
/* END: Initializing searchObject */
|
|
195
195
|
const frozenColumns = this.visibleColumns?.filter((_, index) => index < this.frozen);
|
|
196
|
-
let left = this.checkboxSize * 2 || 0; // the first size is for checkbox
|
|
196
|
+
let left = this.showCheckbox ? (this.checkboxSize * 2 || 0) : 0; // the first size is for checkbox
|
|
197
197
|
frozenColumns?.map(c => {
|
|
198
198
|
if (!!!c.width)
|
|
199
199
|
console.error(this.id + ": Each frozen column must have its number property 'width'.");
|
|
@@ -710,4 +710,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
710
710
|
type: ViewChild,
|
|
711
711
|
args: ['firstHeaderRow']
|
|
712
712
|
}] } });
|
|
713
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUM1TixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBK0N2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBUSxNQUFNLE1BQU0sQ0FBQztBQUV4RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQWdCLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFD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RSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBbURpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0YsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVudW1EcmFnVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bURyYWdUeXBlJztcclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ29kZSB7XHJcbiAgZWRpdCA9ICdlZGl0JyxcclxuICBkZWxldGUgPSAnZGVsZXRlJyxcclxuICBjb21wbGV0ZSA9ICdjb21wbGV0ZScsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENsYXNzIHtcclxuICBlZGl0ID0gJ2VkaXQtaWNvbicsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZS1pY29uJyxcclxuICByZXBlYXQgPSAncmVwZWF0LWljb24nLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlLWljb24nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xJdGVtIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgY2xhc3M6IEVDb3JlVGFibGVUb29sQ2xhc3M7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXkgfCBzdHJpbmc7IC8vIExhdGVyIHdlIHdpbGwgcmVtb3ZlIFwifCBzdHJpbmdcIlxyXG5cclxuICAvKiBjYWxsYmFja3MgdG8gY2FsY3VsYXRlIGRpc2FibGVkIGFuZCBoaWRlbiBiYXNlZCBvbiByb3cqL1xyXG4gIGRpc2FibGVkRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbiAgaGlkZGVuRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVSb3dEb3VibGVDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuKi9cclxuXHJcbmludGVyZmFjZSBJRG91YmxlVG91Y2hlbmREYXRhIHtcclxuICBwcmV2aW91czogbnVtYmVyO1xyXG4gIGN1cnJlbnQ6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIElEcmFnc3RhcnRTdWJzY3JpcHRpb24ge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbn1cclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJU2VhcmNoSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Tb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU29ydERpcmVjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRocmVlZG90c0NvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlZG90cy90aHJlZWRvdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdGFibGUtY2VsbC5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IERuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbmQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBUaHJlZWRvdHNDb21wb25lbnQsXHJcbiAgICBDb3JlQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlVGFibGVDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2NsYXNzaWNSZXNpemVyJykgcmVzaXplcnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkcmVuKCdjb2x1bW5DYXB0aW9uJykgY29sdW1uQ2FwdGlvbnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcclxuXHJcbiAgLypcclxuICBUaGlzIGNvbXBvbmVudCBkaXNwbGF5cyBpbnB1dCBkYXRhIHdpdGhvdXQgcGFnaW5hdGlvbi5cclxuICBGb3IgcGFnaW5hdGluZyBwbGVhc2Ugb3JnYW5pemUgZnJvbSBwYXJlbnRzXHJcbiAgKi9cclxuXHJcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7IC8vIGZvciBodG1sIGlkIGlkZW50aWZ5aW5nXHJcbiAgQElucHV0KCkgd2lkdGghOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja2JveCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tib3hTaXplOiBudW1iZXIgPSAxNTtcclxuICBASW5wdXQoKSBvdXRlckJ1dHRvbnMhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIEBJbnB1dCgpIHNob3dUb29scyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBjaGVja2luZ1Jlc2V0RmxhZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIGhlYWRlckNvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xyXG4gIEBJbnB1dCgpIGhlYWRlckJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNGMkYzRjUnO1xyXG5cclxuICAvKiBjaGFuZ2UgdGhlc2UgMiBwcm9wcyB0byB3cmFwIGhlYWRlciB0ZXh0cyAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlYWRlckZpcnN0Um93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIC8qKiAqL1xyXG5cclxuICBASW5wdXQoKSBoZWFkZXJTZWNvbmRSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgd3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWxsb3dDZWxsU2Nyb2xsWSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nOyAvLyBWRVJZIElNUE9SVEFOVCBQUk9QRVJUWVxyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmb290ZXIhOiBhbnk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107IC8vIHJlcXVpcmVkXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZElkcyE6IHN0cmluZ1tdIHwgbnVtYmVyW107XHJcbiAgQElucHV0KCkgY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyZWVNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWFyY2hTd2l0Y2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyA/Pz9cclxuICBASW5wdXQoKSBkaXNhYmxlU29ydGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbEl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcmltYXJ5S2V5OiBzdHJpbmcgPSAnaWQnOyAvLyAnaWQnIG9yICd2aXJ0dWFsSWQnXHJcbiAgQElucHV0KCkgcm93SG92ZXJCZ0NvbG9yOiBzdHJpbmcgPSAnI0VBRjFGQic7XHJcblxyXG4gIEBJbnB1dCgpIG5vUGFkZGluZ0NlbGwhOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBhdXRvQ29sdW1uRml0QXZhaWxhYmxlU3BhY2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWFyY2hpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElTZWFyY2hJdGVtW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uVG9vbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YT4oKTtcclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Sb3dEb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZElkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10gfCBudW1iZXJbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZERhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbHVtbkNhcHRpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVUYWJsZUNvbHVtbkl0ZW0+KCk7XHJcblxyXG4gIHByaXZhdGUgdmVydGljYWxMaW5lOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjaGVja2JveENvbHVtbldpZHRoOiBudW1iZXIgPSAzMDsgLy8gKC0tY2hlY2tib3gtc2l6ZSkqIDIgUGxlYXNlIGRvIG5vdCBjaGFuZ2UgdGhpc1xyXG5cclxuICBzZWFyY2hBY3RpdmUhOiBib29sZWFuO1xyXG4gIHZpc2libGVDb2x1bW5zITogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXTtcclxuICB2aXNpYmxlV2lkdGghOiBudW1iZXI7XHJcbiAgaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciE6IGJvb2xlYW47XHJcblxyXG4gIGZyb3plbkxlZnRzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gIGhlYWRlckNoZWNrYm94U3RhdGUhOiBib29sZWFuO1xyXG4gIGNoZWNraW5nU3RhdGUhOiBudW1iZXI7IC8vIDA9bm9uZTsgMT1hbGw7IDI9bWl4ZWRcclxuICB0Ym9keWhlaWdodCE6IG51bWJlcjtcclxuICB2aXNpYmxlUm93Q291bnQhOiBudW1iZXI7XHJcblxyXG4gIHJvd1RvdWNoZW5kU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRG91YmxlVG91Y2hlbmREYXRhPih7IHByZXZpb3VzOiAtMiwgY3VycmVudDogLTEgfSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgc2VhcmNoT2JqZWN0ITogSVNlYXJjaEl0ZW1bXTtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgYWN0aXZlUm93ITogYW55OyAvLyBudW1iZXIgfCBzdHJpbmdcclxuXHJcblxyXG4gIC8vbW91c2VEb3duID0gZmFsc2U7XHJcbiAgdmlzaWJsZUNvbHVtbkluZGV4ITogbnVtYmVyO1xyXG4gIHN0YXJ0WDogYW55O1xyXG4gIGVuZFg6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBkcmFnU3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBkcmFnZW5kU3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBkcmFnc3RhcnRTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGRyYWdlbnRlclN1YnNjcmlwdGlvbnM6IElEcmFnc3RhcnRTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ292ZXJTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgc2Nyb2xsU3RyZWFtJCE6IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgLyogRk9SIExBWlkgVUkgTE9BRElORyAqL1xyXG4gIHJlbmRlckFocmVhZDogbnVtYmVyID0gMDtcclxuICBoaWRkZW5Ub3BIZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuQm90dG9tSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIHNjcm9sbFRvcDogbnVtYmVyID0gMDtcclxuICBvZmZzZXRZOiBudW1iZXIgPSAwO1xyXG4gIHZpc2libGVEYXRhITogYW55W107XHJcbiAgc3RhcnROb2RlOiBudW1iZXIgPSAwO1xyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbiAgQFZpZXdDaGlsZCgnY29yZVRhYmxlJykgY29yZVRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdmaXJzdEhlYWRlclJvdycpIGZpcnN0SGVhZGVyUm93ITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFNlcnZpY2U6IENvcmVQYWdlTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGRuZFNlcnZpY2U6IERuZFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2Nyb2xsKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5jb3JlVGFibGUpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMubGF6eUxvYWRpbmcpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMuZGF0YSkgcmV0dXJuO1xyXG5cclxuICAgICAgLy9jb25zdCBoZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWhlaWdodCcpLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKGdldENvbXB1dGVkU3R5bGUodGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0YWJsZScpKS5oZWlnaHQucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIC8vY29uc29sZS5sb2coXCJzdGFydE5vZGVcIiwgc3RhcnROb2RlKVxyXG4gICAgICAvKlxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMub2Zmc2V0WVwiLCB0aGlzLm9mZnNldFkpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Ub3BIZWlnaHRcIiwgdGhpcy5oaWRkZW5Ub3BIZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Cb3R0b21IZWlnaHRcIiwgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy52aXNpYmxlRGF0YS5sZW5ndGhcIiwgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGgpXHJcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9ICh0aGlzLmhpZGRlblRvcEhlaWdodCArIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0ICsgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggKiByb3dIZWlnaHQpIC8gcm93SGVpZ2h0XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY29udHJvbFZhbHVlXCIsIGNvbnRyb2xWYWx1ZSkgLy8gTXVzdCBlcXVlYWwgcGFnZVNpemVcclxuICAgICAgKi9cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpICYmIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnOGMyNDY4M2QtN2Q1Mi00ZjVhLTgwOTAtMzFjNzc3ZTg4NjlkJykge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2JveFNpemUpIHtcclxuICAgICAgICB0aGlzLmNoZWNrYm94U2l6ZSA9IDE1O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPT09IHVuZGVmaW5lZCkgdGhpcy5oZWFkZXJGaXJzdFJvd0hlaWdodCA9IDQwO1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyU2Vjb25kUm93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyU2Vjb25kUm93SGVpZ2h0ID0gNDA7XHJcblxyXG5cclxuICAgIC8qIFZhbGlkYXRlIGNvbHVtbnMgaW5wdXQgdG8gbWFrZSBzdXJlIG9uZSBvZiBmaWVsZHMgaXMgJ2lkJyAqL1xyXG4gICAgaWYgKCEhIXRoaXMuY29sdW1ucykge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih0aGlzLmlkICsgXCI6IENvbHVtbnMgYXJlIG5vdCBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiBjLmZpZWxkID09PSB0aGlzLnByaW1hcnlLZXkpLmxlbmd0aCA9PT0gMCAmJiBpc0Rldk1vZGUoKSAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogVGhlIGNvbHVtbnMgbXVzdCBoYXZlIG9uZSB3aXRoICdmaWVsZCcgcHJvcGVydHkgPT09IFwiICsgdGhpcy5wcmltYXJ5S2V5LCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbilcclxuICAgIGlmICghISF0aGlzLnZpc2libGVDb2x1bW5zPy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4gYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSlcclxuXHJcbiAgICAvKiBTVEFSVDogSW5pdGlhbGl6aW5nIHNlYXJjaE9iamVjdCAqL1xyXG4gICAgY29uc3QgbmV3U2VhcmNoT2JqZWN0OiBJU2VhcmNoSXRlbVtdID0gW107XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucz8uZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgbGV0IGxlZnQgPSB0aGlzLmNoZWNrYm94U2l6ZSEgKiAyIHx8IDA7IC8vIHRoZSBmaXJzdCBzaXplIGlzIGZvciBjaGVja2JveFxyXG4gICAgZnJvemVuQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBpZiAoISEhYy53aWR0aCkgY29uc29sZS5lcnJvcih0aGlzLmlkICsgXCI6IEVhY2ggZnJvemVuIGNvbHVtbiBtdXN0IGhhdmUgaXRzIG51bWJlciBwcm9wZXJ0eSAnd2lkdGgnLlwiKTtcclxuICAgICAgdGhpcy5mcm96ZW5MZWZ0cy5wdXNoKGxlZnQpO1xyXG4gICAgICBsZWZ0ID0gbGVmdCArIGMud2lkdGghXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiB4LmN1cnJlbnQgPT09IHgucHJldmlvdXMpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICApLnN1YnNjcmliZSgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVt5LmN1cnJlbnRdLmlkXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKiBDaGVjayBpZiBhbnkgb2YgY29sdW1ucyBpcyB0ZW1wbGF0ZVJlZiAqL1xyXG4gICAgY29uc3QgdGVtcGxhdGVSZWZGaWx0ZXIgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICEheC50ZW1wbGF0ZVJlZilcclxuICAgIGlmICghIXRlbXBsYXRlUmVmRmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGVtcGxhdGVSZWZGaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgIGlmICh4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHQgPiBOdW1iZXIodGhpcy5yb3dIZWlnaHQucmVwbGFjZSgncHgnLCAnJykpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2hp4buBdSBjYW8gY+G7p2EgJHt0aGlzLm1scy50cmFucyh4LmNhcHRpb24pfSB0ZW1wbGF0ZVJlZiBsw6AgJHt4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHR9LCBs4bubbiBoxqFuIGNoaeG7gXUgY2FvIGPhu6dhIGTDsm5nIGzGsOG7m2kgJHt0aGlzLnJvd0hlaWdodH1gLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcblxyXG4gICAgICAvLyBDaGVjayB1bmlxdWUgb2YgXCJpZFwiXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGFyciA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlSWRzID0gKGFycjogYW55KSA9PiBhcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFyci5maWx0ZXIoKHg6IGFueSkgPT4geC5pZCA9PT0gaXRlbS5pZCkubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlVmlydHVhbElkcyA9IChhcnI6IGFueSkgPT4gYXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBhcnIuZmlsdGVyKCh4OiBhbnkpID0+IHgudmlydHVhbElkID09PSBpdGVtLnZpcnR1YWxJZCkubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGlmICghIWZpbmREdXBsaWNhdGVJZHMoYXJyKS5sZW5ndGggJiYgISFmaW5kRHVwbGljYXRlVmlydHVhbElkcyhhcnIpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIkNvcmVUYWJsZSByZXF1aXJlcyB1bmlxdWUgaWQvdmlydHVhbElkIHZhbHVlcyFcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubWFwKChfOiBhbnkpID0+IHtcclxuICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goZmFsc2UpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpc2libGVEYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkSWRzJ10pIHtcclxuICAgICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICAgIGNoYW5nZXNbJ2NoZWNrZWRJZHMnXS5jdXJyZW50VmFsdWU/Lm1hcCgoY2hlY2tlZElkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVsnaWQnXSA9PT0gY2hlY2tlZElkKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuICAgIH1cclxuICAgIC8vIGlmIChjaGFuZ2VzWydsb2FkaW5nJ10pIHtcclxuICAgIC8vICAgdGhpcy5sb2FkaW5nID0gY2hhbmdlc1snbG9hZGluZyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIC8vIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pIHx8IFtdXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJSZWl6ZXJzRXZlbnRzKCk7XHJcbiAgICAgIGxldCB2aXNpYmxlV2lkdGggPSB0aGlzLnZpc2libGVDb2x1bW5zLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS53aWR0aCB8fCAwKSwgMClcclxuXHJcbiAgICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICAgIHZpc2libGVXaWR0aCArPSAodGhpcy5jaGVja2JveFNpemUgfHwgMTUpICogMlxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNob3dUb29scykge1xyXG4gICAgICAgIHZpc2libGVXaWR0aCArPSAxMDBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZpc2libGVXaWR0aCA9IHZpc2libGVXaWR0aFxyXG4gICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciA9IHZpc2libGVXaWR0aCA+IHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aFxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyXCIsIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcilcclxuICAgICAgfVxyXG4gICAgICBpZiAoISF0aGlzLmF1dG9Db2x1bW5GaXRBdmFpbGFibGVTcGFjZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGp1c3RDb2x1bW5XaWR0aHMoKSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtblNlYXJjaERlZmF1bHRPcGVuJ10pIHtcclxuICAgICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhIWNoYW5nZXNbJ2NvbHVtblNlYXJjaERlZmF1bHRPcGVuJ10uY3VycmVudFZhbHVlXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgaWYgKHRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCBjaGFuZ2VzWydoZWlnaHQnXS5jdXJyZW50VmFsdWUgKyAncHgnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3RIZWFkZXJSb3dIZWlnaHQgPSB0aGlzLmZpcnN0SGVhZGVyUm93Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlci0xc3Qtcm93LWhlaWdodCcsXHJcbiAgICAgICAgZmlyc3RIZWFkZXJSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93VmVydGljYWxMaW5lKGV2ZW50OiBEcmFnRXZlbnQsIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsTGluZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmVydGljYWxMaW5lLCAnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZlcnRpY2FsTGluZVBvc2l0aW9uKGV2ZW50LCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhpZGVWZXJ0aWNhbExpbmUoZXZlbnQ6IERyYWdFdmVudCwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbmRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMuZmlsdGVyKCh4LCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoeC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1uc1tpbmRleF0ud2lkdGghICsgdGhpcy5lbmRYIC0gdGhpcy5zdGFydFggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zW2luZGV4XS53aWR0aCEgKz0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbExpbmUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZlcnRpY2FsTGluZSwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWZXJ0aWNhbExpbmVQb3NpdGlvbihldmVudDogRHJhZ0V2ZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnZpc2libGVDb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKTtcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsTGluZSAmJiBldmVudC5jbGllbnRYKSB7XHJcbiAgICAgIGlmIChmaWx0ZXIubGVuZ3RoID09PSAxICYmIGZpbHRlclswXS53aWR0aCEgKyBldmVudC5jbGllbnRYIC0gdGhpcy5zdGFydFggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZlcnRpY2FsTGluZSwgJ2xlZnQnLCBgJHtldmVudC5jbGllbnRYfXB4YCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRqdXN0Q29sdW1uV2lkdGhzKCkge1xyXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlJyk7XHJcbiAgICBsZXQgdmlzaWJsZUNvbHVtbnNUb3RhbFdpZHRoID0gMDtcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoYywgaW5kZXgpID0+IHtcclxuICAgICAgdmlzaWJsZUNvbHVtbnNUb3RhbFdpZHRoICs9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJyN2aXNpYmxlLXRoLScrIGluZGV4KSkud2lkdGgucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgdGFibGVXaWR0aCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRhYmxlKS53aWR0aC5yZXBsYWNlKCdweCcsICcnKSk7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgdGFibGVXaWR0aCAtPSB0aGlzLmNoZWNrYm94U2l6ZSAqIDI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy5zaG93VG9vbHMpIHtcclxuICAgICAgY29uc3QgdG9vbHNUaCA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJyN0b29scy10aCcpO1xyXG4gICAgICBjb25zdCB0b29sV2lkdGggPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0b29sc1RoKS53aWR0aC5yZXBsYWNlKCdweCcsICcnKSk7XHJcbiAgICAgIHRhYmxlV2lkdGggLT0gdG9vbFdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2aXNpYmxlQ29sdW1uc1RvdGFsV2lkdGggPCB0YWJsZVdpZHRoKSB7XHJcblxyXG4gICAgICBjb25zdCBmcmVlU3BhY2UgPSB0YWJsZVdpZHRoIC0gdmlzaWJsZUNvbHVtbnNUb3RhbFdpZHRoO1xyXG5cclxuICAgICAgY29uc3QgZml0Q29lZmZpY2VudCA9IGZyZWVTcGFjZSAvIHZpc2libGVDb2x1bW5zVG90YWxXaWR0aDtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGMud2lkdGghICo9ICgxICsgZml0Q29lZmZpY2VudCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxlckZpbHRlciA9IHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcik7XHJcbiAgICAgIGlmICghIWNhbGxlckZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBjYWxsZXIgPSBjYWxsZXJGaWx0ZXJbMF07XHJcbiAgICAgICAgY2FsbGVyLmNvcmVUYWJsZVJlZiA9IHRoaXMuY29yZVRhYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5mcmVlTW9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnByaW1hcnlLZXkgPT09ICdpZCcpIHtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmltYXJ5S2V5ID09PSAndmlydHVhbElkJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udmlydHVhbElkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udGJvZHlIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICghIXgpIHtcclxuICAgICAgICAgICAgdGhpcy50Ym9keWhlaWdodCA9IHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGFibGUtd2lkdGgnLCByZWN0LndpZHRoICsgJ3B4JylcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxTdHJlYW0kID0gZnJvbUV2ZW50KHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpO1xyXG5cclxuICAgIC8vIENyZWF0ZSB2ZXJ0aWNhbCBsaW5lIGVsZW1lbnRcclxuICAgIHRoaXMudmVydGljYWxMaW5lID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy52ZXJ0aWNhbExpbmUsICd2ZXJ0aWNhbC1saW5lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMudmVydGljYWxMaW5lKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciA9IHRoaXMudmlzaWJsZVdpZHRoID4gdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyXCIsIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcilcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLnJvd0hvdmVyQmdDb2xvciAmJiB0aGlzLnJvd0hvdmVyQmdDb2xvci50b1VwcGVyQ2FzZSgpICE9PSAnVFJBTlNQQVJFTlQnICkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yb3ctaG92ZXItYmctY29sb3InLCB0aGlzLnJvd0hvdmVyQmdDb2xvcik7XHJcblxyXG4gICAgICAvLyBDaOG7iSBzdWJzY3JpZGUgc2F1IGtoaSBjw6FjIGzhu4duaCB0csOqbiDEkcOjIMSRxrDhu6NjIHRo4buxYyBoaeG7h25cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5zY3JvbGxTdHJlYW0kXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wID0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVTY3JvbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnJlZ2lzdGVyUmVpemVyc0V2ZW50cygpO1xyXG5cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZERyYWdBbmREcmFnRW5kTGlzdGVuZXJzKGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZHJhZyBldmVudCB0byB1cGRhdGUgdmVydGljYWwgbGluZSBwb3NpdGlvblxyXG4gICAgY29uc3QgZHJhZ0ZpbHRlciA9IHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKGRyYWdGaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWcnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmVydGljYWxMaW5lUG9zaXRpb24oZXZlbnQsIGZpZWxkKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZHJhZ2VuZCBldmVudCB0byBoaWRlIHZlcnRpY2FsIGxpbmUgYW5kIHJlc2V0IGN1cnNvclxyXG4gICAgY29uc3QgZHJhZ2VuZEZpbHRlciA9IHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKGRyYWdlbmRGaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdlbmQnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZG5kU2VydmljZS5kcmFnVHlwZSA9IEVudW1EcmFnVHlwZS5OT05FO1xyXG4gICAgICAgICAgdGhpcy5oaWRlVmVydGljYWxMaW5lKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgICAgICAvLyBDbGVhbnVwIGRyYWcgYW5kIGRyYWdlbmQgc3Vic2NyaXB0aW9uc1xyXG4gICAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FuZERyYWdFbmRTdWJzY3JpcHRpb25zKGZpZWxkKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYW51cERyYWdBbmREcmFnRW5kU3Vic2NyaXB0aW9ucyhmaWVsZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKS5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMgPSB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgIT09IGZpZWxkKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnZW5kU3Vic2NyaXB0aW9ucyA9IHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCAhPT0gZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJSZWl6ZXJzRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlc2l6ZXJzKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdHJhbnNwYXJlbnRJbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgdHJhbnNwYXJlbnRJbWFnZS5zcmMgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FRQUFBQzFIQXdDQUFBQUMwbEVRVlI0Mm1QOC93Y0FBZ0FCL2lmTHdEa0FBQUFBU1VWT1JLNUNZSUk9JztcclxuXHJcbiAgICB0aGlzLnJlc2l6ZXJzLnRvQXJyYXkoKS5tYXAoKHJlZiwgaW5kZXgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy52aXNpYmxlQ29sdW1uc1tpbmRleF0uZmllbGQ7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQocmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnc3RhcnQnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSB0cmFuc3BhcmVudCBpbWFnZSBhcyB0aGUgZ2hvc3QgaW1hZ2VcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5zZXREcmFnSW1hZ2UodHJhbnNwYXJlbnRJbWFnZSwgMCwgMCk7XHJcbiAgICAgICAgICAgIC8vIE5vdGUgdGhlIHR5cGUgb2YgZHJhZ2dpbmdcclxuICAgICAgICAgICAgdGhpcy5kbmRTZXJ2aWNlLmRyYWdUeXBlID0gRW51bURyYWdUeXBlLlRBQkxFX0NPTFVNTl9SRVNJWkU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbExpbmUoZXZlbnQsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRHJhZ0FuZERyYWdFbmRMaXN0ZW5lcnMocmVmLm5hdGl2ZUVsZW1lbnQsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5jb2x1bW5DYXB0aW9ucy50b0FycmF5KCkubWFwKChyZWYsIGluZGV4KSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMudmlzaWJsZUNvbHVtbnNbaW5kZXhdLmZpZWxkO1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRyYWdvdmVyU3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIC8vIHRoZSBzaW1pbGFyIHNldHVwIG9uICdkcmFnZW50ZXInIGRvZXMgbm90IHdvcmtcclxuICAgICAgICB0aGlzLmRyYWdvdmVyU3Vic2NyaXB0aW9ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQocmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnb3ZlcicpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kbmRTZXJ2aWNlLmRyYWdUeXBlICE9PSBFbnVtRHJhZ1R5cGUuVEFCTEVfQ09MVU1OX1JFU0laRSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1uSW5kZXggPiBpbmRleCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uVG9vbENsaWNrTG9jYWwocm93OiBhbnksIHRvb2xJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG9vbENsaWNrLmVtaXQoe1xyXG4gICAgICBjb2RlOiB0aGlzLnRvb2xzW3Rvb2xJbmRleF0uY29kZSxcclxuICAgICAgaWQ6IHJvd1snaWQnXVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNoZWNrQWxsKGFyZ3M6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5kYXRhLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGFyZ3MpO1xyXG4gICAgICBpZiAoYXJncykge1xyXG4gICAgICAgIG5ld1NlbGVjdGVkSWRzLnB1c2goaXRlbS5pZCk7XHJcbiAgICAgICAgbmV3U2VsZWN0ZWREYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcbiAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSBhcmdzID8gMSA6IDA7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZElkcyk7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWREYXRhQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWREYXRhKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IG51bWJlcltdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgICB0aGlzLmRhdGEuZmlsdGVyKChfOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICEhdGhpcy5jaGVja2luZ01vZGVsW2luZGV4XSkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpXHJcbiAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAwOyAvLyBub25lXHJcbiAgICB9IGVsc2UgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gdGhpcy5jaGVja2luZ01vZGVsLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAxOyAvLyBhbGxcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IDI7IC8vIG1peGVkXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Eb3VibGVDbGlja0xvY2FsKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHRoaXMuZGF0YVtyb3dJbmRleF0pXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTG9jYWwocm93OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2xpY2tMb2NhbCByb3dcIiwgcm93LCBcImV2ZW50XCIsIGV2ZW50KVxyXG5cclxuICAgIGlmIChldmVudC5kZXRhaWwgPT09IDEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVSb3cgPSByb3dbdGhpcy5wcmltYXJ5S2V5XTtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZGV0YWlsID09PSAyKSB7XHJcbiAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHJvdylcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblJvd1RvdWNoZW5kKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQudmFsdWUuY3VycmVudCxcclxuICAgICAgY3VycmVudDogcm93SW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZTogc3RyaW5nLCBzZWFyY2hDb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaE9iamVjdC5maWx0ZXIoKF8sIGkpID0+IGkgPT09IHNlYXJjaENvbHVtbkluZGV4KVswXS5zZWFyY2hGb3IgPSBlO1xyXG4gICAgdGhpcy5vblNlYXJjaGluZy5lbWl0KHRoaXMuc2VhcmNoT2JqZWN0KTtcclxuICB9XHJcblxyXG4gIG9uQ29sdW1uQ2FwdGlvbkNsaWNrTG9jYWwoY29sdW1uOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG5cclxuICAgIGlmICghIXRoaXMuZGlzYWJsZVNvcnRpbmcgfHwgISFjb2x1bW4uc29ydERpc2FibGVkIHx8ICEhY29sdW1uLnRlbXBsYXRlUmVmKSByZXR1cm47IC8vIG5vIGFjdGlvbiBmb3IgdGVtcGxhdGVSZWYgdHlwZVxyXG5cclxuICAgIHRoaXMub25Db2x1bW5DYXB0aW9uQ2xpY2suZW1pdChjb2x1bW4pO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzb3J0IGRpY3JlY3Rpb24gcHJvcGVydHkgb2YgdGhpcyBjb2x1bW5cclxuICAgIC8vIGFuZCBjbGVhciB1cCB0aGUgcHJvcGVydHkgZm9yIHRoZSBvdGhlciB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAodmMgPT4ge1xyXG4gICAgICBpZiAodmMuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSB2Yy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FID8gRW51bVNvcnREaXJlY3Rpb24uQVNDIDogdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uQVNDID8gRW51bVNvcnREaXJlY3Rpb24uREVTQyA6IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbG93U2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhISF0aGlzLnNlYXJjaEFjdGl2ZVxyXG4gIH1cclxuXHJcbiAgb25JbmxpbmVUb29sQ2xpY2soZTogSUNvcmVCdXR0b25WTlMsIHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uSW5saW5lVG9vbENsaWNrXCIsIGUsIHJvdylcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnc3RhcnRTdWJzY3JpcHRpb25zLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnU3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRyYWdlbnRlclN1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb3JlVGFibGUgY2xhc3M9XCJjb3JlLXRhYmxlLWNvbnRhaW5lclwiIFtjbGFzcy5oaWRlLXNlYXJjaF09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgICAgIEPhuqduIHRydXnhu4FuIGNow61uaCB4w6FjIGhlaWdodCBj4bunYSBDb3JlVGFibGVcclxuICAgICAgICBUdXkgbmhpw6puIGNoaeG7gXUgY2FvIGPhu6dhIENvcmVUYWJsZSBj4bqnbiDEkcaw4bujYyB0w61uaCBk4buxYSB2w6BvIGNoaeG7gXUgY2FvIGPhu6dhIGPDoWMgcGjhuqduIHThu60gRE9NIGzhuqduIGzGsOG7o3QgdOG7qyBs4bubcCBuZ2/DoGkgdsOgbyBs4bubcCB0cm9uZ1xyXG4gICAgICAgIEFuaCBlbSBjaMawYSB0w61uaCBraGkgdHJp4buDbiBraGFpIGNvZGUsIG7Dqm4gxJFhbmcgY+G6p24gY8OzIGNvbiBz4buRIGRlZmF1bHQgbMOgIDQwMHB4XHJcbiAgICAtLT5cclxuICAgIDx0YWJsZSBbY2xhc3Mud3JhcF09XCIhIXdyYXBcIiAjdGFibGUgW25nU3R5bGVdPVwieyBoZWlnaHQ6IChoZWlnaHQgfHwgNDAwKSArICdweCcgfVwiPlxyXG4gICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyICNmaXJzdEhlYWRlclJvdyBkYXRhLXJvdz1cIjFcIiBbY2xhc3Muc2VhcmNoLWFjdGl2ZV09XCJzZWFyY2hBY3RpdmVcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgPCEtLSBPUklHSU5BTDogW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAyIDogMVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsIGZyb3plbi1jb2xcIiBzdHlsZT1cImxlZnQ6IDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAxIDogMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gcGxlYXNlIGRvIG5vdCBjaGFuZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2hlY2tib3hTaXplICogMiArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXAgZC1mbGV4IGQtZmxleC1jZW50ZXJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwiaGVhZGVyQ2hlY2tib3hTdGF0ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNoZWNrQWxsKCRldmVudClcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ2NoZWNrLWNvbC1oZWFkZXInICsgaWRcIiBbKG5nTW9kZWwpXT1cImhlYWRlckNoZWNrYm94U3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNoZWNrQWxsKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgW2NsYXNzLm1peGVkXT1cImNoZWNraW5nU3RhdGU9PT0yXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICgoaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKiAoc2VhcmNoQWN0aXZlID8gMSA6IDApKSAvMiAtIGNoZWNrYm94U2l6ZS8yKSArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtpZF09XCIndmlzaWJsZS10aC0nICsgJGluZGV4XCIgW2NsYXNzLmZyb3plbi1jb2xdPVwiJGluZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJGluZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1skaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGhlYWRlckNvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0xcHggZm9yIGJvcmRlckJvdHRvbSBvZiBoZWFkZXIgZmlyc3Qgcm93IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2NvbHVtbkNhcHRpb24gY2xhc3M9XCJjb2x1bW4tY2FwdGlvblwiIFtjbGFzcy5hc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kZXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09MVwiIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbC53aWR0aCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7IGNvbC5jYXB0aW9uIHwgdHJhbnNsYXRlIDogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2NsYXNzaWNSZXNpemVyIGNsYXNzPVwiY2xhc3NpYy1yZXNpemVyXCIgW2RyYWdnYWJsZV09XCJ0cnVlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29scyAmJiB2aXNpYmxlQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggaWQ9XCJ0b29scy10aFwiIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFzZWFyY2hTd2l0Y2hEaXNhYmxlZCAmJiAhaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzUwcHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaFN3aXRjaGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmICghc2VhcmNoU3dpdGNoRGlzYWJsZWQgJiYgISFpc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoU3dpdGNoZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgQGlmIChzZWFyY2hBY3RpdmUpIHtcclxuICAgICAgICAgICAgPHRyIGRhdGEtcm93PVwiMlwiIFtjbGFzcy5oaWRlbl09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRjhGOUZBJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICczMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgICAgIDwhLS0gT1JJR0lOQUw6IGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLCAtLT5cclxuICAgICAgICAgICAgICAgIDx0aCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCIkaW5kZXggPCBmcm96ZW4gPyAnbGVmdDogJyArIGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJydcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0Y4RjlGQScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzBweCAxMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC5oaWRlU2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OyBvdmVyZmxvdzogdmlzaWJsZTsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaFwiIFsobmdNb2RlbCldPVwic2VhcmNoT2JqZWN0WyRpbmRleF0uc2VhcmNoRm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKCRldmVudCwgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8dGggW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRjhGOUZBJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keSAjdGJvZHkgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1sb2FkaW5nLXN1cmZhY2UgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtoZWlnaHRdPVwidGJvZHloZWlnaHQgfHwgNTAwXCI+PC9jb3JlLWxvYWRpbmctc3VyZmFjZT5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoaWRkZW5Ub3BIZWlnaHQgKyAncHgnIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgdmlzaWJsZURhdGE7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgICAgICAgPHRyIChjbGljayk9XCJvbkNsaWNrTG9jYWwocm93LCAkZXZlbnQpXCIgKHRvdWNoZW5kKT1cIm9uUm93VG91Y2hlbmQoJGluZGV4K3N0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicm93W3ByaW1hcnlLZXldID09PSBhY3RpdmVSb3cgJiYgISEhZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2tcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1idXR0b24tZ3JvdXAtdm5zIFtzaG93bkl0ZW1zXT1cImlubGluZVRvb2xJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbklubGluZVRvb2xDbGljaygkZXZlbnQsIHJvdylcIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7IHdpZHRoOiAzMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj48L2NvcmUtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBnYWxheHkgZWxlbWVudCwganVzdCBmb3IgY3NzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKCRpbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKCRpbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2luZ05nTW9kZWxDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRpbmRleCA8IGZyb3plbiA/IGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTiBNT1NUIENBU0VTIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggUFJJTUlUSVZFIFRZUEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICEhY29sLndpZHRoID8gY29sLndpZHRoICsgJ3B4JyA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAhIWNvbC5hbGlnbiA/IGNvbC5hbGlnbi50b0xvd2VyQ2FzZSgpIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjb2w/LnRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3csIGFsbG93RWRpdDogcm93LmlkID09PSBhY3RpdmVSb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtZ3JvdXAgZC1mbGV4LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodG9vbCBvZiB0b29sczsgdHJhY2sgdG9vbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3Rvb2xzLWljb24gJyArIHRvb2wuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0b29sLmRpc2FibGVkRm4gPyB0b29sLmRpc2FibGVkRm4hKHJvdykgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJ0b29sLmhpZGRlbkZuID8gdG9vbC5oaWRkZW5GbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub29sQ2xpY2tMb2NhbChyb3csICRpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGlkZGVuQm90dG9tSGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEBmb3Iocm93IG9mIGRhdGE7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgQGZvcihjb2wgb2Ygcm93OyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gLS0+XHJcblxyXG5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIEBpZiAoISFmb290ZXIpIHtcclxuICAgICAgICA8dGZvb3Q+XHJcbiAgICAgICAgPC90Zm9vdD5cclxuICAgICAgICB9XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoU3dpdGNoZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC10b2dnbGVyIGQtZmxleC1jZW50ZXIgcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVBbGxvd1NlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9kaXY+Il19
|
|
713
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUM1TixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBK0N2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBUSxNQUFNLE1BQU0sQ0FBQztBQUV4RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQWdCLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFD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S0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ3FCLE9BQU87c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBbURpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0YsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlLCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVudW1EcmFnVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bURyYWdUeXBlJztcclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ29kZSB7XHJcbiAgZWRpdCA9ICdlZGl0JyxcclxuICBkZWxldGUgPSAnZGVsZXRlJyxcclxuICBjb21wbGV0ZSA9ICdjb21wbGV0ZScsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENsYXNzIHtcclxuICBlZGl0ID0gJ2VkaXQtaWNvbicsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZS1pY29uJyxcclxuICByZXBlYXQgPSAncmVwZWF0LWljb24nLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlLWljb24nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xJdGVtIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgY2xhc3M6IEVDb3JlVGFibGVUb29sQ2xhc3M7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXkgfCBzdHJpbmc7IC8vIExhdGVyIHdlIHdpbGwgcmVtb3ZlIFwifCBzdHJpbmdcIlxyXG5cclxuICAvKiBjYWxsYmFja3MgdG8gY2FsY3VsYXRlIGRpc2FibGVkIGFuZCBoaWRlbiBiYXNlZCBvbiByb3cqL1xyXG4gIGRpc2FibGVkRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbiAgaGlkZGVuRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVSb3dEb3VibGVDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuKi9cclxuXHJcbmludGVyZmFjZSBJRG91YmxlVG91Y2hlbmREYXRhIHtcclxuICBwcmV2aW91czogbnVtYmVyO1xyXG4gIGN1cnJlbnQ6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIElEcmFnc3RhcnRTdWJzY3JpcHRpb24ge1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbn1cclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJU2VhcmNoSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Tb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU29ydERpcmVjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRocmVlZG90c0NvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlZG90cy90aHJlZWRvdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdGFibGUtY2VsbC5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IERuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbmQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBUaHJlZWRvdHNDb21wb25lbnQsXHJcbiAgICBDb3JlQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlVGFibGVDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2NsYXNzaWNSZXNpemVyJykgcmVzaXplcnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkcmVuKCdjb2x1bW5DYXB0aW9uJykgY29sdW1uQ2FwdGlvbnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcclxuXHJcbiAgLypcclxuICBUaGlzIGNvbXBvbmVudCBkaXNwbGF5cyBpbnB1dCBkYXRhIHdpdGhvdXQgcGFnaW5hdGlvbi5cclxuICBGb3IgcGFnaW5hdGluZyBwbGVhc2Ugb3JnYW5pemUgZnJvbSBwYXJlbnRzXHJcbiAgKi9cclxuXHJcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7IC8vIGZvciBodG1sIGlkIGlkZW50aWZ5aW5nXHJcbiAgQElucHV0KCkgd2lkdGghOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja2JveCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tib3hTaXplOiBudW1iZXIgPSAxNTtcclxuICBASW5wdXQoKSBvdXRlckJ1dHRvbnMhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIEBJbnB1dCgpIHNob3dUb29scyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBjaGVja2luZ1Jlc2V0RmxhZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIGhlYWRlckNvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xyXG4gIEBJbnB1dCgpIGhlYWRlckJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNGMkYzRjUnO1xyXG5cclxuICAvKiBjaGFuZ2UgdGhlc2UgMiBwcm9wcyB0byB3cmFwIGhlYWRlciB0ZXh0cyAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlYWRlckZpcnN0Um93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIC8qKiAqL1xyXG5cclxuICBASW5wdXQoKSBoZWFkZXJTZWNvbmRSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgd3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWxsb3dDZWxsU2Nyb2xsWSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nOyAvLyBWRVJZIElNUE9SVEFOVCBQUk9QRVJUWVxyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmb290ZXIhOiBhbnk7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107IC8vIHJlcXVpcmVkXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YTogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZElkcyE6IHN0cmluZ1tdIHwgbnVtYmVyW107XHJcbiAgQElucHV0KCkgY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyZWVNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWFyY2hTd2l0Y2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyA/Pz9cclxuICBASW5wdXQoKSBkaXNhYmxlU29ydGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbEl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcmltYXJ5S2V5OiBzdHJpbmcgPSAnaWQnOyAvLyAnaWQnIG9yICd2aXJ0dWFsSWQnXHJcbiAgQElucHV0KCkgcm93SG92ZXJCZ0NvbG9yOiBzdHJpbmcgPSAnI0VBRjFGQic7XHJcblxyXG4gIEBJbnB1dCgpIG5vUGFkZGluZ0NlbGwhOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBhdXRvQ29sdW1uRml0QXZhaWxhYmxlU3BhY2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWFyY2hpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElTZWFyY2hJdGVtW10+KCk7XHJcbiAgQE91dHB1dCgpIG9uVG9vbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlVG9vbENsaWNrRXZlbnRFbWl0dGVyRGF0YT4oKTtcclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Sb3dEb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZElkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10gfCBudW1iZXJbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZERhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbHVtbkNhcHRpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVUYWJsZUNvbHVtbkl0ZW0+KCk7XHJcblxyXG4gIHByaXZhdGUgdmVydGljYWxMaW5lOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjaGVja2JveENvbHVtbldpZHRoOiBudW1iZXIgPSAzMDsgLy8gKC0tY2hlY2tib3gtc2l6ZSkqIDIgUGxlYXNlIGRvIG5vdCBjaGFuZ2UgdGhpc1xyXG5cclxuICBzZWFyY2hBY3RpdmUhOiBib29sZWFuO1xyXG4gIHZpc2libGVDb2x1bW5zITogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXTtcclxuICB2aXNpYmxlV2lkdGghOiBudW1iZXI7XHJcbiAgaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciE6IGJvb2xlYW47XHJcblxyXG4gIGZyb3plbkxlZnRzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGNoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gIGhlYWRlckNoZWNrYm94U3RhdGUhOiBib29sZWFuO1xyXG4gIGNoZWNraW5nU3RhdGUhOiBudW1iZXI7IC8vIDA9bm9uZTsgMT1hbGw7IDI9bWl4ZWRcclxuICB0Ym9keWhlaWdodCE6IG51bWJlcjtcclxuICB2aXNpYmxlUm93Q291bnQhOiBudW1iZXI7XHJcblxyXG4gIHJvd1RvdWNoZW5kU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRG91YmxlVG91Y2hlbmREYXRhPih7IHByZXZpb3VzOiAtMiwgY3VycmVudDogLTEgfSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgc2VhcmNoT2JqZWN0ITogSVNlYXJjaEl0ZW1bXTtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgYWN0aXZlUm93ITogYW55OyAvLyBudW1iZXIgfCBzdHJpbmdcclxuXHJcblxyXG4gIC8vbW91c2VEb3duID0gZmFsc2U7XHJcbiAgdmlzaWJsZUNvbHVtbkluZGV4ITogbnVtYmVyO1xyXG4gIHN0YXJ0WDogYW55O1xyXG4gIGVuZFg6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBkcmFnU3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBkcmFnZW5kU3Vic2NyaXB0aW9uczogSURyYWdzdGFydFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBkcmFnc3RhcnRTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGRyYWdlbnRlclN1YnNjcmlwdGlvbnM6IElEcmFnc3RhcnRTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ292ZXJTdWJzY3JpcHRpb25zOiBJRHJhZ3N0YXJ0U3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgc2Nyb2xsU3RyZWFtJCE6IE9ic2VydmFibGU8YW55PjtcclxuXHJcbiAgLyogRk9SIExBWlkgVUkgTE9BRElORyAqL1xyXG4gIHJlbmRlckFocmVhZDogbnVtYmVyID0gMDtcclxuICBoaWRkZW5Ub3BIZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuQm90dG9tSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIHNjcm9sbFRvcDogbnVtYmVyID0gMDtcclxuICBvZmZzZXRZOiBudW1iZXIgPSAwO1xyXG4gIHZpc2libGVEYXRhITogYW55W107XHJcbiAgc3RhcnROb2RlOiBudW1iZXIgPSAwO1xyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbiAgQFZpZXdDaGlsZCgnY29yZVRhYmxlJykgY29yZVRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdmaXJzdEhlYWRlclJvdycpIGZpcnN0SGVhZGVyUm93ITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFNlcnZpY2U6IENvcmVQYWdlTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGRuZFNlcnZpY2U6IERuZFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2Nyb2xsKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5jb3JlVGFibGUpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMubGF6eUxvYWRpbmcpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMuZGF0YSkgcmV0dXJuO1xyXG5cclxuICAgICAgLy9jb25zdCBoZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWhlaWdodCcpLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKGdldENvbXB1dGVkU3R5bGUodGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0YWJsZScpKS5oZWlnaHQucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIC8vY29uc29sZS5sb2coXCJzdGFydE5vZGVcIiwgc3RhcnROb2RlKVxyXG4gICAgICAvKlxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMub2Zmc2V0WVwiLCB0aGlzLm9mZnNldFkpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Ub3BIZWlnaHRcIiwgdGhpcy5oaWRkZW5Ub3BIZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5oaWRkZW5Cb3R0b21IZWlnaHRcIiwgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQpXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy52aXNpYmxlRGF0YS5sZW5ndGhcIiwgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGgpXHJcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9ICh0aGlzLmhpZGRlblRvcEhlaWdodCArIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0ICsgdGhpcy52aXNpYmxlRGF0YS5sZW5ndGggKiByb3dIZWlnaHQpIC8gcm93SGVpZ2h0XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY29udHJvbFZhbHVlXCIsIGNvbnRyb2xWYWx1ZSkgLy8gTXVzdCBlcXVlYWwgcGFnZVNpemVcclxuICAgICAgKi9cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGlzRGV2TW9kZSgpICYmIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnOGMyNDY4M2QtN2Q1Mi00ZjVhLTgwOTAtMzFjNzc3ZTg4NjlkJykge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGVycm9yLm1lc3NhZ2UsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2JveFNpemUpIHtcclxuICAgICAgICB0aGlzLmNoZWNrYm94U2l6ZSA9IDE1O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPT09IHVuZGVmaW5lZCkgdGhpcy5oZWFkZXJGaXJzdFJvd0hlaWdodCA9IDQwO1xyXG4gICAgaWYgKHRoaXMuaGVhZGVyU2Vjb25kUm93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyU2Vjb25kUm93SGVpZ2h0ID0gNDA7XHJcblxyXG5cclxuICAgIC8qIFZhbGlkYXRlIGNvbHVtbnMgaW5wdXQgdG8gbWFrZSBzdXJlIG9uZSBvZiBmaWVsZHMgaXMgJ2lkJyAqL1xyXG4gICAgaWYgKCEhIXRoaXMuY29sdW1ucykge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcih0aGlzLmlkICsgXCI6IENvbHVtbnMgYXJlIG5vdCBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiBjLmZpZWxkID09PSB0aGlzLnByaW1hcnlLZXkpLmxlbmd0aCA9PT0gMCAmJiBpc0Rldk1vZGUoKSAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMuaWQgKyBcIjogVGhlIGNvbHVtbnMgbXVzdCBoYXZlIG9uZSB3aXRoICdmaWVsZCcgcHJvcGVydHkgPT09IFwiICsgdGhpcy5wcmltYXJ5S2V5LCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbilcclxuICAgIGlmICghISF0aGlzLnZpc2libGVDb2x1bW5zPy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4gYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSlcclxuXHJcbiAgICAvKiBTVEFSVDogSW5pdGlhbGl6aW5nIHNlYXJjaE9iamVjdCAqL1xyXG4gICAgY29uc3QgbmV3U2VhcmNoT2JqZWN0OiBJU2VhcmNoSXRlbVtdID0gW107XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucz8uZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgXHJcbiAgICBsZXQgbGVmdCA9IHRoaXMuc2hvd0NoZWNrYm94ID8gKHRoaXMuY2hlY2tib3hTaXplISAqIDIgfHwgMCkgOiAwOyAvLyB0aGUgZmlyc3Qgc2l6ZSBpcyBmb3IgY2hlY2tib3hcclxuICAgIFxyXG4gICAgZnJvemVuQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBpZiAoISEhYy53aWR0aCkgY29uc29sZS5lcnJvcih0aGlzLmlkICsgXCI6IEVhY2ggZnJvemVuIGNvbHVtbiBtdXN0IGhhdmUgaXRzIG51bWJlciBwcm9wZXJ0eSAnd2lkdGgnLlwiKTtcclxuICAgICAgdGhpcy5mcm96ZW5MZWZ0cy5wdXNoKGxlZnQpO1xyXG4gICAgICBsZWZ0ID0gbGVmdCArIGMud2lkdGghXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiB4LmN1cnJlbnQgPT09IHgucHJldmlvdXMpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICApLnN1YnNjcmliZSgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVt5LmN1cnJlbnRdLmlkXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKiBDaGVjayBpZiBhbnkgb2YgY29sdW1ucyBpcyB0ZW1wbGF0ZVJlZiAqL1xyXG4gICAgY29uc3QgdGVtcGxhdGVSZWZGaWx0ZXIgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICEheC50ZW1wbGF0ZVJlZilcclxuICAgIGlmICghIXRlbXBsYXRlUmVmRmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGVtcGxhdGVSZWZGaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgIGlmICh4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHQgPiBOdW1iZXIodGhpcy5yb3dIZWlnaHQucmVwbGFjZSgncHgnLCAnJykpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2hp4buBdSBjYW8gY+G7p2EgJHt0aGlzLm1scy50cmFucyh4LmNhcHRpb24pfSB0ZW1wbGF0ZVJlZiBsw6AgJHt4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHR9LCBs4bubbiBoxqFuIGNoaeG7gXUgY2FvIGPhu6dhIGTDsm5nIGzGsOG7m2kgJHt0aGlzLnJvd0hlaWdodH1gLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcblxyXG4gICAgICAvLyBDaGVjayB1bmlxdWUgb2YgXCJpZFwiXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGFyciA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlSWRzID0gKGFycjogYW55KSA9PiBhcnIuZmlsdGVyKChpdGVtOiBhbnkpID0+IGFyci5maWx0ZXIoKHg6IGFueSkgPT4geC5pZCA9PT0gaXRlbS5pZCkubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlVmlydHVhbElkcyA9IChhcnI6IGFueSkgPT4gYXJyLmZpbHRlcigoaXRlbTogYW55KSA9PiBhcnIuZmlsdGVyKCh4OiBhbnkpID0+IHgudmlydHVhbElkID09PSBpdGVtLnZpcnR1YWxJZCkubGVuZ3RoID4gMSlcclxuICAgICAgICAgIGlmICghIWZpbmREdXBsaWNhdGVJZHMoYXJyKS5sZW5ndGggJiYgISFmaW5kRHVwbGljYXRlVmlydHVhbElkcyhhcnIpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIkNvcmVUYWJsZSByZXF1aXJlcyB1bmlxdWUgaWQvdmlydHVhbElkIHZhbHVlcyFcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZT8ubWFwKChfOiBhbnkpID0+IHtcclxuICAgICAgICBuZXdDaGVja2luZ01vZGVsLnB1c2goZmFsc2UpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5sYXp5TG9hZGluZykge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZpc2libGVEYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkSWRzJ10pIHtcclxuICAgICAgY29uc3QgbmV3Q2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgICAgIGNoYW5nZXNbJ2NoZWNrZWRJZHMnXS5jdXJyZW50VmFsdWU/Lm1hcCgoY2hlY2tlZElkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVsnaWQnXSA9PT0gY2hlY2tlZElkKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5jaGVja2luZ01vZGVsID0gbmV3Q2hlY2tpbmdNb2RlbDtcclxuICAgIH1cclxuICAgIC8vIGlmIChjaGFuZ2VzWydsb2FkaW5nJ10pIHtcclxuICAgIC8vICAgdGhpcy5sb2FkaW5nID0gY2hhbmdlc1snbG9hZGluZyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIC8vIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gISEhYy5oaWRkZW4pIHx8IFtdXHJcbiAgICAgIHRoaXMucmVnaXN0ZXJSZWl6ZXJzRXZlbnRzKCk7XHJcbiAgICAgIGxldCB2aXNpYmxlV2lkdGggPSB0aGlzLnZpc2libGVDb2x1bW5zLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS53aWR0aCB8fCAwKSwgMClcclxuXHJcbiAgICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICAgIHZpc2libGVXaWR0aCArPSAodGhpcy5jaGVja2JveFNpemUgfHwgMTUpICogMlxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNob3dUb29scykge1xyXG4gICAgICAgIHZpc2libGVXaWR0aCArPSAxMDBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZpc2libGVXaWR0aCA9IHZpc2libGVXaWR0aFxyXG4gICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciA9IHZpc2libGVXaWR0aCA+IHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aFxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyXCIsIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcilcclxuICAgICAgfVxyXG4gICAgICBpZiAoISF0aGlzLmF1dG9Db2x1bW5GaXRBdmFpbGFibGVTcGFjZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGp1c3RDb2x1bW5XaWR0aHMoKSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtblNlYXJjaERlZmF1bHRPcGVuJ10pIHtcclxuICAgICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhIWNoYW5nZXNbJ2NvbHVtblNlYXJjaERlZmF1bHRPcGVuJ10uY3VycmVudFZhbHVlXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgaWYgKHRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCBjaGFuZ2VzWydoZWlnaHQnXS5jdXJyZW50VmFsdWUgKyAncHgnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3RIZWFkZXJSb3dIZWlnaHQgPSB0aGlzLmZpcnN0SGVhZGVyUm93Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlci0xc3Qtcm93LWhlaWdodCcsXHJcbiAgICAgICAgZmlyc3RIZWFkZXJSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93VmVydGljYWxMaW5lKGV2ZW50OiBEcmFnRXZlbnQsIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsTGluZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudmVydGljYWxMaW5lLCAnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZlcnRpY2FsTGluZVBvc2l0aW9uKGV2ZW50LCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhpZGVWZXJ0aWNhbExpbmUoZXZlbnQ6IERyYWdFdmVudCwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbmRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMuZmlsdGVyKCh4LCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoeC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1uc1tpbmRleF0ud2lkdGghICsgdGhpcy5lbmRYIC0gdGhpcy5zdGFydFggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zW2luZGV4XS53aWR0aCEgKz0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy52ZXJ0aWNhbExpbmUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZlcnRpY2FsTGluZSwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWZXJ0aWNhbExpbmVQb3NpdGlvbihldmVudDogRHJhZ0V2ZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnZpc2libGVDb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKTtcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsTGluZSAmJiBldmVudC5jbGllbnRYKSB7XHJcbiAgICAgIGlmIChmaWx0ZXIubGVuZ3RoID09PSAxICYmIGZpbHRlclswXS53aWR0aCEgKyBldmVudC5jbGllbnRYIC0gdGhpcy5zdGFydFggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnZlcnRpY2FsTGluZSwgJ2xlZnQnLCBgJHtldmVudC5jbGllbnRYfXB4YCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRqdXN0Q29sdW1uV2lkdGhzKCkge1xyXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlJyk7XHJcbiAgICBsZXQgdmlzaWJsZUNvbHVtbnNUb3RhbFdpZHRoID0gMDtcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoYywgaW5kZXgpID0+IHtcclxuICAgICAgdmlzaWJsZUNvbHVtbnNUb3RhbFdpZHRoICs9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJyN2aXNpYmxlLXRoLScrIGluZGV4KSkud2lkdGgucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgfSlcclxuXHJcbiAgICBsZXQgdGFibGVXaWR0aCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRhYmxlKS53aWR0aC5yZXBsYWNlKCdweCcsICcnKSk7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgdGFibGVXaWR0aCAtPSB0aGlzLmNoZWNrYm94U2l6ZSAqIDI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy5zaG93VG9vbHMpIHtcclxuICAgICAgY29uc3QgdG9vbHNUaCA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJyN0b29scy10aCcpO1xyXG4gICAgICBjb25zdCB0b29sV2lkdGggPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0b29sc1RoKS53aWR0aC5yZXBsYWNlKCdweCcsICcnKSk7XHJcbiAgICAgIHRhYmxlV2lkdGggLT0gdG9vbFdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2aXNpYmxlQ29sdW1uc1RvdGFsV2lkdGggPCB0YWJsZVdpZHRoKSB7XHJcblxyXG4gICAgICBjb25zdCBmcmVlU3BhY2UgPSB0YWJsZVdpZHRoIC0gdmlzaWJsZUNvbHVtbnNUb3RhbFdpZHRoO1xyXG5cclxuICAgICAgY29uc3QgZml0Q29lZmZpY2VudCA9IGZyZWVTcGFjZSAvIHZpc2libGVDb2x1bW5zVG90YWxXaWR0aDtcclxuICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGMud2lkdGghICo9ICgxICsgZml0Q29lZmZpY2VudCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxlckZpbHRlciA9IHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcik7XHJcbiAgICAgIGlmICghIWNhbGxlckZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBjYWxsZXIgPSBjYWxsZXJGaWx0ZXJbMF07XHJcbiAgICAgICAgY2FsbGVyLmNvcmVUYWJsZVJlZiA9IHRoaXMuY29yZVRhYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5mcmVlTW9kZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnByaW1hcnlLZXkgPT09ICdpZCcpIHtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmltYXJ5S2V5ID09PSAndmlydHVhbElkJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udmlydHVhbElkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3cgPSB4O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciA9PT0gdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcilbMF0udGJvZHlIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICghIXgpIHtcclxuICAgICAgICAgICAgdGhpcy50Ym9keWhlaWdodCA9IHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGFibGUtd2lkdGgnLCByZWN0LndpZHRoICsgJ3B4JylcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zY3JvbGxTdHJlYW0kID0gZnJvbUV2ZW50KHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpO1xyXG5cclxuICAgIC8vIENyZWF0ZSB2ZXJ0aWNhbCBsaW5lIGVsZW1lbnRcclxuICAgIHRoaXMudmVydGljYWxMaW5lID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy52ZXJ0aWNhbExpbmUsICd2ZXJ0aWNhbC1saW5lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMudmVydGljYWxMaW5lKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lciA9IHRoaXMudmlzaWJsZVdpZHRoID4gdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5pc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyXCIsIHRoaXMuaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcilcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLnJvd0hvdmVyQmdDb2xvciAmJiB0aGlzLnJvd0hvdmVyQmdDb2xvci50b1VwcGVyQ2FzZSgpICE9PSAnVFJBTlNQQVJFTlQnICkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1yb3ctaG92ZXItYmctY29sb3InLCB0aGlzLnJvd0hvdmVyQmdDb2xvcik7XHJcblxyXG4gICAgICAvLyBDaOG7iSBzdWJzY3JpZGUgc2F1IGtoaSBjw6FjIGzhu4duaCB0csOqbiDEkcOjIMSRxrDhu6NjIHRo4buxYyBoaeG7h25cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5zY3JvbGxTdHJlYW0kXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wID0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuY29yZVRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVTY3JvbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnJlZ2lzdGVyUmVpemVyc0V2ZW50cygpO1xyXG5cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZERyYWdBbmREcmFnRW5kTGlzdGVuZXJzKGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZHJhZyBldmVudCB0byB1cGRhdGUgdmVydGljYWwgbGluZSBwb3NpdGlvblxyXG4gICAgY29uc3QgZHJhZ0ZpbHRlciA9IHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKGRyYWdGaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWcnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmVydGljYWxMaW5lUG9zaXRpb24oZXZlbnQsIGZpZWxkKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gZHJhZ2VuZCBldmVudCB0byBoaWRlIHZlcnRpY2FsIGxpbmUgYW5kIHJlc2V0IGN1cnNvclxyXG4gICAgY29uc3QgZHJhZ2VuZEZpbHRlciA9IHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpO1xyXG4gICAgaWYgKGRyYWdlbmRGaWx0ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMucHVzaCh7XHJcbiAgICAgICAgZmllbGQsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQoY29udGFpbmVyRWxlbWVudCwgJ2RyYWdlbmQnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZG5kU2VydmljZS5kcmFnVHlwZSA9IEVudW1EcmFnVHlwZS5OT05FO1xyXG4gICAgICAgICAgdGhpcy5oaWRlVmVydGljYWxMaW5lKGV2ZW50LCBmaWVsZCk7XHJcbiAgICAgICAgICAvLyBDbGVhbnVwIGRyYWcgYW5kIGRyYWdlbmQgc3Vic2NyaXB0aW9uc1xyXG4gICAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FuZERyYWdFbmRTdWJzY3JpcHRpb25zKGZpZWxkKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYW51cERyYWdBbmREcmFnRW5kU3Vic2NyaXB0aW9ucyhmaWVsZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgPT09IGZpZWxkKS5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ1N1YnNjcmlwdGlvbnMgPSB0aGlzLmRyYWdTdWJzY3JpcHRpb25zLmZpbHRlcih4ID0+IHguZmllbGQgIT09IGZpZWxkKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gZmllbGQpLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnZW5kU3Vic2NyaXB0aW9ucyA9IHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMuZmlsdGVyKHggPT4geC5maWVsZCAhPT0gZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJSZWl6ZXJzRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlc2l6ZXJzKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdHJhbnNwYXJlbnRJbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgdHJhbnNwYXJlbnRJbWFnZS5zcmMgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FRQUFBQzFIQXdDQUFBQUMwbEVRVlI0Mm1QOC93Y0FBZ0FCL2lmTHdEa0FBQUFBU1VWT1JLNUNZSUk9JztcclxuXHJcbiAgICB0aGlzLnJlc2l6ZXJzLnRvQXJyYXkoKS5tYXAoKHJlZiwgaW5kZXgpID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy52aXNpYmxlQ29sdW1uc1tpbmRleF0uZmllbGQ7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZHJhZ3N0YXJ0U3Vic2NyaXB0aW9ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQocmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnc3RhcnQnKS5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1uSW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSB0cmFuc3BhcmVudCBpbWFnZSBhcyB0aGUgZ2hvc3QgaW1hZ2VcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5zZXREcmFnSW1hZ2UodHJhbnNwYXJlbnRJbWFnZSwgMCwgMCk7XHJcbiAgICAgICAgICAgIC8vIE5vdGUgdGhlIHR5cGUgb2YgZHJhZ2dpbmdcclxuICAgICAgICAgICAgdGhpcy5kbmRTZXJ2aWNlLmRyYWdUeXBlID0gRW51bURyYWdUeXBlLlRBQkxFX0NPTFVNTl9SRVNJWkU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbExpbmUoZXZlbnQsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRHJhZ0FuZERyYWdFbmRMaXN0ZW5lcnMocmVmLm5hdGl2ZUVsZW1lbnQsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5jb2x1bW5DYXB0aW9ucy50b0FycmF5KCkubWFwKChyZWYsIGluZGV4KSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMudmlzaWJsZUNvbHVtbnNbaW5kZXhdLmZpZWxkO1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRyYWdvdmVyU3Vic2NyaXB0aW9ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIC8vIHRoZSBzaW1pbGFyIHNldHVwIG9uICdkcmFnZW50ZXInIGRvZXMgbm90IHdvcmtcclxuICAgICAgICB0aGlzLmRyYWdvdmVyU3Vic2NyaXB0aW9ucy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkLFxyXG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmcm9tRXZlbnQocmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnb3ZlcicpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kbmRTZXJ2aWNlLmRyYWdUeXBlICE9PSBFbnVtRHJhZ1R5cGUuVEFCTEVfQ09MVU1OX1JFU0laRSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlQ29sdW1uSW5kZXggPiBpbmRleCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uVG9vbENsaWNrTG9jYWwocm93OiBhbnksIHRvb2xJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG9vbENsaWNrLmVtaXQoe1xyXG4gICAgICBjb2RlOiB0aGlzLnRvb2xzW3Rvb2xJbmRleF0uY29kZSxcclxuICAgICAgaWQ6IHJvd1snaWQnXVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNoZWNrQWxsKGFyZ3M6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5kYXRhLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGFyZ3MpO1xyXG4gICAgICBpZiAoYXJncykge1xyXG4gICAgICAgIG5ld1NlbGVjdGVkSWRzLnB1c2goaXRlbS5pZCk7XHJcbiAgICAgICAgbmV3U2VsZWN0ZWREYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcbiAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSBhcmdzID8gMSA6IDA7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRJZHNDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZElkcyk7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWREYXRhQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWREYXRhKTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJZHM6IG51bWJlcltdID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgICB0aGlzLmRhdGEuZmlsdGVyKChfOiBhbnksIGluZGV4OiBudW1iZXIpID0+ICEhdGhpcy5jaGVja2luZ01vZGVsW2luZGV4XSkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpXHJcbiAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAwOyAvLyBub25lXHJcbiAgICB9IGVsc2UgaWYgKG5ld1NlbGVjdGVkSWRzLmxlbmd0aCA9PT0gdGhpcy5jaGVja2luZ01vZGVsLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAxOyAvLyBhbGxcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdTdGF0ZSA9IDI7IC8vIG1peGVkXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Eb3VibGVDbGlja0xvY2FsKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHRoaXMuZGF0YVtyb3dJbmRleF0pXHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTG9jYWwocm93OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2xpY2tMb2NhbCByb3dcIiwgcm93LCBcImV2ZW50XCIsIGV2ZW50KVxyXG5cclxuICAgIGlmIChldmVudC5kZXRhaWwgPT09IDEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVSb3cgPSByb3dbdGhpcy5wcmltYXJ5S2V5XTtcclxuICAgICAgdGhpcy5vblJvd0NsaWNrLmVtaXQocm93KTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQuZGV0YWlsID09PSAyKSB7XHJcbiAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHJvdylcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblJvd1RvdWNoZW5kKHJvd0luZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMucm93VG91Y2hlbmRTdHJlYW0kLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQudmFsdWUuY3VycmVudCxcclxuICAgICAgY3VycmVudDogcm93SW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZTogc3RyaW5nLCBzZWFyY2hDb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaE9iamVjdC5maWx0ZXIoKF8sIGkpID0+IGkgPT09IHNlYXJjaENvbHVtbkluZGV4KVswXS5zZWFyY2hGb3IgPSBlO1xyXG4gICAgdGhpcy5vblNlYXJjaGluZy5lbWl0KHRoaXMuc2VhcmNoT2JqZWN0KTtcclxuICB9XHJcblxyXG4gIG9uQ29sdW1uQ2FwdGlvbkNsaWNrTG9jYWwoY29sdW1uOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkge1xyXG5cclxuICAgIGlmICghIXRoaXMuZGlzYWJsZVNvcnRpbmcgfHwgISFjb2x1bW4uc29ydERpc2FibGVkIHx8ICEhY29sdW1uLnRlbXBsYXRlUmVmKSByZXR1cm47IC8vIG5vIGFjdGlvbiBmb3IgdGVtcGxhdGVSZWYgdHlwZVxyXG5cclxuICAgIHRoaXMub25Db2x1bW5DYXB0aW9uQ2xpY2suZW1pdChjb2x1bW4pO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzb3J0IGRpY3JlY3Rpb24gcHJvcGVydHkgb2YgdGhpcyBjb2x1bW5cclxuICAgIC8vIGFuZCBjbGVhciB1cCB0aGUgcHJvcGVydHkgZm9yIHRoZSBvdGhlciB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAodmMgPT4ge1xyXG4gICAgICBpZiAodmMuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSB2Yy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FID8gRW51bVNvcnREaXJlY3Rpb24uQVNDIDogdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uQVNDID8gRW51bVNvcnREaXJlY3Rpb24uREVTQyA6IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbG93U2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhISF0aGlzLnNlYXJjaEFjdGl2ZVxyXG4gIH1cclxuXHJcbiAgb25JbmxpbmVUb29sQ2xpY2soZTogSUNvcmVCdXR0b25WTlMsIHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uSW5saW5lVG9vbENsaWNrXCIsIGUsIHJvdylcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnc3RhcnRTdWJzY3JpcHRpb25zLm1hcCh4ID0+IHguc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kcmFnU3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4LnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZHJhZ2VuZFN1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmRyYWdlbnRlclN1YnNjcmlwdGlvbnMubWFwKHggPT4geC5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICNjb3JlVGFibGUgY2xhc3M9XCJjb3JlLXRhYmxlLWNvbnRhaW5lclwiIFtjbGFzcy5oaWRlLXNlYXJjaF09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgICAgIEPhuqduIHRydXnhu4FuIGNow61uaCB4w6FjIGhlaWdodCBj4bunYSBDb3JlVGFibGVcclxuICAgICAgICBUdXkgbmhpw6puIGNoaeG7gXUgY2FvIGPhu6dhIENvcmVUYWJsZSBj4bqnbiDEkcaw4bujYyB0w61uaCBk4buxYSB2w6BvIGNoaeG7gXUgY2FvIGPhu6dhIGPDoWMgcGjhuqduIHThu60gRE9NIGzhuqduIGzGsOG7o3QgdOG7qyBs4bubcCBuZ2/DoGkgdsOgbyBs4bubcCB0cm9uZ1xyXG4gICAgICAgIEFuaCBlbSBjaMawYSB0w61uaCBraGkgdHJp4buDbiBraGFpIGNvZGUsIG7Dqm4gxJFhbmcgY+G6p24gY8OzIGNvbiBz4buRIGRlZmF1bHQgbMOgIDQwMHB4XHJcbiAgICAtLT5cclxuICAgIDx0YWJsZSBbY2xhc3Mud3JhcF09XCIhIXdyYXBcIiAjdGFibGUgW25nU3R5bGVdPVwieyBoZWlnaHQ6IChoZWlnaHQgfHwgNDAwKSArICdweCcgfVwiPlxyXG4gICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyICNmaXJzdEhlYWRlclJvdyBkYXRhLXJvdz1cIjFcIiBbY2xhc3Muc2VhcmNoLWFjdGl2ZV09XCJzZWFyY2hBY3RpdmVcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgPCEtLSBPUklHSU5BTDogW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAyIDogMVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsIGZyb3plbi1jb2xcIiBzdHlsZT1cImxlZnQ6IDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAxIDogMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gcGxlYXNlIGRvIG5vdCBjaGFuZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2hlY2tib3hTaXplICogMiArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXAgZC1mbGV4IGQtZmxleC1jZW50ZXJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwiaGVhZGVyQ2hlY2tib3hTdGF0ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNoZWNrQWxsKCRldmVudClcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ2NoZWNrLWNvbC1oZWFkZXInICsgaWRcIiBbKG5nTW9kZWwpXT1cImhlYWRlckNoZWNrYm94U3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNoZWNrQWxsKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgW2NsYXNzLm1peGVkXT1cImNoZWNraW5nU3RhdGU9PT0yXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICgoaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKiAoc2VhcmNoQWN0aXZlID8gMSA6IDApKSAvMiAtIGNoZWNrYm94U2l6ZS8yKSArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtpZF09XCIndmlzaWJsZS10aC0nICsgJGluZGV4XCIgW2NsYXNzLmZyb3plbi1jb2xdPVwiJGluZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJGluZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1skaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGhlYWRlckNvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0xcHggZm9yIGJvcmRlckJvdHRvbSBvZiBoZWFkZXIgZmlyc3Qgcm93IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2NvbHVtbkNhcHRpb24gY2xhc3M9XCJjb2x1bW4tY2FwdGlvblwiIFtjbGFzcy5hc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kZXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09MVwiIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbC53aWR0aCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7IGNvbC5jYXB0aW9uIHwgdHJhbnNsYXRlIDogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2NsYXNzaWNSZXNpemVyIGNsYXNzPVwiY2xhc3NpYy1yZXNpemVyXCIgW2RyYWdnYWJsZV09XCJ0cnVlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29scyAmJiB2aXNpYmxlQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggaWQ9XCJ0b29scy10aFwiIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFzZWFyY2hTd2l0Y2hEaXNhYmxlZCAmJiAhaXNUYWJsZVdpZGVyVGhhbkNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzUwcHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlYXJjaFN3aXRjaGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmICghc2VhcmNoU3dpdGNoRGlzYWJsZWQgJiYgISFpc1RhYmxlV2lkZXJUaGFuQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoU3dpdGNoZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgQGlmIChzZWFyY2hBY3RpdmUpIHtcclxuICAgICAgICAgICAgPHRyIGRhdGEtcm93PVwiMlwiIFtjbGFzcy5oaWRlbl09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRjhGOUZBJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICczMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgICAgIDwhLS0gT1JJR0lOQUw6IGJhY2tncm91bmRDb2xvcjogaGVhZGVyQmFja2dyb3VuZENvbG9yLCAtLT5cclxuICAgICAgICAgICAgICAgIDx0aCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCIkaW5kZXggPCBmcm96ZW4gPyAnbGVmdDogJyArIGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJydcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0Y4RjlGQScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzBweCAxMnB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC5oaWRlU2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OyBvdmVyZmxvdzogdmlzaWJsZTsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHNlYXJjaFwiIFsobmdNb2RlbCldPVwic2VhcmNoT2JqZWN0WyRpbmRleF0uc2VhcmNoRm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKCRldmVudCwgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8dGggW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRjhGOUZBJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keSAjdGJvZHkgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1sb2FkaW5nLXN1cmZhY2UgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtoZWlnaHRdPVwidGJvZHloZWlnaHQgfHwgNTAwXCI+PC9jb3JlLWxvYWRpbmctc3VyZmFjZT5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoaWRkZW5Ub3BIZWlnaHQgKyAncHgnIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgdmlzaWJsZURhdGE7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgICAgICAgPHRyIChjbGljayk9XCJvbkNsaWNrTG9jYWwocm93LCAkZXZlbnQpXCIgKHRvdWNoZW5kKT1cIm9uUm93VG91Y2hlbmQoJGluZGV4K3N0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicm93W3ByaW1hcnlLZXldID09PSBhY3RpdmVSb3cgJiYgISEhZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2tcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1idXR0b24tZ3JvdXAtdm5zIFtzaG93bkl0ZW1zXT1cImlubGluZVRvb2xJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbklubGluZVRvb2xDbGljaygkZXZlbnQsIHJvdylcIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7IHdpZHRoOiAzMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj48L2NvcmUtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBnYWxheHkgZWxlbWVudCwganVzdCBmb3IgY3NzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKCRpbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKCRpbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2luZ05nTW9kZWxDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRpbmRleCA8IGZyb3plbiA/IGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTiBNT1NUIENBU0VTIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggUFJJTUlUSVZFIFRZUEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICEhY29sLndpZHRoID8gY29sLndpZHRoICsgJ3B4JyA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAhIWNvbC5hbGlnbiA/IGNvbC5hbGlnbi50b0xvd2VyQ2FzZSgpIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjb2w/LnRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2w/LnRlbXBsYXRlUmVmITsgY29udGV4dDogeyBjb250ZXh0OiByb3csIGFsbG93RWRpdDogcm93LmlkID09PSBhY3RpdmVSb3cgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMtZ3JvdXAgZC1mbGV4LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodG9vbCBvZiB0b29sczsgdHJhY2sgdG9vbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3Rvb2xzLWljb24gJyArIHRvb2wuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0b29sLmRpc2FibGVkRm4gPyB0b29sLmRpc2FibGVkRm4hKHJvdykgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJ0b29sLmhpZGRlbkZuID8gdG9vbC5oaWRkZW5GbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub29sQ2xpY2tMb2NhbChyb3csICRpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGlkZGVuQm90dG9tSGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEBmb3Iocm93IG9mIGRhdGE7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgQGZvcihjb2wgb2Ygcm93OyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gLS0+XHJcblxyXG5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIEBpZiAoISFmb290ZXIpIHtcclxuICAgICAgICA8dGZvb3Q+XHJcbiAgICAgICAgPC90Zm9vdD5cclxuICAgICAgICB9XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoU3dpdGNoZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC10b2dnbGVyIGQtZmxleC1jZW50ZXIgcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVBbGxvd1NlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9kaXY+Il19
|
|
@@ -7478,7 +7478,7 @@ class CoreCheckboxComponent extends CoreFormControlBaseComponent {
|
|
|
7478
7478
|
multi: true,
|
|
7479
7479
|
useExisting: CoreCheckboxComponent
|
|
7480
7480
|
}
|
|
7481
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label>\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
7481
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label [class.has-text]=\"!!text && !!text.length\">\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container:has(label.has-text){display:inline-block;width:unset;vertical-align:middle}.core-checkbox-container>label.has-text{height:var(--container-size);line-height:var(--container-size);vertical-align:middle;display:inline-block;width:unset}.core-checkbox-container>label.has-text>a{margin-top:3.5px}.core-checkbox-container>label.has-text>span{height:var(--container-size);line-height:var(--container-size)}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
|
|
7482
7482
|
}
|
|
7483
7483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreCheckboxComponent, decorators: [{
|
|
7484
7484
|
type: Component,
|
|
@@ -7493,7 +7493,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
7493
7493
|
multi: true,
|
|
7494
7494
|
useExisting: CoreCheckboxComponent
|
|
7495
7495
|
}
|
|
7496
|
-
], template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label>\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"] }]
|
|
7496
|
+
], template: "<div class=\"core-checkbox-container\" (click)=\"onLabelClick($event)\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"checkbox\" [(ngModel)]=\"value\" />\r\n <label [class.has-text]=\"!!text && !!text.length\">\r\n <a class=\"checkmark\" [class.disabled]=\"disabled\"></a>\r\n <span [appTooltip]=\"text | translate : lang\" [position]=\"tooltipPosition\">{{ text | translate : lang }}</span>\r\n </label>\r\n</div>", styles: ["input{display:none}.core-checkbox-container{--container-size: 22px;--checkbox-size: 15px;--checkbox-border-color: #B9B9B9;--checkbox-hover-bg: #B9B9B9;--checkbox-bg: transparent;--checkbox-checked-bg: var(--color-basic-orange);--checkbox-color: #FFFFFF;--checkbox-border-radius: 0px;--font-size: 15px;--text-color: gray;display:inline-block;justify-content:flex-start;position:relative;font-size:var(--font-size);font-weight:400;color:var(--text-color);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;height:var(--container-size);width:var(--container-size);display:flex;align-items:center;justify-content:center;line-height:var(--container-size)}.core-checkbox-container>label{height:var(--container-size);width:var(--container-size);display:inline-flex;align-items:center;justify-content:center}.core-checkbox-container:has(label.has-text){display:inline-block;width:unset;vertical-align:middle}.core-checkbox-container>label.has-text{height:var(--container-size);line-height:var(--container-size);vertical-align:middle;display:inline-block;width:unset}.core-checkbox-container>label.has-text>a{margin-top:3.5px}.core-checkbox-container>label.has-text>span{height:var(--container-size);line-height:var(--container-size)}.core-checkbox-container .checkmark{position:absolute;float:left;height:var(--checkbox-size);width:var(--checkbox-size);border:1px solid var(--checkbox-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-bg)}.core-checkbox-container label>span{display:inline-block;height:var(--checkbox-size);line-height:var(--checkbox-size);margin-left:calc(var(--checkbox-size) * 1.5);text-overflow:ellipsis;max-width:calc(100% - var(--checkbox-size) * 4);white-space:nowrap;font-size:13px}.core-checkbox-container:hover .checkmark{background-color:var(--checkbox-hover-bg)}input:checked~label .checkmark{background-color:#fff;border-color:#848484;display:flex;align-items:center;justify-content:center}input:checked~label .disabled{background-color:gray;border-color:gray}.checkmark:after{content:\"\";position:absolute;display:none}input:checked~label .checkmark:after{display:block}.core-checkbox-container .checkmark:after{width:11px;height:6px;border-left:2px solid #464646;border-bottom:2px solid #464646;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg) translate(1px,-1px)}\n"] }]
|
|
7497
7497
|
}], ctorParameters: () => [{ type: MultiLanguageService }], propDecorators: { text: [{
|
|
7498
7498
|
type: Input
|
|
7499
7499
|
}], tooltipPosition: [{
|
|
@@ -7739,7 +7739,7 @@ class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
7739
7739
|
this.searchObject = newSearchObject;
|
|
7740
7740
|
/* END: Initializing searchObject */
|
|
7741
7741
|
const frozenColumns = this.visibleColumns?.filter((_, index) => index < this.frozen);
|
|
7742
|
-
let left = this.checkboxSize * 2 || 0; // the first size is for checkbox
|
|
7742
|
+
let left = this.showCheckbox ? (this.checkboxSize * 2 || 0) : 0; // the first size is for checkbox
|
|
7743
7743
|
frozenColumns?.map(c => {
|
|
7744
7744
|
if (!!!c.width)
|
|
7745
7745
|
console.error(this.id + ": Each frozen column must have its number property 'width'.");
|