igniteui-angular 13.0.0-alpha.6 → 13.0.0-alpha.7
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/README.md +31 -30
- package/esm2020/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +2 -2
- package/esm2020/lib/banner/banner.component.mjs +1 -1
- package/esm2020/lib/combo/combo-dropdown.component.mjs +12 -6
- package/esm2020/lib/combo/combo-item.component.mjs +5 -3
- package/esm2020/lib/combo/combo.api.mjs +3 -3
- package/esm2020/lib/combo/combo.common.mjs +1100 -2
- package/esm2020/lib/combo/combo.component.mjs +107 -1231
- package/esm2020/lib/combo/combo.directives.mjs +9 -25
- package/esm2020/lib/combo/combo.pipes.mjs +4 -6
- package/esm2020/lib/combo/public_api.mjs +5 -1
- package/esm2020/lib/core/utils.mjs +11 -1
- package/esm2020/lib/dialog/dialog.component.mjs +22 -10
- package/esm2020/lib/directives/focus-trap/focus-trap.directive.mjs +112 -0
- package/esm2020/lib/directives/for-of/for_of.directive.mjs +2 -2
- package/esm2020/lib/directives/radio/radio-group.directive.mjs +5 -13
- package/esm2020/lib/drop-down/drop-down-item.base.mjs +1 -5
- package/esm2020/lib/grids/column-actions/column-actions.component.mjs +4 -4
- package/esm2020/lib/grids/columns/column-layout.component.mjs +3 -3
- package/esm2020/lib/grids/columns/column.component.mjs +5 -5
- package/esm2020/lib/grids/common/crud.service.mjs +2 -2
- package/esm2020/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +2 -2
- package/esm2020/lib/grids/filtering/grid-filtering.service.mjs +9 -9
- package/esm2020/lib/grids/grid/grid.component.mjs +4 -8
- package/esm2020/lib/grids/grid-base.directive.mjs +82 -69
- package/esm2020/lib/grids/grid-public-row.mjs +3 -12
- package/esm2020/lib/grids/grouping/group-by-area.directive.mjs +2 -2
- package/esm2020/lib/grids/headers/grid-header-row.component.mjs +3 -3
- package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +4 -8
- package/esm2020/lib/grids/state.directive.mjs +2 -2
- package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +4 -8
- package/esm2020/lib/services/overlay/utilities.mjs +1 -1
- package/esm2020/lib/simple-combo/public_api.mjs +2 -0
- package/esm2020/lib/simple-combo/simple-combo.component.mjs +375 -0
- package/esm2020/lib/toast/toast.component.mjs +3 -6
- package/esm2020/public_api.mjs +3 -1
- package/fesm2015/igniteui-angular.mjs +1723 -1405
- package/fesm2015/igniteui-angular.mjs.map +1 -1
- package/fesm2020/igniteui-angular.mjs +1714 -1402
- package/fesm2020/igniteui-angular.mjs.map +1 -1
- package/lib/banner/banner.component.d.ts +1 -2
- package/lib/combo/combo-dropdown.component.d.ts +3 -1
- package/lib/combo/combo-item.component.d.ts +3 -1
- package/lib/combo/combo.common.d.ts +733 -4
- package/lib/combo/combo.component.d.ts +41 -799
- package/lib/combo/combo.pipes.d.ts +1 -1
- package/lib/combo/public_api.d.ts +4 -0
- package/lib/core/utils.d.ts +4 -0
- package/lib/dialog/dialog.component.d.ts +11 -2
- package/lib/directives/focus-trap/focus-trap.directive.d.ts +41 -0
- package/lib/directives/radio/radio-group.directive.d.ts +4 -4
- package/lib/grids/columns/column.component.d.ts +1 -1
- package/lib/grids/grid/grid.component.d.ts +2 -1
- package/lib/grids/grid-base.directive.d.ts +64 -8
- package/lib/grids/grid-public-row.d.ts +2 -3
- package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
- package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -1
- package/lib/services/overlay/utilities.d.ts +2 -1
- package/lib/simple-combo/public_api.d.ts +1 -0
- package/lib/simple-combo/simple-combo.component.d.ts +134 -0
- package/lib/toast/toast.component.d.ts +2 -0
- package/migrations/common/filterSourceDirs.d.ts +2 -2
- package/migrations/common/filterSourceDirs.js +2 -2
- package/migrations/update-13_0_0/changes/members.json +26 -0
- package/migrations/update-13_0_0/index.js +0 -31
- package/package.json +51 -43
- package/public_api.d.ts +2 -0
- package/src/lib/combo/README.md +14 -14
- package/src/lib/directives/focus-trap/README.md +17 -0
- package/src/lib/simple-combo/README.md +317 -0
- package/esm2020/lib/core/deprecateDecorators.mjs +0 -99
- package/lib/core/deprecateDecorators.d.ts +0 -20
|
@@ -9,13 +9,15 @@ import { IgxToggleModule, IgxToggleDirective } from '../directives/toggle/toggle
|
|
|
9
9
|
import { GlobalPositionStrategy, NoOpScrollStrategy } from '../services/public_api';
|
|
10
10
|
import { fadeIn, fadeOut } from '../animations/fade/index';
|
|
11
11
|
import { IgxFocusModule } from '../directives/focus/focus.directive';
|
|
12
|
+
import { IgxFocusTrapModule } from '../directives/focus-trap/focus-trap.directive';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "../core/navigation";
|
|
14
15
|
import * as i2 from "../directives/toggle/toggle.directive";
|
|
15
|
-
import * as i3 from "
|
|
16
|
-
import * as i4 from "
|
|
17
|
-
import * as i5 from "../directives/
|
|
18
|
-
import * as i6 from "../directives/
|
|
16
|
+
import * as i3 from "../directives/focus-trap/focus-trap.directive";
|
|
17
|
+
import * as i4 from "@angular/common";
|
|
18
|
+
import * as i5 from "../directives/focus/focus.directive";
|
|
19
|
+
import * as i6 from "../directives/button/button.directive";
|
|
20
|
+
import * as i7 from "../directives/ripple/ripple.directive";
|
|
19
21
|
let DIALOG_ID = 0;
|
|
20
22
|
/**
|
|
21
23
|
* **Ignite UI for Angular Dialog Window** -
|
|
@@ -57,6 +59,14 @@ export class IgxDialogComponent {
|
|
|
57
59
|
* ```
|
|
58
60
|
*/
|
|
59
61
|
this.id = `igx-dialog-${DIALOG_ID++}`;
|
|
62
|
+
/**
|
|
63
|
+
* An @Input property to set whether the Tab key focus is trapped within the dialog when opened.
|
|
64
|
+
* Defaults to `true`.
|
|
65
|
+
* ```html
|
|
66
|
+
* <igx-dialog focusTrap="false""></igx-dialog>
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
this.focusTrap = true;
|
|
60
70
|
/**
|
|
61
71
|
* An @Input property controlling the `title` of the dialog.
|
|
62
72
|
* ```html
|
|
@@ -504,10 +514,10 @@ export class IgxDialogComponent {
|
|
|
504
514
|
IgxDialogComponent.NEXT_ID = 1;
|
|
505
515
|
IgxDialogComponent.DIALOG_CLASS = 'igx-dialog';
|
|
506
516
|
IgxDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogComponent, deps: [{ token: i0.ElementRef }, { token: i1.IgxNavigationService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
507
|
-
IgxDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxDialogComponent, selector: "igx-dialog", inputs: { id: "id", isModal: "isModal", closeOnEscape: "closeOnEscape", title: "title", message: "message", leftButtonLabel: "leftButtonLabel", leftButtonType: "leftButtonType", leftButtonColor: "leftButtonColor", leftButtonBackgroundColor: "leftButtonBackgroundColor", leftButtonRipple: "leftButtonRipple", rightButtonLabel: "rightButtonLabel", rightButtonType: "rightButtonType", rightButtonColor: "rightButtonColor", rightButtonBackgroundColor: "rightButtonBackgroundColor", rightButtonRipple: "rightButtonRipple", closeOnOutsideSelect: "closeOnOutsideSelect", positionSettings: "positionSettings", isOpen: "isOpen", role: "role", titleId: "titleId" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed", leftButtonSelect: "leftButtonSelect", rightButtonSelect: "rightButtonSelect", isOpenChange: "isOpenChange" }, host: { properties: { "attr.id": "this.id", "attr.tabindex": "this.tabindex", "class.igx-dialog--hidden": "this.isCollapsed" } }, viewQueries: [{ propertyName: "toggleRef", first: true, predicate: IgxToggleDirective, descendants: true, static: true }], ngImport: i0, template: "<div tabindex=\"0\" #dialog class=\"igx-dialog\" igxToggle (click)=\"onDialogSelected($event)\">\n <div #dialogWindow class=\"igx-dialog__window\" [attr.role]=\"role\" [attr.aria-labelledby]=\"titleId\">\n\n <div *ngIf=\"title\" [attr.id]=\"titleId\" class=\"igx-dialog__window-title\">\n {{ title }}\n </div>\n <ng-content *ngIf=\"!title\" select=\"igx-dialog-title,[igxDialogTitle]\"></ng-content>\n\n <div class=\"igx-dialog__window-content\">\n <span *ngIf=\"message\" class=\"igx-dialog__window-message\">{{ message }}</span>\n <ng-content *ngIf=\"!message\"></ng-content>\n </div>\n\n <div *ngIf=\"leftButtonLabel || rightButtonLabel\" class=\"igx-dialog__window-actions\">\n <button *ngIf=\"leftButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"leftButtonType\" igxButtonColor=\"{{ leftButtonColor }}\" igxButtonBackground=\"{{ leftButtonBackgroundColor }}\"\n igxRipple=\"{{ leftButtonRipple }}\" (click)=\"onInternalLeftButtonSelect($event)\">\n {{ leftButtonLabel }}\n </button>\n <button *ngIf=\"rightButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"rightButtonType\" igxButtonColor=\"{{ rightButtonColor }}\" igxButtonBackground=\"{{ rightButtonBackgroundColor }}\"\n igxRipple=\"{{ rightButtonRipple }}\" (click)=\"onInternalRightButtonSelect($event)\">\n {{ rightButtonLabel }}\n </button>\n </div>\n <ng-content *ngIf=\"!leftButtonLabel && !rightButtonLabel\" select=\"igx-dialog-actions,[igxDialogActions]\"></ng-content>\n\n </div>\n</div>\n", directives: [{ type: i2.IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type:
|
|
517
|
+
IgxDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxDialogComponent, selector: "igx-dialog", inputs: { id: "id", isModal: "isModal", closeOnEscape: "closeOnEscape", focusTrap: "focusTrap", title: "title", message: "message", leftButtonLabel: "leftButtonLabel", leftButtonType: "leftButtonType", leftButtonColor: "leftButtonColor", leftButtonBackgroundColor: "leftButtonBackgroundColor", leftButtonRipple: "leftButtonRipple", rightButtonLabel: "rightButtonLabel", rightButtonType: "rightButtonType", rightButtonColor: "rightButtonColor", rightButtonBackgroundColor: "rightButtonBackgroundColor", rightButtonRipple: "rightButtonRipple", closeOnOutsideSelect: "closeOnOutsideSelect", positionSettings: "positionSettings", isOpen: "isOpen", role: "role", titleId: "titleId" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed", leftButtonSelect: "leftButtonSelect", rightButtonSelect: "rightButtonSelect", isOpenChange: "isOpenChange" }, host: { properties: { "attr.id": "this.id", "attr.tabindex": "this.tabindex", "class.igx-dialog--hidden": "this.isCollapsed" } }, viewQueries: [{ propertyName: "toggleRef", first: true, predicate: IgxToggleDirective, descendants: true, static: true }], ngImport: i0, template: "<div tabindex=\"0\" #dialog class=\"igx-dialog\" igxToggle [igxFocusTrap]=\"focusTrap\" (click)=\"onDialogSelected($event)\">\n <div #dialogWindow class=\"igx-dialog__window\" [attr.role]=\"role\" [attr.aria-labelledby]=\"titleId\">\n\n <div *ngIf=\"title\" [attr.id]=\"titleId\" class=\"igx-dialog__window-title\">\n {{ title }}\n </div>\n <ng-content *ngIf=\"!title\" select=\"igx-dialog-title,[igxDialogTitle]\"></ng-content>\n\n <div class=\"igx-dialog__window-content\">\n <span *ngIf=\"message\" class=\"igx-dialog__window-message\">{{ message }}</span>\n <ng-content *ngIf=\"!message\"></ng-content>\n </div>\n\n <div *ngIf=\"leftButtonLabel || rightButtonLabel\" class=\"igx-dialog__window-actions\">\n <button *ngIf=\"leftButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"leftButtonType\" igxButtonColor=\"{{ leftButtonColor }}\" igxButtonBackground=\"{{ leftButtonBackgroundColor }}\"\n igxRipple=\"{{ leftButtonRipple }}\" (click)=\"onInternalLeftButtonSelect($event)\">\n {{ leftButtonLabel }}\n </button>\n <button *ngIf=\"rightButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"rightButtonType\" igxButtonColor=\"{{ rightButtonColor }}\" igxButtonBackground=\"{{ rightButtonBackgroundColor }}\"\n igxRipple=\"{{ rightButtonRipple }}\" (click)=\"onInternalRightButtonSelect($event)\">\n {{ rightButtonLabel }}\n </button>\n </div>\n <ng-content *ngIf=\"!leftButtonLabel && !rightButtonLabel\" select=\"igx-dialog-actions,[igxDialogActions]\"></ng-content>\n\n </div>\n</div>\n", directives: [{ type: i2.IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { type: i3.IgxFocusTrapDirective, selector: "[igxFocusTrap]", inputs: ["igxFocusTrap"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.IgxFocusDirective, selector: "[igxFocus]", inputs: ["igxFocus"], exportAs: ["igxFocus"] }, { type: i6.IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }, { type: i7.IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }] });
|
|
508
518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogComponent, decorators: [{
|
|
509
519
|
type: Component,
|
|
510
|
-
args: [{ selector: 'igx-dialog', template: "<div tabindex=\"0\" #dialog class=\"igx-dialog\" igxToggle (click)=\"onDialogSelected($event)\">\n <div #dialogWindow class=\"igx-dialog__window\" [attr.role]=\"role\" [attr.aria-labelledby]=\"titleId\">\n\n <div *ngIf=\"title\" [attr.id]=\"titleId\" class=\"igx-dialog__window-title\">\n {{ title }}\n </div>\n <ng-content *ngIf=\"!title\" select=\"igx-dialog-title,[igxDialogTitle]\"></ng-content>\n\n <div class=\"igx-dialog__window-content\">\n <span *ngIf=\"message\" class=\"igx-dialog__window-message\">{{ message }}</span>\n <ng-content *ngIf=\"!message\"></ng-content>\n </div>\n\n <div *ngIf=\"leftButtonLabel || rightButtonLabel\" class=\"igx-dialog__window-actions\">\n <button *ngIf=\"leftButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"leftButtonType\" igxButtonColor=\"{{ leftButtonColor }}\" igxButtonBackground=\"{{ leftButtonBackgroundColor }}\"\n igxRipple=\"{{ leftButtonRipple }}\" (click)=\"onInternalLeftButtonSelect($event)\">\n {{ leftButtonLabel }}\n </button>\n <button *ngIf=\"rightButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"rightButtonType\" igxButtonColor=\"{{ rightButtonColor }}\" igxButtonBackground=\"{{ rightButtonBackgroundColor }}\"\n igxRipple=\"{{ rightButtonRipple }}\" (click)=\"onInternalRightButtonSelect($event)\">\n {{ rightButtonLabel }}\n </button>\n </div>\n <ng-content *ngIf=\"!leftButtonLabel && !rightButtonLabel\" select=\"igx-dialog-actions,[igxDialogActions]\"></ng-content>\n\n </div>\n</div>\n" }]
|
|
520
|
+
args: [{ selector: 'igx-dialog', template: "<div tabindex=\"0\" #dialog class=\"igx-dialog\" igxToggle [igxFocusTrap]=\"focusTrap\" (click)=\"onDialogSelected($event)\">\n <div #dialogWindow class=\"igx-dialog__window\" [attr.role]=\"role\" [attr.aria-labelledby]=\"titleId\">\n\n <div *ngIf=\"title\" [attr.id]=\"titleId\" class=\"igx-dialog__window-title\">\n {{ title }}\n </div>\n <ng-content *ngIf=\"!title\" select=\"igx-dialog-title,[igxDialogTitle]\"></ng-content>\n\n <div class=\"igx-dialog__window-content\">\n <span *ngIf=\"message\" class=\"igx-dialog__window-message\">{{ message }}</span>\n <ng-content *ngIf=\"!message\"></ng-content>\n </div>\n\n <div *ngIf=\"leftButtonLabel || rightButtonLabel\" class=\"igx-dialog__window-actions\">\n <button *ngIf=\"leftButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"leftButtonType\" igxButtonColor=\"{{ leftButtonColor }}\" igxButtonBackground=\"{{ leftButtonBackgroundColor }}\"\n igxRipple=\"{{ leftButtonRipple }}\" (click)=\"onInternalLeftButtonSelect($event)\">\n {{ leftButtonLabel }}\n </button>\n <button *ngIf=\"rightButtonLabel\" type=\"button\" [igxFocus]=\"isOpen\" [igxButton]=\"rightButtonType\" igxButtonColor=\"{{ rightButtonColor }}\" igxButtonBackground=\"{{ rightButtonBackgroundColor }}\"\n igxRipple=\"{{ rightButtonRipple }}\" (click)=\"onInternalRightButtonSelect($event)\">\n {{ rightButtonLabel }}\n </button>\n </div>\n <ng-content *ngIf=\"!leftButtonLabel && !rightButtonLabel\" select=\"igx-dialog-actions,[igxDialogActions]\"></ng-content>\n\n </div>\n</div>\n" }]
|
|
511
521
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.IgxNavigationService, decorators: [{
|
|
512
522
|
type: Optional
|
|
513
523
|
}] }]; }, propDecorators: { toggleRef: [{
|
|
@@ -522,6 +532,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
|
|
|
522
532
|
type: Input
|
|
523
533
|
}], closeOnEscape: [{
|
|
524
534
|
type: Input
|
|
535
|
+
}], focusTrap: [{
|
|
536
|
+
type: Input
|
|
525
537
|
}], title: [{
|
|
526
538
|
type: Input
|
|
527
539
|
}], message: [{
|
|
@@ -583,15 +595,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
|
|
|
583
595
|
export class IgxDialogModule {
|
|
584
596
|
}
|
|
585
597
|
IgxDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
586
|
-
IgxDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogModule, declarations: [IgxDialogComponent, IgxDialogTitleDirective, IgxDialogActionsDirective], imports: [CommonModule, IgxToggleModule, IgxButtonModule, IgxRippleModule, IgxFocusModule], exports: [IgxDialogComponent, IgxDialogTitleDirective, IgxDialogActionsDirective] });
|
|
587
|
-
IgxDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogModule, imports: [[CommonModule, IgxToggleModule, IgxButtonModule, IgxRippleModule, IgxFocusModule]] });
|
|
598
|
+
IgxDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogModule, declarations: [IgxDialogComponent, IgxDialogTitleDirective, IgxDialogActionsDirective], imports: [CommonModule, IgxToggleModule, IgxButtonModule, IgxRippleModule, IgxFocusModule, IgxFocusTrapModule], exports: [IgxDialogComponent, IgxDialogTitleDirective, IgxDialogActionsDirective] });
|
|
599
|
+
IgxDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogModule, imports: [[CommonModule, IgxToggleModule, IgxButtonModule, IgxRippleModule, IgxFocusModule, IgxFocusTrapModule]] });
|
|
588
600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxDialogModule, decorators: [{
|
|
589
601
|
type: NgModule,
|
|
590
602
|
args: [{
|
|
591
603
|
declarations: [IgxDialogComponent, IgxDialogTitleDirective, IgxDialogActionsDirective],
|
|
592
604
|
exports: [IgxDialogComponent, IgxDialogTitleDirective, IgxDialogActionsDirective],
|
|
593
|
-
imports: [CommonModule, IgxToggleModule, IgxButtonModule, IgxRippleModule, IgxFocusModule]
|
|
605
|
+
imports: [CommonModule, IgxToggleModule, IgxButtonModule, IgxRippleModule, IgxFocusModule, IgxFocusTrapModule]
|
|
594
606
|
}]
|
|
595
607
|
}] });
|
|
596
608
|
export * from './dialog.directives';
|
|
597
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUdSLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sdUNBQXVDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQW1CLHNCQUFzQixFQUFFLGtCQUFrQixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQUdyRSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDbEI7Ozs7Ozs7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eUJBQXlCOzZHQUd2RSxlQUFlLFlBRmYsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDOzJGQUVqRixlQUFlO2tCQUwzQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixDQUFDO29CQUN0RixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsQ0FBQztvQkFDakYsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQztpQkFDN0Y7O0FBR0QsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneE5hdmlnYXRpb25TZXJ2aWNlLCBJVG9nZ2xlVmlldyB9IGZyb20gJy4uL2NvcmUvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBJZ3hCdXR0b25Nb2R1bGUsIElneEJ1dHRvblR5cGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFJpcHBsZU1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4RGlhbG9nQWN0aW9uc0RpcmVjdGl2ZSwgSWd4RGlhbG9nVGl0bGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpYWxvZy5kaXJlY3RpdmVzJztcbmltcG9ydCB7IElneFRvZ2dsZU1vZHVsZSwgSWd4VG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MsIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksIE5vT3BTY3JvbGxTdHJhdGVneSwgUG9zaXRpb25TZXR0aW5ncyB9IGZyb20gJy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHtmYWRlSW4sIGZhZGVPdXR9IGZyb20gJy4uL2FuaW1hdGlvbnMvZmFkZS9pbmRleCc7XG5pbXBvcnQgeyBJZ3hGb2N1c01vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9jdXMvZm9jdXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbmxldCBESUFMT0dfSUQgPSAwO1xuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBEaWFsb2cgV2luZG93KiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2RpYWxvZy5odG1sKVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgRGlhbG9nIFdpbmRvdyBwcmVzZW50cyBhIGRpYWxvZyB3aW5kb3cgdG8gdGhlIHVzZXIgd2hpY2ggY2FuIHNpbXBseSBkaXNwbGF5IG1lc3NhZ2VzIG9yIGRpc3BsYXlcbiAqIG1vcmUgY29tcGxpY2F0ZWQgdmlzdWFscyBzdWNoIGFzIGEgdXNlciBzaWduLWluIGZvcm0uICBJdCBhbHNvIHByb3ZpZGVzIGEgcmlnaHQgYW5kIGxlZnQgYnV0dG9uXG4gKiB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY3VzdG9tIGFjdGlvbnMuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImZvcm0ub3BlbigpXCI+U2hvdyBEaWFsb2c8L2J1dHRvbj5cbiAqIDxpZ3gtZGlhbG9nICNmb3JtIHRpdGxlPVwiU2lnbiBJblwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiPlxuICogICA8ZGl2PlxuICogICAgIDxpZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZ3hJbnB1dC8+XG4gKiAgICAgICA8bGFiZWwgaWd4TGFiZWw+VXNlcm5hbWU8L2xhYmVsPlxuICogICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICogICA8L2Rpdj5cbiAqICAgPGRpdj5cbiAqICAgICA8aWd4LWlucHV0LWdyb3VwPlxuICogICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGlneElucHV0Lz5cbiAqICAgICAgIDxsYWJlbCBpZ3hMYWJlbD5QYXNzd29yZDwvbGFiZWw+XG4gKiAgICAgPC9pZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgIDwvZGl2PlxuICogPC9pZ3gtZGlhbG9nPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICdkaWFsb2ctY29udGVudC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgSVRvZ2dsZVZpZXcsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBwcml2YXRlIHN0YXRpYyBORVhUX0lEID0gMTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBESUFMT0dfQ0xBU1MgPSAnaWd4LWRpYWxvZyc7XG5cblxuXG4gICAgQFZpZXdDaGlsZChJZ3hUb2dnbGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHRvZ2dsZVJlZjogSWd4VG9nZ2xlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgdmFsdWUgb2YgdGhlIGBpZGAgYXR0cmlidXRlLiBJZiBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgW2lkXT1cIidpZ3gtZGlhbG9nLTU2J1wiICNhbGVydCB0aXRsZT1cIk5vdGlmaWNhdGlvblwiXG4gICAgICogIGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1kaWFsb2ctJHtESUFMT0dfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgZGlhbG9nIHNob3VsZCBiZSBzaG93biBhcyBtb2RhbC4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIFtpc01vZGFsXT1cImZhbHNlXCIgPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgaXNNb2RhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9kYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBpc01vZGFsKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLm1vZGFsID0gdmFsO1xuICAgICAgICB0aGlzLl9pc01vZGFsID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgY2xvc2Ugd2hlbiBgRXNjYCBrZXkgaXMgcHJlc3NlZC4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIFtjbG9zZU9uRXNjYXBlXT1cImZhbHNlXCIgPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY2xvc2VPbkVzY2FwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25Fc2NhcGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBjbG9zZU9uRXNjYXBlKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLmNsb3NlT25Fc2NhcGUgPSB2YWw7XG4gICAgICAgIHRoaXMuX2Nsb3NlT25Fc2NhcGUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IGNvbnRyb2xsaW5nIHRoZSBgdGl0bGVgIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHRpdGxlPVwiTm90aWZpY2F0aW9uXCIgI2FsZXJ0IGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0aXRsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogIEFuIEBJbnB1dCBwcm9wZXJ0eSBjb250cm9sbGluZyB0aGUgYG1lc3NhZ2VgIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIG1lc3NhZ2U9XCJZb3VyIGVtYWlsIHdhcyBzZW50IVwiICNhbGVydCBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgYGxhYmVsYCBvZiB0aGUgbGVmdCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25MYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYHJhaXNlZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgcmFpc2VkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvblR5cGU9XCJyYWlzZWRcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gY29sb3IuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uQ29sb3I9XCJ5ZWxsb3dcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkNvbG9yID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSBsZWZ0IGJ1dHRvbiBgYmFja2dyb3VuZC1jb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uQmFja2dyb3VuZENvbG9yPVwiYmxhY2tcIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvbkJhY2tncm91bmRDb2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYHJpcHBsZWAuIFRoZSBgcmlwcGxlYCBhbmltYXRlcyBhIGNsaWNrL3RhcCB0byBhIGNvbXBvbmVudCBhcyBhIHNlcmllcyBvZiBmYWRpbmcgd2F2ZXMuXG4gICAgICogVGhlIHByb3BlcnR5IGFjY2VwdHMgYWxsIHZhbGlkIENTUyBjb2xvciBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGxlZnRCdXR0b25SaXBwbGU9XCJncmVlblwiIGxlZnRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uUmlwcGxlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSBgbGFiZWxgIG9mIHRoZSByaWdodCBidXR0b24gb2YgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIiAgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkxhYmVsID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYHR5cGVgLiBUaGUgdHlwZXMgYXJlIGBmbGF0YCwgYHJhaXNlZGAgYW5kIGBmYWJgLlxuICAgICAqIFRoZSBgZmxhdGAgdHlwZSBidXR0b24gaXMgYSByZWN0YW5nbGUgYW5kIGRvZXNuJ3QgaGF2ZSBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBgcmFpc2VkYCB0eXBlIGJ1dHRvbiBpcyBhbHNvIGEgcmVjdGFuZ2xlIGJ1dCBoYXMgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYGZhYmAgdHlwZSBidXR0b24gaXMgYSBjaXJjbGUgd2l0aCBhIHNoYWRvdy4gPGJyPlxuICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBmbGF0YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25UeXBlPVwiZmFiXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblR5cGU6IElneEJ1dHRvblR5cGUgPSAnZmxhdCc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYGNvbG9yYC4gVGhlIHByb3BlcnR5IGFjY2VwdHMgYWxsIHZhbGlkIENTUyBjb2xvciBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uQ29sb3I9XCJ5ZWxsb3dcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uQ29sb3IgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIHJpZ2h0IGJ1dHRvbiBgYmFja2dyb3VuZC1jb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvcj1cImJsYWNrXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkJhY2tncm91bmRDb2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgcmlnaHQgYnV0dG9uIGByaXBwbGVgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvblJpcHBsZT1cImdyZWVuXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblJpcHBsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgYWxsb3dzIHlvdSB0byBlbmFibGUgdGhlIFwiY2xvc2Ugb24gY2xpY2sgb3V0c2lkZSB0aGUgZGlhbG9nXCIuIEJ5IGRlZmF1bHQgaXQncyBkaXNhYmxlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgY2xvc2VPbk91dHNpZGVTZWxlY3Q9XCJ0cnVlXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIlxuICAgICAqIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIChyaWdodEJ1dHRvblNlbGVjdCk9XCJvbkRpYWxvZ09LU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY2xvc2VPbk91dHNpZGVTZWxlY3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZU9uT3V0c2lkZVNlbGVjdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGNsb3NlT25PdXRzaWRlU2VsZWN0KHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSB2YWw7XG4gICAgICAgIHRoaXMuX2Nsb3NlT25PdXRzaWRlU2VsZWN0ID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcG9zaXRpb24gYW5kIGFuaW1hdGlvbiBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBkaWFsb2cuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbGV0IGN1cnJlbnRQb3NpdGlvbjogUG9zaXRpb25TZXR0aW5ncyA9IHRoaXMuYWxlcnQucG9zaXRpb25TZXR0aW5nc1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBwb3NpdGlvblNldHRpbmdzKCk6IFBvc2l0aW9uU2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25TZXR0aW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gc2V0dGluZ3MgdXNlZCBieSB0aGUgZGlhbG9nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBpbXBvcnQgeyBzbGlkZUluTGVmdCwgc2xpZGVPdXRSaWdodCB9IGZyb20gJ2lnbml0ZXVpLWFuZ3VsYXInO1xuICAgICAqIC4uLlxuICAgICAqIEBWaWV3Q2hpbGQoJ2FsZXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGFsZXJ0OiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogIHB1YmxpYyBuZXdQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKHNsaWRlSW5Ub3AsIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMjAwMG1zJyB9IH0pLFxuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihzbGlkZU91dEJvdHRvbSwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcyMDAwbXMnfSB9KSxcbiAgICAgKiAgICAgIGhvcml6b250YWxEaXJlY3Rpb246IEhvcml6b250YWxBbGlnbm1lbnQuTGVmdCxcbiAgICAgKiAgICAgIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBob3Jpem9udGFsU3RhcnRQb2ludDogSG9yaXpvbnRhbEFsaWdubWVudC5MZWZ0LFxuICAgICAqICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5NaWRkbGUsXG4gICAgICogICAgICBtaW5TaXplOiB7IGhlaWdodDogMTAwLCB3aWR0aDogMTAwIH1cbiAgICAgKiAgfTtcbiAgICAgKiB0aGlzLmFsZXJ0LnBvc2l0aW9uU2V0dGluZ3MgPSB0aGlzLm5ld1Bvc2l0aW9uU2V0dGluZ3M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBwb3NpdGlvblNldHRpbmdzKHNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5wb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgYHRhYmluZGV4YCBhdHRyaWJ1dGUgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGJlZm9yZSB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9wZW5pbmcpPVwib25EaWFsb2dPcGVuSGFuZGxlcigkZXZlbnQpXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIG9wZW5lZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKG9uT3BlbmVkKT1cIm9uRGlhbG9nT3BlbmVkSGFuZGxlcigkZXZlbnQpXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBiZWZvcmUgdGhlIGRpYWxvZyBpcyBjbG9zZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIChjbG9zaW5nKT1cIm9uRGlhbG9nQ2xvc2VIYW5kbGVyKCRldmVudClcIiB0aXRsZT1cIkNvbmZpcm1hdGlvblwiIGxlZnRCdXR0b25MYWJlbD1cIkNhbmNlbFwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0NhbmNlbGxhYmxlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAoY2xvc2VkKT1cIm9uRGlhbG9nQ2xvc2VkSGFuZGxlcigkZXZlbnQpXCIgdGl0bGU9XCJDb25maXJtYXRpb25cIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSBsZWZ0IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAobGVmdEJ1dHRvblNlbGVjdCk9XCJvbkRpYWxvZ09LU2VsZWN0ZWQoJGV2ZW50KVwiICNkaWFsb2cgbGVmdEJ1dHRvbkxhYmVsPVwiT0tcIiByaWdodEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxJRGlhbG9nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogQW4gZXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gdGhlIHJpZ2h0IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAocmlnaHRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIlxuICAgICAqICNkaWFsb2cgdGl0bGU9XCJDb25maXJtYXRpb25cIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJkaWFsb2cuY2xvc2UoKVwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS1wiXG4gICAgICogcmlnaHRCdXR0b25SaXBwbGU9XCIjNENBRjUwXCIgY2xvc2VPbk91dHNpZGVTZWxlY3Q9XCJ0cnVlXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBzdGF0ZS4gUG9zc2libGUgc3RhdGUgdmFsdWVzIGFyZSBcIm9wZW5cIiBvciBcImNsb3NlXCIuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeURpYWxvZ1wiKVxuICAgICAqIHB1YmxpYyBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgIGxldCBkaWFsb2dTdGF0ZSA9IHRoaXMuZGlhbG9nLnN0YXRlO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0YXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhdGUgb2YgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgZGlhbG9nSXNPcGVuID0gdGhpcy5kaWFsb2cuaXNPcGVuO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWRpYWxvZyBbaXNPcGVuXT0nZmFsc2UnPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1kaWFsb2cgWyhpc09wZW4pXT0nbW9kZWwuaXNPcGVuJz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnRvZ2dsZVJlZi5jb2xsYXBzZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRpYWxvZy0taGlkZGVuJylcbiAgICBwdWJsaWMgZ2V0IGlzQ29sbGFwc2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSByb2xlIG9mIHRoZSBkaWFsb2cuIFRoZSB2YWxpZCB2YWx1ZXMgYXJlIGBkaWFsb2dgLCBgYWxlcnRkaWFsb2dgLCBgYWxlcnRgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nUm9sZSA9IHRoaXMuZGlhbG9nLnJvbGU7XG4gICAgICogfVxuICAgICAqICBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgcm9sZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGVmdEJ1dHRvbkxhYmVsICE9PSAnJyAmJiB0aGlzLnJpZ2h0QnV0dG9uTGFiZWwgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RpYWxvZyc7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLmxlZnRCdXR0b25MYWJlbCAhPT0gJycgfHxcbiAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25MYWJlbCAhPT0gJydcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FsZXJ0ZGlhbG9nJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnYWxlcnQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHRpdGxlIGlkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgQFZpZXdDaGlsZChcIk15RGlhbG9nXCIpXG4gICAgICogcHVibGljIGRpYWxvZzogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICAgbGV0IGRpYWxvZ1RpdGxlID0gdGhpcy5kaWFsb2cudGl0bGVJZDtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRpdGxlSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZUlkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIF9wb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAgICBvcGVuQW5pbWF0aW9uOiBmYWRlSW4sXG4gICAgICAgIGNsb3NlQW5pbWF0aW9uOiBmYWRlT3V0XG4gICAgfTtcblxuICAgIHByaXZhdGUgX292ZXJsYXlEZWZhdWx0U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncztcbiAgICBwcml2YXRlIF9jbG9zZU9uT3V0c2lkZVNlbGVjdCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Nsb3NlT25Fc2NhcGUgPSB0cnVlO1xuICAgIHByaXZhdGUgX2lzTW9kYWwgPSB0cnVlO1xuICAgIHByaXZhdGUgX3RpdGxlSWQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbmF2U2VydmljZTogSWd4TmF2aWdhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fdGl0bGVJZCA9IElneERpYWxvZ0NvbXBvbmVudC5ORVhUX0lEKysgKyAnX3RpdGxlJztcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdFNldHRpbmdzID0ge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb25TZXR0aW5ncyksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IE5vT3BTY3JvbGxTdHJhdGVneSgpLFxuICAgICAgICAgICAgbW9kYWw6IHRoaXMuaXNNb2RhbCxcbiAgICAgICAgICAgIGNsb3NlT25Fc2NhcGU6IHRoaXMuX2Nsb3NlT25Fc2NhcGUsXG4gICAgICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0aGlzLmNsb3NlT25PdXRzaWRlU2VsZWN0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2luZy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdENsb3NlRnJvbURpYWxvZyhldmVudEFyZ3MpKTtcbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50QXJncykgPT4gdGhpcy5lbWl0Q2xvc2VkRnJvbURpYWxvZyhldmVudEFyZ3MpKTtcbiAgICAgICAgdGhpcy50b2dnbGVSZWYub3BlbmVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50QXJncykgPT4gdGhpcy5lbWl0T3BlbmVkRnJvbURpYWxvZyhldmVudEFyZ3MpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IG9wZW5zIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLm9wZW4oKSBpZ3hCdXR0b249XCJyYWlzZWRcIiBpZ3hCdXR0b25Db2xvcj1cIndoaXRlXCIgaWd4UmlwcGxlPVwid2hpdGVcIj5UcmlnZ2VyIERpYWxvZzwvYnV0dG9uPlxuICAgICAqIDxpZ3gtZGlhbG9nICNkaWFsb2c+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuKG92ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0gdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncykge1xuICAgICAgICBjb25zdCBldmVudEFyZ3M6IElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncyA9IHsgZGlhbG9nOiB0aGlzLCBldmVudDogbnVsbCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLm9wZW5pbmcuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICBpZiAoIWV2ZW50QXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW4ob3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMubGVmdEJ1dHRvbkxhYmVsICYmICF0aGlzLnJpZ2h0QnV0dG9uTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5lbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgdGhhdCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqICBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLmNsb3NlKCkgaWd4QnV0dG9uPVwicmFpc2VkXCIgaWd4QnV0dG9uQ29sb3I9XCJ3aGl0ZVwiIGlneFJpcHBsZT1cIndoaXRlXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgICAgIC8vIGBjbG9zaW5nYCB3aWxsIGVtaXQgZnJvbSBgdG9nZ2xlUmVmLmNsb3NpbmdgIHN1YnNjcmlwdGlvblxuICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zZSgpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucy9jbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiB7QGxpbmsgSWd4RGlhbG9nQ29tcG9uZW50fVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIChjbGljayk9XCJkaWFsb2cudG9nZ2xlKCkgaWd4QnV0dG9uPVwicmFpc2VkXCIgaWd4QnV0dG9uQ29sb3I9XCJ3aGl0ZVwiIGlneFJpcHBsZT1cIndoaXRlXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRpYWxvZ1NlbGVjdGVkKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiAmJlxuICAgICAgICAgICAgdGhpcy5jbG9zZU9uT3V0c2lkZVNlbGVjdCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhJZ3hEaWFsb2dDb21wb25lbnQuRElBTE9HX0NMQVNTKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25JbnRlcm5hbExlZnRCdXR0b25TZWxlY3QoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5sZWZ0QnV0dG9uU2VsZWN0LmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25JbnRlcm5hbFJpZ2h0QnV0dG9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmlnaHRCdXR0b25TZWxlY3QuZW1pdCh7IGRpYWxvZzogdGhpcywgZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubmF2U2VydmljZSAmJiB0aGlzLmlkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdlNlcnZpY2UuYWRkKHRoaXMuaWQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdlNlcnZpY2UgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5uYXZTZXJ2aWNlLnJlbW92ZSh0aGlzLmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdENsb3NlRnJvbURpYWxvZyhldmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgZGlhbG9nRXZlbnRzQXJncyA9IHsgZGlhbG9nOiB0aGlzLCBldmVudDogZXZlbnRBcmdzLmV2ZW50LCBjYW5jZWw6IGV2ZW50QXJncy5jYW5jZWwgfTtcbiAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoZGlhbG9nRXZlbnRzQXJncyk7XG4gICAgICAgIGV2ZW50QXJncy5jYW5jZWwgPSBkaWFsb2dFdmVudHNBcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKCFldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdENsb3NlZEZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50OiBldmVudEFyZ3MuZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0T3BlbmVkRnJvbURpYWxvZyhldmVudEFyZ3MpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCh7IGRpYWxvZzogdGhpcywgZXZlbnQ6IGV2ZW50QXJncy5ldmVudCB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpYWxvZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICBldmVudDogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpYWxvZ0NhbmNlbGxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgSURpYWxvZ0V2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7IH1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbSWd4RGlhbG9nQ29tcG9uZW50LCBJZ3hEaWFsb2dUaXRsZURpcmVjdGl2ZSwgSWd4RGlhbG9nQWN0aW9uc0RpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lneERpYWxvZ0NvbXBvbmVudCwgSWd4RGlhbG9nVGl0bGVEaXJlY3RpdmUsIElneERpYWxvZ0FjdGlvbnNEaXJlY3RpdmVdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElneFRvZ2dsZU1vZHVsZSwgSWd4QnV0dG9uTW9kdWxlLCBJZ3hSaXBwbGVNb2R1bGUsIElneEZvY3VzTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEaWFsb2dNb2R1bGUgeyB9XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nLmRpcmVjdGl2ZXMnO1xuIiwiPGRpdiB0YWJpbmRleD1cIjBcIiAjZGlhbG9nIGNsYXNzPVwiaWd4LWRpYWxvZ1wiIGlneFRvZ2dsZSAoY2xpY2spPVwib25EaWFsb2dTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgPGRpdiAjZGlhbG9nV2luZG93IGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93XCIgIFthdHRyLnJvbGVdPVwicm9sZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0aXRsZUlkXCI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRpdGxlXCIgW2F0dHIuaWRdPVwidGl0bGVJZFwiIGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LXRpdGxlXCI+XG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhdGl0bGVcIiBzZWxlY3Q9XCJpZ3gtZGlhbG9nLXRpdGxlLFtpZ3hEaWFsb2dUaXRsZV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lc3NhZ2VcIiBjbGFzcz1cImlneC1kaWFsb2dfX3dpbmRvdy1tZXNzYWdlXCI+e3sgbWVzc2FnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIW1lc3NhZ2VcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJsZWZ0QnV0dG9uTGFiZWwgfHwgcmlnaHRCdXR0b25MYWJlbFwiIGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJsZWZ0QnV0dG9uTGFiZWxcIiB0eXBlPVwiYnV0dG9uXCIgW2lneEZvY3VzXT1cImlzT3BlblwiIFtpZ3hCdXR0b25dPVwibGVmdEJ1dHRvblR5cGVcIiBpZ3hCdXR0b25Db2xvcj1cInt7IGxlZnRCdXR0b25Db2xvciB9fVwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJ7eyBsZWZ0QnV0dG9uQmFja2dyb3VuZENvbG9yIH19XCJcbiAgICAgICAgICAgICAgICBpZ3hSaXBwbGU9XCJ7eyBsZWZ0QnV0dG9uUmlwcGxlIH19XCIgKGNsaWNrKT1cIm9uSW50ZXJuYWxMZWZ0QnV0dG9uU2VsZWN0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICB7eyBsZWZ0QnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJpZ2h0QnV0dG9uTGFiZWxcIiB0eXBlPVwiYnV0dG9uXCIgW2lneEZvY3VzXT1cImlzT3BlblwiIFtpZ3hCdXR0b25dPVwicmlnaHRCdXR0b25UeXBlXCIgaWd4QnV0dG9uQ29sb3I9XCJ7eyByaWdodEJ1dHRvbkNvbG9yIH19XCIgaWd4QnV0dG9uQmFja2dyb3VuZD1cInt7IHJpZ2h0QnV0dG9uQmFja2dyb3VuZENvbG9yIH19XCJcbiAgICAgICAgICAgICAgICBpZ3hSaXBwbGU9XCJ7eyByaWdodEJ1dHRvblJpcHBsZSB9fVwiIChjbGljayk9XCJvbkludGVybmFsUmlnaHRCdXR0b25TZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7IHJpZ2h0QnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhbGVmdEJ1dHRvbkxhYmVsICYmICFyaWdodEJ1dHRvbkxhYmVsXCIgc2VsZWN0PVwiaWd4LWRpYWxvZy1hY3Rpb25zLFtpZ3hEaWFsb2dBY3Rpb25zXVwiPjwvbmctY29udGVudD5cblxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
609
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUdSLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sdUNBQXVDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQW1CLHNCQUFzQixFQUFFLGtCQUFrQixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZILE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7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MGpCUSx1QkFBdUIsRUFBRSx5QkFBeUIsYUFFM0UsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsYUE1akJwRyxrQkFBa0IsRUEyakJHLHVCQUF1QixFQUFFLHlCQUF5Qjs2R0FHdkUsZUFBZSxZQUZmLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQzsyRkFFckcsZUFBZTtrQkFMM0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsQ0FBQztvQkFDdEYsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLENBQUM7b0JBQ2pGLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLENBQUM7aUJBQ2pIOztBQUdELGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEFmdGVyQ29udGVudEluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgSVRvZ2dsZVZpZXcgfSBmcm9tICcuLi9jb3JlL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgSWd4QnV0dG9uTW9kdWxlLCBJZ3hCdXR0b25UeXBlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneERpYWxvZ0FjdGlvbnNEaXJlY3RpdmUsIElneERpYWxvZ1RpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaWFsb2cuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVNb2R1bGUsIElneFRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzLCBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5LCBOb09wU2Nyb2xsU3RyYXRlZ3ksIFBvc2l0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi9zZXJ2aWNlcy9wdWJsaWNfYXBpJztcbmltcG9ydCB7ZmFkZUluLCBmYWRlT3V0fSBmcm9tICcuLi9hbmltYXRpb25zL2ZhZGUvaW5kZXgnO1xuaW1wb3J0IHsgSWd4Rm9jdXNNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZvY3VzL2ZvY3VzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hGb2N1c1RyYXBNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZvY3VzLXRyYXAvZm9jdXMtdHJhcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcblxubGV0IERJQUxPR19JRCA9IDA7XG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIERpYWxvZyBXaW5kb3cqKiAtXG4gKiBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly93d3cuaW5mcmFnaXN0aWNzLmNvbS9wcm9kdWN0cy9pZ25pdGUtdWktYW5ndWxhci9hbmd1bGFyL2NvbXBvbmVudHMvZGlhbG9nLmh0bWwpXG4gKlxuICogVGhlIElnbml0ZSBVSSBEaWFsb2cgV2luZG93IHByZXNlbnRzIGEgZGlhbG9nIHdpbmRvdyB0byB0aGUgdXNlciB3aGljaCBjYW4gc2ltcGx5IGRpc3BsYXkgbWVzc2FnZXMgb3IgZGlzcGxheVxuICogbW9yZSBjb21wbGljYXRlZCB2aXN1YWxzIHN1Y2ggYXMgYSB1c2VyIHNpZ24taW4gZm9ybS4gIEl0IGFsc28gcHJvdmlkZXMgYSByaWdodCBhbmQgbGVmdCBidXR0b25cbiAqIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBjdXN0b20gYWN0aW9ucy5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiAoY2xpY2spPVwiZm9ybS5vcGVuKClcIj5TaG93IERpYWxvZzwvYnV0dG9uPlxuICogPGlneC1kaWFsb2cgI2Zvcm0gdGl0bGU9XCJTaWduIEluXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gKiAgIDxkaXY+XG4gKiAgICAgPGlneC1pbnB1dC1ncm91cD5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlneElucHV0Lz5cbiAqICAgICAgIDxsYWJlbCBpZ3hMYWJlbD5Vc2VybmFtZTwvbGFiZWw+XG4gKiAgICAgPC9pZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgIDwvZGl2PlxuICogICA8ZGl2PlxuICogICAgIDxpZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgaWd4SW5wdXQvPlxuICogICAgICAgPGxhYmVsIGlneExhYmVsPlBhc3N3b3JkPC9sYWJlbD5cbiAqICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAqICAgPC9kaXY+XG4gKiA8L2lneC1kaWFsb2c+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RpYWxvZy1jb250ZW50LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBJVG9nZ2xlVmlldywgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHByaXZhdGUgc3RhdGljIE5FWFRfSUQgPSAxO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERJQUxPR19DTEFTUyA9ICdpZ3gtZGlhbG9nJztcblxuXG5cbiAgICBAVmlld0NoaWxkKElneFRvZ2dsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgdG9nZ2xlUmVmOiBJZ3hUb2dnbGVEaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUuIElmIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBbaWRdPVwiJ2lneC1kaWFsb2ctNTYnXCIgI2FsZXJ0IHRpdGxlPVwiTm90aWZpY2F0aW9uXCJcbiAgICAgKiAgbGVmdEJ1dHRvbkxhYmVsPVwiT0tcIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LWRpYWxvZy0ke0RJQUxPR19JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBkaWFsb2cgc2hvdWxkIGJlIHNob3duIGFzIG1vZGFsLiBEZWZhdWx0cyB0byBgdHJ1ZWBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgW2lzTW9kYWxdPVwiZmFsc2VcIiA+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc01vZGFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNb2RhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGlzTW9kYWwodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MubW9kYWwgPSB2YWw7XG4gICAgICAgIHRoaXMuX2lzTW9kYWwgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgd2hldGhlciB0aGUgZGlhbG9nIHNob3VsZCBjbG9zZSB3aGVuIGBFc2NgIGtleSBpcyBwcmVzc2VkLiBEZWZhdWx0cyB0byBgdHJ1ZWBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgW2Nsb3NlT25Fc2NhcGVdPVwiZmFsc2VcIiA+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBjbG9zZU9uRXNjYXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xvc2VPbkVzY2FwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGNsb3NlT25Fc2NhcGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MuY2xvc2VPbkVzY2FwZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2xvc2VPbkVzY2FwZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHdoZXRoZXIgdGhlIFRhYiBrZXkgZm9jdXMgaXMgdHJhcHBlZCB3aXRoaW4gdGhlIGRpYWxvZyB3aGVuIG9wZW5lZC5cbiAgICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGZvY3VzVHJhcD1cImZhbHNlXCJcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9jdXNUcmFwID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSBjb250cm9sbGluZyB0aGUgYHRpdGxlYCBvZiB0aGUgZGlhbG9nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyB0aXRsZT1cIk5vdGlmaWNhdGlvblwiICNhbGVydCBsZWZ0QnV0dG9uTGFiZWw9XCJPS1wiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGl0bGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqICBBbiBASW5wdXQgcHJvcGVydHkgY29udHJvbGxpbmcgdGhlIGBtZXNzYWdlYCBvZiB0aGUgZGlhbG9nLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBtZXNzYWdlPVwiWW91ciBlbWFpbCB3YXMgc2VudCFcIiAjYWxlcnQgbGVmdEJ1dHRvbkxhYmVsPVwiT0tcIiAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1lc3NhZ2UgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIGBsYWJlbGAgb2YgdGhlIGxlZnQgYnV0dG9uIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGxlZnRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgdGl0bGU9XCJOb3RpZmljYXRpb25cIiAgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uTGFiZWwgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIGxlZnQgYnV0dG9uIGB0eXBlYC4gVGhlIHR5cGVzIGFyZSBgZmxhdGAsIGByYWlzZWRgIGFuZCBgZmFiYC5cbiAgICAgKiBUaGUgYGZsYXRgIHR5cGUgYnV0dG9uIGlzIGEgcmVjdGFuZ2xlIGFuZCBkb2Vzbid0IGhhdmUgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYHJhaXNlZGAgdHlwZSBidXR0b24gaXMgYWxzbyBhIHJlY3RhbmdsZSBidXQgaGFzIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGBmYWJgIHR5cGUgYnV0dG9uIGlzIGEgY2lyY2xlIHdpdGggYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmxhdGAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGxlZnRCdXR0b25UeXBlPVwicmFpc2VkXCIgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25UeXBlOiBJZ3hCdXR0b25UeXBlID0gJ2ZsYXQnO1xuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIGxlZnQgYnV0dG9uIGNvbG9yLiBUaGUgcHJvcGVydHkgYWNjZXB0cyBhbGwgdmFsaWQgQ1NTIGNvbG9yIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvbkNvbG9yPVwieWVsbG93XCIgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25Db2xvciA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgbGVmdCBidXR0b24gYGJhY2tncm91bmQtY29sb3JgLiBUaGUgcHJvcGVydHkgYWNjZXB0cyBhbGwgdmFsaWQgQ1NTIGNvbG9yIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgbGVmdEJ1dHRvbkJhY2tncm91bmRDb2xvcj1cImJsYWNrXCIgbGVmdEJ1dHRvbkxhYmVsPVwiT0tBWVwiICNhbGVydCAobGVmdEJ1dHRvblNlbGVjdCk9XCJhbGVydC5jbG9zZSgpXCI+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxlZnRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIGxlZnQgYnV0dG9uIGByaXBwbGVgLiBUaGUgYHJpcHBsZWAgYW5pbWF0ZXMgYSBjbGljay90YXAgdG8gYSBjb21wb25lbnQgYXMgYSBzZXJpZXMgb2YgZmFkaW5nIHdhdmVzLlxuICAgICAqIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyBsZWZ0QnV0dG9uUmlwcGxlPVwiZ3JlZW5cIiBsZWZ0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblJpcHBsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgYGxhYmVsYCBvZiB0aGUgcmlnaHQgYnV0dG9uIG9mIHRoZSBkaWFsb2cuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IHRpdGxlPVwiTm90aWZpY2F0aW9uXCIgIChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25MYWJlbCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgcmlnaHQgYnV0dG9uIGB0eXBlYC4gVGhlIHR5cGVzIGFyZSBgZmxhdGAsIGByYWlzZWRgIGFuZCBgZmFiYC5cbiAgICAgKiBUaGUgYGZsYXRgIHR5cGUgYnV0dG9uIGlzIGEgcmVjdGFuZ2xlIGFuZCBkb2Vzbid0IGhhdmUgYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgYHJhaXNlZGAgdHlwZSBidXR0b24gaXMgYWxzbyBhIHJlY3RhbmdsZSBidXQgaGFzIGEgc2hhZG93LiA8YnI+XG4gICAgICogVGhlIGBmYWJgIHR5cGUgYnV0dG9uIGlzIGEgY2lyY2xlIHdpdGggYSBzaGFkb3cuIDxicj5cbiAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgZmxhdGAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIHJpZ2h0QnV0dG9uVHlwZT1cImZhYlwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25UeXBlOiBJZ3hCdXR0b25UeXBlID0gJ2ZsYXQnO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRvIHNldCB0aGUgcmlnaHQgYnV0dG9uIGBjb2xvcmAuIFRoZSBwcm9wZXJ0eSBhY2NlcHRzIGFsbCB2YWxpZCBDU1MgY29sb3IgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyByaWdodEJ1dHRvbkNvbG9yPVwieWVsbG93XCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LQVlcIiAjYWxlcnQgKGxlZnRCdXR0b25TZWxlY3QpPVwiYWxlcnQuY2xvc2UoKVwiPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByaWdodEJ1dHRvbkNvbG9yID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdG8gc2V0IHRoZSByaWdodCBidXR0b24gYGJhY2tncm91bmQtY29sb3JgLiBUaGUgcHJvcGVydHkgYWNjZXB0cyBhbGwgdmFsaWQgQ1NTIGNvbG9yIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I9XCJibGFja1wiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0byBzZXQgdGhlIHJpZ2h0IGJ1dHRvbiBgcmlwcGxlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgcmlnaHRCdXR0b25SaXBwbGU9XCJncmVlblwiIHJpZ2h0QnV0dG9uTGFiZWw9XCJPS0FZXCIgI2FsZXJ0IChsZWZ0QnV0dG9uU2VsZWN0KT1cImFsZXJ0LmNsb3NlKClcIj48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25SaXBwbGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IGFsbG93cyB5b3UgdG8gZW5hYmxlIHRoZSBcImNsb3NlIG9uIGNsaWNrIG91dHNpZGUgdGhlIGRpYWxvZ1wiLiBCeSBkZWZhdWx0IGl0J3MgZGlzYWJsZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIGNsb3NlT25PdXRzaWRlU2VsZWN0PVwidHJ1ZVwiIGxlZnRCdXR0b25MYWJlbD1cIkNhbmNlbFwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCJcbiAgICAgKiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIiByaWdodEJ1dHRvblJpcHBsZT1cIiM0Q0FGNTBcIiAocmlnaHRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGNsb3NlT25PdXRzaWRlU2VsZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xvc2VPbk91dHNpZGVTZWxlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBjbG9zZU9uT3V0c2lkZVNlbGVjdCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncy5jbG9zZU9uT3V0c2lkZUNsaWNrID0gdmFsO1xuICAgICAgICB0aGlzLl9jbG9zZU9uT3V0c2lkZVNlbGVjdCA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gc2V0dGluZ3MgdXNlZCBieSB0aGUgZGlhbG9nLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKCdhbGVydCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBhbGVydDogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqIGxldCBjdXJyZW50UG9zaXRpb246IFBvc2l0aW9uU2V0dGluZ3MgPSB0aGlzLmFsZXJ0LnBvc2l0aW9uU2V0dGluZ3NcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb25TZXR0aW5ncygpOiBQb3NpdGlvblNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBwb3NpdGlvbiBhbmQgYW5pbWF0aW9uIHNldHRpbmdzIHVzZWQgYnkgdGhlIGRpYWxvZy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaW1wb3J0IHsgc2xpZGVJbkxlZnQsIHNsaWRlT3V0UmlnaHQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyJztcbiAgICAgKiAuLi5cbiAgICAgKiBAVmlld0NoaWxkKCdhbGVydCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBhbGVydDogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqICBwdWJsaWMgbmV3UG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgKiAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihzbGlkZUluVG9wLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzIwMDBtcycgfSB9KSxcbiAgICAgKiAgICAgIGNsb3NlQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oc2xpZGVPdXRCb3R0b20sIHsgcGFyYW1zOiB7IGR1cmF0aW9uOiAnMjAwMG1zJ30gfSksXG4gICAgICogICAgICBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LkxlZnQsXG4gICAgICogICAgICB2ZXJ0aWNhbERpcmVjdGlvbjogVmVydGljYWxBbGlnbm1lbnQuTWlkZGxlLFxuICAgICAqICAgICAgaG9yaXpvbnRhbFN0YXJ0UG9pbnQ6IEhvcml6b250YWxBbGlnbm1lbnQuTGVmdCxcbiAgICAgKiAgICAgIHZlcnRpY2FsU3RhcnRQb2ludDogVmVydGljYWxBbGlnbm1lbnQuTWlkZGxlLFxuICAgICAqICAgICAgbWluU2l6ZTogeyBoZWlnaHQ6IDEwMCwgd2lkdGg6IDEwMCB9XG4gICAgICogIH07XG4gICAgICogdGhpcy5hbGVydC5wb3NpdGlvblNldHRpbmdzID0gdGhpcy5uZXdQb3NpdGlvblNldHRpbmdzO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgcG9zaXRpb25TZXR0aW5ncyhzZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MucG9zaXRpb25TdHJhdGVneSA9IG5ldyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGB0YWJpbmRleGAgYXR0cmlidXRlIGZvciB0aGUgY29tcG9uZW50XG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgdGFiaW5kZXggPSAtMTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBiZWZvcmUgdGhlIGRpYWxvZyBpcyBvcGVuZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIChvcGVuaW5nKT1cIm9uRGlhbG9nT3BlbkhhbmRsZXIoJGV2ZW50KVwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJRGlhbG9nQ2FuY2VsbGFibGVFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIGRpYWxvZyBpcyBvcGVuZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZGlhbG9nIChvbk9wZW5lZCk9XCJvbkRpYWxvZ09wZW5lZEhhbmRsZXIoJGV2ZW50KVwiIChsZWZ0QnV0dG9uU2VsZWN0KT1cImRpYWxvZy5jbG9zZSgpXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYmVmb3JlIHRoZSBkaWFsb2cgaXMgY2xvc2VkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWRpYWxvZyAoY2xvc2luZyk9XCJvbkRpYWxvZ0Nsb3NlSGFuZGxlcigkZXZlbnQpXCIgdGl0bGU9XCJDb25maXJtYXRpb25cIiBsZWZ0QnV0dG9uTGFiZWw9XCJDYW5jZWxcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIj5cbiAgICAgKiA8L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGNsb3NlZCk9XCJvbkRpYWxvZ0Nsb3NlZEhhbmRsZXIoJGV2ZW50KVwiIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgbGVmdEJ1dHRvbkxhYmVsPVwiQ2FuY2VsXCIgcmlnaHRCdXR0b25MYWJlbD1cIk9LXCI+XG4gICAgICogPC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgbGVmdCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKGxlZnRCdXR0b25TZWxlY3QpPVwib25EaWFsb2dPS1NlbGVjdGVkKCRldmVudClcIiAjZGlhbG9nIGxlZnRCdXR0b25MYWJlbD1cIk9LXCIgcmlnaHRCdXR0b25MYWJlbD1cIkNhbmNlbFwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbGVmdEJ1dHRvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8SURpYWxvZ0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSByaWdodCBidXR0b24gaXMgY2xpY2tlZC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1kaWFsb2cgKHJpZ2h0QnV0dG9uU2VsZWN0KT1cIm9uRGlhbG9nT0tTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgKiAjZGlhbG9nIHRpdGxlPVwiQ29uZmlybWF0aW9uXCIgKGxlZnRCdXR0b25TZWxlY3QpPVwiZGlhbG9nLmNsb3NlKClcIiByaWdodEJ1dHRvbkxhYmVsPVwiT0tcIlxuICAgICAqIHJpZ2h0QnV0dG9uUmlwcGxlPVwiIzRDQUY1MFwiIGNsb3NlT25PdXRzaWRlU2VsZWN0PVwidHJ1ZVwiPlxuICAgICAqIDwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmlnaHRCdXR0b25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPElEaWFsb2dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2Ygc3RhdGUuIFBvc3NpYmxlIHN0YXRlIHZhbHVlcyBhcmUgXCJvcGVuXCIgb3IgXCJjbG9zZVwiLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlEaWFsb2dcIilcbiAgICAgKiBwdWJsaWMgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgICBsZXQgZGlhbG9nU3RhdGUgPSB0aGlzLmRpYWxvZy5zdGF0ZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW4gPyAnb3BlbicgOiAnY2xvc2UnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXRlIG9mIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGRpYWxvZ0lzT3BlbiA9IHRoaXMuZGlhbG9nLmlzT3BlbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1kaWFsb2cgW2lzT3Blbl09J2ZhbHNlJz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtZGlhbG9nIFsoaXNPcGVuKV09J21vZGVsLmlzT3Blbic+PC9pZ3gtZGlhbG9nPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kaWFsb2ctLWhpZGRlbicpXG4gICAgcHVibGljIGdldCBpc0NvbGxhcHNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlUmVmLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcm9sZSBvZiB0aGUgZGlhbG9nLiBUaGUgdmFsaWQgdmFsdWVzIGFyZSBgZGlhbG9nYCwgYGFsZXJ0ZGlhbG9nYCwgYGFsZXJ0YC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15RGlhbG9nXCIpXG4gICAgICogcHVibGljIGRpYWxvZzogSWd4RGlhbG9nQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICAgbGV0IGRpYWxvZ1JvbGUgPSB0aGlzLmRpYWxvZy5yb2xlO1xuICAgICAqIH1cbiAgICAgKiAgYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHJvbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlZnRCdXR0b25MYWJlbCAhPT0gJycgJiYgdGhpcy5yaWdodEJ1dHRvbkxhYmVsICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuICdkaWFsb2cnO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uTGFiZWwgIT09ICcnIHx8XG4gICAgICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uTGFiZWwgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICdhbGVydGRpYWxvZyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ2FsZXJ0JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB0aXRsZSBpZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIEBWaWV3Q2hpbGQoXCJNeURpYWxvZ1wiKVxuICAgICAqIHB1YmxpYyBkaWFsb2c6IElneERpYWxvZ0NvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgIGxldCBkaWFsb2dUaXRsZSA9IHRoaXMuZGlhbG9nLnRpdGxlSWQ7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0aXRsZUlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVJZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfcG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgb3BlbkFuaW1hdGlvbjogZmFkZUluLFxuICAgICAgICBjbG9zZUFuaW1hdGlvbjogZmFkZU91dFxuICAgIH07XG5cbiAgICBwcml2YXRlIF9vdmVybGF5RGVmYXVsdFNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3M7XG4gICAgcHJpdmF0ZSBfY2xvc2VPbk91dHNpZGVTZWxlY3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9jbG9zZU9uRXNjYXBlID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9pc01vZGFsID0gdHJ1ZTtcbiAgICBwcml2YXRlIF90aXRsZUlkOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG5hdlNlcnZpY2U6IElneE5hdmlnYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3RpdGxlSWQgPSBJZ3hEaWFsb2dDb21wb25lbnQuTkVYVF9JRCsrICsgJ190aXRsZSc7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uU2V0dGluZ3MpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBOb09wU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIG1vZGFsOiB0aGlzLmlzTW9kYWwsXG4gICAgICAgICAgICBjbG9zZU9uRXNjYXBlOiB0aGlzLl9jbG9zZU9uRXNjYXBlLFxuICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdGhpcy5jbG9zZU9uT3V0c2lkZVNlbGVjdFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnRBcmdzKSA9PiB0aGlzLmVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdENsb3NlZEZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW5lZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3MpID0+IHRoaXMuZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucyB0aGUgZGlhbG9nLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZy5vcGVuKCkgaWd4QnV0dG9uPVwicmFpc2VkXCIgaWd4QnV0dG9uQ29sb3I9XCJ3aGl0ZVwiIGlneFJpcHBsZT1cIndoaXRlXCI+VHJpZ2dlciBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiA8aWd4LWRpYWxvZyAjZGlhbG9nPjwvaWd4LWRpYWxvZz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihvdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHRoaXMuX292ZXJsYXlEZWZhdWx0U2V0dGluZ3MpIHtcbiAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRGlhbG9nQ2FuY2VsbGFibGVFdmVudEFyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IG51bGwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5vcGVuaW5nLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgaWYgKCFldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxlZnRCdXR0b25MYWJlbCAmJiAhdGhpcy5yaWdodEJ1dHRvbkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWYuZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IHRoYXQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiAgQG1lbWJlck9mIHtAbGluayBJZ3hEaWFsb2dDb21wb25lbnR9XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gKGNsaWNrKT1cImRpYWxvZy5jbG9zZSgpIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkNvbG9yPVwid2hpdGVcIiBpZ3hSaXBwbGU9XCJ3aGl0ZVwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCkge1xuICAgICAgICAvLyBgY2xvc2luZ2Agd2lsbCBlbWl0IGZyb20gYHRvZ2dsZVJlZi5jbG9zaW5nYCBzdWJzY3JpcHRpb25cbiAgICAgICAgdGhpcy50b2dnbGVSZWYuY2xvc2UoKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgb3BlbnMvY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2Yge0BsaW5rIElneERpYWxvZ0NvbXBvbmVudH1cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLnRvZ2dsZSgpIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkNvbG9yPVwid2hpdGVcIiBpZ3hSaXBwbGU9XCJ3aGl0ZVwiPlRyaWdnZXIgRGlhbG9nPC9idXR0b24+XG4gICAgICogPGlneC1kaWFsb2cgI2RpYWxvZz48L2lneC1kaWFsb2c+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaWFsb2dTZWxlY3RlZChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbk91dHNpZGVTZWxlY3QgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoSWd4RGlhbG9nQ29tcG9uZW50LkRJQUxPR19DTEFTUylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxMZWZ0QnV0dG9uU2VsZWN0KGV2ZW50KSB7XG4gICAgICAgIHRoaXMubGVmdEJ1dHRvblNlbGVjdC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW50ZXJuYWxSaWdodEJ1dHRvblNlbGVjdChldmVudCkge1xuICAgICAgICB0aGlzLnJpZ2h0QnV0dG9uU2VsZWN0LmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdlNlcnZpY2UgJiYgdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5uYXZTZXJ2aWNlLmFkZCh0aGlzLmlkLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5uYXZTZXJ2aWNlICYmIHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2U2VydmljZS5yZW1vdmUodGhpcy5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZUZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0V2ZW50c0FyZ3MgPSB7IGRpYWxvZzogdGhpcywgZXZlbnQ6IGV2ZW50QXJncy5ldmVudCwgY2FuY2VsOiBldmVudEFyZ3MuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGRpYWxvZ0V2ZW50c0FyZ3MpO1xuICAgICAgICBldmVudEFyZ3MuY2FuY2VsID0gZGlhbG9nRXZlbnRzQXJncy5jYW5jZWw7XG4gICAgICAgIGlmICghZXZlbnRBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDbG9zZWRGcm9tRGlhbG9nKGV2ZW50QXJncykge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KHsgZGlhbG9nOiB0aGlzLCBldmVudDogZXZlbnRBcmdzLmV2ZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdE9wZW5lZEZyb21EaWFsb2coZXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBkaWFsb2c6IHRoaXMsIGV2ZW50OiBldmVudEFyZ3MuZXZlbnQgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgZGlhbG9nOiBJZ3hEaWFsb2dDb21wb25lbnQ7XG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEaWFsb2dDYW5jZWxsYWJsZUV2ZW50QXJncyBleHRlbmRzIElEaWFsb2dFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3MgeyB9XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneERpYWxvZ0NvbXBvbmVudCwgSWd4RGlhbG9nVGl0bGVEaXJlY3RpdmUsIElneERpYWxvZ0FjdGlvbnNEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hEaWFsb2dDb21wb25lbnQsIElneERpYWxvZ1RpdGxlRGlyZWN0aXZlLCBJZ3hEaWFsb2dBY3Rpb25zRGlyZWN0aXZlXSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJZ3hUb2dnbGVNb2R1bGUsIElneEJ1dHRvbk1vZHVsZSwgSWd4UmlwcGxlTW9kdWxlLCBJZ3hGb2N1c01vZHVsZSwgSWd4Rm9jdXNUcmFwTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEaWFsb2dNb2R1bGUgeyB9XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nLmRpcmVjdGl2ZXMnO1xuIiwiPGRpdiB0YWJpbmRleD1cIjBcIiAjZGlhbG9nIGNsYXNzPVwiaWd4LWRpYWxvZ1wiIGlneFRvZ2dsZSBbaWd4Rm9jdXNUcmFwXT1cImZvY3VzVHJhcFwiIChjbGljayk9XCJvbkRpYWxvZ1NlbGVjdGVkKCRldmVudClcIj5cbiAgICA8ZGl2ICNkaWFsb2dXaW5kb3cgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3dcIiAgW2F0dHIucm9sZV09XCJyb2xlXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRpdGxlSWRcIj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGl0bGVcIiBbYXR0ci5pZF09XCJ0aXRsZUlkXCIgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctdGl0bGVcIj5cbiAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiF0aXRsZVwiIHNlbGVjdD1cImlneC1kaWFsb2ctdGl0bGUsW2lneERpYWxvZ1RpdGxlXVwiPjwvbmctY29udGVudD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVzc2FnZVwiIGNsYXNzPVwiaWd4LWRpYWxvZ19fd2luZG93LW1lc3NhZ2VcIj57eyBtZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhbWVzc2FnZVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImxlZnRCdXR0b25MYWJlbCB8fCByaWdodEJ1dHRvbkxhYmVsXCIgY2xhc3M9XCJpZ3gtZGlhbG9nX193aW5kb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImxlZnRCdXR0b25MYWJlbFwiIHR5cGU9XCJidXR0b25cIiBbaWd4Rm9jdXNdPVwiaXNPcGVuXCIgW2lneEJ1dHRvbl09XCJsZWZ0QnV0dG9uVHlwZVwiIGlneEJ1dHRvbkNvbG9yPVwie3sgbGVmdEJ1dHRvbkNvbG9yIH19XCIgaWd4QnV0dG9uQmFja2dyb3VuZD1cInt7IGxlZnRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgfX1cIlxuICAgICAgICAgICAgICAgIGlneFJpcHBsZT1cInt7IGxlZnRCdXR0b25SaXBwbGUgfX1cIiAoY2xpY2spPVwib25JbnRlcm5hbExlZnRCdXR0b25TZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7IGxlZnRCdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmlnaHRCdXR0b25MYWJlbFwiIHR5cGU9XCJidXR0b25cIiBbaWd4Rm9jdXNdPVwiaXNPcGVuXCIgW2lneEJ1dHRvbl09XCJyaWdodEJ1dHRvblR5cGVcIiBpZ3hCdXR0b25Db2xvcj1cInt7IHJpZ2h0QnV0dG9uQ29sb3IgfX1cIiBpZ3hCdXR0b25CYWNrZ3JvdW5kPVwie3sgcmlnaHRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgfX1cIlxuICAgICAgICAgICAgICAgIGlneFJpcHBsZT1cInt7IHJpZ2h0QnV0dG9uUmlwcGxlIH19XCIgKGNsaWNrKT1cIm9uSW50ZXJuYWxSaWdodEJ1dHRvblNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAge3sgcmlnaHRCdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFsZWZ0QnV0dG9uTGFiZWwgJiYgIXJpZ2h0QnV0dG9uTGFiZWxcIiBzZWxlY3Q9XCJpZ3gtZGlhbG9nLWFjdGlvbnMsW2lneERpYWxvZ0FjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Directive, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { fromEvent, Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../core/utils";
|
|
6
|
+
export class IgxFocusTrapDirective {
|
|
7
|
+
/** @hidden */
|
|
8
|
+
constructor(elementRef, platformUtil) {
|
|
9
|
+
this.elementRef = elementRef;
|
|
10
|
+
this.platformUtil = platformUtil;
|
|
11
|
+
this.destroy$ = new Subject();
|
|
12
|
+
this._focusTrap = true;
|
|
13
|
+
}
|
|
14
|
+
/** @hidden */
|
|
15
|
+
get element() {
|
|
16
|
+
return this.elementRef.nativeElement;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sets whether the Tab key focus is trapped within the element.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```html
|
|
23
|
+
* <div igxFocusTrap="true"></div>
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
set focusTrap(focusTrap) {
|
|
27
|
+
this._focusTrap = focusTrap;
|
|
28
|
+
}
|
|
29
|
+
/** @hidden */
|
|
30
|
+
get focusTrap() {
|
|
31
|
+
return this._focusTrap;
|
|
32
|
+
}
|
|
33
|
+
/** @hidden */
|
|
34
|
+
ngAfterViewInit() {
|
|
35
|
+
fromEvent(this.element, 'keydown')
|
|
36
|
+
.pipe(takeUntil(this.destroy$))
|
|
37
|
+
.subscribe((event) => {
|
|
38
|
+
if (this._focusTrap && event.key === this.platformUtil.KEYMAP.TAB) {
|
|
39
|
+
this.handleTab(event);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** @hidden */
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.destroy$.complete();
|
|
46
|
+
}
|
|
47
|
+
handleTab(event) {
|
|
48
|
+
const elements = this.getFocusableElements(this.element);
|
|
49
|
+
if (elements.length > 0) {
|
|
50
|
+
const focusedElement = this.getFocusedElement();
|
|
51
|
+
const focusedElementIndex = elements.findIndex((element) => element === focusedElement);
|
|
52
|
+
const direction = event.shiftKey ? -1 : 1;
|
|
53
|
+
let nextFocusableElementIndex = focusedElementIndex + direction;
|
|
54
|
+
if (nextFocusableElementIndex < 0) {
|
|
55
|
+
nextFocusableElementIndex = elements.length - 1;
|
|
56
|
+
}
|
|
57
|
+
if (nextFocusableElementIndex >= elements.length) {
|
|
58
|
+
nextFocusableElementIndex = 0;
|
|
59
|
+
}
|
|
60
|
+
elements[nextFocusableElementIndex].focus();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.element.focus();
|
|
64
|
+
}
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
}
|
|
67
|
+
getFocusableElements(element) {
|
|
68
|
+
return Array.from(element.querySelectorAll('a[href], button, input, textarea, select, details,[tabindex]:not([tabindex="-1"])')).filter(el => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden'));
|
|
69
|
+
}
|
|
70
|
+
getFocusedElement() {
|
|
71
|
+
let activeElement = typeof document !== 'undefined' && document
|
|
72
|
+
? document.activeElement
|
|
73
|
+
: null;
|
|
74
|
+
while (activeElement && activeElement.shadowRoot) {
|
|
75
|
+
const newActiveElement = activeElement.shadowRoot.activeElement;
|
|
76
|
+
if (newActiveElement === activeElement) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
activeElement = newActiveElement;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return activeElement;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
IgxFocusTrapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Directive });
|
|
87
|
+
IgxFocusTrapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxFocusTrapDirective, selector: "[igxFocusTrap]", inputs: { focusTrap: ["igxFocusTrap", "focusTrap"] }, ngImport: i0 });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFocusTrapDirective, decorators: [{
|
|
89
|
+
type: Directive,
|
|
90
|
+
args: [{
|
|
91
|
+
selector: '[igxFocusTrap]'
|
|
92
|
+
}]
|
|
93
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PlatformUtil }]; }, propDecorators: { focusTrap: [{
|
|
94
|
+
type: Input,
|
|
95
|
+
args: ['igxFocusTrap']
|
|
96
|
+
}] } });
|
|
97
|
+
/**
|
|
98
|
+
* @hidden
|
|
99
|
+
*/
|
|
100
|
+
export class IgxFocusTrapModule {
|
|
101
|
+
}
|
|
102
|
+
IgxFocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
103
|
+
IgxFocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFocusTrapModule, declarations: [IgxFocusTrapDirective], exports: [IgxFocusTrapDirective] });
|
|
104
|
+
IgxFocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFocusTrapModule });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFocusTrapModule, decorators: [{
|
|
106
|
+
type: NgModule,
|
|
107
|
+
args: [{
|
|
108
|
+
declarations: [IgxFocusTrapDirective],
|
|
109
|
+
exports: [IgxFocusTrapDirective]
|
|
110
|
+
}]
|
|
111
|
+
}] });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLHFCQUFxQjtJQVM5QixjQUFjO0lBQ2QsWUFDWSxVQUFzQixFQUNwQixZQUEwQjtRQUQ1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3BCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBTmhDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxJQUFJLENBQUM7SUFNMUIsQ0FBQztJQVpELGNBQWM7SUFDZCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQ3pDLENBQUM7SUFXRDs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxTQUFTLENBQUMsU0FBa0I7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO0lBQ1AsZUFBZTtRQUNkLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQzthQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFT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QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBOZ01vZHVsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hGb2N1c1RyYXBdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hGb2N1c1RyYXBEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIGdldCBlbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIF9mb2N1c1RyYXAgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcm90ZWN0ZWQgcGxhdGZvcm1VdGlsOiBQbGF0Zm9ybVV0aWwpIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHdoZXRoZXIgdGhlIFRhYiBrZXkgZm9jdXMgaXMgdHJhcHBlZCB3aXRoaW4gdGhlIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2IGlneEZvY3VzVHJhcD1cInRydWVcIj48L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEZvY3VzVHJhcCcpXG4gICAgcHVibGljIHNldCBmb2N1c1RyYXAoZm9jdXNUcmFwOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzVHJhcCA9IGZvY3VzVHJhcDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgZm9jdXNUcmFwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNUcmFwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ZvY3VzVHJhcCAmJiBldmVudC5rZXkgPT09IHRoaXMucGxhdGZvcm1VdGlsLktFWU1BUC5UQUIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVGFiKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVUYWIoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmdldEZvY3VzYWJsZUVsZW1lbnRzKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBmb2N1c2VkRWxlbWVudCA9IHRoaXMuZ2V0Rm9jdXNlZEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50SW5kZXggPSBlbGVtZW50cy5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgPT09IGZvY3VzZWRFbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5ID8gLTEgOiAxO1xuICAgICAgICAgICAgbGV0IG5leHRGb2N1c2FibGVFbGVtZW50SW5kZXggPSBmb2N1c2VkRWxlbWVudEluZGV4ICsgZGlyZWN0aW9uO1xuICAgICAgICAgICAgaWYgKG5leHRGb2N1c2FibGVFbGVtZW50SW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgbmV4dEZvY3VzYWJsZUVsZW1lbnRJbmRleCA9IGVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dEZvY3VzYWJsZUVsZW1lbnRJbmRleCA+PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBuZXh0Rm9jdXNhYmxlRWxlbWVudEluZGV4ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChlbGVtZW50c1tuZXh0Rm9jdXNhYmxlRWxlbWVudEluZGV4XSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvY3VzYWJsZUVsZW1lbnRzKGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgJ2FbaHJlZl0sIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICAgICApKS5maWx0ZXIoZWwgPT4gIWVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiAhZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvY3VzZWRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGxldCBhY3RpdmVFbGVtZW50ID1cbiAgICAgICAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICA/IChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbClcbiAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgd2hpbGUgKGFjdGl2ZUVsZW1lbnQgJiYgYWN0aXZlRWxlbWVudC5zaGFkb3dSb290KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdBY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgICAgaWYgKG5ld0FjdGl2ZUVsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudCA9IG5ld0FjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWN0aXZlRWxlbWVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0lneEZvY3VzVHJhcERpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0lneEZvY3VzVHJhcERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4Rm9jdXNUcmFwTW9kdWxlIHsgfVxuIl19
|