@fundamental-ngx/core 0.43.25 → 0.43.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/combobox/combobox-mobile/combobox-mobile.component.mjs +1 -1
- package/esm2020/combobox/combobox.component.mjs +2 -2
- package/esm2020/dialog/dialog-default/dialog-default.component.mjs +1 -1
- package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.mjs +3 -3
- package/esm2020/facets/facet/facet.component.mjs +5 -3
- package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +1 -1
- package/esm2020/input-group/input-group.component.mjs +2 -2
- package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +1 -1
- package/esm2020/message-box/message-box-default/message-box-default.component.mjs +1 -1
- package/esm2020/multi-combobox/mobile/mobile-multi-combobox.component.mjs +1 -1
- package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
- package/esm2020/multi-input/multi-input.component.mjs +2 -2
- package/esm2020/popover/popover-mobile/popover-mobile.component.mjs +2 -2
- package/esm2020/quick-view/quick-view-subheader-title/quick-view-subheader-title.component.mjs +1 -1
- package/esm2020/rating-indicator/components/rating-indicator.component.mjs +2 -2
- package/esm2020/select/select-mobile/select-mobile.component.mjs +1 -1
- package/esm2020/select/select.component.mjs +2 -2
- package/esm2020/slider/slider.component.mjs +2 -2
- package/esm2020/time-picker/time-picker.component.mjs +2 -2
- package/esm2020/title/title.component.mjs +3 -3
- package/facets/facet/facet.component.d.ts +6 -1
- package/fesm2015/fundamental-ngx-core-combobox.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +4 -4
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-facets.mjs +4 -2
- package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-grid-list.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-input-group.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-box.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-slider.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-title.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-combobox.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +4 -4
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-facets.mjs +4 -2
- package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-grid-list.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-input-group.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-box.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-slider.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-title.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-title.mjs.map +1 -1
- package/fundamental-ngx-core-v0.43.27.tgz +0 -0
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/title/title.component.d.ts +1 -1
- package/fundamental-ngx-core-v0.43.25.tgz +0 -0
|
@@ -78,7 +78,7 @@ export class PopoverMobileComponent extends MobileModeBase {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
PopoverMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PopoverMobileComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: i0.ChangeDetectorRef }, { token: POPOVER_COMPONENT }, { token: MOBILE_MODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
PopoverMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PopoverMobileComponent, isStandalone: true, selector: "fd-popover-mobile", viewQueries: [{ propertyName: "_dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" data-mobile-popover>\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"viewFooter\">\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i2.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "ngmodule", type: TitleModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
81
|
+
PopoverMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PopoverMobileComponent, isStandalone: true, selector: "fd-popover-mobile", viewQueries: [{ propertyName: "_dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" data-mobile-popover>\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"viewFooter\">\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i2.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title], span[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "ngmodule", type: TitleModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PopoverMobileComponent, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: 'fd-popover-mobile', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [DialogModule, TitleModule, NgIf, CdkScrollable, ScrollbarDirective, NgTemplateOutlet], template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" data-mobile-popover>\n <fd-dialog-header>\n <h1 fd-title [id]=\"titleId\">{{ title }}</h1>\n <button fd-dialog-close-button *ngIf=\"this.mobileConfig.hasCloseButton\" (click)=\"close()\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"viewBody\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"viewFooter\">\n <ng-container *ngTemplateOutlet=\"viewFooter\"></ng-container>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
|
|
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
94
94
|
type: ViewChild,
|
|
95
95
|
args: ['dialogTemplate']
|
|
96
96
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1tb2JpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLW1vYmlsZS9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXItbW9iaWxlL3BvcG92ZXItbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUdOLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZCxpQkFBaUIsRUFDcEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUxRCxJQUFJLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQVU5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsY0FBZ0M7SUF5QnhFLGNBQWM7SUFDZCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFDSSxVQUFzQixFQUN0QixhQUE0QixFQUNwQixrQkFBcUMsRUFDbEIsaUJBQW1DLEVBQ3RCLFdBQW9DO1FBRTVFLEtBQUssQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUpwRix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBN0JqRDs7O1dBR0c7UUFDSCxpQkFBWSxHQUF5QixTQUFTLENBQUM7UUFVL0MsY0FBYztRQUNMLE9BQUUsR0FBRyxvQkFBb0IsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdELGNBQWM7UUFDTixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFnQjVDLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSwwQkFBMEIsSUFBSSxJQUFJLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLDRCQUE0QixJQUFJLElBQUksQ0FBQztRQUUxRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsOENBQThDO0lBQzlDLEtBQUs7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDJFQUEyRTtJQUNuRSwwQkFBMEI7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDaEYsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCwrQkFBK0I7SUFDdkIsV0FBVztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUM1RCxlQUFlLEVBQUUsSUFBSTtZQUNyQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLFlBQVk7WUFDcEIsTUFBTSxFQUFFLElBQUk7WUFDWixZQUFZLEVBQUUsSUFBSTtZQUNsQixlQUFlLEVBQUUsS0FBSztZQUN0QixzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7WUFDekMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDL0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7bUhBNUZRLHNCQUFzQiwwR0FtQ25CLGlCQUFpQixhQUNMLGtCQUFrQjt1R0FwQ2pDLHNCQUFzQix1TkN6Q25DLG10QkFnQkEsMkNEdUJjLFlBQVksd3RCQUFFLFdBQVcsK0JBQUUsSUFBSSw2RkFBcUMsZ0JBQWdCOzJGQUVyRixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUVaLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDOzswQkFxQzFGLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7NENBakMxQyxlQUFlO3NCQURkLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIE1PQklMRV9NT0RFX0NPTkZJRyxcbiAgICBNb2JpbGVNb2RlQmFzZSxcbiAgICBNb2JpbGVNb2RlQ29uZmlnVG9rZW4sXG4gICAgTW9iaWxlTW9kZUNvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSwgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgUE9QT1ZFUl9DT01QT05FTlQsIFBvcG92ZXJJbnRlcmZhY2UgfSBmcm9tICcuLi9wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb3BvdmVyQ2hpbGRDb250ZW50IH0gZnJvbSAnLi4vcG9wb3Zlci1jaGlsZC1jb250ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRpdGxlTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcblxubGV0IG1vYmlsZVBvcG92ZXJVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcG9wb3Zlci1tb2JpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEaWFsb2dNb2R1bGUsIFRpdGxlTW9kdWxlLCBOZ0lmLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJNb2JpbGVDb21wb25lbnQgZXh0ZW5kcyBNb2JpbGVNb2RlQmFzZTxQb3BvdmVySW50ZXJmYWNlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJylcbiAgICBfZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGZyb20gbW9iaWxlIGNsYXNzIGNhbiBub3QgcHJlZml4IF8sXG4gICAgICogdG8gYXZvaWQgYnVpbGQgaXNzdWVzXG4gICAgICovXG4gICAgY2hpbGRDb250ZW50PzogUG9wb3ZlckNoaWxkQ29udGVudCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKiBDdXJyZW50IHBvcG92ZXIgdGl0bGUgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8qKiBEaWFsb2cgYm9keSBjb250ZW50ICovXG4gICAgdmlld0JvZHk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuXG4gICAgLyoqIERpYWxvZyBmb290ZXIgY29udGVudCAqL1xuICAgIHZpZXdGb290ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpZCA9ICdmZC1wb3BvdmVyLW1vYmlsZS0nICsgbW9iaWxlUG9wb3ZlclVuaXF1ZUlkKys7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB0aXRsZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy10aXRsZSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JyZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFBPUE9WRVJfQ09NUE9ORU5UKSBfcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckludGVyZmFjZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNT0JJTEVfTU9ERV9DT05GSUcpIG1vYmlsZU1vZGVzOiBNb2JpbGVNb2RlQ29uZmlnVG9rZW5bXVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBkaWFsb2dTZXJ2aWNlLCBfcG9wb3ZlckNvbXBvbmVudCwgTW9iaWxlTW9kZUNvbnRyb2wuUE9QT1ZFUiwgbW9iaWxlTW9kZXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUG9wb3Zlck9wZW5DaGFuZ2UoKTtcblxuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5tb2JpbGVDb25maWcudGl0bGUgfHwgJyc7XG4gICAgICAgIHRoaXMudmlld0JvZHkgPSB0aGlzLmNoaWxkQ29udGVudD8ucG9wb3ZlckJvZHlDb250ZW50VGVtcGxhdGUgPz8gbnVsbDtcbiAgICAgICAgdGhpcy52aWV3Rm9vdGVyID0gdGhpcy5jaGlsZENvbnRlbnQ/LnBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGUgPz8gbnVsbDtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvcnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgICAgICAgc3VwZXIub25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBEaWFsb2cgYW5kIFBvcG92ZXIgY29tcG9uZW50ICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW5zL2Nsb3NlcyB0aGUgRGlhbG9nIGJhc2VkIG9uIFBvcG92ZXIgaXNPcGVuQ2hhbmdlIGV2ZW50cyAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUG9wb3Zlck9wZW5DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50LmlzT3BlbkNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc09wZW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5oaWRlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gT3BlbnMgdGhlIERpYWxvZyAqL1xuICAgIHByaXZhdGUgX29wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuX2RpYWxvZ1RlbXBsYXRlLCB7XG4gICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICBob3Jpem9udGFsUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgZm9jdXNUcmFwcGVkOiB0cnVlLFxuICAgICAgICAgICAgZXNjS2V5Q2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiB0aGlzLnRpdGxlSWRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2dUZW1wbGF0ZT5cbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiBkYXRhLW1vYmlsZS1wb3BvdmVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxoMSBmZC10aXRsZSBbaWRdPVwidGl0bGVJZFwiPnt7IHRpdGxlIH19PC9oMT5cbiAgICAgICAgICAgIDxidXR0b24gZmQtZGlhbG9nLWNsb3NlLWJ1dHRvbiAqbmdJZj1cInRoaXMubW9iaWxlQ29uZmlnLmhhc0Nsb3NlQnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWV3Qm9keVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuXG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyICpuZ0lmPVwidmlld0Zvb3RlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZpZXdGb290ZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1tb2JpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9wb3Zlci9wb3BvdmVyLW1vYmlsZS9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wb3BvdmVyL3BvcG92ZXItbW9iaWxlL3BvcG92ZXItbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUdOLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZCxpQkFBaUIsRUFDcEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUxRCxJQUFJLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQVU5QixNQUFNLE9BQU8s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QUFFLFdBQVcsK0JBQUUsSUFBSSw2RkFBcUMsZ0JBQWdCOzJGQUVyRixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUVaLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDOzswQkFxQzFGLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7NENBakMxQyxlQUFlO3NCQURkLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIE1PQklMRV9NT0RFX0NPTkZJRyxcbiAgICBNb2JpbGVNb2RlQmFzZSxcbiAgICBNb2JpbGVNb2RlQ29uZmlnVG9rZW4sXG4gICAgTW9iaWxlTW9kZUNvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSwgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgUE9QT1ZFUl9DT01QT05FTlQsIFBvcG92ZXJJbnRlcmZhY2UgfSBmcm9tICcuLi9wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb3BvdmVyQ2hpbGRDb250ZW50IH0gZnJvbSAnLi4vcG9wb3Zlci1jaGlsZC1jb250ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRpdGxlTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcblxubGV0IG1vYmlsZVBvcG92ZXJVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcG9wb3Zlci1tb2JpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLW1vYmlsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEaWFsb2dNb2R1bGUsIFRpdGxlTW9kdWxlLCBOZ0lmLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJNb2JpbGVDb21wb25lbnQgZXh0ZW5kcyBNb2JpbGVNb2RlQmFzZTxQb3BvdmVySW50ZXJmYWNlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJylcbiAgICBfZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGZyb20gbW9iaWxlIGNsYXNzIGNhbiBub3QgcHJlZml4IF8sXG4gICAgICogdG8gYXZvaWQgYnVpbGQgaXNzdWVzXG4gICAgICovXG4gICAgY2hpbGRDb250ZW50PzogUG9wb3ZlckNoaWxkQ29udGVudCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKiBDdXJyZW50IHBvcG92ZXIgdGl0bGUgKi9cbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8qKiBEaWFsb2cgYm9keSBjb250ZW50ICovXG4gICAgdmlld0JvZHk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuXG4gICAgLyoqIERpYWxvZyBmb290ZXIgY29udGVudCAqL1xuICAgIHZpZXdGb290ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpZCA9ICdmZC1wb3BvdmVyLW1vYmlsZS0nICsgbW9iaWxlUG9wb3ZlclVuaXF1ZUlkKys7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB0aXRsZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy10aXRsZSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JyZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFBPUE9WRVJfQ09NUE9ORU5UKSBfcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckludGVyZmFjZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNT0JJTEVfTU9ERV9DT05GSUcpIG1vYmlsZU1vZGVzOiBNb2JpbGVNb2RlQ29uZmlnVG9rZW5bXVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBkaWFsb2dTZXJ2aWNlLCBfcG9wb3ZlckNvbXBvbmVudCwgTW9iaWxlTW9kZUNvbnRyb2wuUE9QT1ZFUiwgbW9iaWxlTW9kZXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUG9wb3Zlck9wZW5DaGFuZ2UoKTtcblxuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5tb2JpbGVDb25maWcudGl0bGUgfHwgJyc7XG4gICAgICAgIHRoaXMudmlld0JvZHkgPSB0aGlzLmNoaWxkQ29udGVudD8ucG9wb3ZlckJvZHlDb250ZW50VGVtcGxhdGUgPz8gbnVsbDtcbiAgICAgICAgdGhpcy52aWV3Rm9vdGVyID0gdGhpcy5jaGlsZENvbnRlbnQ/LnBvcG92ZXJGb290ZXJDb250ZW50VGVtcGxhdGUgPz8gbnVsbDtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvcnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgICAgICAgc3VwZXIub25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBEaWFsb2cgYW5kIFBvcG92ZXIgY29tcG9uZW50ICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW5zL2Nsb3NlcyB0aGUgRGlhbG9nIGJhc2VkIG9uIFBvcG92ZXIgaXNPcGVuQ2hhbmdlIGV2ZW50cyAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUG9wb3Zlck9wZW5DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50LmlzT3BlbkNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc09wZW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5oaWRlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gT3BlbnMgdGhlIERpYWxvZyAqL1xuICAgIHByaXZhdGUgX29wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuX2RpYWxvZ1RlbXBsYXRlLCB7XG4gICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICBob3Jpem9udGFsUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIC4uLnRoaXMuZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgZm9jdXNUcmFwcGVkOiB0cnVlLFxuICAgICAgICAgICAgZXNjS2V5Q2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiB0aGlzLnRpdGxlSWRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2dUZW1wbGF0ZT5cbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiBkYXRhLW1vYmlsZS1wb3BvdmVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxoMSBmZC10aXRsZSBbaWRdPVwidGl0bGVJZFwiPnt7IHRpdGxlIH19PC9oMT5cbiAgICAgICAgICAgIDxidXR0b24gZmQtZGlhbG9nLWNsb3NlLWJ1dHRvbiAqbmdJZj1cInRoaXMubW9iaWxlQ29uZmlnLmhhc0Nsb3NlQnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWV3Qm9keVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuXG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyICpuZ0lmPVwidmlld0Zvb3RlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZpZXdGb290ZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
package/esm2020/quick-view/quick-view-subheader-title/quick-view-subheader-title.component.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import * as i1 from "@fundamental-ngx/core/title";
|
|
|
4
4
|
export class QuickViewSubheaderTitleComponent {
|
|
5
5
|
}
|
|
6
6
|
QuickViewSubheaderTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuickViewSubheaderTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7
|
-
QuickViewSubheaderTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title", ngImport: i0, template: "<h5 fd-title [headerSize]=\"5\">\n <ng-content></ng-content>\n</h5>\n", dependencies: [{ kind: "component", type: i1.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7
|
+
QuickViewSubheaderTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: QuickViewSubheaderTitleComponent, selector: "fd-quick-view-subheader-title", ngImport: i0, template: "<h5 fd-title [headerSize]=\"5\">\n <ng-content></ng-content>\n</h5>\n", dependencies: [{ kind: "component", type: i1.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title], span[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8
8
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: QuickViewSubheaderTitleComponent, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ selector: 'fd-quick-view-subheader-title', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 fd-title [headerSize]=\"5\">\n <ng-content></ng-content>\n</h5>\n" }]
|
|
@@ -121,7 +121,7 @@ export class RatingIndicatorComponent {
|
|
|
121
121
|
/** @hidden */
|
|
122
122
|
writeValue(value) {
|
|
123
123
|
this._value = this._parseValue(value);
|
|
124
|
-
this._changeDetectorRef.
|
|
124
|
+
this._changeDetectorRef.detectChanges();
|
|
125
125
|
}
|
|
126
126
|
/** @hidden */
|
|
127
127
|
registerOnChange(fn) {
|
|
@@ -315,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
315
315
|
}], ratingChanged: [{
|
|
316
316
|
type: Output
|
|
317
317
|
}], buildComponentCssClass: [] } });
|
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUNILDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBRWpCLHVCQUF1QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFdEYsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBMEJsQixNQUFNLE9BQU8sd0JBQXdCO0lBMkNqQzs7T0FFRztJQUNILElBQ0ksaUJBQWlCLENBQUMsS0FBYTtRQUMvQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHLENB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cUIsaUJBR2hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELHVCQUF1QiwwQkFBMEI7cUJBQ3BEO2lJQU9ELEtBQUs7c0JBREosS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBUU4sU0FBUztzQkFGUixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFROUIsY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFXOUIsUUFBUTtzQkFIUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1CQUFtQjs7c0JBQy9CLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVNqQyxXQUFXO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsdUJBQXVCO2dCQU9oQyxpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBVU4sV0FBVztzQkFEVixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQVFOLE9BQU87c0JBRE4sS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU1OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQU9OLGFBQWE7c0JBRFosTUFBTTtnQkFrSFAsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICAgIElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZLFxuICAgIElORElDQVRPUl9QUkVGSVgsXG4gICAgSU5ESUNBVE9SX0NMQVNTRVMsXG4gICAgUmF0aW5nSW5kaWNhdG9yU2l6ZSxcbiAgICBSYXRpbmdJbmRpY2F0b3JTaXplRW51bVxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3NCdWlsZGVyLCBhcHBseUNzc0NsYXNzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyByZWdpc3RlckZvcm1JdGVtQ29udHJvbCwgRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuXG5sZXQgcmF0aW5nVUlEID0gMDtcblxuaW50ZXJmYWNlIE51bWJlcktleTxUPiB7XG4gICAgW2tleTogbnVtYmVyXTogVDtcbn1cblxuaW50ZXJmYWNlIFJhdGluZ1ZpZXdJdGVtIHtcbiAgICByYXRlOiBudW1iZXI7XG4gICAgdm90ZXM6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yYXRpbmctaW5kaWNhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmF0aW5nSW5kaWNhdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFJhdGluZ0luZGljYXRvckNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0luZGljYXRvckNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENzc0NsYXNzQnVpbGRlciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBbbmFtZV0gYXR0cmlidXRlIG9mIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFNldHMgdGhlIGlzLWRpc2FibGVkIGNsYXNzIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFdoZXRoZXIgdGhlIHJhdGluZyBpbmRpY2F0b3IgaXMgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzYWJsZWQnKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJylcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaXMtZGlzcGxheS1tb2RlIGNsYXNzIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFdoZXRoZXIgdGhlIHJhdGluZyBpbmRpY2F0b3IgaXMgaW4gZGlzcGxheU1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzcGxheS1tb2RlJylcbiAgICBkaXNwbGF5TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJhdGVzIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpbmRpY2F0b3JDYXBhY2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBJTkRJQ0FUT1JfREVGQVVMVF9DQVBBQ0lUWSk7XG4gICAgICAgIHRoaXMuX2luZGljYXRvckNhcGFjaXR5ID0gdmFsIDwgMSA/IElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZIDogdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgaGFsZiB2YWx1ZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0hhbHZlcyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVXNlcidzIHZhbHVlIG51bWJlciBvZiByYXRpbmdzLiBJZiBwcm92aWRlZCwgT3ZlcnJpZGVzIHJhdGluZ0F2ZXJhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZSA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBUb3RhbCBudW1iZXIgb2YgcmF0aW5ncy4gSWYgcHJvdmlkZWQsIHdpbGwgZGlzcGxheSB0ZXh0IHNob3dpbmcgdGhlIHRvdGFsIG51bWJlciBvZiByYXRpbmdzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG90YWxSYXRpbmdzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBSYXRpbmcgYXZlcmFnZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0aW5nQXZlcmFnZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIHdoZXJlIHRoZSBrZXkgaXMgdGhlIHJhdGluZyBhbmQgdGhlIHZhbHVlIGlzIHRoZSB0b3RhbCBzdW0gb2YgdGhvc2UgcmF0aW5ncy5cbiAgICAgKiBPdmVycmlkZXMgdG90YWxSYXRpbmdzIGFuZCByYXRpbmdBdmVyYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0aW5nczogTnVtYmVyS2V5PG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSBwb3BvdmVyIHRoYXQgc2hvd3MgdGhlIHN1bSBvZiBlYWNoIHJhdGluZy4gUmVxdWlyZXMgW3JhdGluZ3NdIG9iamVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBbGxSYXRpbmdzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJY29uIGNsYXNzIGZvciByYXRlZCBpY29uIGZyb20gZnVuZGFtZW50YWwtc3R5bGVzIGxpYiBodHRwczovL3NhcC5naXRodWIuaW8vZnVuZGFtZW50YWwtc3R5bGVzLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtaWNvbi0tc2l6ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJhdGVkSWNvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEljb24gY2xhc3MgZm9yIHVucmF0ZWQgaWNvbiBmcm9tIGZ1bmRhbWVudGFsLXN0eWxlcyBsaWIgaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2Z1bmRhbWVudGFsLXN0eWxlcy8/cGF0aD0vZG9jcy9jb21wb25lbnRzLWljb24tLXNpemVzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB1bnJhdGVkSWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUG9zc2libGUgdmFsdWVzIGFyZSAneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAnY296eScsICdjb21wYWN0JywgJ2NvbmRlbnNlZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFJhdGluZ0luZGljYXRvclNpemUgPSAnbWQnO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBkaXZpZGVyIGxhYmVsIGJldHdlZW4gdmlldyB2YWx1ZSBhbmQgaW5kaWNhdG9yIGNvdW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHluYW1pY1RleHRJbmRpY2F0b3IgPSAnb2YnO1xuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBzZXRzIG9yIGNoYW5nZXMgdGhlaXIgcmF0aW5nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJhdGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2l6ZUNsYXNzID0gdGhpcy5fZ2V0U2l6ZUNsYXNzKHRoaXMuc2l6ZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmF0ZXM6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yYXRpbmdJdGVtczogUmF0aW5nVmlld0l0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yYXRpbmdVSUQgPSByYXRpbmdVSUQrKztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luZGljYXRvckNhcGFjaXR5ID0gSU5ESUNBVE9SX0RFRkFVTFRfQ0FQQUNJVFk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZSA9IDA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlRHluYW1pY1RleHQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB2aWV3UmF0aW5nVUlEKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXRpbmdVSUQ7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGluZGljYXRvckNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmRpY2F0b3JDYXBhY2l0eTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdmlld1ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFRvVmFsdWUoKTtcbiAgICAgICAgdGhpcy5fcmF0ZXMgPSB0aGlzLl9nZXRSYXRlcygpO1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5fZ2VuZXJhdGVSYXRpbmdzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICdjbGFzcycgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ3NpemUnIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICdyYXRlZEljb24nIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICd1bnJhdGVkSWNvbicgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ2FsbG93SGFsdmVzJyBpbiBjaGFuZ2VzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCd2YWx1ZScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9jb252ZXJ0VG9WYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnaW5kaWNhdG9yQ2FwYWNpdHknIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhdGVzID0gdGhpcy5fZ2V0UmF0ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2FsbG93SGFsdmVzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRUb1ZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLl9yYXRlcyA9IHRoaXMuX2dldFJhdGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ3JhdGluZ3MnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlUmF0aW5ncygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9wYXJzZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfSk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25TZWxlY3QodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMucmF0aW5nQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhpcy5zaXplQ2xhc3MgPSB0aGlzLl9nZXRTaXplQ2xhc3ModGhpcy5zaXplKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgSU5ESUNBVE9SX1BSRUZJWCxcbiAgICAgICAgICAgIHRoaXMuc2l6ZUNsYXNzLFxuICAgICAgICAgICAgdGhpcy5hbGxvd0hhbHZlcyA/IElORElDQVRPUl9DTEFTU0VTLmhhbHZlcyA6ICcnLFxuICAgICAgICAgICAgISF0aGlzLnJhdGVkSWNvbiAmJiAhIXRoaXMudW5yYXRlZEljb24gPyBJTkRJQ0FUT1JfQ0xBU1NFUy5pY29uIDogJycsXG4gICAgICAgICAgICB0aGlzLl9oaWRlRHluYW1pY1RleHQgfHwgIXRoaXMuX3ZhbHVlID8gSU5ESUNBVE9SX0NMQVNTRVMuaGlkZUR5bmFtaWNUZXh0IDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdlbmVyYXRlIHJhdGluZyBpdGVtcyBmb3IgcG9wb3ZlciBjb250ZW50IGlmIHJhdGluZyBvYmplY3Qgd2FzIGRlZmluZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZVJhdGluZ3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yYXRpbmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF0aW5ncyA9IE9iamVjdC5lbnRyaWVzKHRoaXMucmF0aW5ncylcbiAgICAgICAgICAgIC5maWx0ZXIoKFtyYXRlLCB2b3RlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9yYXRlID0gK3JhdGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFpc05hTihfcmF0ZSkgJiYgIWlzTmFOKCt2b3RlKSAmJiBfcmF0ZSA+IDA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcCgoW3JhdGUsIHZvdGVzXSkgPT4gKHsgcmF0ZTogK3JhdGUsIHZvdGVzIH0pKTtcbiAgICAgICAgaWYgKHJhdGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0b3RhbFZvdGVzLCB0b3RhbFJhdGluZyB9ID0gcmF0aW5ncy5yZWR1Y2UoXG4gICAgICAgICAgICAodG90YWwsIHJhdGluZykgPT4gKHtcbiAgICAgICAgICAgICAgICB0b3RhbFZvdGVzOiB0b3RhbC50b3RhbFZvdGVzICsgcmF0aW5nLnZvdGVzLFxuICAgICAgICAgICAgICAgIHRvdGFsUmF0aW5nOiB0b3RhbC50b3RhbFJhdGluZyArIHJhdGluZy5yYXRlICogcmF0aW5nLnZvdGVzXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHsgdG90YWxWb3RlczogMCwgdG90YWxSYXRpbmc6IDAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3JhdGluZ0l0ZW1zID0gcmF0aW5ncztcbiAgICAgICAgdGhpcy5yYXRpbmdBdmVyYWdlID0gdG90YWxSYXRpbmcgLyB0b3RhbFZvdGVzO1xuICAgICAgICB0aGlzLnRvdGFsUmF0aW5ncyA9IHRvdGFsVm90ZXM7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFRvVmFsdWUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCBjb252ZXJ0ZWQgdmlld1ZhbHVlIGZvciByZW5kZXIgaW4gY29tcG9uZW50IHRlbXBsYXRlIGZyb20gb3JpZ2luYWwgdmFsdWUgaWYgaXQgc3RpbGwgZXhpc3RzLCBvciByYXRpbmdBdmVyYWdlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRUb1ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJzZVZhbHVlKHRoaXMudmFsdWUgfHwgdGhpcy5yYXRpbmdBdmVyYWdlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCBjb252ZXJ0ZWQgdmFsdWUgZnJvbSBvcmlnaW5hbCB0byB2aWV3IHZhbHVlIHdpdGggZGVwZW5kcyBvbiBoYWx2ZXNcbiAgICAgKiBGb3IgZXhhbXBsZSxcbiAgICAgKiAgb3JpZ2luYWwgdmFsdWUgaXMgZXF1YWwgdG8gMi4zNCwgeW91IHdpbGwgZ2V0IGFuZCByZW5kZXIgMlxuICAgICAqICBvcmlnaW5hbCB2YWx1ZSBpcyBlcXVhbCB0byAzLjc0LCB5b3Ugd2lsbCBnZXQgYW5kIHJlbmRlciA0XG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGFyc2VWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW50ZWdlciA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgICAgICBjb25zdCBmcmFjdGlvbmFsID0gdmFsdWUgJSAxO1xuICAgICAgICBsZXQgdiA9IGludGVnZXI7XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dIYWx2ZXMgJiYgZnJhY3Rpb25hbCA+IDAuMjUgJiYgZnJhY3Rpb25hbCA8PSAwLjUpIHtcbiAgICAgICAgICAgIHYgPSBpbnRlZ2VyICsgMC41O1xuICAgICAgICB9IGVsc2UgaWYgKGZyYWN0aW9uYWwgPiAwLjUpIHtcbiAgICAgICAgICAgIHYgPSBpbnRlZ2VyICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmluZGljYXRvckNvdW50LCB2KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCByYXRpbmcgaWNvbnMgYXJyYXkgd2l0aCB2YWx1ZSBhbmQgdW5pYyBpZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFJhdGVzKCk6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10ge1xuICAgICAgICBjb25zdCB3aXRoSGFsdmVzID0gdGhpcy5hbGxvd0hhbHZlcyA/IDIgOiAxO1xuICAgICAgICByZXR1cm4gQXJyYXkodGhpcy5pbmRpY2F0b3JDb3VudCAqIHdpdGhIYWx2ZXMpXG4gICAgICAgICAgICAuZmlsbChgcmF0aW5nLSR7dGhpcy5fcmF0aW5nVUlEfWApXG4gICAgICAgICAgICAubWFwKChuYW1lLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogYCR7bmFtZX0tJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogKGluZGV4ICsgMSkgLyB3aXRoSGFsdmVzXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCByYXRpbmcgaWNvbnMgYXJyYXkgd2l0aCB2YWx1ZSBhbmQgdW5pYyBpZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFNpemVDbGFzcyhzaXplOiBSYXRpbmdJbmRpY2F0b3JTaXplKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke0lORElDQVRPUl9QUkVGSVh9LS0ke3NpemUgaW4gUmF0aW5nSW5kaWNhdG9yU2l6ZUVudW0gPyBzaXplIDogJ21kJ31gO1xuICAgIH1cbn1cbiIsIjwhLS0gIHJvbGU9XCJhcHBsaWNhdGlvblwiIGlzIHVzZWQgaW4gb3JkZXIgdG8gbGV0IHVzZXIgdG8gY2hhbmdlIHZhbHVlIHdpdGggbGVmdC9yaWdodCBhcnJvd3MgaW4gSkFXUywgc2luY2UgSkFXUyBvdnZlcnJpZGVzIHRoZXNlIGFjdGlvbnMgLS0+XG48ZGl2IGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fY29udGFpbmVyXCIgcm9sZT1cImFwcGxpY2F0aW9uXCIgYXJpYS1yb2xlZGVzY3JpcHRpb249XCJSYXRpbmcgaW5kaWNhdG9yXCI+XG4gICAgPCEtLSBaZXJvIHZhbHVlIGlmIHdlIGRvbid0IGhhdmUgcHJvdmlkZWQgdmFsdWUgZnJvbSB1c2VyLCBgcmF0aW5nQXZlcmFnZWAgb3IgYHJhdGluZ3NgIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ6ZXJvUmF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gQXZhaWxhYmxlIHJhdGUgdmFsdWVzIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJhdGUgb2YgX3JhdGVzOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImkgfCByYXRpbmdTdGFyTGFiZWw6IF9yYXRlcy5sZW5ndGg6YWxsb3dIYWx2ZXNcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cInJhdGUuaWRcIlxuICAgICAgICAgICAgbmFtZT1cInJhdGluZy17eyB2aWV3UmF0aW5nVUlEIH19XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyYXRlLnZhbHVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInZpZXdWYWx1ZSA9PT0gcmF0ZS52YWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QocmF0ZS52YWx1ZSlcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbFwiIFtmb3JdPVwicmF0ZS5pZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJyYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXJhdGVkXCIgW2NsYXNzXT1cInVucmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ1bnJhdGVkSWNvblwiIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWwtdW5yYXRlZFwiIFtjbGFzc109XCJyYXRlZEljb25cIj48L2k+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gUG9wb3ZlciBpZiBkaXNwbGF5QWxsUmF0aW5ncyBpcyB0cnVlIGFuZCB3ZSBoYXZlIHJhdGluZ3Mgb2JqZWN0IC0tPlxuPHNwYW5cbiAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJhbGxSYXRpbmdDb250ZW50XCJcbiAgICAqbmdJZj1cImRpc3BsYXlBbGxSYXRpbmdzICYmIF9yYXRpbmdJdGVtcz8ubGVuZ3RoOyBlbHNlIGR5bmFtaWNUZXh0XCJcbiAgICBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2R5bmFtaWMtdGV4dFwiXG4+XG4gICAgKDxzcGFuIGFyZWEtbGFiZWw9XCJUb3RhbCByYWl0aW5nXCIgZmQtbGluaz57eyB0b3RhbFJhdGluZ3MgfX08L3NwYW5cbiAgICA+KVxuPC9zcGFuPlxuPGZkLXBvcG92ZXJcbiAgICAjYWxsUmF0aW5nQ29udGVudFxuICAgIFt0cmlnZ2Vyc109XCJbJ21vdXNlZW50ZXInLCAnbW91c2VsZWF2ZSddXCJcbiAgICBbbm9BcnJvd109XCJmYWxzZVwiXG4gICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fcG9wb3ZlclwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX3N1bS1yb3dcIiBbY2xhc3NdPVwic2l6ZUNsYXNzXCIgKm5nRm9yPVwibGV0IHJhdGluZyBvZiBfcmF0aW5nSXRlbXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmF0ZSBvZiBfcmF0ZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dC1jaGVja2VkXT1cInJhdGUudmFsdWUgPT09IHJhdGluZy5yYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInJhdGVkSWNvblwiIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWwtcmF0ZWRcIiBbY2xhc3NdPVwidW5yYXRlZEljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwidW5yYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXVucmF0ZWRcIiBbY2xhc3NdPVwicmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICh7eyByYXRpbmcudm90ZXMgfX0pXG4gICAgPC9kaXY+XG48L2ZkLXBvcG92ZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY1RleHQ+XG4gICAgPHNwYW4gKm5nSWY9XCJ0b3RhbFJhdGluZ3NcIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2R5bmFtaWMtdGV4dFwiPih7eyB0b3RhbFJhdGluZ3MgfX0pPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiIXRvdGFsUmF0aW5nc1wiIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fZHluYW1pYy10ZXh0XCJcbiAgICAgICAgPih7eyB2aWV3VmFsdWUgfX0ge3sgZHluYW1pY1RleHRJbmRpY2F0b3IgfX0ge3sgaW5kaWNhdG9yQ291bnQgfX0pPC9zcGFuXG4gICAgPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjemVyb1JhdGUgbGV0LWhhbHZlcz1cImhhbHZlc1wiPlxuICAgIDxpbnB1dFxuICAgICAgICBhcmlhLWxhYmVsPVwiUmVzZXQgdG8gemVyb1wiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2lucHV0IGZkLXJhdGluZy1pbmRpY2F0b3JfX2lucHV0LS16ZXJvLXJhdGluZ1wiXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdCgwKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIG5hbWU9XCJyYXRpbmcte3sgdmlld1JhdGluZ1VJRCB9fXt7IGhhbHZlcyA/ICctaGFsdmVzJyA6ICcnIH19XCJcbiAgICAgICAgW2NoZWNrZWRdPVwidmlld1ZhbHVlID09PSAwXCJcbiAgICAvPlxuICAgIDxsYWJlbCBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsIGZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLS16ZXJvLXJhdGluZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvbGFiZWw+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yYXRpbmctaW5kaWNhdG9yL2NvbXBvbmVudHMvcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUNILDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBRWpCLHVCQUF1QixFQUMxQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBbUIsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFdEYsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBMEJsQixNQUFNLE9BQU8sd0JBQXdCO0lBMkNqQzs7T0FFRztJQUNILElBQ0ksaUJBQWlCLENBQUMsS0FBYTtRQUMvQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxHQUFHLENB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cUIsaUJBR2hCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELHVCQUF1QiwwQkFBMEI7cUJBQ3BEO2lJQU9ELEtBQUs7c0JBREosS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBUU4sU0FBUztzQkFGUixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFROUIsY0FBYztzQkFGYixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFXOUIsUUFBUTtzQkFIUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1CQUFtQjs7c0JBQy9CLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVNqQyxXQUFXO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsdUJBQXVCO2dCQU9oQyxpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBVU4sV0FBVztzQkFEVixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQVFOLE9BQU87c0JBRE4sS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU1OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQU9OLGFBQWE7c0JBRFosTUFBTTtnQkFrSFAsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICAgIElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZLFxuICAgIElORElDQVRPUl9QUkVGSVgsXG4gICAgSU5ESUNBVE9SX0NMQVNTRVMsXG4gICAgUmF0aW5nSW5kaWNhdG9yU2l6ZSxcbiAgICBSYXRpbmdJbmRpY2F0b3JTaXplRW51bVxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3NCdWlsZGVyLCBhcHBseUNzc0NsYXNzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyByZWdpc3RlckZvcm1JdGVtQ29udHJvbCwgRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuXG5sZXQgcmF0aW5nVUlEID0gMDtcblxuaW50ZXJmYWNlIE51bWJlcktleTxUPiB7XG4gICAgW2tleTogbnVtYmVyXTogVDtcbn1cblxuaW50ZXJmYWNlIFJhdGluZ1ZpZXdJdGVtIHtcbiAgICByYXRlOiBudW1iZXI7XG4gICAgdm90ZXM6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yYXRpbmctaW5kaWNhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmF0aW5nLWluZGljYXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmF0aW5nSW5kaWNhdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFJhdGluZ0luZGljYXRvckNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhdGluZ0luZGljYXRvckNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENzc0NsYXNzQnVpbGRlciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBbbmFtZV0gYXR0cmlidXRlIG9mIGlucHV0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWxsZWRCeTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFNldHMgdGhlIGlzLWRpc2FibGVkIGNsYXNzIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFdoZXRoZXIgdGhlIHJhdGluZyBpbmRpY2F0b3IgaXMgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzYWJsZWQnKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJylcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaXMtZGlzcGxheS1tb2RlIGNsYXNzIHRvIHRoZSBlbGVtZW50LlxuICAgICAqIFdoZXRoZXIgdGhlIHJhdGluZyBpbmRpY2F0b3IgaXMgaW4gZGlzcGxheU1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzcGxheS1tb2RlJylcbiAgICBkaXNwbGF5TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJhdGVzIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpbmRpY2F0b3JDYXBhY2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBJTkRJQ0FUT1JfREVGQVVMVF9DQVBBQ0lUWSk7XG4gICAgICAgIHRoaXMuX2luZGljYXRvckNhcGFjaXR5ID0gdmFsIDwgMSA/IElORElDQVRPUl9ERUZBVUxUX0NBUEFDSVRZIDogdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgaGFsZiB2YWx1ZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0hhbHZlcyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVXNlcidzIHZhbHVlIG51bWJlciBvZiByYXRpbmdzLiBJZiBwcm92aWRlZCwgT3ZlcnJpZGVzIHJhdGluZ0F2ZXJhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZSA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBUb3RhbCBudW1iZXIgb2YgcmF0aW5ncy4gSWYgcHJvdmlkZWQsIHdpbGwgZGlzcGxheSB0ZXh0IHNob3dpbmcgdGhlIHRvdGFsIG51bWJlciBvZiByYXRpbmdzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG90YWxSYXRpbmdzOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBSYXRpbmcgYXZlcmFnZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0aW5nQXZlcmFnZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIHdoZXJlIHRoZSBrZXkgaXMgdGhlIHJhdGluZyBhbmQgdGhlIHZhbHVlIGlzIHRoZSB0b3RhbCBzdW0gb2YgdGhvc2UgcmF0aW5ncy5cbiAgICAgKiBPdmVycmlkZXMgdG90YWxSYXRpbmdzIGFuZCByYXRpbmdBdmVyYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmF0aW5nczogTnVtYmVyS2V5PG51bWJlcj47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IHRoZSBwb3BvdmVyIHRoYXQgc2hvd3MgdGhlIHN1bSBvZiBlYWNoIHJhdGluZy4gUmVxdWlyZXMgW3JhdGluZ3NdIG9iamVjdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlBbGxSYXRpbmdzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJY29uIGNsYXNzIGZvciByYXRlZCBpY29uIGZyb20gZnVuZGFtZW50YWwtc3R5bGVzIGxpYiBodHRwczovL3NhcC5naXRodWIuaW8vZnVuZGFtZW50YWwtc3R5bGVzLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtaWNvbi0tc2l6ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJhdGVkSWNvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEljb24gY2xhc3MgZm9yIHVucmF0ZWQgaWNvbiBmcm9tIGZ1bmRhbWVudGFsLXN0eWxlcyBsaWIgaHR0cHM6Ly9zYXAuZ2l0aHViLmlvL2Z1bmRhbWVudGFsLXN0eWxlcy8/cGF0aD0vZG9jcy9jb21wb25lbnRzLWljb24tLXNpemVzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB1bnJhdGVkSWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUG9zc2libGUgdmFsdWVzIGFyZSAneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAnY296eScsICdjb21wYWN0JywgJ2NvbmRlbnNlZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFJhdGluZ0luZGljYXRvclNpemUgPSAnbWQnO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBkaXZpZGVyIGxhYmVsIGJldHdlZW4gdmlldyB2YWx1ZSBhbmQgaW5kaWNhdG9yIGNvdW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHluYW1pY1RleHRJbmRpY2F0b3IgPSAnb2YnO1xuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBzZXRzIG9yIGNoYW5nZXMgdGhlaXIgcmF0aW5nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJhdGluZ0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2l6ZUNsYXNzID0gdGhpcy5fZ2V0U2l6ZUNsYXNzKHRoaXMuc2l6ZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmF0ZXM6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yYXRpbmdJdGVtczogUmF0aW5nVmlld0l0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yYXRpbmdVSUQgPSByYXRpbmdVSUQrKztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luZGljYXRvckNhcGFjaXR5ID0gSU5ESUNBVE9SX0RFRkFVTFRfQ0FQQUNJVFk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWx1ZSA9IDA7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlRHluYW1pY1RleHQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB2aWV3UmF0aW5nVUlEKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYXRpbmdVSUQ7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGluZGljYXRvckNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmRpY2F0b3JDYXBhY2l0eTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdmlld1ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fY29udmVydFRvVmFsdWUoKTtcbiAgICAgICAgdGhpcy5fcmF0ZXMgPSB0aGlzLl9nZXRSYXRlcygpO1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5fZ2VuZXJhdGVSYXRpbmdzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICdjbGFzcycgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ3NpemUnIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICdyYXRlZEljb24nIGluIGNoYW5nZXMgfHxcbiAgICAgICAgICAgICd1bnJhdGVkSWNvbicgaW4gY2hhbmdlcyB8fFxuICAgICAgICAgICAgJ2FsbG93SGFsdmVzJyBpbiBjaGFuZ2VzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCd2YWx1ZScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9jb252ZXJ0VG9WYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnaW5kaWNhdG9yQ2FwYWNpdHknIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhdGVzID0gdGhpcy5fZ2V0UmF0ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2FsbG93SGFsdmVzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRUb1ZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLl9yYXRlcyA9IHRoaXMuX2dldFJhdGVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ3JhdGluZ3MnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRlUmF0aW5ncygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9wYXJzZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogeyBpZDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH0pOiBudW1iZXIgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uU2VsZWN0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLnJhdGluZ0NoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogZnVuY3Rpb24gbXVzdCByZXR1cm4gc2luZ2xlIHN0cmluZ1xuICAgICAqIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBvcmRlciB3aGljaCBjc3MgY2xhc3NlcyBhcmUgYXBwbGllZFxuICAgICAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRoaXMuc2l6ZUNsYXNzID0gdGhpcy5fZ2V0U2l6ZUNsYXNzKHRoaXMuc2l6ZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIElORElDQVRPUl9QUkVGSVgsXG4gICAgICAgICAgICB0aGlzLnNpemVDbGFzcyxcbiAgICAgICAgICAgIHRoaXMuYWxsb3dIYWx2ZXMgPyBJTkRJQ0FUT1JfQ0xBU1NFUy5oYWx2ZXMgOiAnJyxcbiAgICAgICAgICAgICEhdGhpcy5yYXRlZEljb24gJiYgISF0aGlzLnVucmF0ZWRJY29uID8gSU5ESUNBVE9SX0NMQVNTRVMuaWNvbiA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faGlkZUR5bmFtaWNUZXh0IHx8ICF0aGlzLl92YWx1ZSA/IElORElDQVRPUl9DTEFTU0VTLmhpZGVEeW5hbWljVGV4dCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jbGFzc1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZW5lcmF0ZSByYXRpbmcgaXRlbXMgZm9yIHBvcG92ZXIgY29udGVudCBpZiByYXRpbmcgb2JqZWN0IHdhcyBkZWZpbmVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVSYXRpbmdzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmF0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJhdGluZ3MgPSBPYmplY3QuZW50cmllcyh0aGlzLnJhdGluZ3MpXG4gICAgICAgICAgICAuZmlsdGVyKChbcmF0ZSwgdm90ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBfcmF0ZSA9ICtyYXRlO1xuICAgICAgICAgICAgICAgIHJldHVybiAhaXNOYU4oX3JhdGUpICYmICFpc05hTigrdm90ZSkgJiYgX3JhdGUgPiAwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoKFtyYXRlLCB2b3Rlc10pID0+ICh7IHJhdGU6ICtyYXRlLCB2b3RlcyB9KSk7XG4gICAgICAgIGlmIChyYXRpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdG90YWxWb3RlcywgdG90YWxSYXRpbmcgfSA9IHJhdGluZ3MucmVkdWNlKFxuICAgICAgICAgICAgKHRvdGFsLCByYXRpbmcpID0+ICh7XG4gICAgICAgICAgICAgICAgdG90YWxWb3RlczogdG90YWwudG90YWxWb3RlcyArIHJhdGluZy52b3RlcyxcbiAgICAgICAgICAgICAgICB0b3RhbFJhdGluZzogdG90YWwudG90YWxSYXRpbmcgKyByYXRpbmcucmF0ZSAqIHJhdGluZy52b3Rlc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7IHRvdGFsVm90ZXM6IDAsIHRvdGFsUmF0aW5nOiAwIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9yYXRpbmdJdGVtcyA9IHJhdGluZ3M7XG4gICAgICAgIHRoaXMucmF0aW5nQXZlcmFnZSA9IHRvdGFsUmF0aW5nIC8gdG90YWxWb3RlcztcbiAgICAgICAgdGhpcy50b3RhbFJhdGluZ3MgPSB0b3RhbFZvdGVzO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2NvbnZlcnRUb1ZhbHVlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgY29udmVydGVkIHZpZXdWYWx1ZSBmb3IgcmVuZGVyIGluIGNvbXBvbmVudCB0ZW1wbGF0ZSBmcm9tIG9yaWdpbmFsIHZhbHVlIGlmIGl0IHN0aWxsIGV4aXN0cywgb3IgcmF0aW5nQXZlcmFnZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9WYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VWYWx1ZSh0aGlzLnZhbHVlIHx8IHRoaXMucmF0aW5nQXZlcmFnZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgY29udmVydGVkIHZhbHVlIGZyb20gb3JpZ2luYWwgdG8gdmlldyB2YWx1ZSB3aXRoIGRlcGVuZHMgb24gaGFsdmVzXG4gICAgICogRm9yIGV4YW1wbGUsXG4gICAgICogIG9yaWdpbmFsIHZhbHVlIGlzIGVxdWFsIHRvIDIuMzQsIHlvdSB3aWxsIGdldCBhbmQgcmVuZGVyIDJcbiAgICAgKiAgb3JpZ2luYWwgdmFsdWUgaXMgZXF1YWwgdG8gMy43NCwgeW91IHdpbGwgZ2V0IGFuZCByZW5kZXIgNFxuICAgICAqL1xuICAgIHByaXZhdGUgX3BhcnNlVmFsdWUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludGVnZXIgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICAgICAgY29uc3QgZnJhY3Rpb25hbCA9IHZhbHVlICUgMTtcbiAgICAgICAgbGV0IHYgPSBpbnRlZ2VyO1xuXG4gICAgICAgIGlmICh0aGlzLmFsbG93SGFsdmVzICYmIGZyYWN0aW9uYWwgPiAwLjI1ICYmIGZyYWN0aW9uYWwgPD0gMC41KSB7XG4gICAgICAgICAgICB2ID0gaW50ZWdlciArIDAuNTtcbiAgICAgICAgfSBlbHNlIGlmIChmcmFjdGlvbmFsID4gMC41KSB7XG4gICAgICAgICAgICB2ID0gaW50ZWdlciArIDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5pbmRpY2F0b3JDb3VudCwgdik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgcmF0aW5nIGljb25zIGFycmF5IHdpdGggdmFsdWUgYW5kIHVuaWMgaWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRSYXRlcygpOiB7IGlkOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVtdIHtcbiAgICAgICAgY29uc3Qgd2l0aEhhbHZlcyA9IHRoaXMuYWxsb3dIYWx2ZXMgPyAyIDogMTtcbiAgICAgICAgcmV0dXJuIEFycmF5KHRoaXMuaW5kaWNhdG9yQ291bnQgKiB3aXRoSGFsdmVzKVxuICAgICAgICAgICAgLmZpbGwoYHJhdGluZy0ke3RoaXMuX3JhdGluZ1VJRH1gKVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGAke25hbWV9LSR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IChpbmRleCArIDEpIC8gd2l0aEhhbHZlc1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgcmF0aW5nIGljb25zIGFycmF5IHdpdGggdmFsdWUgYW5kIHVuaWMgaWRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRTaXplQ2xhc3Moc2l6ZTogUmF0aW5nSW5kaWNhdG9yU2l6ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtJTkRJQ0FUT1JfUFJFRklYfS0tJHtzaXplIGluIFJhdGluZ0luZGljYXRvclNpemVFbnVtID8gc2l6ZSA6ICdtZCd9YDtcbiAgICB9XG59XG4iLCI8IS0tICByb2xlPVwiYXBwbGljYXRpb25cIiBpcyB1c2VkIGluIG9yZGVyIHRvIGxldCB1c2VyIHRvIGNoYW5nZSB2YWx1ZSB3aXRoIGxlZnQvcmlnaHQgYXJyb3dzIGluIEpBV1MsIHNpbmNlIEpBV1Mgb3Z2ZXJyaWRlcyB0aGVzZSBhY3Rpb25zIC0tPlxuPGRpdiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2NvbnRhaW5lclwiIHJvbGU9XCJhcHBsaWNhdGlvblwiIGFyaWEtcm9sZWRlc2NyaXB0aW9uPVwiUmF0aW5nIGluZGljYXRvclwiPlxuICAgIDwhLS0gWmVybyB2YWx1ZSBpZiB3ZSBkb24ndCBoYXZlIHByb3ZpZGVkIHZhbHVlIGZyb20gdXNlciwgYHJhdGluZ0F2ZXJhZ2VgIG9yIGByYXRpbmdzYCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiemVyb1JhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIEF2YWlsYWJsZSByYXRlIHZhbHVlcyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByYXRlIG9mIF9yYXRlczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpIHwgcmF0aW5nU3RhckxhYmVsOiBfcmF0ZXMubGVuZ3RoOmFsbG93SGFsdmVzXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9faW5wdXRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpZF09XCJyYXRlLmlkXCJcbiAgICAgICAgICAgIG5hbWU9XCJyYXRpbmcte3sgdmlld1JhdGluZ1VJRCB9fVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwicmF0ZS52YWx1ZVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJ2aWV3VmFsdWUgPT09IHJhdGUudmFsdWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KHJhdGUudmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWxcIiBbZm9yXT1cInJhdGUuaWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwicmF0ZWRJY29uXCIgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbC1yYXRlZFwiIFtjbGFzc109XCJ1bnJhdGVkSWNvblwiPjwvaT5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwidW5yYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXVucmF0ZWRcIiBbY2xhc3NdPVwicmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tIFBvcG92ZXIgaWYgZGlzcGxheUFsbFJhdGluZ3MgaXMgdHJ1ZSBhbmQgd2UgaGF2ZSByYXRpbmdzIG9iamVjdCAtLT5cbjxzcGFuXG4gICAgW2ZkUG9wb3ZlclRyaWdnZXJdPVwiYWxsUmF0aW5nQ29udGVudFwiXG4gICAgKm5nSWY9XCJkaXNwbGF5QWxsUmF0aW5ncyAmJiBfcmF0aW5nSXRlbXM/Lmxlbmd0aDsgZWxzZSBkeW5hbWljVGV4dFwiXG4gICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19keW5hbWljLXRleHRcIlxuPlxuICAgICg8c3BhbiBhcmVhLWxhYmVsPVwiVG90YWwgcmFpdGluZ1wiIGZkLWxpbms+e3sgdG90YWxSYXRpbmdzIH19PC9zcGFuXG4gICAgPilcbjwvc3Bhbj5cbjxmZC1wb3BvdmVyXG4gICAgI2FsbFJhdGluZ0NvbnRlbnRcbiAgICBbdHJpZ2dlcnNdPVwiWydtb3VzZWVudGVyJywgJ21vdXNlbGVhdmUnXVwiXG4gICAgW25vQXJyb3ddPVwiZmFsc2VcIlxuICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX3BvcG92ZXJcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19zdW0tcm93XCIgW2NsYXNzXT1cInNpemVDbGFzc1wiICpuZ0Zvcj1cImxldCByYXRpbmcgb2YgX3JhdGluZ0l0ZW1zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJhdGUgb2YgX3JhdGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtcmF0aW5nLWluZGljYXRvcl9faW5wdXQtY2hlY2tlZF09XCJyYXRlLnZhbHVlID09PSByYXRpbmcucmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmQtcmF0aW5nLWluZGljYXRvcl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJyYXRlZEljb25cIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2xhYmVsLXJhdGVkXCIgW2NsYXNzXT1cInVucmF0ZWRJY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInVucmF0ZWRJY29uXCIgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbC11bnJhdGVkXCIgW2NsYXNzXT1cInJhdGVkSWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAoe3sgcmF0aW5nLnZvdGVzIH19KVxuICAgIDwvZGl2PlxuPC9mZC1wb3BvdmVyPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNUZXh0PlxuICAgIDxzcGFuICpuZ0lmPVwidG90YWxSYXRpbmdzXCIgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19keW5hbWljLXRleHRcIj4oe3sgdG90YWxSYXRpbmdzIH19KTwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiF0b3RhbFJhdGluZ3NcIiBjbGFzcz1cImZkLXJhdGluZy1pbmRpY2F0b3JfX2R5bmFtaWMtdGV4dFwiXG4gICAgICAgID4oe3sgdmlld1ZhbHVlIH19IHt7IGR5bmFtaWNUZXh0SW5kaWNhdG9yIH19IHt7IGluZGljYXRvckNvdW50IH19KTwvc3BhblxuICAgID5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3plcm9SYXRlIGxldC1oYWx2ZXM9XCJoYWx2ZXNcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlc2V0IHRvIHplcm9cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dCBmZC1yYXRpbmctaW5kaWNhdG9yX19pbnB1dC0temVyby1yYXRpbmdcIlxuICAgICAgICAoY2xpY2spPVwib25TZWxlY3QoMClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBuYW1lPVwicmF0aW5nLXt7IHZpZXdSYXRpbmdVSUQgfX17eyBoYWx2ZXMgPyAnLWhhbHZlcycgOiAnJyB9fVwiXG4gICAgICAgIFtjaGVja2VkXT1cInZpZXdWYWx1ZSA9PT0gMFwiXG4gICAgLz5cbiAgICA8bGFiZWwgY2xhc3M9XCJmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbCBmZC1yYXRpbmctaW5kaWNhdG9yX19sYWJlbC0temVyby1yYXRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -78,7 +78,7 @@ export class SelectMobileComponent extends MobileModeBase {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
SelectMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SelectMobileComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: SELECT_COMPONENT }, { token: MOBILE_MODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
SelectMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SelectMobileComponent, selector: "fd-select-mobile", host: { listeners: { "keydown": "onItemKeydown($event)" } }, viewQueries: [{ propertyName: "_dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header\" *ngIf=\"mobileConfig.title\" fd-title>{{ mobileConfig.title }}</h1>\n <button\n role=\"button\"\n *ngIf=\"mobileConfig.hasCloseButton\"\n aria-label=\"close\"\n fd-dialog-close-button\n [mobile]=\"true\"\n (click)=\"_cancel()\"\n ></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"mobileConfig.approveButtonText || mobileConfig.cancelButtonText\">\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_approve()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
81
|
+
SelectMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SelectMobileComponent, selector: "fd-select-mobile", host: { listeners: { "keydown": "onItemKeydown($event)" } }, viewQueries: [{ propertyName: "_dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header\" *ngIf=\"mobileConfig.title\" fd-title>{{ mobileConfig.title }}</h1>\n <button\n role=\"button\"\n *ngIf=\"mobileConfig.hasCloseButton\"\n aria-label=\"close\"\n fd-dialog-close-button\n [mobile]=\"true\"\n (click)=\"_cancel()\"\n ></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"mobileConfig.approveButtonText || mobileConfig.cancelButtonText\">\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_approve()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title], span[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SelectMobileComponent, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: 'fd-select-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header\" *ngIf=\"mobileConfig.title\" fd-title>{{ mobileConfig.title }}</h1>\n <button\n role=\"button\"\n *ngIf=\"mobileConfig.hasCloseButton\"\n aria-label=\"close\"\n fd-dialog-close-button\n [mobile]=\"true\"\n (click)=\"_cancel()\"\n ></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer *ngIf=\"mobileConfig.approveButtonText || mobileConfig.cancelButtonText\">\n <fd-button-bar\n *ngIf=\"mobileConfig?.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"_approve()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"_cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
|
|
@@ -307,7 +307,7 @@ export class SelectComponent {
|
|
|
307
307
|
// closed, because doing it while open can shift the user's focus unnecessarily.
|
|
308
308
|
this._keyManagerService._keyManager.setActiveItem(-1);
|
|
309
309
|
}
|
|
310
|
-
this._changeDetectorRef.
|
|
310
|
+
this._changeDetectorRef.detectChanges();
|
|
311
311
|
}
|
|
312
312
|
/** @hidden */
|
|
313
313
|
_selectValue(value) {
|
|
@@ -663,4 +663,4 @@ export class DeprecatedSelectCSSClasses {
|
|
|
663
663
|
};
|
|
664
664
|
}
|
|
665
665
|
}
|
|
666
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUdILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBSVQsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBK0IsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkgsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9B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eUI7c0JBRHhCLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQUtHLFlBQVk7c0JBRHBCLE1BQU07Z0JBS0UsV0FBVztzQkFEbkIsTUFBTTtnQkFLUCxRQUFRO3NCQURQLGVBQWU7dUJBQUMsZUFBZSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLdkQsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLGVBQWU7Z0JBSzFCLHlCQUF5QjtzQkFEeEIsU0FBUzt1QkFBQywyQkFBMkI7Z0JBTXRDLDBCQUEwQjtzQkFEekIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBUTVCLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBTzlCLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXFFOUMsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLGVBQWU7Z0JBK0R6QixXQUFXO3NCQURkLEtBQUs7Z0JBa0ZOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxPQUFPO2dCQXNOckIsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFzSXZDLE1BQU0sT0FBTywwQkFBMEI7SUFBdkM7UUFDSSxjQUFjO1FBQ2QsWUFBTyxHQUFHLHlJQUF5SSxDQUFDO1FBRXBKLGNBQWM7UUFDZCxnQkFBVyxHQUFHO1lBQ1YsSUFBSSxFQUFFLHFFQUFxRTtZQUMzRSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO1NBQzVCLENBQUM7SUFDTixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVmZXIsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLCBLZXlVdGlsLCBNb2R1bGVEZXByZWNhdGlvbiwgTnVsbGFibGUsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBQb3BvdmVyRmlsbE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHsgRU5URVIsIEVTQ0FQRSwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcywgU2luZ2xlRHJvcGRvd25WYWx1ZUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGZE9wdGlvblNlbGVjdGlvbkNoYW5nZSwgT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RLZXlNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VsZWN0LWtleS1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtbW9iaWxlL3NlbGVjdC1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdE1vYmlsZU1vZHVsZSB9IGZyb20gJy4vc2VsZWN0LW1vYmlsZS9zZWxlY3QtbW9iaWxlLm1vZHVsZSc7XG5pbXBvcnQgeyBTRUxFQ1RfQ09NUE9ORU5ULCBTZWxlY3RJbnRlcmZhY2UgfSBmcm9tICcuL3NlbGVjdC5pbnRlcmZhY2UnO1xuXG5sZXQgc2VsZWN0VW5pcXVlSWQgPSAwO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBpbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSBcIkBmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zXCJgIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIFNlbGVjdENvbnRyb2xTdGF0ZSA9IEZvcm1TdGF0ZXM7XG5cbmNvbnN0IFNFTEVDVF9IRUFERVJfSURFTlRJRklFUiA9ICcuZmQtbGlzdF9fZ3JvdXAtaGVhZGVyJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9QQU5FTF9NQVhfSEVJR0hUID0gMjUwO1xuXG4vKiogVGhlIGhlaWdodCBvZiB0aGUgc2VsZWN0IGl0ZW1zIGluIGByZW1gIHVuaXRzLiAqL1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9JVEVNX0hFSUdIVF9FTSA9IDQ7XG5cbi8qKlxuICogU2VsZWN0IGNvbXBvbmVudCBpbnRlbmRlZCB0byBtaW1pY1xuICogdGhlIGJlaGF2aW91ciBvZiB0aGUgbmF0aXZlIHNlbGVjdCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtc2VsZWN0JyxcbiAgICAgICAgJ1tjbGFzcy5mZC1zZWxlY3QtLWlubGluZV0nOiAnaW5saW5lJyxcbiAgICAgICAgLy8gQGRlcHJlY2F0ZWQgbGVhdmluZyBjbGFzcyBmZC1zZWxlY3QtY3VzdG9tLWNsYXNzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAnW2NsYXNzLmZkLXNlbGVjdC1jdXN0b20tY2xhc3NdJzogJ2lubGluZScsXG4gICAgICAgIC8vIEBkZXByZWNhdGVkIGxlYXZpbmcgY2xhc3MgZmQtc2VsZWN0LWN1c3RvbS1jbGFzcy0tbW9iaWxlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAnW2NsYXNzLmZkLXNlbGVjdC1jdXN0b20tY2xhc3MtLW1vYmlsZV0nOiAnbW9iaWxlJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNFTEVDVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFNlbGVjdENvbXBvbmVudCksXG4gICAgICAgIFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudDxUID0gYW55PlxuICAgIGltcGxlbWVudHNcbiAgICAgICAgU2luZ2xlRHJvcGRvd25WYWx1ZUNvbnRyb2wsXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBTZWxlY3RJbnRlcmZhY2UsXG4gICAgICAgIE9uSW5pdCxcbiAgICAgICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICAgICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICAgICAgT25DaGFuZ2VzLFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBJZCBvZiB0aGUgY29udHJvbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xJZCA9IGBmZC1zZWxlY3QtJHtzZWxlY3RVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogSG9sZHMgdGhlIGNvbnRyb2wgc3RhdGUgb2Ygc2VsZWN0ICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZTogTnVsbGFibGU8Rm9ybVN0YXRlcz47XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkIGluIG1vYmlsZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogSG9sZHMgdGhlIG1lc3NhZ2Ugd2l0aCByZXNwZWN0IHRvIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZU1lc3NhZ2U6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogSWYgaXQgaXMgbWFuZGF0b3J5IGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBjb21wb25lbnQgaXMgcmVhZG9ubHkuICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIFBsYWNlaG9sZGVyIGZvciB0aGUgc2VsZWN0LiBBcHBlYXJzIGluIHRoZSB0cmlnZ2VyYm94IGlmIG5vIG9wdGlvbiBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogVmFsdWUgb2YgdGhlIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9pbnRlcm5hbFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBpdCBpcyBoYW5kbGVkIGludGVybmFsbHkgYnkgY29udHJvbFRlbXBsYXRlICE9IG51bGx8dW5kZWZpbmVkIGlzXG4gICAgICogRXF1YWwgYXMgZXh0ZW5kZWRCb2R5VGVtcGxhdGUgYXMgdHJ1ZS5cbiAgICAgKiBXaGV0aGVyIG9wdGlvbiBjb21wb25lbnRzIGNvbnRhaW4gbW9yZSB0aGFuIGJhc2ljIHRleHQuICovXG4gICAgQElucHV0KClcbiAgICBleHRlbmRlZEJvZHlUZW1wbGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIE1heCBoZWlnaHQgb2YgdGhlIHBvcG92ZXIuIEFueSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aWxsIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBzY3JvbGxpbmcuICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQ6IHN0cmluZztcblxuICAgIC8qKiBHbHlwaCB0byBhZGQgaWNvbiBpbiB0aGUgc2VsZWN0IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ3NsaW0tYXJyb3ctZG93bic7XG5cbiAgICAvKiogV2hldGhlciBjbG9zZSB0aGUgcG9wb3ZlciBvbiBvdXRzaWRlIGNsaWNrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIFNlbGVjdCBib2R5IHdpZHRoLCB3aGF0ZXZlciBpcyBjaG9zZW4sIHRoZSBib2R5IGhhcyBhIDYwMHB4IGxpbWl0LlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogKiBgZXF1YWxgIHdpbGwgYXBwbHkgYSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqICdmaXQtY29udGVudCcgd2lsbCBhcHBseSB3aWR0aCBuZWVkZWQgdG8gcHJvcGVybHkgZGlzcGxheSBpdGVtcyBpbnNpZGUsIGluZGVwZW5kZW50IG9mIGNvbnRyb2wuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsQ29udHJvbE1vZGU6IFBvcG92ZXJGaWxsTW9kZSA9ICdhdC1sZWFzdCc7XG5cbiAgICAvKiogQ3VzdG9tIHRlbXBsYXRlIHVzZWQgdG8gYnVpbGQgY29udHJvbCBib2R5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhcHBlbmRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIG9wdGlvbiBzaG91bGQgYmUgdW5zZWxlY3RlZCBhbmQgdmFsdWUgY2hhbmdlZCB0byB1bmRlZmluZWQsIHdoZW4gdGhlIGN1cnJlbnQgdmFsdWUgaXNcbiAgICAgKiBub3QgcHJlc2VudGVkIGluIG9wdGlvbiBhcnJheS4gU3dpdGNoaW5nIGl0IG9mZiBjYW4gYmUgaGFuZHksIHdoZW4gdGhlcmUgaXMgc29tZSBkZWxheSBiZXR3ZWVuIHByb3ZpZGluZ1xuICAgICAqIHBvc3NpYmxlIG9wdGlvbnMgYW5kIGNob3NlbiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuc2VsZWN0TWlzc2luZ09wdGlvbiA9IHRydWU7XG5cbiAgICAvKiogVGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBrZXlkb3duIGJlZm9yZSBmb2N1c2luZyBvciBzZWxlY3Rpbmcgb3B0aW9uIGJhc2VkIG9uIGFscGhhbnVtZXJpYyBrZXlzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCA9IDI1MDtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNlbGVjdCBJbnB1dCBNb2JpbGUgQ29uZmlndXJhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnID0geyBoYXNDbG9zZUJ1dHRvbjogdHJ1ZSB9O1xuXG4gICAgLyoqIFNob3VsZCBzZWxlY3QgYmUgaW5saW5lZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IHRydWU7XG5cbiAgICAvKiogQWRkaXRpb25hbCBjbGFzc25hbWUgZm9yIHRoZSBzZWxlY3QgY29udHJvbCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0Q29udHJvbENsYXNzOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFkZGl0aW9uYWwgY2xhc3NuYW1lIGZvciB0aGUgc2VsZWN0IGRyb3Bkb3duIGJ1dHRvbiBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0RHJvcGRvd25CdXR0b25DbGFzczogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0byBwZXJmb3JtIHdoZW4gdXNlciBzaGlmdHMgZm9jdXMgZnJvbSB0aGUgZHJvcGRvd24uXG4gICAgICogLSBgY2xvc2VgIHdpbGwgY2xvc2UgdGhlIGRyb3Bkb3duIHByZXNlcnZpbmcgcHJldmlvdXNseSBzZWxlY3RlZCB2YWx1ZS5cbiAgICAgKiAtIGBjbG9zZUFuZFNlbGVjdGAgd2lsbCBjbG9zZSB0aGUgZHJvcGRvd24gYW5kIHNlbGVjdCBsYXN0IGZvY3VzZWQgZHJvcGRvd24gaXRlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYk91dFN0cmF0ZWd5OiAnY2xvc2UnIHwgJ2Nsb3NlQW5kU2VsZWN0JyA9ICdjbG9zZSc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIG9wZW4gc3RhdGUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIG9mIHRoZSBzZWxlY3QgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBfb3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdENvbnRyb2wnKVxuICAgIF9jb250cm9sRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogUmVmZXJlbmNlIHRvIGVsZW1lbnQgY29udGFpbmluZyBsaXN0IG9mIG9wdGlvbnMgKi9cbiAgICBAVmlld0NoaWxkKCdzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlJylcbiAgICBzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZWZlcmVuY2UgdG8gcm9vdCBlbGVtZW50IGZvciB0aGUgbW9iaWxlIG1vZGUgZGlhbG9nICovXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGFpbmVyJylcbiAgICBfZGlhbG9nQ29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIE92ZXJsYXkgcGFuZSBjb250YWluaW5nIHRoZSBvcHRpb25zLlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpXG4gICAgX292ZXJsYXlEaXI6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlZmVyZW50IHRvIHRoZSBvcHRpb247cyBjb250YWluZXJcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdvcHRpb25QYW5lbCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9vcHRpb25QYW5lbDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9pc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW50ZXJuYWxWYWx1ZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FsY3VsYXRlZE1heEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnRsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8T3B0aW9uQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUcmlnZ2VycyB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2VsZWN0Q29udHJvbENsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbdGhpcy5zdGF0ZSA/IGBpcy0ke3RoaXMuc3RhdGV9YCA6ICcnLCB0aGlzLnNlbGVjdENvbnRyb2xDbGFzc11cbiAgICAgICAgICAgIC5maWx0ZXIoKGNsYXNzTmFtZSkgPT4gISFjbGFzc05hbWUpXG4gICAgICAgICAgICAuam9pbignICcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBjaGlsZCBvcHRpb25zJyBjaGFuZ2UgZXZlbnRzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IF9vcHRpb25TZWxlY3Rpb25DaGFuZ2VzOiBPYnNlcnZhYmxlPEZkT3B0aW9uU2VsZWN0aW9uQ2hhbmdlPiA9IGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuXG4gICAgICAgIHJldHVybiBfb3B0aW9ucz8uY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKF9vcHRpb25zKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi5fb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGlvbkNoYW5nZSkpKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250cm9sRWxlbUZvbnRTaXplID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFN0b3JlZCBjYWxjdWxhdGVkIG1heEhlaWdodCBmcm9tIE9wdGlvbiBQYW5lbFxuICAgICAqL1xuICAgIHByaXZhdGUgX21heEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIF9yZXNpemVTY3JvbGxIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVDYWxjdWxhdGVkSGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gdGhpcy5kaXNhYmxlZCA/IC0xIDogMDtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0ZWQgb3B0aW9uLiAqL1xuICAgIGdldCBzZWxlY3RlZCgpOiBPcHRpb25Db21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF07XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyBzZWxlY3RlZCB2YWx1ZSBpZiBhbnkuICovXG4gICAgZ2V0IHRyaWdnZXJWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gJyAnO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB8fCBlbXB0eVZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLnZpZXdWYWx1ZSB8fCB0aGlzLnBsYWNlaG9sZGVyIHx8IGVtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIGVxdWFsIHRvIGNsb3NlXG4gICAgICogVGVsbHMgdGhlIE9wdGlvbkxpc3QgaWYgaXQncyBjbG9zYWJsZSBieSBzaW1wbHkgc2VsZWN0aW5nIHRoZSBpdGVtIGVpdGhlciB3aXRoIENMSUNLIHwgU1BBQ0UgfCBFTlRFUi5cbiAgICAgKiBXaGVuIHdlIGFyZSBpbiBtb2JpbGUgbW9kZSAobW9iaWxlPXRydWUpIGFuZCBoYXZlIHdlIGhhdmUgZW5hYmxlZCBjb25maXJtYXRpb24gYnV0dG9ucyB0aGVuIHdlXG4gICAgICogZG9udCBjbG9zZSBvcHRpb24gbGlzdC4gV2UgY2xvc2Ugb25seSBhZnRlciB3ZSBoaXQgY29uZmlybSBidXR0b24uXG4gICAgICovXG4gICAgZ2V0IGNhbkNsb3NlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLm1vYmlsZSAmJiB0aGlzLm1vYmlsZUNvbmZpZy5hcHByb3ZlQnV0dG9uVGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgY29udHJvbCBjYW4gYmUgaW50ZXJhY3RlZCB3aXRoICovXG4gICAgZ2V0IGlzSW50ZXJhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgd2UgY2FuIGVtaXQgYSB2YWx1ZS4gVGhleSBhcmUgMyBkaWZmZXJlbnQgcGF0aHMgd2hlcmUgd2UgY2FuIGVtaXQgdmFsdWU6XG4gICAgICogIC0gV2UgYXJlIG5vdCBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT1mYWxzZVxuICAgICAqICAtIFdlIGFyZSBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT10cnVlIGFuZCBtb2JpbGUgZGlhbG9nIGFzIGp1c3QgY2xvc2UgWCBidXR0b24gdG8gZGlzbWlzcyBpdFxuICAgICAqICAtIFdlIGFyZSBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT10cnVlIGFuZCBtb2JpbGUgZGlhbG9nIGhhcyBBcHByb3ZlQnV0dG9uIGF2YWlsYWJsZSBhbmRcbiAgICAgKiAgZGlhbG9nIGlzIGNsb3NlZC4gKG1lYW5pbmcgd2UgYWxyZWFkeSBjbGlja2VkIHRoaXMgYnV0dG9uKVxuICAgICAqL1xuICAgIGdldCBjYW5FbWl0VmFsdWVDaGFuZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5tb2JpbGUgfHxcbiAgICAgICAgICAgICh0aGlzLm1vYmlsZSAmJlxuICAgICAgICAgICAgICAgIC8vIEFwcHJvdmUgKyBDYW5jZWxcbiAgICAgICAgICAgICAgICAhIXRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuX2lzT3BlbikgfHxcbiAgICAgICAgICAgIC8vIENsb3NlQnV0dG9uLiBFbWl0cyB3aGVuIHlvdSBjbGljayBvbiB0aGUgb3B0aW9uIGl0ZW1cbiAgICAgICAgICAgICghIXRoaXMubW9iaWxlQ29uZmlnLmhhc0Nsb3NlQnV0dG9uICYmICEhdGhpcy5tb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHQgPT09IGZhbHNlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IG8xID09PSBvMjtcblxuICAgIC8qKiBGdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ2NvbXBhcmVXaXRoYCBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICAvLyBBIGRpZmZlcmVudCBjb21wYXJhdG9yIG1lYW5zIHRoZSBzZWxlY3Rpb24gY291bGQgY2hhbmdlLlxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBjb21wYXJlV2l0aCgpOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNlZCB8fCB0aGlzLl9pc09wZW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FsY3VsYXRlZE1heEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4SGVpZ2h0IHx8IHRoaXMuX2NhbGN1bGF0ZWRNYXhIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSBfdGFiSW5kZXg6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfa2V5TWFuYWdlclNlcnZpY2U6IFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSBwYXJzZUludChfdGFiSW5kZXgsIDEwKSB8fCAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVDb21tb25CZWhhdmlvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faW5pdEtleU1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyRXZlbnRzQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sndHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCddICYmIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci53aXRoVHlwZUFoZWFkKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5fdGFiSW5kZXggPSB0aGlzLmRpc2FibGVkID8gLTEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jbGVhbnVwQ29tbW9uQmVoYXZpb3IoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgIXRoaXMuX29wdGlvbnMgfHwgIXRoaXMuX2dldEl0ZW1Db3VudCgpIHx8IHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fY29udHJvbEVsZW1Gb250U2l6ZSA9IHBhcnNlSW50KFxuICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5mb250U2l6ZSB8fCAnMCcsXG4gICAgICAgICAgICAxMFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24obnVsbCk7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5fY29udHJvbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbG9zZShmb3JjZUNsb3NlID0gZmFsc2UsIHRhYk91dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc09wZW4gfHwgZm9yY2VDbG9zZSkge1xuICAgICAgICAgICAgaWYgKHRhYk91dCAmJiB0aGlzLnRhYk91dFN0cmF0ZWd5ID09PSAnY2xvc2VBbmRTZWxlY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuYWN0aXZlSXRlbT8uX3NlbGVjdFZpYUludGVyYWN0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKSA/ICdydGwnIDogJ2x0cicpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICAodGhpcy5fY29udHJvbEVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEJsdXJzIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIGJsdXIoKTogdm9pZCB7XG4gICAgICAgICh0aGlzLl9jb250cm9sRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmcm9tIENvbnRyb2xWYWx1ZSBBY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3Rpb25CeVZhbHVlKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5fc2VsZWN0VmFsdWUodmFsdWUpO1xuXG4gICAgICAgIC8vIFNoaWZ0IGZvY3VzIHRvIHRoZSBhY3RpdmUgaXRlbS4gTm90ZSB0aGF0IHdlIHNob3VsZG4ndCBkbyB0aGlzIGluIG11bHRpcGxlXG4gICAgICAgIC8vIG1vZGUsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IG9wdGlvbiB0aGUgdXNlciBpbnRlcmFjdGVkIHdpdGggbGFzdC5cbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHJlc2V0IHRoZSBoaWdobGlnaHRlZCBvcHRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyB3aGlsZVxuICAgICAgICAgICAgLy8gY2xvc2VkLCBiZWNhdXNlIGRvaW5nIGl0IHdoaWxlIG9wZW4gY2FuIHNoaWZ0IHRoZSB1c2VyJ3MgZm9jdXMgdW5uZWNlc3NhcmlseS5cbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0VmFsdWUodmFsdWU6IGFueSk6IE9wdGlvbkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSB0aGlzLl9vcHRpb25zLmZpbmQoKG9wdGlvbjogT3B0aW9uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIFRyZWF0IG51bGwgYXMgYSBzcGVjaWFsIHJlc2V0IHZhbHVlLlxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udmFsdWUgIT0gbnVsbCAmJiB0aGlzLl9jb21wYXJlV2l0aChvcHRpb24udmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdGlmeSBkZXZlbG9wZXJzIG9mIGVycm9ycyBpbiB0aGVpciBjb21wYXJhdG9yLlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29ycmVzcG9uZGluZ09wdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaXNPcGVuID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBfa2V5TWFuYWdlclNlcnZpY2UuICovXG4gICAgX2dldEtleVNlcnZpY2UoKTogU2VsZWN0S2V5TWFuYWdlclNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlclNlcnZpY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB0aGlzLl90YWJJbmRleCA9IC0xO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyICYmICF0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odGhpcy5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jbGVhbnVwQ29tbW9uQmVoYXZpb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdGlhbGl6ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVmZXIgc2V0dGluZyB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIFwiRXhwcmVzc2lvblxuICAgICAgICAvLyBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZFwiIGVycm9ycyBmcm9tIEFuZ3VsYXIuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0aGlzLm5nQ29udHJvbCA/IHRoaXMubmdDb250cm9sLnZhbHVlIDogdGhpcy5faW50ZXJuYWxWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4cG9zZSBvdXRzaWRlIG9mIHRoaXMgbWl4aW4gdG8gZ2l2ZSBjb21wb25lbnQgYWJpbGl0eVxuICAgICAqIHRvIHVwZGF0ZSBjYWx1Y2xhdGVkTWF4SGVpZ2h0IGlmIG5lZWRlZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfdXBkYXRlQ2FsY3VsYXRlZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlZE1heEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAqIDAuNDU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0T3B0aW9uU2Nyb2xsUG9zaXRpb24ob3B0aW9uSW5kZXg6IG51bWJlciwgaXRlbUhlaWdodDogbnVtYmVyLCBjdXJyZW50U2Nyb2xsUG9zaXRpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkhlaWdodCA9IHRoaXMuX29wdGlvbnMuZ2V0KG9wdGlvbkluZGV4KT8uX2dldEh0bWxFbGVtZW50KCkub2Zmc2V0SGVpZ2h0IHx8IGl0ZW1IZWlnaHQ7XG4gICAgICAgIGNvbnN0IG9wdGlvbk9mZnNldCA9IG9wdGlvbkluZGV4ICogb3B0aW9uSGVpZ2h0O1xuICAgICAgICBpZiAob3B0aW9uT2Zmc2V0IDwgY3VycmVudFNjcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbk9mZnNldCArIG9wdGlvbkhlaWdodCA+IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiArIFNFTEVDVF9QQU5FTF9NQVhfSEVJR0hUKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgb3B0aW9uT2Zmc2V0IC0gU0VMRUNUX1BBTkVMX01BWF9IRUlHSFQgKyBvcHRpb25IZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50U2Nyb2xsUG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0SXRlbUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICAvLyBhbHNvIGluY2x1ZGUgYm9yZGVyIHdpdGggZGVmYXVsdCB2YWx1ZSAxLlxuICAgICAgICByZXR1cm4gdGhpcy5fY29udHJvbEVsZW1Gb250U2l6ZSAqIFNFTEVDVF9JVEVNX0hFSUdIVF9FTSArIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdGlhbGl6ZUNvbW1vbkJlaGF2aW9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxPcHRpb25Db21wb25lbnQ+KGZhbHNlKTtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2NvbXBvbmVudCA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ2FsY3VsYXRlZEhlaWdodCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fcnRsU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5fcnRsU2VydmljZS5ydGwuc3Vic2NyaWJlKChydGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcnRsID0gcnRsO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGwgPT09IHRydWUgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVnaXN0ZXJFdmVudHNBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5hZGRlZC5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5fc2VsZWN0KCkpO1xuICAgICAgICAgICAgZXZlbnQucmVtb3ZlZC5mb3JFYWNoKChvcHRpb24pID0+IG9wdGlvbi5fZGVzZWxlY3QoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXRPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW5cbiAgICAgICAgICAgICAgICA/IHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9oYW5kbGVPcGVuS2V5ZG93bihldmVudClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9oYW5kbGVDbG9zZWRLZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFU0NBUEUsIEVOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5pZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYnV0dG9uQ2xpY2soKTogdm9pZCB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRPckRlc3Ryb3llZCA9IG1lcmdlKHRoaXMuX29wdGlvbnMuY2hhbmdlcywgdGhpcy5fZGVzdHJveSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uU2VsZWN0aW9uQ2hhbmdlcy5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlbGVjdChldmVudC5zb3VyY2UsIGV2ZW50LmlzVXNlcklucHV0KTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LmlzVXNlcklucHV0ICYmIHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExpc3RlbiB0byBjaGFuZ2VzIGluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgX29wdGlvbnMgYW5kIHJlYWN0IGFjY29yZGluZ2x5LlxuICAgICAgICAvLyBIYW5kbGVzIGNhc2VzIGxpa2UgdGhlIGxhYmVscyBvZiB0aGUgc2VsZWN0ZWQgX29wdGlvbnMgY2hhbmdpbmcuXG4gICAgICAgIG1lcmdlKC4uLnRoaXMuX29wdGlvbnMubWFwKChvcHRpb24pID0+IG9wdGlvbi5fc3RhdGVDaGFuZ2VzKSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSW52b2tlZCB3aGVuIGFuIG9wdGlvbiBpcyBjbGlja2VkLlxuICAgICAqL1xuICAgIHByaXZhdGUgX29uU2VsZWN0KG9wdGlvbjogT3B0aW9uQ29tcG9uZW50LCBpc1VzZXJJbnB1dDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCB3YXNTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKTtcbiAgICAgICAgaWYgKChvcHRpb24udmFsdWUgPT09IG51bGwgfHwgb3B0aW9uLnZhbHVlID09PSB1bmRlZmluZWQpICYmIHRoaXMudW5zZWxlY3RNaXNzaW5nT3B0aW9uKSB7XG4gICAgICAgICAgICBvcHRpb24uX2Rlc2VsZWN0KCk7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdFNlbGVjdENoYW5nZShvcHRpb24udmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdhc1NlbGVjdGVkICE9PSBvcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPyB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qob3B0aW9uKSA6IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KG9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNVc2VySW5wdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKG9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKSB8fCB0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdFNlbGVjdENoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbWl0U2VsZWN0Q2hhbmdlKGRlZmF1bHRWYWw/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuRW1pdFZhbHVlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcm5hbFZhbHVlID1cbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZCAmJiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5sZW5ndGggIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5zZWxlY3RlZCBhcyBPcHRpb25Db21wb25lbnQpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFZhbDtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl9pbnRlcm5hbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5faW50ZXJuYWxWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0SXRlbUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLl9vcHRpb25QYW5lbCAmJiB0aGlzLl9oZWFkZXJFbGVtZW50cygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aCArIHRoaXMuX2hlYWRlckVsZW1lbnRzKCkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hlYWRlckVsZW1lbnRzKCk6IE5vZGVMaXN0T2Y8RWxlbWVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uUGFuZWw/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChTRUxFQ1RfSEVBREVSX0lERU5USUZJRVIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0dXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFNFTEVDVF9DT01QT05FTlQsIHVzZVZhbHVlOiB0aGlzIH1dLFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvclxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljTW9kdWxlKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlLFxuICAgICAgICAgICAgU2VsZWN0TW9iaWxlTW9kdWxlLFxuICAgICAgICAgICAgU2VsZWN0TW9iaWxlQ29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGluamVjdG9yXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZFNlbGVjdENTU0NsYXNzZXMgaW1wbGVtZW50cyBNb2R1bGVEZXByZWNhdGlvbiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBtZXNzYWdlID0gYFNlbGVjdCBDU1MgY2xhc3NlcyBmZC1zZWxlY3QtLWNvbXBhY3QsIGZkLXNlbGVjdC0tY29tcGFjdC0tbW9iaWxlLCBmZC1wb3BvdmVyLWN1c3RvbS1zZWxlY3QtYm9keSwgZmQtcG9wb3Zlci1jdXN0b20tbGlzdCBhcmUgZGVwcmVjYXRlZGA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFsdGVybmF0aXZlID0ge1xuICAgICAgICBuYW1lOiAnSW5zcGVjdCB0aGUgZWxlbWVudHMgb2YgdGhlIFNlbGVjdCBjb21wb25lbnQgdG8gc2VlIHRoZSBuZXcgY2xhc3NlcycsXG4gICAgICAgIGxpbms6IFsnL2NvcmUnLCAnc2VsZWN0J11cbiAgICB9O1xufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZVRlbXBsYXRlIDogZGVza3RvcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGVza3RvcFRlbXBsYXRlPlxuICAgIDwhLS0gQGRlcHJlY2F0ZWQgbGVhdmluZyBjbGFzcyBmZC1wb3BvdmVyLWN1c3RvbS1saXN0IHRvIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHktLT5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2VsZWN0LWRyb3Bkb3duIGZkLXBvcG92ZXItY3VzdG9tLWxpc3RcIlxuICAgICAgICBbaXNPcGVuXT1cIl9pc09wZW5cIlxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgICAgICBbY2xvc2VPbkVzY2FwZUtleV09XCJ0cnVlXCJcbiAgICAgICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgICAgICBbbWF4V2lkdGhdPVwiNjAwXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiY2xvc2VPbk91dHNpZGVDbGlja1wiXG4gICAgICAgIChpc09wZW5DaGFuZ2UpPVwiX3BvcG92ZXJPcGVuQ2hhbmdlSGFuZGxlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0SW5wdXRDb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG5cbiAgICAgICAgPCEtLSBAZGVwcmVjYXRlZCBsZWF2aW5nIGNsYXNzIGZkLXBvcG92ZXItY3VzdG9tLXNlbGVjdC1ib2R5IHRvIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHktLT5cbiAgICAgICAgPGZkLXBvcG92ZXItYm9keSBjbGFzcz1cImZkLXBvcG92ZXItY3VzdG9tLXNlbGVjdC1ib2R5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdE9wdGlvbnNMaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3RJbnB1dENvbnRyb2xUZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtc2VsZWN0X19jb250cm9sXCJcbiAgICAgICAgI3NlbGVjdENvbnRyb2xcbiAgICAgICAgW2NsYXNzXT1cIl9zZWxlY3RDb250cm9sQ2xhc3NcIlxuICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cIl9pc09wZW5cIlxuICAgICAgICBbY2xhc3MuaXMtZXhwYW5kZWRdPVwiX2lzT3BlblwiXG4gICAgICAgIFtjbGFzcy5pcy1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5pcy1yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cIl90YWJJbmRleFwiXG4gICAgICAgIFthdHRyLmlkXT1cImNvbnRyb2xJZFwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlXT1cIl9pc09wZW5cIlxuICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkID8gc2VsZWN0ZWQuc2VsZWN0ZWQgOiBmYWxzZVwiXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgIGFyaWEtcm9sZWRlc2NyaXB0aW9uPVwibGlzdGJveFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiX2lzT3BlblwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNvbnRyb2xJZCArICctbGlzdC1ib3gnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCIhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZClcIlxuICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwidHJpZ2dlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgKCdwbGF0Zm9ybVNlbGVjdC5zZWxlY3RPcHRpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiX2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KClcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXMoKVwiXG4gICAgICAgIChibHVyKT1cIl9vbkJsdXIoKVwiXG4gICAgPlxuICAgICAgICA8ZGl2IHJvbGU9XCJsaXN0aXRlbVwiIGNsYXNzPVwiZmQtc2VsZWN0X190ZXh0LWNvbnRlbnRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRyaWdnZXJWYWx1ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZSA/IGNvbnRyb2xUZW1wbGF0ZSA6IGRlZmF1bHRTZWxlY3RDb250ZW50XCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRyaWdnZXJWYWx1ZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgICAge3sgdHJpZ2dlclZhbHVlIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZmQtYnV0dG9uIGZkLWJ1dHRvbi0tdHJhbnNwYXJlbnQgZmQtc2VsZWN0X19idXR0b25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0RHJvcGRvd25CdXR0b25DbGFzc1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtaWNvbiBbYXJpYUhpZGRlbl09XCJ0cnVlXCIgW2dseXBoXT1cImdseXBoXCI+PC9mZC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdE9wdGlvbnNMaXN0VGVtcGxhdGU+XG4gICAgPHVsXG4gICAgICAgICNvcHRpb25QYW5lbFxuICAgICAgICBmZC1saXN0XG4gICAgICAgIGNsYXNzPVwiZmQtc2VsZWN0LW9wdGlvbnNcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbbW9iaWxlTW9kZV09XCJtb2JpbGVcIlxuICAgICAgICBbZHJvcGRvd25Nb2RlXT1cInRydWVcIlxuICAgICAgICBbaGFzTWVzc2FnZV09XCIhIXN0YXRlTWVzc2FnZVwiXG4gICAgICAgIFthdHRyLmlkXT1cImNvbnRyb2xJZCArICctbGlzdC1ib3gnXCJcbiAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0IHx8IGNhbGN1bGF0ZWRNYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgW2F0dHIudG9vbHRpcF09XCJ0cmlnZ2VyVmFsdWVcIlxuICAgID5cbiAgICAgICAgPGxpXG4gICAgICAgICAgICAqbmdJZj1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBmZC1saXN0LW1lc3NhZ2VcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICBbdHlwZV09XCJzdGF0ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICA+PC9saT5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RJbnB1dENvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiAjZGlhbG9nQ29udGFpbmVyPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
666
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUdILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBSVQsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBK0IsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkgsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9B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eUI7c0JBRHhCLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQUtHLFlBQVk7c0JBRHBCLE1BQU07Z0JBS0UsV0FBVztzQkFEbkIsTUFBTTtnQkFLUCxRQUFRO3NCQURQLGVBQWU7dUJBQUMsZUFBZSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLdkQsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLGVBQWU7Z0JBSzFCLHlCQUF5QjtzQkFEeEIsU0FBUzt1QkFBQywyQkFBMkI7Z0JBTXRDLDBCQUEwQjtzQkFEekIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBUTVCLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBTzlCLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXFFOUMsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLGVBQWU7Z0JBK0R6QixXQUFXO3NCQURkLEtBQUs7Z0JBa0ZOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxPQUFPO2dCQXNOckIsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFzSXZDLE1BQU0sT0FBTywwQkFBMEI7SUFBdkM7UUFDSSxjQUFjO1FBQ2QsWUFBTyxHQUFHLHlJQUF5SSxDQUFDO1FBRXBKLGNBQWM7UUFDZCxnQkFBVyxHQUFHO1lBQ1YsSUFBSSxFQUFFLHFFQUFxRTtZQUMzRSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO1NBQzVCLENBQUM7SUFDTixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVmZXIsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLCBLZXlVdGlsLCBNb2R1bGVEZXByZWNhdGlvbiwgTnVsbGFibGUsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBQb3BvdmVyRmlsbE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHsgRU5URVIsIEVTQ0FQRSwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcywgU2luZ2xlRHJvcGRvd25WYWx1ZUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGZE9wdGlvblNlbGVjdGlvbkNoYW5nZSwgT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RLZXlNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2VsZWN0LWtleS1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtbW9iaWxlL3NlbGVjdC1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdE1vYmlsZU1vZHVsZSB9IGZyb20gJy4vc2VsZWN0LW1vYmlsZS9zZWxlY3QtbW9iaWxlLm1vZHVsZSc7XG5pbXBvcnQgeyBTRUxFQ1RfQ09NUE9ORU5ULCBTZWxlY3RJbnRlcmZhY2UgfSBmcm9tICcuL3NlbGVjdC5pbnRlcmZhY2UnO1xuXG5sZXQgc2VsZWN0VW5pcXVlSWQgPSAwO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBpbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSBcIkBmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zXCJgIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIFNlbGVjdENvbnRyb2xTdGF0ZSA9IEZvcm1TdGF0ZXM7XG5cbmNvbnN0IFNFTEVDVF9IRUFERVJfSURFTlRJRklFUiA9ICcuZmQtbGlzdF9fZ3JvdXAtaGVhZGVyJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9QQU5FTF9NQVhfSEVJR0hUID0gMjUwO1xuXG4vKiogVGhlIGhlaWdodCBvZiB0aGUgc2VsZWN0IGl0ZW1zIGluIGByZW1gIHVuaXRzLiAqL1xuZXhwb3J0IGNvbnN0IFNFTEVDVF9JVEVNX0hFSUdIVF9FTSA9IDQ7XG5cbi8qKlxuICogU2VsZWN0IGNvbXBvbmVudCBpbnRlbmRlZCB0byBtaW1pY1xuICogdGhlIGJlaGF2aW91ciBvZiB0aGUgbmF0aXZlIHNlbGVjdCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtc2VsZWN0JyxcbiAgICAgICAgJ1tjbGFzcy5mZC1zZWxlY3QtLWlubGluZV0nOiAnaW5saW5lJyxcbiAgICAgICAgLy8gQGRlcHJlY2F0ZWQgbGVhdmluZyBjbGFzcyBmZC1zZWxlY3QtY3VzdG9tLWNsYXNzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAnW2NsYXNzLmZkLXNlbGVjdC1jdXN0b20tY2xhc3NdJzogJ2lubGluZScsXG4gICAgICAgIC8vIEBkZXByZWNhdGVkIGxlYXZpbmcgY2xhc3MgZmQtc2VsZWN0LWN1c3RvbS1jbGFzcy0tbW9iaWxlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAnW2NsYXNzLmZkLXNlbGVjdC1jdXN0b20tY2xhc3MtLW1vYmlsZV0nOiAnbW9iaWxlJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNFTEVDVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFNlbGVjdENvbXBvbmVudCksXG4gICAgICAgIFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudDxUID0gYW55PlxuICAgIGltcGxlbWVudHNcbiAgICAgICAgU2luZ2xlRHJvcGRvd25WYWx1ZUNvbnRyb2wsXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBTZWxlY3RJbnRlcmZhY2UsXG4gICAgICAgIE9uSW5pdCxcbiAgICAgICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICAgICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICAgICAgT25DaGFuZ2VzLFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBJZCBvZiB0aGUgY29udHJvbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRyb2xJZCA9IGBmZC1zZWxlY3QtJHtzZWxlY3RVbmlxdWVJZCsrfWA7XG5cbiAgICAvKiogSG9sZHMgdGhlIGNvbnRyb2wgc3RhdGUgb2Ygc2VsZWN0ICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZTogTnVsbGFibGU8Rm9ybVN0YXRlcz47XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkIGluIG1vYmlsZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogSG9sZHMgdGhlIG1lc3NhZ2Ugd2l0aCByZXNwZWN0IHRvIHN0YXRlICovXG4gICAgQElucHV0KClcbiAgICBzdGF0ZU1lc3NhZ2U6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogV2hldGhlciB0aGUgc2VsZWN0IGNvbXBvbmVudCBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogSWYgaXQgaXMgbWFuZGF0b3J5IGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICByZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdCBjb21wb25lbnQgaXMgcmVhZG9ubHkuICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIFBsYWNlaG9sZGVyIGZvciB0aGUgc2VsZWN0LiBBcHBlYXJzIGluIHRoZSB0cmlnZ2VyYm94IGlmIG5vIG9wdGlvbiBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogVmFsdWUgb2YgdGhlIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9pbnRlcm5hbFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWRcbiAgICAgKiBpdCBpcyBoYW5kbGVkIGludGVybmFsbHkgYnkgY29udHJvbFRlbXBsYXRlICE9IG51bGx8dW5kZWZpbmVkIGlzXG4gICAgICogRXF1YWwgYXMgZXh0ZW5kZWRCb2R5VGVtcGxhdGUgYXMgdHJ1ZS5cbiAgICAgKiBXaGV0aGVyIG9wdGlvbiBjb21wb25lbnRzIGNvbnRhaW4gbW9yZSB0aGFuIGJhc2ljIHRleHQuICovXG4gICAgQElucHV0KClcbiAgICBleHRlbmRlZEJvZHlUZW1wbGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIE1heCBoZWlnaHQgb2YgdGhlIHBvcG92ZXIuIEFueSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aWxsIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBzY3JvbGxpbmcuICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQ6IHN0cmluZztcblxuICAgIC8qKiBHbHlwaCB0byBhZGQgaWNvbiBpbiB0aGUgc2VsZWN0IGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdseXBoID0gJ3NsaW0tYXJyb3ctZG93bic7XG5cbiAgICAvKiogV2hldGhlciBjbG9zZSB0aGUgcG9wb3ZlciBvbiBvdXRzaWRlIGNsaWNrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VPbk91dHNpZGVDbGljayA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIFNlbGVjdCBib2R5IHdpZHRoLCB3aGF0ZXZlciBpcyBjaG9zZW4sIHRoZSBib2R5IGhhcyBhIDYwMHB4IGxpbWl0LlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogKiBgZXF1YWxgIHdpbGwgYXBwbHkgYSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqICdmaXQtY29udGVudCcgd2lsbCBhcHBseSB3aWR0aCBuZWVkZWQgdG8gcHJvcGVybHkgZGlzcGxheSBpdGVtcyBpbnNpZGUsIGluZGVwZW5kZW50IG9mIGNvbnRyb2wuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsQ29udHJvbE1vZGU6IFBvcG92ZXJGaWxsTW9kZSA9ICdhdC1sZWFzdCc7XG5cbiAgICAvKiogQ3VzdG9tIHRlbXBsYXRlIHVzZWQgdG8gYnVpbGQgY29udHJvbCBib2R5LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhcHBlbmRlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIG9wdGlvbiBzaG91bGQgYmUgdW5zZWxlY3RlZCBhbmQgdmFsdWUgY2hhbmdlZCB0byB1bmRlZmluZWQsIHdoZW4gdGhlIGN1cnJlbnQgdmFsdWUgaXNcbiAgICAgKiBub3QgcHJlc2VudGVkIGluIG9wdGlvbiBhcnJheS4gU3dpdGNoaW5nIGl0IG9mZiBjYW4gYmUgaGFuZHksIHdoZW4gdGhlcmUgaXMgc29tZSBkZWxheSBiZXR3ZWVuIHByb3ZpZGluZ1xuICAgICAqIHBvc3NpYmxlIG9wdGlvbnMgYW5kIGNob3NlbiB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuc2VsZWN0TWlzc2luZ09wdGlvbiA9IHRydWU7XG5cbiAgICAvKiogVGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcyBhZnRlciB0aGUgbGFzdCBrZXlkb3duIGJlZm9yZSBmb2N1c2luZyBvciBzZWxlY3Rpbmcgb3B0aW9uIGJhc2VkIG9uIGFscGhhbnVtZXJpYyBrZXlzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCA9IDI1MDtcblxuICAgIC8qKiBCaW5kcyB0byBjb250cm9sIGFyaWEtbGFiZWxsZWRCeSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNldHMgY29udHJvbCBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIFNlbGVjdCBJbnB1dCBNb2JpbGUgQ29uZmlndXJhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnID0geyBoYXNDbG9zZUJ1dHRvbjogdHJ1ZSB9O1xuXG4gICAgLyoqIFNob3VsZCBzZWxlY3QgYmUgaW5saW5lZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlubGluZSA9IHRydWU7XG5cbiAgICAvKiogQWRkaXRpb25hbCBjbGFzc25hbWUgZm9yIHRoZSBzZWxlY3QgY29udHJvbCBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0Q29udHJvbENsYXNzOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFkZGl0aW9uYWwgY2xhc3NuYW1lIGZvciB0aGUgc2VsZWN0IGRyb3Bkb3duIGJ1dHRvbiBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0RHJvcGRvd25CdXR0b25DbGFzczogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEFjdGlvbiB0byBwZXJmb3JtIHdoZW4gdXNlciBzaGlmdHMgZm9jdXMgZnJvbSB0aGUgZHJvcGRvd24uXG4gICAgICogLSBgY2xvc2VgIHdpbGwgY2xvc2UgdGhlIGRyb3Bkb3duIHByZXNlcnZpbmcgcHJldmlvdXNseSBzZWxlY3RlZCB2YWx1ZS5cbiAgICAgKiAtIGBjbG9zZUFuZFNlbGVjdGAgd2lsbCBjbG9zZSB0aGUgZHJvcGRvd24gYW5kIHNlbGVjdCBsYXN0IGZvY3VzZWQgZHJvcGRvd24gaXRlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYk91dFN0cmF0ZWd5OiAnY2xvc2UnIHwgJ2Nsb3NlQW5kU2VsZWN0JyA9ICdjbG9zZSc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIG9wZW4gc3RhdGUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIG9mIHRoZSBzZWxlY3QgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBfb3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdENvbnRyb2wnKVxuICAgIF9jb250cm9sRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogUmVmZXJlbmNlIHRvIGVsZW1lbnQgY29udGFpbmluZyBsaXN0IG9mIG9wdGlvbnMgKi9cbiAgICBAVmlld0NoaWxkKCdzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlJylcbiAgICBzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZWZlcmVuY2UgdG8gcm9vdCBlbGVtZW50IGZvciB0aGUgbW9iaWxlIG1vZGUgZGlhbG9nICovXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGFpbmVyJylcbiAgICBfZGlhbG9nQ29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIE92ZXJsYXkgcGFuZSBjb250YWluaW5nIHRoZSBvcHRpb25zLlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXkpXG4gICAgX292ZXJsYXlEaXI6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlZmVyZW50IHRvIHRoZSBvcHRpb247cyBjb250YWluZXJcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdvcHRpb25QYW5lbCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9vcHRpb25QYW5lbDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9pc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW50ZXJuYWxWYWx1ZTogYW55O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FsY3VsYXRlZE1heEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnRsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8T3B0aW9uQ29tcG9uZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUcmlnZ2VycyB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2VsZWN0Q29udHJvbENsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbdGhpcy5zdGF0ZSA/IGBpcy0ke3RoaXMuc3RhdGV9YCA6ICcnLCB0aGlzLnNlbGVjdENvbnRyb2xDbGFzc11cbiAgICAgICAgICAgIC5maWx0ZXIoKGNsYXNzTmFtZSkgPT4gISFjbGFzc05hbWUpXG4gICAgICAgICAgICAuam9pbignICcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBjaGlsZCBvcHRpb25zJyBjaGFuZ2UgZXZlbnRzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IF9vcHRpb25TZWxlY3Rpb25DaGFuZ2VzOiBPYnNlcnZhYmxlPEZkT3B0aW9uU2VsZWN0aW9uQ2hhbmdlPiA9IGRlZmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuXG4gICAgICAgIHJldHVybiBfb3B0aW9ucz8uY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKF9vcHRpb25zKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi5fb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGlvbkNoYW5nZSkpKVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250cm9sRWxlbUZvbnRTaXplID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFN0b3JlZCBjYWxjdWxhdGVkIG1heEhlaWdodCBmcm9tIE9wdGlvbiBQYW5lbFxuICAgICAqL1xuICAgIHByaXZhdGUgX21heEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIF9yZXNpemVTY3JvbGxIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVDYWxjdWxhdGVkSGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gdGhpcy5kaXNhYmxlZCA/IC0xIDogMDtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0ZWQgb3B0aW9uLiAqL1xuICAgIGdldCBzZWxlY3RlZCgpOiBPcHRpb25Db21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF07XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyBzZWxlY3RlZCB2YWx1ZSBpZiBhbnkuICovXG4gICAgZ2V0IHRyaWdnZXJWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gJyAnO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB8fCBlbXB0eVZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLnZpZXdWYWx1ZSB8fCB0aGlzLnBsYWNlaG9sZGVyIHx8IGVtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIGVxdWFsIHRvIGNsb3NlXG4gICAgICogVGVsbHMgdGhlIE9wdGlvbkxpc3QgaWYgaXQncyBjbG9zYWJsZSBieSBzaW1wbHkgc2VsZWN0aW5nIHRoZSBpdGVtIGVpdGhlciB3aXRoIENMSUNLIHwgU1BBQ0UgfCBFTlRFUi5cbiAgICAgKiBXaGVuIHdlIGFyZSBpbiBtb2JpbGUgbW9kZSAobW9iaWxlPXRydWUpIGFuZCBoYXZlIHdlIGhhdmUgZW5hYmxlZCBjb25maXJtYXRpb24gYnV0dG9ucyB0aGVuIHdlXG4gICAgICogZG9udCBjbG9zZSBvcHRpb24gbGlzdC4gV2UgY2xvc2Ugb25seSBhZnRlciB3ZSBoaXQgY29uZmlybSBidXR0b24uXG4gICAgICovXG4gICAgZ2V0IGNhbkNsb3NlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLm1vYmlsZSAmJiB0aGlzLm1vYmlsZUNvbmZpZy5hcHByb3ZlQnV0dG9uVGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgY29udHJvbCBjYW4gYmUgaW50ZXJhY3RlZCB3aXRoICovXG4gICAgZ2V0IGlzSW50ZXJhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgd2UgY2FuIGVtaXQgYSB2YWx1ZS4gVGhleSBhcmUgMyBkaWZmZXJlbnQgcGF0aHMgd2hlcmUgd2UgY2FuIGVtaXQgdmFsdWU6XG4gICAgICogIC0gV2UgYXJlIG5vdCBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT1mYWxzZVxuICAgICAqICAtIFdlIGFyZSBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT10cnVlIGFuZCBtb2JpbGUgZGlhbG9nIGFzIGp1c3QgY2xvc2UgWCBidXR0b24gdG8gZGlzbWlzcyBpdFxuICAgICAqICAtIFdlIGFyZSBpbiBtb2JpbGUgbW9kZSBbbW9iaWxlXT10cnVlIGFuZCBtb2JpbGUgZGlhbG9nIGhhcyBBcHByb3ZlQnV0dG9uIGF2YWlsYWJsZSBhbmRcbiAgICAgKiAgZGlhbG9nIGlzIGNsb3NlZC4gKG1lYW5pbmcgd2UgYWxyZWFkeSBjbGlja2VkIHRoaXMgYnV0dG9uKVxuICAgICAqL1xuICAgIGdldCBjYW5FbWl0VmFsdWVDaGFuZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5tb2JpbGUgfHxcbiAgICAgICAgICAgICh0aGlzLm1vYmlsZSAmJlxuICAgICAgICAgICAgICAgIC8vIEFwcHJvdmUgKyBDYW5jZWxcbiAgICAgICAgICAgICAgICAhIXRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuX2lzT3BlbikgfHxcbiAgICAgICAgICAgIC8vIENsb3NlQnV0dG9uLiBFbWl0cyB3aGVuIHlvdSBjbGljayBvbiB0aGUgb3B0aW9uIGl0ZW1cbiAgICAgICAgICAgICghIXRoaXMubW9iaWxlQ29uZmlnLmhhc0Nsb3NlQnV0dG9uICYmICEhdGhpcy5tb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHQgPT09IGZhbHNlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IG8xID09PSBvMjtcblxuICAgIC8qKiBGdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ2NvbXBhcmVXaXRoYCBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICAvLyBBIGRpZmZlcmVudCBjb21wYXJhdG9yIG1lYW5zIHRoZSBzZWxlY3Rpb24gY291bGQgY2hhbmdlLlxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBjb21wYXJlV2l0aCgpOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNlZCB8fCB0aGlzLl9pc09wZW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FsY3VsYXRlZE1heEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4SGVpZ2h0IHx8IHRoaXMuX2NhbGN1bGF0ZWRNYXhIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSBfdGFiSW5kZXg6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfa2V5TWFuYWdlclNlcnZpY2U6IFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSBwYXJzZUludChfdGFiSW5kZXgsIDEwKSB8fCAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVDb21tb25CZWhhdmlvcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faW5pdEtleU1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyRXZlbnRzQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sndHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCddICYmIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci53aXRoVHlwZUFoZWFkKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5fdGFiSW5kZXggPSB0aGlzLmRpc2FibGVkID8gLTEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jbGVhbnVwQ29tbW9uQmVoYXZpb3IoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkgfHwgIXRoaXMuX29wdGlvbnMgfHwgIXRoaXMuX2dldEl0ZW1Db3VudCgpIHx8IHRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fY29udHJvbEVsZW1Gb250U2l6ZSA9IHBhcnNlSW50KFxuICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9jb250cm9sRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5mb250U2l6ZSB8fCAnMCcsXG4gICAgICAgICAgICAxMFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24obnVsbCk7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5fY29udHJvbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbG9zZShmb3JjZUNsb3NlID0gZmFsc2UsIHRhYk91dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc09wZW4gfHwgZm9yY2VDbG9zZSkge1xuICAgICAgICAgICAgaWYgKHRhYk91dCAmJiB0aGlzLnRhYk91dFN0cmF0ZWd5ID09PSAnY2xvc2VBbmRTZWxlY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuYWN0aXZlSXRlbT8uX3NlbGVjdFZpYUludGVyYWN0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKSA/ICdydGwnIDogJ2x0cicpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICAodGhpcy5fY29udHJvbEVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEJsdXJzIHNlbGVjdCBjb250cm9sLiAqL1xuICAgIGJsdXIoKTogdm9pZCB7XG4gICAgICAgICh0aGlzLl9jb250cm9sRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmcm9tIENvbnRyb2xWYWx1ZSBBY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3Rpb25CeVZhbHVlKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5fc2VsZWN0VmFsdWUodmFsdWUpO1xuXG4gICAgICAgIC8vIFNoaWZ0IGZvY3VzIHRvIHRoZSBhY3RpdmUgaXRlbS4gTm90ZSB0aGF0IHdlIHNob3VsZG4ndCBkbyB0aGlzIGluIG11bHRpcGxlXG4gICAgICAgIC8vIG1vZGUsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IG9wdGlvbiB0aGUgdXNlciBpbnRlcmFjdGVkIHdpdGggbGFzdC5cbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzT3Blbikge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHJlc2V0IHRoZSBoaWdobGlnaHRlZCBvcHRpb24uIE5vdGUgdGhhdCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyB3aGlsZVxuICAgICAgICAgICAgLy8gY2xvc2VkLCBiZWNhdXNlIGRvaW5nIGl0IHdoaWxlIG9wZW4gY2FuIHNoaWZ0IHRoZSB1c2VyJ3MgZm9jdXMgdW5uZWNlc3NhcmlseS5cbiAgICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBPcHRpb25Db21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5fb3B0aW9ucy5maW5kKChvcHRpb246IE9wdGlvbkNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyBUcmVhdCBudWxsIGFzIGEgc3BlY2lhbCByZXNldCB2YWx1ZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlICE9IG51bGwgJiYgdGhpcy5fY29tcGFyZVdpdGgob3B0aW9uLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOb3RpZnkgZGV2ZWxvcGVycyBvZiBlcnJvcnMgaW4gdGhlaXIgY29tcGFyYXRvci5cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ09wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGNvcnJlc3BvbmRpbmdPcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdPcHRpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlzT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgX2tleU1hbmFnZXJTZXJ2aWNlLiAqL1xuICAgIF9nZXRLZXlTZXJ2aWNlKCk6IFNlbGVjdEtleU1hbmFnZXJTZXJ2aWNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIgJiYgdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlciAmJiAhdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2xlYW51cENvbW1vbkJlaGF2aW9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXRpYWxpemVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIC8vIERlZmVyIHNldHRpbmcgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBcIkV4cHJlc3Npb25cbiAgICAgICAgLy8gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWRcIiBlcnJvcnMgZnJvbSBBbmd1bGFyLlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2wgPyB0aGlzLm5nQ29udHJvbC52YWx1ZSA6IHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBvc2Ugb3V0c2lkZSBvZiB0aGlzIG1peGluIHRvIGdpdmUgY29tcG9uZW50IGFiaWxpdHlcbiAgICAgKiB0byB1cGRhdGUgY2FsdWNsYXRlZE1heEhlaWdodCBpZiBuZWVkZWRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3VwZGF0ZUNhbGN1bGF0ZWRIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZWRNYXhIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjQ1O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldE9wdGlvblNjcm9sbFBvc2l0aW9uKG9wdGlvbkluZGV4OiBudW1iZXIsIGl0ZW1IZWlnaHQ6IG51bWJlciwgY3VycmVudFNjcm9sbFBvc2l0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBvcHRpb25IZWlnaHQgPSB0aGlzLl9vcHRpb25zLmdldChvcHRpb25JbmRleCk/Ll9nZXRIdG1sRWxlbWVudCgpLm9mZnNldEhlaWdodCB8fCBpdGVtSGVpZ2h0O1xuICAgICAgICBjb25zdCBvcHRpb25PZmZzZXQgPSBvcHRpb25JbmRleCAqIG9wdGlvbkhlaWdodDtcbiAgICAgICAgaWYgKG9wdGlvbk9mZnNldCA8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbk9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25PZmZzZXQgKyBvcHRpb25IZWlnaHQgPiBjdXJyZW50U2Nyb2xsUG9zaXRpb24gKyBTRUxFQ1RfUEFORUxfTUFYX0hFSUdIVCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIG9wdGlvbk9mZnNldCAtIFNFTEVDVF9QQU5FTF9NQVhfSEVJR0hUICsgb3B0aW9uSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudFNjcm9sbFBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEl0ZW1IZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gYWxzbyBpbmNsdWRlIGJvcmRlciB3aXRoIGRlZmF1bHQgdmFsdWUgMS5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xFbGVtRm9udFNpemUgKiBTRUxFQ1RfSVRFTV9IRUlHSFRfRU0gKyAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXRpYWxpemVDb21tb25CZWhhdmlvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWw8T3B0aW9uQ29tcG9uZW50PihmYWxzZSk7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9jb21wb25lbnQgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNhbGN1bGF0ZWRIZWlnaHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgocnRsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3J0bCA9IHJ0bDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcnRsID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlZ2lzdGVyRXZlbnRzQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgZXZlbnQuYWRkZWQuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uX3NlbGVjdCgpKTtcbiAgICAgICAgICAgIGV2ZW50LnJlbW92ZWQuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uX2Rlc2VsZWN0KCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0T3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy5faXNPcGVuXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faGFuZGxlT3BlbktleWRvd24oZXZlbnQpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9rZXlNYW5hZ2VyU2VydmljZS5faGFuZGxlQ2xvc2VkS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRVNDQVBFLCBFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLl9pc09wZW4gJiYgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIgJiYgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2tleU1hbmFnZXJTZXJ2aWNlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLl9pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2J1dHRvbkNsaWNrKCk6IHZvaWQge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjaGFuZ2VkT3JEZXN0cm95ZWQgPSBtZXJnZSh0aGlzLl9vcHRpb25zLmNoYW5nZXMsIHRoaXMuX2Rlc3Ryb3kpO1xuXG4gICAgICAgIHRoaXMuX29wdGlvblNlbGVjdGlvbkNoYW5nZXMucGlwZSh0YWtlVW50aWwoY2hhbmdlZE9yRGVzdHJveWVkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25TZWxlY3QoZXZlbnQuc291cmNlLCBldmVudC5pc1VzZXJJbnB1dCk7XG5cbiAgICAgICAgICAgIGlmIChldmVudC5pc1VzZXJJbnB1dCAmJiB0aGlzLl9pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMaXN0ZW4gdG8gY2hhbmdlcyBpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIF9vcHRpb25zIGFuZCByZWFjdCBhY2NvcmRpbmdseS5cbiAgICAgICAgLy8gSGFuZGxlcyBjYXNlcyBsaWtlIHRoZSBsYWJlbHMgb2YgdGhlIHNlbGVjdGVkIF9vcHRpb25zIGNoYW5naW5nLlxuICAgICAgICBtZXJnZSguLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uX3N0YXRlQ2hhbmdlcykpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwoY2hhbmdlZE9yRGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEludm9rZWQgd2hlbiBhbiBvcHRpb24gaXMgY2xpY2tlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblNlbGVjdChvcHRpb246IE9wdGlvbkNvbXBvbmVudCwgaXNVc2VySW5wdXQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbik7XG4gICAgICAgIGlmICgob3B0aW9uLnZhbHVlID09PSBudWxsIHx8IG9wdGlvbi52YWx1ZSA9PT0gdW5kZWZpbmVkKSAmJiB0aGlzLnVuc2VsZWN0TWlzc2luZ09wdGlvbikge1xuICAgICAgICAgICAgb3B0aW9uLl9kZXNlbGVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZWxlY3RDaGFuZ2Uob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gb3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID8gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG9wdGlvbikgOiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdChvcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVXNlcklucHV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fa2V5TWFuYWdlclNlcnZpY2UuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShvcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdhc1NlbGVjdGVkICE9PSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbikgfHwgdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRTZWxlY3RDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZW1pdFNlbGVjdENoYW5nZShkZWZhdWx0VmFsPzogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhbkVtaXRWYWx1ZUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gKHRoaXMuc2VsZWN0ZWQgYXMgT3B0aW9uQ29tcG9uZW50KS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGRlZmF1bHRWYWw7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5faW50ZXJuYWxWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2ludGVybmFsVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW1Db3VudCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9uUGFuZWwgJiYgdGhpcy5faGVhZGVyRWxlbWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5sZW5ndGggKyB0aGlzLl9oZWFkZXJFbGVtZW50cygpLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oZWFkZXJFbGVtZW50cygpOiBOb2RlTGlzdE9mPEVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvblBhbmVsPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoU0VMRUNUX0hFQURFUl9JREVOVElGSUVSKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBTRUxFQ1RfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY01vZHVsZShcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0T3B0aW9uc0xpc3RUZW1wbGF0ZSxcbiAgICAgICAgICAgIFNlbGVjdE1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFNlbGVjdE1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBpbmplY3RvclxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRTZWxlY3RDU1NDbGFzc2VzIGltcGxlbWVudHMgTW9kdWxlRGVwcmVjYXRpb24ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbWVzc2FnZSA9IGBTZWxlY3QgQ1NTIGNsYXNzZXMgZmQtc2VsZWN0LS1jb21wYWN0LCBmZC1zZWxlY3QtLWNvbXBhY3QtLW1vYmlsZSwgZmQtcG9wb3Zlci1jdXN0b20tc2VsZWN0LWJvZHksIGZkLXBvcG92ZXItY3VzdG9tLWxpc3QgYXJlIGRlcHJlY2F0ZWRgO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhbHRlcm5hdGl2ZSA9IHtcbiAgICAgICAgbmFtZTogJ0luc3BlY3QgdGhlIGVsZW1lbnRzIG9mIHRoZSBTZWxlY3QgY29tcG9uZW50IHRvIHNlZSB0aGUgbmV3IGNsYXNzZXMnLFxuICAgICAgICBsaW5rOiBbJy9jb3JlJywgJ3NlbGVjdCddXG4gICAgfTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVUZW1wbGF0ZSA6IGRlc2t0b3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rlc2t0b3BUZW1wbGF0ZT5cbiAgICA8IS0tIEBkZXByZWNhdGVkIGxlYXZpbmcgY2xhc3MgZmQtcG9wb3Zlci1jdXN0b20tbGlzdCB0byBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LS0+XG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXNlbGVjdC1kcm9wZG93biBmZC1wb3BvdmVyLWN1c3RvbS1saXN0XCJcbiAgICAgICAgW2lzT3Blbl09XCJfaXNPcGVuXCJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgW2Nsb3NlT25Fc2NhcGVLZXldPVwidHJ1ZVwiXG4gICAgICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICAgICAgW21heFdpZHRoXT1cIjYwMFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdElucHV0Q29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuXG4gICAgICAgIDwhLS0gQGRlcHJlY2F0ZWQgbGVhdmluZyBjbGFzcyBmZC1wb3BvdmVyLWN1c3RvbS1zZWxlY3QtYm9keSB0byBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LS0+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgY2xhc3M9XCJmZC1wb3BvdmVyLWN1c3RvbS1zZWxlY3QtYm9keVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0SW5wdXRDb250cm9sVGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLXNlbGVjdF9fY29udHJvbFwiXG4gICAgICAgICNzZWxlY3RDb250cm9sXG4gICAgICAgIFtjbGFzc109XCJfc2VsZWN0Q29udHJvbENsYXNzXCJcbiAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJfaXNPcGVuXCJcbiAgICAgICAgW2NsYXNzLmlzLWV4cGFuZGVkXT1cIl9pc09wZW5cIlxuICAgICAgICBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MuaXMtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJfdGFiSW5kZXhcIlxuICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZV09XCJfaXNPcGVuXCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RlZCA/IHNlbGVjdGVkLnNlbGVjdGVkIDogZmFsc2VcIlxuICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICBhcmlhLXJvbGVkZXNjcmlwdGlvbj1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIl9pc09wZW5cIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJjb250cm9sSWQgKyAnLWxpc3QtYm94J1wiXG4gICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cInRyaWdnZXJWYWx1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgncGxhdGZvcm1TZWxlY3Quc2VsZWN0T3B0aW9uTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cIl9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9vbkZvY3VzKClcIlxuICAgICAgICAoYmx1cik9XCJfb25CbHVyKClcIlxuICAgID5cbiAgICAgICAgPGRpdiByb2xlPVwibGlzdGl0ZW1cIiBjbGFzcz1cImZkLXNlbGVjdF9fdGV4dC1jb250ZW50XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmlnZ2VyVmFsdWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGUgPyBjb250cm9sVGVtcGxhdGUgOiBkZWZhdWx0U2VsZWN0Q29udGVudFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB0cmlnZ2VyVmFsdWUsIHNlbGVjdGVkOiBzZWxlY3RlZCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICAgIHt7IHRyaWdnZXJWYWx1ZSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImZkLWJ1dHRvbiBmZC1idXR0b24tLXRyYW5zcGFyZW50IGZkLXNlbGVjdF9fYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdERyb3Bkb3duQnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRvbmx5XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLWljb24gW2FyaWFIaWRkZW5dPVwidHJ1ZVwiIFtnbHlwaF09XCJnbHlwaFwiPjwvZmQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3RPcHRpb25zTGlzdFRlbXBsYXRlPlxuICAgIDx1bFxuICAgICAgICAjb3B0aW9uUGFuZWxcbiAgICAgICAgZmQtbGlzdFxuICAgICAgICBjbGFzcz1cImZkLXNlbGVjdC1vcHRpb25zXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgW21vYmlsZU1vZGVdPVwibW9iaWxlXCJcbiAgICAgICAgW2Ryb3Bkb3duTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgW2hhc01lc3NhZ2VdPVwiISFzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWQgKyAnLWxpc3QtYm94J1wiXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1heEhlaWdodCB8fCBjYWxjdWxhdGVkTWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIFthdHRyLnRvb2x0aXBdPVwidHJpZ2dlclZhbHVlXCJcbiAgICA+XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nSWY9XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICAgICAgZmQtbGlzdC1tZXNzYWdlXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgW3R5cGVdPVwic3RhdGUgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwic3RhdGVNZXNzYWdlXCJcbiAgICAgICAgPjwvbGk+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0SW5wdXRDb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgI2RpYWxvZ0NvbnRhaW5lcj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|