@ng-matero/extensions 10.16.1 → 10.16.5
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/alert/_alert-theme.scss +20 -20
- package/alert/alert.component.d.ts +4 -3
- package/alert/mtxAlert.metadata.json +1 -1
- package/bundles/mtxAlert.umd.js +3 -3
- package/bundles/mtxAlert.umd.js.map +1 -1
- package/bundles/mtxAlert.umd.min.js.map +1 -1
- package/bundles/{ng-matero-extensions-button.umd.js → mtxButton.umd.js} +2 -2
- package/bundles/mtxButton.umd.js.map +1 -0
- package/bundles/{ng-matero-extensions-button.umd.min.js → mtxButton.umd.min.js} +1 -1
- package/bundles/{ng-matero-extensions-button.umd.min.js.map → mtxButton.umd.min.js.map} +0 -0
- package/bundles/mtxCheckboxGroup.umd.js +87 -22
- package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
- package/bundles/mtxCheckboxGroup.umd.min.js +1 -1
- package/bundles/mtxCheckboxGroup.umd.min.js.map +1 -1
- package/bundles/mtxColorPicker.umd.js +32 -5
- package/bundles/mtxColorPicker.umd.js.map +1 -1
- package/bundles/mtxColorPicker.umd.min.js +1 -1
- package/bundles/mtxColorPicker.umd.min.js.map +1 -1
- package/bundles/mtxDialog.umd.js +0 -2
- package/bundles/mtxDialog.umd.js.map +1 -1
- package/bundles/mtxDialog.umd.min.js +1 -1
- package/bundles/mtxDialog.umd.min.js.map +1 -1
- package/bundles/mtxFormGroup.umd.js +2 -0
- package/bundles/mtxFormGroup.umd.js.map +1 -1
- package/bundles/mtxFormGroup.umd.min.js +1 -1
- package/bundles/mtxFormGroup.umd.min.js.map +1 -1
- package/bundles/mtxGrid.umd.js +31 -101
- package/bundles/mtxGrid.umd.js.map +1 -1
- package/bundles/mtxGrid.umd.min.js +2 -2
- package/bundles/mtxGrid.umd.min.js.map +1 -1
- package/bundles/mtxLoader.umd.js +1 -1
- package/bundles/mtxLoader.umd.js.map +1 -1
- package/bundles/mtxLoader.umd.min.js +1 -1
- package/bundles/mtxLoader.umd.min.js.map +1 -1
- package/bundles/mtxProgress.umd.js +2 -2
- package/bundles/mtxProgress.umd.js.map +1 -1
- package/bundles/mtxProgress.umd.min.js.map +1 -1
- package/bundles/mtxSelect.umd.js +5 -1
- package/bundles/mtxSelect.umd.js.map +1 -1
- package/bundles/mtxSelect.umd.min.js +1 -1
- package/bundles/mtxSelect.umd.min.js.map +1 -1
- package/bundles/mtxTooltip.umd.js +1 -1
- package/bundles/mtxTooltip.umd.js.map +1 -1
- package/bundles/mtxTooltip.umd.min.js +1 -1
- package/bundles/mtxTooltip.umd.min.js.map +1 -1
- package/bundles/mtxUtils.umd.js.map +1 -1
- package/bundles/mtxUtils.umd.min.js.map +1 -1
- package/button/{ng-matero-extensions-button.d.ts → mtxButton.d.ts} +0 -0
- package/button/{ng-matero-extensions-button.metadata.json → mtxButton.metadata.json} +0 -0
- package/button/package.json +7 -7
- package/checkbox-group/checkbox-group.component.d.ts +15 -11
- package/checkbox-group/mtxCheckboxGroup.metadata.json +1 -1
- package/color-picker/color-picker.component.d.ts +10 -9
- package/color-picker/mtxColorPicker.metadata.json +1 -1
- package/data-grid/_grid-theme.scss +14 -32
- package/data-grid/cell.component.d.ts +2 -1
- package/data-grid/column-menu.component.d.ts +4 -3
- package/data-grid/grid.component.d.ts +7 -20
- package/data-grid/grid.component.scss +51 -5
- package/data-grid/grid.interface.d.ts +18 -36
- package/data-grid/mtxGrid.metadata.json +1 -1
- package/dialog/dialog.config.d.ts +3 -2
- package/dialog/mtxDialog.metadata.json +1 -1
- package/esm2015/alert/alert.component.js +4 -4
- package/esm2015/button/mtxButton.js +10 -0
- package/esm2015/checkbox-group/checkbox-group.component.js +77 -20
- package/esm2015/color-picker/color-picker.component.js +29 -6
- package/esm2015/data-grid/cell.component.js +2 -2
- package/esm2015/data-grid/column-menu.component.js +1 -2
- package/esm2015/data-grid/grid.component.js +32 -100
- package/esm2015/data-grid/grid.interface.js +12 -11
- package/esm2015/dialog/dialog.config.js +1 -1
- package/esm2015/dialog/dialog.js +1 -3
- package/esm2015/form-group/form-group.component.js +4 -2
- package/esm2015/loader/loader.component.js +2 -2
- package/esm2015/progress/progress.component.js +3 -3
- package/esm2015/select/select.component.js +6 -2
- package/esm2015/tooltip/tooltip.js +2 -2
- package/esm2015/utils/to-observable.pipe.js +1 -1
- package/fesm2015/mtxAlert.js +3 -3
- package/fesm2015/mtxAlert.js.map +1 -1
- package/fesm2015/{ng-matero-extensions-button.js → mtxButton.js} +2 -2
- package/fesm2015/mtxButton.js.map +1 -0
- package/fesm2015/mtxCheckboxGroup.js +76 -19
- package/fesm2015/mtxCheckboxGroup.js.map +1 -1
- package/fesm2015/mtxColorPicker.js +28 -5
- package/fesm2015/mtxColorPicker.js.map +1 -1
- package/fesm2015/mtxDialog.js +0 -2
- package/fesm2015/mtxDialog.js.map +1 -1
- package/fesm2015/mtxFormGroup.js +3 -1
- package/fesm2015/mtxFormGroup.js.map +1 -1
- package/fesm2015/mtxGrid.js +43 -111
- package/fesm2015/mtxGrid.js.map +1 -1
- package/fesm2015/mtxLoader.js +1 -1
- package/fesm2015/mtxLoader.js.map +1 -1
- package/fesm2015/mtxProgress.js +2 -2
- package/fesm2015/mtxProgress.js.map +1 -1
- package/fesm2015/mtxSelect.js +5 -1
- package/fesm2015/mtxSelect.js.map +1 -1
- package/fesm2015/mtxTooltip.js +1 -1
- package/fesm2015/mtxTooltip.js.map +1 -1
- package/fesm2015/mtxUtils.js.map +1 -1
- package/form-group/mtxFormGroup.metadata.json +1 -1
- package/loader/loader.component.d.ts +2 -1
- package/loader/mtxLoader.metadata.json +1 -1
- package/package.json +1 -1
- package/progress/mtxProgress.metadata.json +1 -1
- package/progress/progress.component.d.ts +3 -2
- package/select/_select-theme.scss +18 -18
- package/select/mtxSelect.metadata.json +1 -1
- package/select/select.component.d.ts +4 -1
- package/tooltip/mtxTooltip.metadata.json +1 -1
- package/utils/to-observable.pipe.d.ts +1 -1
- package/bundles/ng-matero-extensions-button.umd.js.map +0 -1
- package/esm2015/button/ng-matero-extensions-button.js +0 -10
- package/fesm2015/ng-matero-extensions-button.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThemePalette } from '@angular/material/core';
|
|
1
2
|
import { MatDialogConfig } from '@angular/material/dialog';
|
|
2
3
|
import { Observable } from 'rxjs';
|
|
3
4
|
export interface MtxDialogData extends MatDialogConfig {
|
|
@@ -7,8 +8,8 @@ export interface MtxDialogData extends MatDialogConfig {
|
|
|
7
8
|
showCloseIcon?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export interface MtxDialogBtns {
|
|
10
|
-
type?: '
|
|
11
|
-
color?:
|
|
11
|
+
type?: 'raised' | 'stroked' | 'flat';
|
|
12
|
+
color?: ThemePalette;
|
|
12
13
|
class?: string;
|
|
13
14
|
focusInitial?: boolean;
|
|
14
15
|
text: string | Observable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"MtxDialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":12},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":11,"character":26},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":11,"character":43},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":11,"character":60},{"__symbolic":"reference","module":"@ng-matero/extensions/utils","name":"MtxUtilsModule","line":11,"character":75}],"exports":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"providers":[{"__symbolic":"reference","name":"MtxDialog"}],"entryComponents":[{"__symbolic":"reference","name":"MtxDialogComponent"}]}]}],"members":{}},"MtxDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"mtx-dialog","exportAs":"mtxDialog","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":10,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<h1 class=\"mtx-dialog-title\" *ngIf=\"data.title\">{{data.title | toObservable | async}}\n <button mat-icon-button *ngIf=\"data.showCloseIcon\" (click)=\"_onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n</h1>\n<div class=\"mtx-dialog-content\" *ngIf=\"data.description\">\n <p>{{data.description | toObservable | async}}</p>\n</div>\n<div class=\"mtx-dialog-actions\">\n <ng-container *ngFor=\"let btn of data.buttons\">\n <ng-container [ngSwitch]=\"btn.type\">\n <ng-container *ngSwitchCase=\"'raised'\">\n <button mat-raised-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-raised-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button mat-stroked-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-stroked-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'flat'\">\n <button mat-flat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-flat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n","styles":[".mtx-dialog-title{align-items:center;display:flex;font:500 20px/32px Roboto,Helvetica Neue,sans-serif;justify-content:space-between;letter-spacing:normal;margin:0 0 20px}.mtx-dialog-content{-webkit-overflow-scrolling:touch;display:block;margin:0 -24px;max-height:65vh;overflow:auto;padding:0 24px}.mtx-dialog-actions{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-bottom:-24px;min-height:52px;padding:8px 0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":16,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":16,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"MtxDialogComponent"}]},{"__symbolic":"reference","name":"MtxDialogData"}]}],"_onClick":[{"__symbolic":"method"}],"_onClose":[{"__symbolic":"method"}]}},"MtxDialog":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"MtxDialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":12},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":11,"character":26},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":11,"character":43},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":11,"character":60},{"__symbolic":"reference","module":"@ng-matero/extensions/utils","name":"MtxUtilsModule","line":11,"character":75}],"exports":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"declarations":[{"__symbolic":"reference","name":"MtxDialogComponent"}],"providers":[{"__symbolic":"reference","name":"MtxDialog"}],"entryComponents":[{"__symbolic":"reference","name":"MtxDialogComponent"}]}]}],"members":{}},"MtxDialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"mtx-dialog","exportAs":"mtxDialog","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":10,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<h1 class=\"mtx-dialog-title\" *ngIf=\"data.title\">{{data.title | toObservable | async}}\n <button mat-icon-button *ngIf=\"data.showCloseIcon\" (click)=\"_onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n</h1>\n<div class=\"mtx-dialog-content\" *ngIf=\"data.description\">\n <p>{{data.description | toObservable | async}}</p>\n</div>\n<div class=\"mtx-dialog-actions\">\n <ng-container *ngFor=\"let btn of data.buttons\">\n <ng-container [ngSwitch]=\"btn.type\">\n <ng-container *ngSwitchCase=\"'raised'\">\n <button mat-raised-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-raised-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button mat-stroked-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-stroked-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"'flat'\">\n <button mat-flat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-flat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button *ngIf=\"btn.focusInitial\" cdkFocusInitial\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n <button mat-button *ngIf=\"!btn.focusInitial\"\n [color]=\"btn.color\" [ngClass]=\"btn.class\" (click)=\"_onClick(btn.onClick)\">\n {{btn.text | toObservable | async}}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n","styles":[".mtx-dialog-title{align-items:center;display:flex;font:500 20px/32px Roboto,Helvetica Neue,sans-serif;justify-content:space-between;letter-spacing:normal;margin:0 0 20px}.mtx-dialog-content{-webkit-overflow-scrolling:touch;display:block;margin:0 -24px;max-height:65vh;overflow:auto;padding:0 24px}.mtx-dialog-actions{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;margin-bottom:-24px;min-height:52px;padding:8px 0}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":16,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":16,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"MtxDialogComponent"}]},{"__symbolic":"reference","name":"MtxDialogData"}]}],"_onClick":[{"__symbolic":"method"}],"_onClose":[{"__symbolic":"method"}]}},"MtxDialog":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":28,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":30,"character":29}]}],"originalOpen":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"alert":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}]}},"MtxDialogData":{"__symbolic":"interface"},"MtxDialogBtns":{"__symbolic":"interface"}},"origins":{"MtxDialogModule":"./dialog.module","MtxDialogComponent":"./dialog.component","MtxDialog":"./dialog","MtxDialogData":"./dialog.config","MtxDialogBtns":"./dialog.config"},"importAs":"@ng-matero/extensions/dialog"}
|
|
@@ -11,7 +11,7 @@ export class MtxAlertComponent {
|
|
|
11
11
|
constructor(_changeDetectorRef) {
|
|
12
12
|
this._changeDetectorRef = _changeDetectorRef;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* The alert type
|
|
15
15
|
*/
|
|
16
16
|
this.type = 'default';
|
|
17
17
|
/**
|
|
@@ -70,7 +70,7 @@ MtxAlertComponent.propDecorators = {
|
|
|
70
70
|
};
|
|
71
71
|
if (false) {
|
|
72
72
|
/**
|
|
73
|
-
*
|
|
73
|
+
* The alert type
|
|
74
74
|
* @type {?}
|
|
75
75
|
*/
|
|
76
76
|
MtxAlertComponent.prototype.type;
|
|
@@ -85,7 +85,7 @@ if (false) {
|
|
|
85
85
|
*/
|
|
86
86
|
MtxAlertComponent.prototype.dismissible;
|
|
87
87
|
/**
|
|
88
|
-
*
|
|
88
|
+
* The alert text color
|
|
89
89
|
* @type {?}
|
|
90
90
|
*/
|
|
91
91
|
MtxAlertComponent.prototype.color;
|
|
@@ -105,4 +105,4 @@ if (false) {
|
|
|
105
105
|
*/
|
|
106
106
|
MtxAlertComponent.prototype._changeDetectorRef;
|
|
107
107
|
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2FsZXJ0LyIsInNvdXJjZXMiOlsiYWxlcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFldkIsTUFBTSxPQUFPLGlCQUFpQjs7OztJQXVCNUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7Ozs7UUFqQmhELFNBQUksR0FBaUIsU0FBUyxDQUFDOzs7O1FBRy9CLFdBQU0sR0FBRyxJQUFJLENBQUM7Ozs7UUFTZCxjQUFTLEdBQUcsQ0FBQyxDQUFDOzs7O1FBR2IsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO0lBRUcsQ0FBQzs7OztJQXRCN0QsSUFBMEIsYUFBYTtRQUNyQyxPQUFPLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLENBQUM7Ozs7SUFzQkQsU0FBUztRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7WUF4Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxXQUFXO2lCQUNuQjtnQkFDRCxnakJBQXFDO2dCQUVyQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7O1lBaEJDLGlCQUFpQjs7OzRCQWtCaEIsV0FBVyxTQUFDLE9BQU87bUJBS25CLEtBQUs7cUJBR0wsS0FBSzswQkFHTCxLQUFLO29CQUdMLEtBQUs7d0JBR0wsS0FBSztxQkFHTCxNQUFNOzs7Ozs7O0lBZlAsaUNBQXdDOzs7OztJQUd4QyxtQ0FBdUI7Ozs7O0lBR3ZCLHdDQUE4Qjs7Ozs7SUFHOUIsa0NBQXVCOzs7OztJQUd2QixzQ0FBdUI7Ozs7O0lBR3ZCLG1DQUF5RDs7Ozs7SUFFN0MsK0NBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgTXR4QWxlcnRUeXBlID0gJ2RlZmF1bHQnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2Rhbmdlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1hbGVydCcsXG4gIGV4cG9ydEFzOiAnbXR4QWxlcnQnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtdHgtYWxlcnQnLFxuICB9LFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTXR4QWxlcnRDb21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGhvc3RDbGFzc0xpc3QoKSB7XG4gICAgcmV0dXJuIGBtdHgtYWxlcnQtJHt0aGlzLnR5cGV9YDtcbiAgfVxuXG4gIC8qKiBUaGUgYWxlcnQgdHlwZSAqL1xuICBASW5wdXQoKSB0eXBlOiBNdHhBbGVydFR5cGUgPSAnZGVmYXVsdCc7XG5cbiAgLyoqIFdoZXRoZXIgYWxlcnQgdmlzaWJsZSAqL1xuICBASW5wdXQoKSBpc09wZW4gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGRpc3BsYXlzIGFuIGlubGluZSBcIkNsb3NlXCIgYnV0dG9uICovXG4gIEBJbnB1dCgpIGRpc21pc3NpYmxlOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgYWxlcnQgdGV4dCBjb2xvciAqL1xuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuXG4gIC8qKiBNYXRlcmlhbCBlbGV2YXRpb24gKi9cbiAgQElucHV0KCkgZWxldmF0aW9uID0gMDtcblxuICAvKiogVGhpcyBldmVudCBmaXJlcyB3aGVuIGFsZXJ0IGNsb3NlZCwgJGV2ZW50IGlzIGFuIGluc3RhbmNlIG9mIEFsZXJ0IGNvbXBvbmVudCAqL1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhBbGVydENvbXBvbmVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgX29uQ2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCh0aGlzKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* Generated from: mtxButton.ts
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generated bundle index. Do not edit.
|
|
8
|
+
*/
|
|
9
|
+
export { MtxButtonModule, MatButtonLoadingDirective } from './public-api';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXR4QnV0dG9uLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2J1dHRvbi8iLCJzb3VyY2VzIjpbIm10eEJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLDJEQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Generated from: checkbox-group.component.ts
|
|
4
4
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
|
-
import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef, ContentChildren, QueryList, } from '@angular/core';
|
|
6
|
+
import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, EventEmitter, ChangeDetectorRef, forwardRef, ContentChildren, QueryList, ElementRef, } from '@angular/core';
|
|
7
7
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
8
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
8
9
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
9
10
|
import { MatCheckbox } from '@angular/material/checkbox';
|
|
10
11
|
export class MtxCheckboxBase {
|
|
@@ -26,20 +27,23 @@ if (false) {
|
|
|
26
27
|
export class MtxCheckboxGroupComponent {
|
|
27
28
|
/**
|
|
28
29
|
* @param {?} _changeDetectorRef
|
|
30
|
+
* @param {?} _focusMonitor
|
|
31
|
+
* @param {?} _elementRef
|
|
29
32
|
*/
|
|
30
|
-
constructor(_changeDetectorRef) {
|
|
33
|
+
constructor(_changeDetectorRef, _focusMonitor, _elementRef) {
|
|
31
34
|
this._changeDetectorRef = _changeDetectorRef;
|
|
35
|
+
this._focusMonitor = _focusMonitor;
|
|
36
|
+
this._elementRef = _elementRef;
|
|
32
37
|
this._items = [];
|
|
33
38
|
this._originalItems = [];
|
|
34
39
|
this.bindLabel = 'label';
|
|
35
40
|
this.bindValue = 'value';
|
|
36
|
-
this.
|
|
41
|
+
this._showSelectAll = false;
|
|
37
42
|
this.selectAllLabel = 'Select All';
|
|
38
43
|
this._disabled = false;
|
|
39
44
|
this.change = new EventEmitter();
|
|
40
45
|
this.selectAll = false;
|
|
41
46
|
this.selectAllIndeterminate = false;
|
|
42
|
-
this.color = 'accent';
|
|
43
47
|
this.selectedItems = [];
|
|
44
48
|
this._onChange = (/**
|
|
45
49
|
* @return {?}
|
|
@@ -71,6 +75,19 @@ export class MtxCheckboxGroupComponent {
|
|
|
71
75
|
return option instanceof Object ? option : new MtxCheckboxBase(option, option);
|
|
72
76
|
}));
|
|
73
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* @return {?}
|
|
80
|
+
*/
|
|
81
|
+
get showSelectAll() {
|
|
82
|
+
return this._showSelectAll;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @param {?} value
|
|
86
|
+
* @return {?}
|
|
87
|
+
*/
|
|
88
|
+
set showSelectAll(value) {
|
|
89
|
+
this._showSelectAll = coerceBooleanProperty(value);
|
|
90
|
+
}
|
|
74
91
|
/**
|
|
75
92
|
* @return {?}
|
|
76
93
|
*/
|
|
@@ -105,7 +122,34 @@ export class MtxCheckboxGroupComponent {
|
|
|
105
122
|
/**
|
|
106
123
|
* @return {?}
|
|
107
124
|
*/
|
|
108
|
-
ngAfterViewInit() {
|
|
125
|
+
ngAfterViewInit() {
|
|
126
|
+
this._focusMonitor.monitor(this._elementRef, true).subscribe((/**
|
|
127
|
+
* @param {?} focusOrigin
|
|
128
|
+
* @return {?}
|
|
129
|
+
*/
|
|
130
|
+
focusOrigin => {
|
|
131
|
+
if (!focusOrigin) {
|
|
132
|
+
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
133
|
+
// Angular does not expect events to be raised during change detection, so any state change
|
|
134
|
+
// (such as a form control's 'ng-touched') will cause a changed-after-checked error.
|
|
135
|
+
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
136
|
+
// telling the form control it has been touched until the next tick.
|
|
137
|
+
Promise.resolve().then((/**
|
|
138
|
+
* @return {?}
|
|
139
|
+
*/
|
|
140
|
+
() => {
|
|
141
|
+
this._onTouched();
|
|
142
|
+
this._changeDetectorRef.markForCheck();
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @return {?}
|
|
149
|
+
*/
|
|
150
|
+
ngOnDestroy() {
|
|
151
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
152
|
+
}
|
|
109
153
|
/**
|
|
110
154
|
* Finds and selects and option based on its value.
|
|
111
155
|
* @private
|
|
@@ -114,11 +158,11 @@ export class MtxCheckboxGroupComponent {
|
|
|
114
158
|
*/
|
|
115
159
|
_selectValue(value) {
|
|
116
160
|
/** @type {?} */
|
|
117
|
-
const correspondingOption = this.items.find((/**
|
|
161
|
+
const correspondingOption = ((/** @type {?} */ (this.items))).find((/**
|
|
118
162
|
* @param {?} option
|
|
119
163
|
* @return {?}
|
|
120
164
|
*/
|
|
121
|
-
|
|
165
|
+
option => {
|
|
122
166
|
try {
|
|
123
167
|
/** @type {?} */
|
|
124
168
|
const compareValue = option[this.bindValue] === value;
|
|
@@ -185,7 +229,7 @@ export class MtxCheckboxGroupComponent {
|
|
|
185
229
|
* @return {?}
|
|
186
230
|
*/
|
|
187
231
|
_checkMasterCheckboxState() {
|
|
188
|
-
if (this.items
|
|
232
|
+
if (((/** @type {?} */ (this.items)))
|
|
189
233
|
.filter((/**
|
|
190
234
|
* @param {?} option
|
|
191
235
|
* @return {?}
|
|
@@ -199,7 +243,7 @@ export class MtxCheckboxGroupComponent {
|
|
|
199
243
|
this.selectAll = false;
|
|
200
244
|
this.selectAllIndeterminate = false;
|
|
201
245
|
}
|
|
202
|
-
else if (this.items
|
|
246
|
+
else if (((/** @type {?} */ (this.items)))
|
|
203
247
|
.filter((/**
|
|
204
248
|
* @param {?} option
|
|
205
249
|
* @return {?}
|
|
@@ -223,13 +267,13 @@ export class MtxCheckboxGroupComponent {
|
|
|
223
267
|
* @return {?}
|
|
224
268
|
*/
|
|
225
269
|
_getSelectedItems(index) {
|
|
226
|
-
this.selectedItems = this.items.filter((/**
|
|
270
|
+
this.selectedItems = ((/** @type {?} */ (this.items))).filter((/**
|
|
227
271
|
* @param {?} option
|
|
228
272
|
* @return {?}
|
|
229
273
|
*/
|
|
230
274
|
option => option.checked));
|
|
231
275
|
if (this._compareWith) {
|
|
232
|
-
this.selectedItems = this._originalItems.filter((/**
|
|
276
|
+
this.selectedItems = ((/** @type {?} */ (this._originalItems))).filter((/**
|
|
233
277
|
* @param {?} option
|
|
234
278
|
* @return {?}
|
|
235
279
|
*/
|
|
@@ -269,7 +313,7 @@ export class MtxCheckboxGroupComponent {
|
|
|
269
313
|
this.selectAll = !this.selectAll;
|
|
270
314
|
this.selectAllIndeterminate = false;
|
|
271
315
|
if (this.selectAll) {
|
|
272
|
-
this.items
|
|
316
|
+
((/** @type {?} */ (this.items)))
|
|
273
317
|
.filter((/**
|
|
274
318
|
* @param {?} option
|
|
275
319
|
* @return {?}
|
|
@@ -282,7 +326,7 @@ export class MtxCheckboxGroupComponent {
|
|
|
282
326
|
option => (option.checked = true)));
|
|
283
327
|
}
|
|
284
328
|
else {
|
|
285
|
-
this.items
|
|
329
|
+
((/** @type {?} */ (this.items)))
|
|
286
330
|
.filter((/**
|
|
287
331
|
* @param {?} option
|
|
288
332
|
* @return {?}
|
|
@@ -304,7 +348,7 @@ MtxCheckboxGroupComponent.decorators = [
|
|
|
304
348
|
host: {
|
|
305
349
|
class: 'mtx-checkbox-group',
|
|
306
350
|
},
|
|
307
|
-
template: "<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color
|
|
351
|
+
template: "<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color\"\n [disabled]=\"option.disabled || disabled\"\n [disableRipple]=\"option.disableRipple\"\n [labelPosition]=\"option.labelPosition\"\n [required]=\"option.required\"\n (change)=\"_updateNormalCheckboxState($event, i)\">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n",
|
|
308
352
|
encapsulation: ViewEncapsulation.None,
|
|
309
353
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
310
354
|
providers: [
|
|
@@ -322,7 +366,9 @@ MtxCheckboxGroupComponent.decorators = [
|
|
|
322
366
|
];
|
|
323
367
|
/** @nocollapse */
|
|
324
368
|
MtxCheckboxGroupComponent.ctorParameters = () => [
|
|
325
|
-
{ type: ChangeDetectorRef }
|
|
369
|
+
{ type: ChangeDetectorRef },
|
|
370
|
+
{ type: FocusMonitor },
|
|
371
|
+
{ type: ElementRef }
|
|
326
372
|
];
|
|
327
373
|
MtxCheckboxGroupComponent.propDecorators = {
|
|
328
374
|
_checkboxes: [{ type: ContentChildren, args: [forwardRef((/**
|
|
@@ -355,8 +401,11 @@ if (false) {
|
|
|
355
401
|
MtxCheckboxGroupComponent.prototype.bindLabel;
|
|
356
402
|
/** @type {?} */
|
|
357
403
|
MtxCheckboxGroupComponent.prototype.bindValue;
|
|
358
|
-
/**
|
|
359
|
-
|
|
404
|
+
/**
|
|
405
|
+
* @type {?}
|
|
406
|
+
* @private
|
|
407
|
+
*/
|
|
408
|
+
MtxCheckboxGroupComponent.prototype._showSelectAll;
|
|
360
409
|
/** @type {?} */
|
|
361
410
|
MtxCheckboxGroupComponent.prototype.selectAllLabel;
|
|
362
411
|
/**
|
|
@@ -376,8 +425,6 @@ if (false) {
|
|
|
376
425
|
/** @type {?} */
|
|
377
426
|
MtxCheckboxGroupComponent.prototype.selectAllIndeterminate;
|
|
378
427
|
/** @type {?} */
|
|
379
|
-
MtxCheckboxGroupComponent.prototype.color;
|
|
380
|
-
/** @type {?} */
|
|
381
428
|
MtxCheckboxGroupComponent.prototype.selectedItems;
|
|
382
429
|
/** @type {?} */
|
|
383
430
|
MtxCheckboxGroupComponent.prototype._onChange;
|
|
@@ -388,5 +435,15 @@ if (false) {
|
|
|
388
435
|
* @private
|
|
389
436
|
*/
|
|
390
437
|
MtxCheckboxGroupComponent.prototype._changeDetectorRef;
|
|
438
|
+
/**
|
|
439
|
+
* @type {?}
|
|
440
|
+
* @private
|
|
441
|
+
*/
|
|
442
|
+
MtxCheckboxGroupComponent.prototype._focusMonitor;
|
|
443
|
+
/**
|
|
444
|
+
* @type {?}
|
|
445
|
+
* @private
|
|
446
|
+
*/
|
|
447
|
+
MtxCheckboxGroupComponent.prototype._elementRef;
|
|
391
448
|
}
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2NoZWNrYm94LWdyb3VwLyIsInNvdXJjZXMiOlsiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsZUFBZSxFQUNmLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3pELE1BQU0sT0FBTyxlQUFlOzs7OztJQUMxQixZQUFtQixLQUFXLEVBQVMsS0FBVztRQUEvQixVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBTTtJQUFHLENBQUM7Q0FDdkQ7OztJQURhLGdDQUFrQjs7SUFBRSxnQ0FBa0I7O0FBcUJwRCxNQUFNLE9BQU8seUJBQXlCOzs7O0lBMERwQyxZQUFvQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQTNDakQsV0FBTSxHQUE2QixFQUFFLENBQUM7UUFDdEMsbUJBQWMsR0FBNkIsRUFBRSxDQUFDO1FBRTdDLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDcEIsY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUNwQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLFlBQVksQ0FBQztRQXVCL0IsY0FBUyxHQUFHLEtB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QVcsRUFBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtvQkFHcEUsS0FBSzt3QkFjTCxLQUFLO3dCQUNMLEtBQUs7NEJBQ0wsS0FBSzs2QkFDTCxLQUFLOzBCQUNMLEtBQUs7dUJBZUwsS0FBSztxQkFTTCxNQUFNOzs7O0lBN0NQLGdEQUNvQzs7Ozs7SUFhcEMsMkNBQThDOzs7OztJQUM5QyxtREFBc0Q7O0lBRXRELDhDQUE2Qjs7SUFDN0IsOENBQTZCOztJQUM3QixrREFBK0I7O0lBQy9CLG1EQUF1Qzs7Ozs7SUFjdkMsaURBQW9EOzs7OztJQVNwRCw4Q0FBMEI7O0lBRTFCLDJDQUEwRjs7SUFFMUYsOENBQWtCOztJQUNsQiwyREFBK0I7O0lBRS9CLDBDQUErQjs7SUFFL0Isa0RBQTZDOztJQUU3Qyw4Q0FBa0U7O0lBQ2xFLCtDQUFvQzs7Ozs7SUFFeEIsdURBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTXR4Q2hlY2tib3hHcm91cE9wdGlvbiB9IGZyb20gJy4vY2hlY2tib3gtZ3JvdXAuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIE10eENoZWNrYm94QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsYWJlbD86IGFueSwgcHVibGljIHZhbHVlPzogYW55KSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtY2hlY2tib3gtZ3JvdXAnLFxuICBleHBvcnRBczogJ210eENoZWNrYm94R3JvdXAnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtdHgtY2hlY2tib3gtZ3JvdXAnLFxuICB9LFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdHhDaGVja2JveEdyb3VwQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE10eENoZWNrYm94R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBNYXRDaGVja2JveCksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX2NoZWNrYm94ZXM6IFF1ZXJ5TGlzdDxNYXRDaGVja2JveD47XG5cbiAgQElucHV0KClcbiAgZ2V0IGl0ZW1zKCk6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG4gIHNldCBpdGVtcyh2YWx1ZSkge1xuICAgIC8vIFRPRE86IERlZXAgY2xvbmVcbiAgICB0aGlzLl9vcmlnaW5hbEl0ZW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWUubWFwKG9wdGlvbiA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9uIGluc3RhbmNlb2YgT2JqZWN0ID8gb3B0aW9uIDogbmV3IE10eENoZWNrYm94QmFzZShvcHRpb24sIG9wdGlvbik7XG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBfaXRlbXM6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9vcmlnaW5hbEl0ZW1zOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10gPSBbXTtcblxuICBASW5wdXQoKSBiaW5kTGFiZWwgPSAnbGFiZWwnO1xuICBASW5wdXQoKSBiaW5kVmFsdWUgPSAndmFsdWUnO1xuICBASW5wdXQoKSBzaG93U2VsZWN0QWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdEFsbExhYmVsID0gJ1NlbGVjdCBBbGwnO1xuICBASW5wdXQoKVxuICBnZXQgY29tcGFyZVdpdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoO1xuICB9XG4gIHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBFcnJvcignYGNvbXBhcmVXaXRoYCBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKGZuKSB7XG4gICAgICB0aGlzLl9jb21wYXJlV2l0aCA9IGZuO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jb21wYXJlV2l0aDogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1vZGVsOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uW107IGluZGV4OiBudW1iZXIgfT4oKTtcblxuICBzZWxlY3RBbGwgPSBmYWxzZTtcbiAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuXG4gIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcblxuICBzZWxlY3RlZEl0ZW1zOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10gPSBbXTtcblxuICBfb25DaGFuZ2U6ICh2YWx1ZTogTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdKSA9PiB2b2lkID0gKCkgPT4gbnVsbDtcbiAgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCBzZWxlY3RzIGFuZCBvcHRpb24gYmFzZWQgb24gaXRzIHZhbHVlLlxuICAgKiBAcmV0dXJucyBPcHRpb24gdGhhdCBoYXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIF9zZWxlY3RWYWx1ZSh2YWx1ZTogTXR4Q2hlY2tib3hHcm91cE9wdGlvbikge1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSB0aGlzLml0ZW1zLmZpbmQoKG9wdGlvbjogTXR4Q2hlY2tib3hHcm91cE9wdGlvbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tcGFyZVZhbHVlID0gb3B0aW9uW3RoaXMuYmluZFZhbHVlXSA9PT0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlV2l0aCA/IHRoaXMuX2NvbXBhcmVXaXRoKG9wdGlvbiwgdmFsdWUpIDogY29tcGFyZVZhbHVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgIGNvcnJlc3BvbmRpbmdPcHRpb24uY2hlY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdPcHRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kZWwgdmFsdWUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBFcnJvcignVmFsdWUgbXVzdCBiZSBhbiBhcnJheS4nKTtcbiAgICAgIH1cblxuICAgICAgdmFsdWUuZm9yRWFjaCgoY3VycmVudFZhbHVlOiBhbnkpID0+IHRoaXMuX3NlbGVjdFZhbHVlKGN1cnJlbnRWYWx1ZSkpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hlY2tNYXN0ZXJDaGVja2JveFN0YXRlKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIG1vZGVsIHZhbHVlIGNoYW5nZXMuXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSByZWdpc3RlcmVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udHJvbCBpcyB0b3VjaGVkLlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb250cm9sLiBJbXBsZW1lbnRlZCBhcyBhIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tNYXN0ZXJDaGVja2JveFN0YXRlKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXRlbXNcbiAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQgfHwgIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgLmV2ZXJ5KG9wdGlvbiA9PiAhb3B0aW9uLmNoZWNrZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RBbGxJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXRlbXNcbiAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQgfHwgIW9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgLmV2ZXJ5KG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZClcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFNlbGVjdGVkSXRlbXMoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZCk7XG5cbiAgICBpZiAodGhpcy5fY29tcGFyZVdpdGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX29yaWdpbmFsSXRlbXMuZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZmluZChzZWxlY3RlZE9wdGlvbiA9PiB0aGlzLl9jb21wYXJlV2l0aChvcHRpb24sIHNlbGVjdGVkT3B0aW9uKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAob3B0aW9uID0+IG9wdGlvblt0aGlzLmJpbmRWYWx1ZV0pO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICB0aGlzLmNoYW5nZS5lbWl0KHsgbW9kZWw6IHRoaXMuc2VsZWN0ZWRJdGVtcywgaW5kZXggfSk7XG4gIH1cblxuICAvKiogSGFuZGxlIG5vcm1hbCBjaGVja2JveCB0b2dnbGUgKi9cbiAgX3VwZGF0ZU5vcm1hbENoZWNrYm94U3RhdGUoZTogYm9vbGVhbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrTWFzdGVyQ2hlY2tib3hTdGF0ZSgpO1xuICAgIHRoaXMuX2dldFNlbGVjdGVkSXRlbXMoaW5kZXgpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBtYXN0ZXIgY2hlY2tib3ggdG9nZ2xlICovXG4gIF91cGRhdGVNYXN0ZXJDaGVja2JveFN0YXRlKGU6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEFsbCA9ICF0aGlzLnNlbGVjdEFsbDtcbiAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5pdGVtc1xuICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZCB8fCAhb3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAuZm9yRWFjaChvcHRpb24gPT4gKG9wdGlvbi5jaGVja2VkID0gdHJ1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5mb3JFYWNoKG9wdGlvbiA9PiAob3B0aW9uLmNoZWNrZWQgPSAhIW9wdGlvbi5kaXNhYmxlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldFNlbGVjdGVkSXRlbXMoaW5kZXgpO1xuICB9XG59XG4iXX0=
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9uaXV6b25nYmluL1Byb2plY3RzL0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9wcm9qZWN0cy9leHRlbnNpb25zL2NoZWNrYm94LWdyb3VwLyIsInNvdXJjZXMiOlsiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRzVFLE1BQU0sT0FBTyxlQUFlOzs7OztJQUMxQixZQUFtQixLQUFXLEVBQVMsS0FBVztRQUEvQixVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBTTtJQUFHLENBQUM7Q0FDdkQ7OztJQURhLGdDQUFrQjs7SUFBRSxnQ0FBa0I7O0FBcUJwRCxNQUFNLE9BQU8seUJBQXlCOzs7Ozs7SUFtRXBDLFlBQ1Usa0JBQXFDLEVBQ3JDLGFBQTJCLEVBQzNCLFdBQW9DO1FBRnBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBdkR0QyxXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEIsY0FBUyxHQUFHLE9BQU8sQ0FBQztRQVNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV0QixtQkFBYyxHQUFHLFlBQVksQ0FBQztRQXdCL0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVoQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQXNELENBQUM7UUFFMUYsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFL0Isa0JBQWEsR0FBNkIsRUFBRSxDQUFDO1FBRTdDLGNBQVM7OztRQUE4QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUM7UUFDbEUsZUFBVTs7O1FBQWUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFDO0lBTWpDLENBQUM7Ozs7SUFuRUosSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBWTtRQUNwQixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxNQUFNLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFRRCxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7OztJQUtELElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDOzs7OztJQUNELElBQUksV0FBVyxDQUFDLEVBQWlDO1FBQy9DLElBQUksT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO1lBQzVCLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7OztJQUdELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7O0lBbUJELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVM7Ozs7UUFBQyxXQUFXLENBQUMsRUFBRTtZQUN6RSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQix5RkFBeUY7Z0JBQ3pGLDJGQUEyRjtnQkFDM0Ysb0ZBQW9GO2dCQUNwRixxRkFBcUY7Z0JBQ3JGLG9FQUFvRTtnQkFDcEUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUk7OztnQkFBQyxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN6QyxDQUFDLEVBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7O0lBTU8sWUFBWSxDQUFDLEtBQTZCOztjQUMxQyxtQkFBbUIsR0FBRyxDQUFDLG1CQUFBLElBQUksQ0FBQyxLQUFLLEVBQTRCLENBQUMsQ0FBQyxJQUFJOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakYsSUFBSTs7c0JBQ0ksWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSztnQkFDckQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQzVFO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsRUFBQztRQUVGLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsbUJBQW1CLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNwQztRQUVELE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQzs7Ozs7O0lBTUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekIsTUFBTSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUN4QztZQUVELEtBQUssQ0FBQyxPQUFPOzs7O1lBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQzs7Ozs7OztJQU9ELGdCQUFnQixDQUFDLEVBQTJDO1FBQzFELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7Ozs7SUFPRCxpQkFBaUIsQ0FBQyxFQUFZO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Ozs7OztJQU1ELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBRU8seUJBQXlCO1FBQy9CLElBQ0UsQ0FBQyxtQkFBQSxJQUFJLENBQUMsS0FBSyxFQUE0QixDQUFDO2FBQ3JDLE1BQU07Ozs7UUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFDO2FBQ3BELEtBQUs7Ozs7UUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxFQUNuQztZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7U0FDckM7YUFBTSxJQUNMLENBQUMsbUJBQUEsSUFBSSxDQUFDLEtBQUssRUFBNEIsQ0FBQzthQUNyQyxNQUFNOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBQzthQUNwRCxLQUFLOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFDLEVBQ2xDO1lBQ0EsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztTQUNwQztJQUNILENBQUM7Ozs7OztJQUVPLGlCQUFpQixDQUFDLEtBQWE7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLG1CQUFBLElBQUksQ0FBQyxLQUFLLEVBQTRCLENBQUMsQ0FBQyxNQUFNOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFDLENBQUM7UUFFL0YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxtQkFBQSxJQUFJLENBQUMsY0FBYyxFQUE0QixDQUFDLENBQUMsTUFBTTs7OztZQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3JGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSTs7OztZQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLEVBQUMsRUFDckYsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRzs7OztZQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDO1NBQy9FO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Ozs7Ozs7SUFHRCwwQkFBMEIsQ0FBQyxDQUFvQixFQUFFLEtBQWE7UUFDNUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7Ozs7SUFHRCwwQkFBMEIsQ0FBQyxDQUFvQixFQUFFLEtBQWE7UUFDNUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsQ0FBQyxtQkFBQSxJQUFJLENBQUMsS0FBSyxFQUE0QixDQUFDO2lCQUNyQyxNQUFNOzs7O1lBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBQztpQkFDcEQsT0FBTzs7OztZQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFDLENBQUM7U0FDL0M7YUFBTTtZQUNMLENBQUMsbUJBQUEsSUFBSSxDQUFDLEtBQUssRUFBNEIsQ0FBQztpQkFDckMsTUFBTTs7OztZQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUM7aUJBQ3BELE9BQU87Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7U0FDNUQ7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7O1lBM09GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLG9CQUFvQjtpQkFDNUI7Z0JBQ0QsOGhDQUE4QztnQkFFOUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozt3QkFBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsRUFBQzt3QkFDeEQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7O2FBQ0Y7Ozs7WUFuQ0MsaUJBQWlCO1lBU1YsWUFBWTtZQUpuQixVQUFVOzs7MEJBZ0NULGVBQWUsU0FBQyxVQUFVOzs7Z0JBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO29CQUdwRSxLQUFLO3dCQWNMLEtBQUs7d0JBRUwsS0FBSzs0QkFFTCxLQUFLOzZCQVNMLEtBQUs7MEJBRUwsS0FBSzt1QkFlTCxLQUFLO3FCQVNMLE1BQU07Ozs7SUF4RFAsZ0RBQ29DOzs7OztJQWFwQywyQ0FBMkI7Ozs7O0lBQzNCLG1EQUFtQzs7SUFFbkMsOENBQTZCOztJQUU3Qiw4Q0FBNkI7Ozs7O0lBUzdCLG1EQUErQjs7SUFFL0IsbURBQXVDOzs7OztJQWV2QyxpREFBb0Q7Ozs7O0lBU3BELDhDQUEwQjs7SUFFMUIsMkNBQTBGOztJQUUxRiw4Q0FBa0I7O0lBQ2xCLDJEQUErQjs7SUFFL0Isa0RBQTZDOztJQUU3Qyw4Q0FBa0U7O0lBQ2xFLCtDQUFvQzs7Ozs7SUFHbEMsdURBQTZDOzs7OztJQUM3QyxrREFBbUM7Ozs7O0lBQ25DLGdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBmb3J3YXJkUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNdHhDaGVja2JveEdyb3VwT3B0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1ncm91cC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgTXR4Q2hlY2tib3hCYXNlIHtcbiAgY29uc3RydWN0b3IocHVibGljIGxhYmVsPzogYW55LCBwdWJsaWMgdmFsdWU/OiBhbnkpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jaGVja2JveC1ncm91cCcsXG4gIGV4cG9ydEFzOiAnbXR4Q2hlY2tib3hHcm91cCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ210eC1jaGVja2JveC1ncm91cCcsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE10eENoZWNrYm94R3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q2hlY2tib3hHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gTWF0Q2hlY2tib3gpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIF9jaGVja2JveGVzOiBRdWVyeUxpc3Q8TWF0Q2hlY2tib3g+O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cbiAgc2V0IGl0ZW1zKHZhbHVlOiBhbnlbXSkge1xuICAgIC8vIFRPRE86IERlZXAgY2xvbmVcbiAgICB0aGlzLl9vcmlnaW5hbEl0ZW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWUubWFwKG9wdGlvbiA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9uIGluc3RhbmNlb2YgT2JqZWN0ID8gb3B0aW9uIDogbmV3IE10eENoZWNrYm94QmFzZShvcHRpb24sIG9wdGlvbik7XG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBfaXRlbXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgX29yaWdpbmFsSXRlbXM6IGFueVtdID0gW107XG5cbiAgQElucHV0KCkgYmluZExhYmVsID0gJ2xhYmVsJztcblxuICBASW5wdXQoKSBiaW5kVmFsdWUgPSAndmFsdWUnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzaG93U2VsZWN0QWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93U2VsZWN0QWxsO1xuICB9XG4gIHNldCBzaG93U2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1NlbGVjdEFsbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfc2hvd1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNlbGVjdEFsbExhYmVsID0gJ1NlbGVjdCBBbGwnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjb21wYXJlV2l0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGg7XG4gIH1cbiAgc2V0IGNvbXBhcmVXaXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IEVycm9yKCdgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgIHRoaXMuX2NvbXBhcmVXaXRoID0gZm47XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2NvbXBhcmVXaXRoOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbW9kZWw6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXTsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gIHNlbGVjdEFsbCA9IGZhbHNlO1xuICBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgc2VsZWN0ZWRJdGVtczogTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdID0gW107XG5cbiAgX29uQ2hhbmdlOiAodmFsdWU6IE10eENoZWNrYm94R3JvdXBPcHRpb25bXSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG4gIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShmb2N1c09yaWdpbiA9PiB7XG4gICAgICBpZiAoIWZvY3VzT3JpZ2luKSB7XG4gICAgICAgIC8vIFdoZW4gYSBmb2N1c2VkIGVsZW1lbnQgYmVjb21lcyBkaXNhYmxlZCwgdGhlIGJyb3dzZXIgKmltbWVkaWF0ZWx5KiBmaXJlcyBhIGJsdXIgZXZlbnQuXG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lcyBub3QgZXhwZWN0IGV2ZW50cyB0byBiZSByYWlzZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24sIHNvIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xNzc5My4gVG8gd29yayBhcm91bmQgdGhpcywgd2UgZGVmZXJcbiAgICAgICAgLy8gdGVsbGluZyB0aGUgZm9ybSBjb250cm9sIGl0IGhhcyBiZWVuIHRvdWNoZWQgdW50aWwgdGhlIG5leHQgdGljay5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuZCBzZWxlY3RzIGFuZCBvcHRpb24gYmFzZWQgb24gaXRzIHZhbHVlLlxuICAgKiBAcmV0dXJucyBPcHRpb24gdGhhdCBoYXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIF9zZWxlY3RWYWx1ZSh2YWx1ZTogTXR4Q2hlY2tib3hHcm91cE9wdGlvbikge1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pLmZpbmQob3B0aW9uID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVWYWx1ZSA9IG9wdGlvblt0aGlzLmJpbmRWYWx1ZV0gPT09IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGggPyB0aGlzLl9jb21wYXJlV2l0aChvcHRpb24sIHZhbHVlKSA6IGNvbXBhcmVWYWx1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICBjb3JyZXNwb25kaW5nT3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjb3JyZXNwb25kaW5nT3B0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1vZGVsIHZhbHVlLiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIG1vZGVsLlxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYW4gYXJyYXkuJyk7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlLmZvckVhY2goKGN1cnJlbnRWYWx1ZTogYW55KSA9PiB0aGlzLl9zZWxlY3RWYWx1ZShjdXJyZW50VmFsdWUpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX2NoZWNrTWFzdGVyQ2hlY2tib3hTdGF0ZSgpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBtb2RlbCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaXMgdG91Y2hlZC5cbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrTWFzdGVyQ2hlY2tib3hTdGF0ZSgpIHtcbiAgICBpZiAoXG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5ldmVyeShvcHRpb24gPT4gIW9wdGlvbi5jaGVja2VkKVxuICAgICkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5ldmVyeShvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGxJbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRTZWxlY3RlZEl0ZW1zKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmNoZWNrZWQpO1xuXG4gICAgaWYgKHRoaXMuX2NvbXBhcmVXaXRoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSAodGhpcy5fb3JpZ2luYWxJdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pLmZpbHRlcihvcHRpb24gPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmQoc2VsZWN0ZWRPcHRpb24gPT4gdGhpcy5fY29tcGFyZVdpdGgob3B0aW9uLCBzZWxlY3RlZE9wdGlvbikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5iaW5kVmFsdWVdKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7IG1vZGVsOiB0aGlzLnNlbGVjdGVkSXRlbXMsIGluZGV4IH0pO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBub3JtYWwgY2hlY2tib3ggdG9nZ2xlICovXG4gIF91cGRhdGVOb3JtYWxDaGVja2JveFN0YXRlKGU6IE1hdENoZWNrYm94Q2hhbmdlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tNYXN0ZXJDaGVja2JveFN0YXRlKCk7XG4gICAgdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtcyhpbmRleCk7XG4gIH1cblxuICAvKiogSGFuZGxlIG1hc3RlciBjaGVja2JveCB0b2dnbGUgKi9cbiAgX3VwZGF0ZU1hc3RlckNoZWNrYm94U3RhdGUoZTogTWF0Q2hlY2tib3hDaGFuZ2UsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEFsbCA9ICF0aGlzLnNlbGVjdEFsbDtcbiAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgKHRoaXMuaXRlbXMgYXMgTXR4Q2hlY2tib3hHcm91cE9wdGlvbltdKVxuICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uY2hlY2tlZCB8fCAhb3B0aW9uLmRpc2FibGVkKVxuICAgICAgICAuZm9yRWFjaChvcHRpb24gPT4gKG9wdGlvbi5jaGVja2VkID0gdHJ1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAodGhpcy5pdGVtcyBhcyBNdHhDaGVja2JveEdyb3VwT3B0aW9uW10pXG4gICAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5jaGVja2VkIHx8ICFvcHRpb24uZGlzYWJsZWQpXG4gICAgICAgIC5mb3JFYWNoKG9wdGlvbiA9PiAob3B0aW9uLmNoZWNrZWQgPSAhIW9wdGlvbi5kaXNhYmxlZCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldFNlbGVjdGVkSXRlbXMoaW5kZXgpO1xuICB9XG59XG4iXX0=
|
|
@@ -45,6 +45,7 @@ export class MtxColorPickerComponent {
|
|
|
45
45
|
this._focused = false;
|
|
46
46
|
this._required = false;
|
|
47
47
|
this._disabled = false;
|
|
48
|
+
this._readonly = false;
|
|
48
49
|
this.errorState = false;
|
|
49
50
|
/**
|
|
50
51
|
* A name for this control that can be used by `mat-form-field`.
|
|
@@ -200,6 +201,20 @@ export class MtxColorPickerComponent {
|
|
|
200
201
|
this._disabled = coerceBooleanProperty(value);
|
|
201
202
|
this.stateChanges.next();
|
|
202
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Whether the element is readonly.
|
|
206
|
+
* @return {?}
|
|
207
|
+
*/
|
|
208
|
+
get readonly() {
|
|
209
|
+
return this._readonly;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* @param {?} value
|
|
213
|
+
* @return {?}
|
|
214
|
+
*/
|
|
215
|
+
set readonly(value) {
|
|
216
|
+
this._readonly = coerceBooleanProperty(value);
|
|
217
|
+
}
|
|
203
218
|
/**
|
|
204
219
|
* @return {?}
|
|
205
220
|
*/
|
|
@@ -332,7 +347,7 @@ export class MtxColorPickerComponent {
|
|
|
332
347
|
*/
|
|
333
348
|
_onColorChanged(model) {
|
|
334
349
|
this.value = model.color.hex;
|
|
335
|
-
this.colorChange.emit(
|
|
350
|
+
this.colorChange.emit(model);
|
|
336
351
|
}
|
|
337
352
|
/**
|
|
338
353
|
* Stream of clicks outside of the color picker panel.
|
|
@@ -348,9 +363,7 @@ export class MtxColorPickerComponent {
|
|
|
348
363
|
// If we're in the Shadow DOM, the event target will be the shadow root, so we have to
|
|
349
364
|
// fall back to check the first element in the path of the click event.
|
|
350
365
|
/** @type {?} */
|
|
351
|
-
const clickTarget = (/** @type {?} */ ((this._isInsideShadowRoot && event.composedPath
|
|
352
|
-
? event.composedPath()[0]
|
|
353
|
-
: event.target)));
|
|
366
|
+
const clickTarget = (/** @type {?} */ ((this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] : event.target)));
|
|
354
367
|
/** @type {?} */
|
|
355
368
|
const formField = this._formField ? this._formField._elementRef.nativeElement : null;
|
|
356
369
|
return (clickTarget !== this._elementRef.nativeElement &&
|
|
@@ -362,7 +375,7 @@ MtxColorPickerComponent.decorators = [
|
|
|
362
375
|
{ type: Component, args: [{
|
|
363
376
|
selector: 'mtx-color-picker',
|
|
364
377
|
exportAs: 'mtxColorPicker',
|
|
365
|
-
template: "<input matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (focus)=\"_handleFocus()\"\n autocomplete=\"off\">\n\n<div #colorPickerTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"colorPickerPopover\"\n (menuOpened)=\"_openPanel()\"\n (menuClosed)=\"_closePanel()\">\n</div>\n\n<mat-menu #colorPickerPopover=\"matMenu\" class=\"mtx-color-picker-panel\" [hasBackdrop]=\"false\">\n <div class=\"mtx-color-picker\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n <color-chrome [color]=\"value\" (onChangeComplete)=\"_onColorChanged($event)\"></color-chrome>\n </div>\n</mat-menu>\n",
|
|
378
|
+
template: "<input matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (focus)=\"_handleFocus()\"\n autocomplete=\"off\">\n\n<div #colorPickerTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"colorPickerPopover\"\n (menuOpened)=\"_openPanel()\"\n (menuClosed)=\"_closePanel()\">\n</div>\n\n<mat-menu #colorPickerPopover=\"matMenu\" class=\"mtx-color-picker-panel\" [hasBackdrop]=\"false\">\n <div class=\"mtx-color-picker\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n <color-chrome [color]=\"value\" (onChangeComplete)=\"_onColorChanged($event)\"></color-chrome>\n </div>\n</mat-menu>\n",
|
|
366
379
|
encapsulation: ViewEncapsulation.None,
|
|
367
380
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
368
381
|
providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],
|
|
@@ -385,10 +398,15 @@ MtxColorPickerComponent.propDecorators = {
|
|
|
385
398
|
placeholder: [{ type: Input }],
|
|
386
399
|
required: [{ type: Input }],
|
|
387
400
|
disabled: [{ type: Input }],
|
|
401
|
+
readonly: [{ type: Input }],
|
|
388
402
|
colorChange: [{ type: Output }],
|
|
389
403
|
trigger: [{ type: ViewChild, args: [MatMenuTrigger, { static: true },] }]
|
|
390
404
|
};
|
|
391
405
|
if (false) {
|
|
406
|
+
/** @type {?} */
|
|
407
|
+
MtxColorPickerComponent.ngAcceptInputType_required;
|
|
408
|
+
/** @type {?} */
|
|
409
|
+
MtxColorPickerComponent.ngAcceptInputType_disabled;
|
|
392
410
|
/**
|
|
393
411
|
* @type {?}
|
|
394
412
|
* @private
|
|
@@ -430,6 +448,11 @@ if (false) {
|
|
|
430
448
|
* @private
|
|
431
449
|
*/
|
|
432
450
|
MtxColorPickerComponent.prototype._disabled;
|
|
451
|
+
/**
|
|
452
|
+
* @type {?}
|
|
453
|
+
* @private
|
|
454
|
+
*/
|
|
455
|
+
MtxColorPickerComponent.prototype._readonly;
|
|
433
456
|
/** @type {?} */
|
|
434
457
|
MtxColorPickerComponent.prototype.errorState;
|
|
435
458
|
/**
|
|
@@ -524,4 +547,4 @@ if (false) {
|
|
|
524
547
|
*/
|
|
525
548
|
MtxColorPickerComponent.prototype._document;
|
|
526
549
|
}
|
|
527
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbml1em9uZ2Jpbi9Qcm9qZWN0cy9AbmctbWF0ZXJvL2V4dGVuc2lvbnMvcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvci1waWNrZXIvIiwic291cmNlcyI6WyJjb2xvci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixRQUFRLEVBQ1IsSUFBSSxFQUNKLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUNULElBQUksRUFFSixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0lBSXBDLFlBQVksR0FBRyxDQUFDO0FBV3BCLE1BQU0sT0FBTyx1QkFBdUI7Ozs7Ozs7Ozs7SUEySGxDLFlBQ1UsYUFBMkIsRUFDM0IsV0FBb0Ms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WUFwQlEsWUFBWTtZQWJuQixVQUFVO1lBSlYsaUJBQWlCO1lBYWpCLE1BQU07WUFHdUIsU0FBUyx1QkFzSm5DLFFBQVEsWUFBSSxJQUFJO1lBbEpTLFlBQVksdUJBbUpyQyxRQUFRLFlBQUksSUFBSTs0Q0FDaEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxRQUFROzs7b0JBL0g3QixLQUFLO2lCQWtCTCxLQUFLOzBCQVdMLEtBQUs7dUJBd0JMLEtBQUs7dUJBVUwsS0FBSzswQkF5QkwsTUFBTTtzQkFFTixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7Ozs7OztJQWpGM0MseUNBQW1DOzs7OztJQUduQywrQ0FBMkQ7Ozs7OztJQUczRCx1Q0FBb0Q7Ozs7O0lBV3BELHNDQUFvQjs7Ozs7SUFXcEIsK0NBQTZCOzs7OztJQU03QiwyQ0FBeUI7Ozs7O0lBa0J6Qiw0Q0FBMEI7Ozs7O0lBVTFCLDRDQUEwQjs7SUFFMUIsNkNBQW1COzs7OztJQUduQiw4Q0FBaUM7Ozs7O0lBR2pDLG1EQUF5Qjs7Ozs7SUFHekIsNENBQTJDOzs7OztJQUczQyw2Q0FBc0I7Ozs7O0lBR3RCLDhDQUEwRjs7SUFFMUYsMENBQXFFOzs7OztJQUdyRSw2Q0FBbUI7Ozs7OztJQUduQiw4REFBa0Q7Ozs7OztJQUdsRCxzREFBcUM7Ozs7Ozs7O0lBT3JDLHNEQUFtQzs7Ozs7OztJQU1uQyxxREFNRTs7Ozs7SUFHQSxnREFBbUM7Ozs7O0lBQ25DLDhDQUE0Qzs7Ozs7SUFDNUMscURBQTZDOzs7OztJQUM3Qyx3Q0FBcUI7O0lBQ3JCLDRDQUErQzs7Ozs7SUFDL0MsNkNBQW9EOzs7OztJQUNwRCw0Q0FBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBEb0NoZWNrLFxuICBWaWV3Q2hpbGQsXG4gIEhvc3QsXG4gIEFmdGVyVmlld0luaXQsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IF9zdXBwb3J0c1NoYWRvd0RvbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sLCBNYXRGb3JtRmllbGQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBtZXJnZSwgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICduZ3gtY29sb3InO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWNvbG9yLXBpY2tlcicsXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JQaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNdHhDb2xvclBpY2tlckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIERvQ2hlY2ssIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT4ge1xuICAvKiogVmFsdWUgb2YgdGhlIGNvbG9yIHBpY2tlciBjb250cm9sLiAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5fb25DaGFuZ2UobmV3VmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuICovXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIFVuaXF1ZSBpZCBmb3IgdGhpcyBpbnB1dC4gKi9cbiAgcHJpdmF0ZSBfdWlkID0gYG10eC1jb2xvci1waWNrZXItJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gIC8qKiBVbmlxdWUgaWQgb2YgdGhlIGVsZW1lbnQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9pZDogc3RyaW5nO1xuXG4gIC8qKiBQbGFjZWhvbGRlciB0byBiZSBzaG93biBpZiB2YWx1ZSBpcyBlbXB0eS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgaW5wdXQgaXMgZm9jdXNlZC4gKi9cbiAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWQgfHwgdGhpcy5fcGFuZWxPcGVuO1xuICB9XG4gIHByaXZhdGUgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGVycm9yU3RhdGUgPSBmYWxzZTtcblxuICAvKiogQSBuYW1lIGZvciB0aGlzIGNvbnRyb2wgdGhhdCBjYW4gYmUgdXNlZCBieSBgbWF0LWZvcm0tZmllbGRgLiAqL1xuICBjb250cm9sVHlwZSA9ICdtdHgtY29sb3ItcGlja2VyJztcblxuICAvKiogVGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIG9uIHRoZSBjb2xvciBwaWNrZXIgZm9yIGltcHJvdmVkIGExMXkuICovXG4gIF9hcmlhRGVzY3JpYmVkYnk6IHN0cmluZztcblxuICAvKiogYFZpZXcgLT4gbW9kZWwgY2FsbGJhY2sgY2FsbGVkIHdoZW4gdmFsdWUgY2hhbmdlc2AgKi9cbiAgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIC8qKiBgVmlldyAtPiBtb2RlbCBjYWxsYmFjayBjYWxsZWQgd2hlbiBjb2xvciBwaWNrZXIgaGFzIGJlZW4gdG91Y2hlZGAgKi9cbiAgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNvbG9yIGNoYW5nZWQgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNvbG9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbG9yOiBDb2xvcjsgJGV2ZW50OiBNb3VzZUV2ZW50IH0+KCk7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlciwgeyBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBvdmVybGF5IHBhbmVsIGlzIG9wZW4uICovXG4gIF9wYW5lbE9wZW4gPSBmYWxzZTtcblxuICAvKiogVGhlIHN1YnNjcmlwdGlvbiBmb3IgY2xvc2luZyBhY3Rpb25zIChzb21lIGFyZSBib3VuZCB0byBkb2N1bWVudCkuICovXG4gIHByaXZhdGUgX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIG9mIGEgU2hhZG93Um9vdCBjb21wb25lbnQuICovXG4gIHByaXZhdGUgX2lzSW5zaWRlU2hhZG93Um9vdDogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29sb3IgcGlja2VyIGNhbiBvcGVuIHRoZSBuZXh0IHRpbWUgaXQgaXMgZm9jdXNlZC4gVXNlZCB0byBwcmV2ZW50IGEgZm9jdXNlZCxcbiAgICogY2xvc2VkIGNvbG9yIHBpY2tlciBmcm9tIGJlaW5nIHJlb3BlbmVkIGlmIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGFub3RoZXIgYnJvd3NlciB0YWIgYW5kIHRoZW5cbiAgICogY29tZXMgYmFjay5cbiAgICovXG4gIHByaXZhdGUgX2Nhbk9wZW5Pbk5leHRGb2N1cyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gdGhlIHdpbmRvdyBpcyBibHVycmVkLiBOZWVkcyB0byBiZSBhblxuICAgKiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgX3dpbmRvd0JsdXJIYW5kbGVyID0gKCkgPT4ge1xuICAgIC8vIElmIHRoZSB1c2VyIGJsdXJyZWQgdGhlIHdpbmRvdyB3aGlsZSB0aGUgY29sb3IgcGlja2VyIGlzIGZvY3VzZWQsIGl0IG1lYW5zIHRoYXQgaXQnbGwgYmVcbiAgICAvLyByZWZvY3VzZWQgd2hlbiB0aGV5IGNvbWUgYmFjay4gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gc2tpcCB0aGUgZmlyc3QgZm9jdXMgZXZlbnQsIGlmIHRoZVxuICAgIC8vIHBhbmUgd2FzIGNsb3NlZCwgaW4gb3JkZXIgdG8gYXZvaWQgcmVvcGVuaW5nIGl0IHVuaW50ZW50aW9uYWxseS5cbiAgICB0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXMgPVxuICAgICAgdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IHx8IHRoaXMuX3BhbmVsT3BlbjtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIEBIb3N0KCkgcHJpdmF0ZSBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueVxuICApIHtcbiAgICBfZm9jdXNNb25pdG9yLm1vbml0b3IoX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xuICAgICAgaWYgKHRoaXMuX2ZvY3VzZWQgJiYgIW9yaWdpbikge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2ZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLmVycm9yU3RhdGUgPSAodGhpcy5uZ0NvbnRyb2wuaW52YWxpZCAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkKSBhcyBib29sZWFuO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3N1cHBvcnRzU2hhZG93RG9tKCkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSBlbGVtZW50LmdldFJvb3ROb2RlID8gZWxlbWVudC5nZXRSb290Tm9kZSgpIDogbnVsbDtcblxuICAgICAgICAvLyBXZSBuZWVkIHRvIHRha2UgdGhlIGBTaGFkb3dSb290YCBvZmYgb2YgYHdpbmRvd2AsIGJlY2F1c2UgdGhlIGJ1aWx0LWluIHR5cGVzIGFyZVxuICAgICAgICAvLyBpbmNvcnJlY3QuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzI3OTI5LlxuICAgICAgICB0aGlzLl9pc0luc2lkZVNoYWRvd1Jvb3QgPSByb290Tm9kZSBpbnN0YW5jZW9mICh3aW5kb3cgYXMgYW55KS5TaGFkb3dSb290O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC4gKi9cbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2FyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLiAqL1xuICBvbkNvbnRhaW5lckNsaWNrKCkge1xuICAgIHRoaXMuX2hhbmRsZUZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbW9kZWwgdmFsdWUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBtb2RlbCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaXMgdG91Y2hlZC5cbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hldGhlciB0aGUgY29udHJvbCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKiBPcGVuIHBhbmVsIHdpdGggaW5wdXQgZm9jdXMgZXZlbnQuICovXG4gIF9oYW5kbGVGb2N1cygpIHtcbiAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcblxuICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uID0gbWVyZ2UodGhpcy5fZ2V0T3V0c2lkZUNsaWNrU3RyZWFtKCkpXG4gICAgICAucGlwZSgpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgICB0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogT3BlbnMgdGhlIG92ZXJsYXkgcGFuZWwuICovXG4gIF9vcGVuUGFuZWwoKSB7XG4gICAgaWYgKHRoaXMuX2ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuX3BhbmVsT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgb3ZlcmxheSBwYW5lbCBhbmQgZm9jdXNlcyB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICBfY2xvc2VQYW5lbCgpIHtcbiAgICBpZiAodGhpcy5fcGFuZWxPcGVuKSB7XG4gICAgICB0aGlzLl9wYW5lbE9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBjYWxsYmFjayBvZiBjb2xvciBjaGFuZ2VkLiAqL1xuICBfb25Db2xvckNoYW5nZWQobW9kZWw6IHsgY29sb3I6IENvbG9yOyAkZXZlbnQ6IE1vdXNlRXZlbnQgfSkge1xuICAgIHRoaXMudmFsdWUgPSBtb2RlbC5jb2xvci5oZXg7XG4gICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KHsgY29sb3I6IG1vZGVsLmNvbG9yLCAkZXZlbnQ6IG1vZGVsLiRldmVudCB9KTtcbiAgfVxuXG4gIC8qKiBTdHJlYW0gb2YgY2xpY2tzIG91dHNpZGUgb2YgdGhlIGNvbG9yIHBpY2tlciBwYW5lbC4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3V0c2lkZUNsaWNrU3RyZWFtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAnY2xpY2snKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAndG91Y2hlbmQnKSBhcyBPYnNlcnZhYmxlPFRvdWNoRXZlbnQ+XG4gICAgKS5waXBlKFxuICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgLy8gSWYgd2UncmUgaW4gdGhlIFNoYWRvdyBET00sIHRoZSBldmVudCB0YXJnZXQgd2lsbCBiZSB0aGUgc2hhZG93IHJvb3QsIHNvIHdlIGhhdmUgdG9cbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBwYXRoIG9mIHRoZSBjbGljayBldmVudC5cbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSAodGhpcy5faXNJbnNpZGVTaGFkb3dSb290ICYmIGV2ZW50LmNvbXBvc2VkUGF0aFxuICAgICAgICAgID8gZXZlbnQuY29tcG9zZWRQYXRoKClbMF1cbiAgICAgICAgICA6IGV2ZW50LnRhcmdldCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuX2Zvcm1GaWVsZCA/IHRoaXMuX2Zvcm1GaWVsZC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IDogbnVsbDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNsaWNrVGFyZ2V0ICE9PSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAoIWZvcm1GaWVsZCB8fCAhZm9ybUZpZWxkLmNvbnRhaW5zKGNsaWNrVGFyZ2V0KSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvbml1em9uZ2Jpbi9Qcm9qZWN0cy9AbmctbWF0ZXJvL2V4dGVuc2lvbnMvcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvci1waWNrZXIvIiwic291cmNlcyI6WyJjb2xvci1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixRQUFRLEVBQ1IsSUFBSSxFQUNKLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUNULElBQUksRUFFSixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUlwQyxZQUFZLEdBQUcsQ0FBQztBQVdwQixNQUFNLE9BQU8sdUJBQXVCOzs7Ozs7Ozs7O0lBc0lsQyxZQUNVLGFBQTJCLEVBQzNCLFdBQW9DLEVBQ3BDLGtCQUFxQyxFQUNyQyxLQUFhLEVBQ00sU0FBb0IsRUFDbkIsVUFBd0IsRUFDZCxTQUFjO1FBTjVDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDTSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFLO1FBaEk5QyxXQUFNLEdBQWtCLEVBQUUsQ0FBQzs7OztRQUcxQixpQkFBWSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDOzs7O1FBR25ELFNBQUksR0FBRyxvQkFBb0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQTRCNUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWtCakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVVsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBVWxCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsZUFBVSxHQUFHLEtBQUssQ0FBQzs7OztRQUduQixnQkFBVyxHQUFHLGtCQUFrQixDQUFDOzs7O1FBTWpDLGNBQVM7OztRQUF5QixHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUM7Ozs7UUFHM0MsZUFBVTs7O1FBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFDOzs7O1FBR0gsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDOzs7O1FBS2hFLGVBQVUsR0FBRyxLQUFLLENBQUM7Ozs7OztRQWFYLHdCQUFtQixHQUFHLElBQUksQ0FBQzs7Ozs7UUFNM0IsdUJBQWtCOzs7UUFBRyxHQUFHLEVBQUU7WUFDaEMsMkZBQTJGO1lBQzNGLDRGQUE0RjtZQUM1RixtRUFBbUU7WUFDbkUsSUFBSSxDQUFDLG1CQUFtQjtnQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN2RixDQUFDLEVBQUM7UUFXQSxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUM1QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7Ozs7SUF0SkQsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBdUI7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBVUQsSUFDSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Ozs7O0lBQ0QsSUFBSSxFQUFFLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFJRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Ozs7SUFJRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMxQyxDQUFDOzs7O0lBR0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7OztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQzs7OztJQUVELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Ozs7SUFHRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7OztJQUlELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7O0lBd0VELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBQSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQVcsQ0FBQztZQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7OztJQUVELGVBQWU7UUFDYixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQjs7O1lBQUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzNELENBQUMsRUFBQyxDQUFDO1lBRUgsSUFBSSxrQkFBa0IsRUFBRSxFQUFFOztzQkFDbEIsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTs7c0JBQ3hDLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBRW5FLG1GQUFtRjtnQkFDbkYsdUVBQXVFO2dCQUN2RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxZQUFZLENBQUMsbUJBQUEsTUFBTSxFQUFPLENBQUMsQ0FBQyxVQUFVLENBQUM7YUFDM0U7U0FDRjtJQUNILENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7O0lBR0QsaUJBQWlCLENBQUMsR0FBYTtRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7OztJQUdELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7Ozs7SUFNRCxVQUFVLENBQUMsS0FBb0I7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7O0lBT0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7Ozs7O0lBT0QsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7Ozs7SUFNRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzs7OztJQUdELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7YUFDcEUsSUFBSSxFQUFFO2FBQ04sU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7SUFHRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7Ozs7SUFHRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOzs7Ozs7SUFHRCxlQUFlLENBQUMsS0FBaUI7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzs7Ozs7SUFHTyxzQkFBc0I7UUFDNUIsT0FBTyxLQUFLLENBQ1YsbUJBQUEsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQTBCLEVBQzVELG1CQUFBLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUEwQixDQUNoRSxDQUFDLElBQUksQ0FDSixNQUFNOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUU7Ozs7a0JBR1AsV0FBVyxHQUFHLG1CQUFBLENBQ2xCLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3hGLEVBQWU7O2tCQUNWLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFFcEYsT0FBTyxDQUNMLFdBQVcsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7Z0JBQzlDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ2pELENBQUM7UUFDSixDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7O1lBclNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixzdkJBQTRDO2dCQUU1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxDQUFDOzthQUNwRjs7OztZQXBCUSxZQUFZO1lBYm5CLFVBQVU7WUFKVixpQkFBaUI7WUFhakIsTUFBTTtZQUd1QixTQUFTLHVCQWlLbkMsUUFBUSxZQUFJLElBQUk7WUE3SlMsWUFBWSx1QkE4SnJDLFFBQVEsWUFBSSxJQUFJOzRDQUNoQixRQUFRLFlBQUksTUFBTSxTQUFDLFFBQVE7OztvQkF6STdCLEtBQUs7aUJBa0JMLEtBQUs7MEJBV0wsS0FBSzt1QkF3QkwsS0FBSzt1QkFVTCxLQUFLO3VCQVdMLEtBQUs7MEJBd0JMLE1BQU07c0JBRU4sU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Ozs7SUFzTDNDLG1EQUFnRDs7SUFDaEQsbURBQWdEOzs7OztJQWxSaEQseUNBQW1DOzs7OztJQUduQywrQ0FBMkQ7Ozs7OztJQUczRCx1Q0FBb0Q7Ozs7O0lBV3BELHNDQUFvQjs7Ozs7SUFXcEIsK0NBQTZCOzs7OztJQU03QiwyQ0FBeUI7Ozs7O0lBa0J6Qiw0Q0FBMEI7Ozs7O0lBVTFCLDRDQUEwQjs7Ozs7SUFVMUIsNENBQTBCOztJQUUxQiw2Q0FBbUI7Ozs7O0lBR25CLDhDQUFpQzs7Ozs7SUFHakMsbURBQXlCOzs7OztJQUd6Qiw0Q0FBMkM7Ozs7O0lBRzNDLDZDQUFzQjs7Ozs7SUFHdEIsOENBQWdFOztJQUVoRSwwQ0FBcUU7Ozs7O0lBR3JFLDZDQUFtQjs7Ozs7O0lBR25CLDhEQUFrRDs7Ozs7O0lBR2xELHNEQUFxQzs7Ozs7Ozs7SUFPckMsc0RBQW1DOzs7Ozs7O0lBTW5DLHFEQU1FOzs7OztJQUdBLGdEQUFtQzs7Ozs7SUFDbkMsOENBQTRDOzs7OztJQUM1QyxxREFBNkM7Ozs7O0lBQzdDLHdDQUFxQjs7SUFDckIsNENBQStDOzs7OztJQUMvQyw2Q0FBb0Q7Ozs7O0lBQ3BELDRDQUFvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIERvQ2hlY2ssXG4gIFZpZXdDaGlsZCxcbiAgSG9zdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBfc3VwcG9ydHNTaGFkb3dEb20gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCwgTWF0Rm9ybUZpZWxkIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgbWVyZ2UsIGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbG9yRXZlbnQgfSBmcm9tICduZ3gtY29sb3InO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWNvbG9yLXBpY2tlcicsXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JQaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNdHhDb2xvclBpY2tlckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIERvQ2hlY2ssIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBNYXRGb3JtRmllbGRDb250cm9sPGFueT5cbntcbiAgLyoqIFZhbHVlIG9mIHRoZSBjb2xvciBwaWNrZXIgY29udHJvbC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUobmV3VmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuX29uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IG51bGwgPSAnJztcblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLiAqL1xuICByZWFkb25seSBzdGF0ZUNoYW5nZXM6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBVbmlxdWUgaWQgZm9yIHRoaXMgaW5wdXQuICovXG4gIHByaXZhdGUgX3VpZCA9IGBtdHgtY29sb3ItcGlja2VyLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAvKiogVW5pcXVlIGlkIG9mIHRoZSBlbGVtZW50LiAqL1xuICBASW5wdXQoKVxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZztcblxuICAvKiogUGxhY2Vob2xkZXIgdG8gYmUgc2hvd24gaWYgdmFsdWUgaXMgZW1wdHkuICovXG4gIEBJbnB1dCgpXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGZvY3VzZWQuICovXG4gIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkIHx8IHRoaXMuX3BhbmVsT3BlbjtcbiAgfVxuICBwcml2YXRlIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgZWxlbWVudCBpcyByZWFkb25seS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcblxuICBlcnJvclN0YXRlID0gZmFsc2U7XG5cbiAgLyoqIEEgbmFtZSBmb3IgdGhpcyBjb250cm9sIHRoYXQgY2FuIGJlIHVzZWQgYnkgYG1hdC1mb3JtLWZpZWxkYC4gKi9cbiAgY29udHJvbFR5cGUgPSAnbXR4LWNvbG9yLXBpY2tlcic7XG5cbiAgLyoqIFRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBvbiB0aGUgY29sb3IgcGlja2VyIGZvciBpbXByb3ZlZCBhMTF5LiAqL1xuICBfYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmc7XG5cbiAgLyoqIGBWaWV3IC0+IG1vZGVsIGNhbGxiYWNrIGNhbGxlZCB3aGVuIHZhbHVlIGNoYW5nZXNgICovXG4gIF9vbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAvKiogYFZpZXcgLT4gbW9kZWwgY2FsbGJhY2sgY2FsbGVkIHdoZW4gY29sb3IgcGlja2VyIGhhcyBiZWVuIHRvdWNoZWRgICovXG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjb2xvciBjaGFuZ2VkICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjb2xvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sb3JFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcblxuICAvKiogV2hldGhlciBvciBub3QgdGhlIG92ZXJsYXkgcGFuZWwgaXMgb3Blbi4gKi9cbiAgX3BhbmVsT3BlbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgc3Vic2NyaXB0aW9uIGZvciBjbG9zaW5nIGFjdGlvbnMgKHNvbWUgYXJlIGJvdW5kIHRvIGRvY3VtZW50KS4gKi9cbiAgcHJpdmF0ZSBfY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAvKiogV2hldGhlciB0aGUgZWxlbWVudCBpcyBpbnNpZGUgb2YgYSBTaGFkb3dSb290IGNvbXBvbmVudC4gKi9cbiAgcHJpdmF0ZSBfaXNJbnNpZGVTaGFkb3dSb290OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb2xvciBwaWNrZXIgY2FuIG9wZW4gdGhlIG5leHQgdGltZSBpdCBpcyBmb2N1c2VkLiBVc2VkIHRvIHByZXZlbnQgYSBmb2N1c2VkLFxuICAgKiBjbG9zZWQgY29sb3IgcGlja2VyIGZyb20gYmVpbmcgcmVvcGVuZWQgaWYgdGhlIHVzZXIgc3dpdGNoZXMgdG8gYW5vdGhlciBicm93c2VyIHRhYiBhbmQgdGhlblxuICAgKiBjb21lcyBiYWNrLlxuICAgKi9cbiAgcHJpdmF0ZSBfY2FuT3Blbk9uTmV4dEZvY3VzID0gdHJ1ZTtcblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgd2luZG93IGlzIGJsdXJyZWQuIE5lZWRzIHRvIGJlIGFuXG4gICAqIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHJpdmF0ZSBfd2luZG93Qmx1ckhhbmRsZXIgPSAoKSA9PiB7XG4gICAgLy8gSWYgdGhlIHVzZXIgYmx1cnJlZCB0aGUgd2luZG93IHdoaWxlIHRoZSBjb2xvciBwaWNrZXIgaXMgZm9jdXNlZCwgaXQgbWVhbnMgdGhhdCBpdCdsbCBiZVxuICAgIC8vIHJlZm9jdXNlZCB3aGVuIHRoZXkgY29tZSBiYWNrLiBJbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBza2lwIHRoZSBmaXJzdCBmb2N1cyBldmVudCwgaWYgdGhlXG4gICAgLy8gcGFuZSB3YXMgY2xvc2VkLCBpbiBvcmRlciB0byBhdm9pZCByZW9wZW5pbmcgaXQgdW5pbnRlbnRpb25hbGx5LlxuICAgIHRoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cyA9XG4gICAgICB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgfHwgdGhpcy5fcGFuZWxPcGVuO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9mb3JtRmllbGQ6IE1hdEZvcm1GaWVsZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55XG4gICkge1xuICAgIF9mb2N1c01vbml0b3IubW9uaXRvcihfZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICBpZiAodGhpcy5fZm9jdXNlZCAmJiAhb3JpZ2luKSB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZm9jdXNlZCA9ICEhb3JpZ2luO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuZXJyb3JTdGF0ZSA9ICh0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmIHRoaXMubmdDb250cm9sLnRvdWNoZWQpIGFzIGJvb2xlYW47XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5fd2luZG93Qmx1ckhhbmRsZXIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfc3VwcG9ydHNTaGFkb3dEb20oKSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCByb290Tm9kZSA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUgPyBlbGVtZW50LmdldFJvb3ROb2RlKCkgOiBudWxsO1xuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdGFrZSB0aGUgYFNoYWRvd1Jvb3RgIG9mZiBvZiBgd2luZG93YCwgYmVjYXVzZSB0aGUgYnVpbHQtaW4gdHlwZXMgYXJlXG4gICAgICAgIC8vIGluY29ycmVjdC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjc5MjkuXG4gICAgICAgIHRoaXMuX2lzSW5zaWRlU2hhZG93Um9vdCA9IHJvb3ROb2RlIGluc3RhbmNlb2YgKHdpbmRvdyBhcyBhbnkpLlNoYWRvd1Jvb3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZik7XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLiAqL1xuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJpYURlc2NyaWJlZGJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuICovXG4gIG9uQ29udGFpbmVyQ2xpY2soKSB7XG4gICAgdGhpcy5faGFuZGxlRm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtb2RlbCB2YWx1ZS4gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIHZhbHVlIE5ldyB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIHRoZSBtb2RlbC5cbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIG1vZGVsIHZhbHVlIGNoYW5nZXMuXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSByZWdpc3RlcmVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udHJvbCBpcyB0b3VjaGVkLlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqIE9wZW4gcGFuZWwgd2l0aCBpbnB1dCBmb2N1cyBldmVudC4gKi9cbiAgX2hhbmRsZUZvY3VzKCkge1xuICAgIHRoaXMudHJpZ2dlci5vcGVuTWVudSgpO1xuXG4gICAgdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24gPSBtZXJnZSh0aGlzLl9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKSlcbiAgICAgIC5waXBlKClcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLnRyaWdnZXIuY2xvc2VNZW51KCk7XG4gICAgICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiBPcGVucyB0aGUgb3ZlcmxheSBwYW5lbC4gKi9cbiAgX29wZW5QYW5lbCgpIHtcbiAgICBpZiAodGhpcy5fZm9jdXNlZCkge1xuICAgICAgdGhpcy5fcGFuZWxPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBvdmVybGF5IHBhbmVsIGFuZCBmb2N1c2VzIHRoZSBob3N0IGVsZW1lbnQuICovXG4gIF9jbG9zZVBhbmVsKCkge1xuICAgIGlmICh0aGlzLl9wYW5lbE9wZW4pIHtcbiAgICAgIHRoaXMuX3BhbmVsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGNhbGxiYWNrIG9mIGNvbG9yIGNoYW5nZWQuICovXG4gIF9vbkNvbG9yQ2hhbmdlZChtb2RlbDogQ29sb3JFdmVudCkge1xuICAgIHRoaXMudmFsdWUgPSBtb2RlbC5jb2xvci5oZXg7XG4gICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KG1vZGVsKTtcbiAgfVxuXG4gIC8qKiBTdHJlYW0gb2YgY2xpY2tzIG91dHNpZGUgb2YgdGhlIGNvbG9yIHBpY2tlciBwYW5lbC4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3V0c2lkZUNsaWNrU3RyZWFtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAnY2xpY2snKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAndG91Y2hlbmQnKSBhcyBPYnNlcnZhYmxlPFRvdWNoRXZlbnQ+XG4gICAgKS5waXBlKFxuICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgLy8gSWYgd2UncmUgaW4gdGhlIFNoYWRvdyBET00sIHRoZSBldmVudCB0YXJnZXQgd2lsbCBiZSB0aGUgc2hhZG93IHJvb3QsIHNvIHdlIGhhdmUgdG9cbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBwYXRoIG9mIHRoZSBjbGljayBldmVudC5cbiAgICAgICAgY29uc3QgY2xpY2tUYXJnZXQgPSAoXG4gICAgICAgICAgdGhpcy5faXNJbnNpZGVTaGFkb3dSb290ICYmIGV2ZW50LmNvbXBvc2VkUGF0aCA/IGV2ZW50LmNvbXBvc2VkUGF0aCgpWzBdIDogZXZlbnQudGFyZ2V0XG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuX2Zvcm1GaWVsZCA/IHRoaXMuX2Zvcm1GaWVsZC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IDogbnVsbDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNsaWNrVGFyZ2V0ICE9PSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAoIWZvcm1GaWVsZCB8fCAhZm9ybUZpZWxkLmNvbnRhaW5zKGNsaWNrVGFyZ2V0KSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
|