@huntsman-cancer-institute/dictionary-editor 16.0.1 → 17.0.1
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/components/detail.component.d.ts +90 -90
- package/components/home.component.d.ts +13 -13
- package/components/new-row.component.d.ts +20 -20
- package/dictionary-editor.component.d.ts +43 -43
- package/dictionary-editor.module.d.ts +24 -24
- package/dictionary-editor.routes.d.ts +4 -4
- package/esm2022/components/detail.component.mjs +606 -606
- package/esm2022/components/home.component.mjs +28 -28
- package/esm2022/components/new-row.component.mjs +81 -81
- package/esm2022/dictionary-editor.component.mjs +169 -169
- package/esm2022/dictionary-editor.module.mjs +76 -76
- package/esm2022/dictionary-editor.routes.mjs +14 -14
- package/esm2022/grid-editors/ag-grid-date-cell-editor.component.mjs +30 -30
- package/esm2022/grid-editors/ag-grid-editor.module.mjs +55 -55
- package/esm2022/grid-editors/datepicker.component.mjs +93 -93
- package/esm2022/grid-editors/select.editor.mjs +142 -142
- package/esm2022/grid-renderers/ag-grid-renderer.module.mjs +36 -36
- package/esm2022/grid-renderers/cell-renderer-validation.mjs +345 -345
- package/esm2022/grid-renderers/date.renderer.mjs +68 -68
- package/esm2022/grid-renderers/select.renderer.mjs +95 -95
- package/esm2022/huntsman-cancer-institute-dictionary-editor.mjs +4 -4
- package/esm2022/index.mjs +4 -4
- package/fesm2022/huntsman-cancer-institute-dictionary-editor.mjs +1718 -1718
- package/fesm2022/huntsman-cancer-institute-dictionary-editor.mjs.map +1 -1
- package/grid-editors/ag-grid-date-cell-editor.component.d.ts +11 -11
- package/grid-editors/ag-grid-editor.module.d.ts +15 -15
- package/grid-editors/datepicker.component.d.ts +16 -16
- package/grid-editors/select.editor.d.ts +30 -30
- package/grid-renderers/ag-grid-renderer.module.d.ts +10 -10
- package/grid-renderers/cell-renderer-validation.d.ts +69 -69
- package/grid-renderers/date.renderer.d.ts +15 -15
- package/grid-renderers/select.renderer.d.ts +17 -17
- package/index.d.ts +4 -4
- package/package.json +9 -12
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import { Component } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/forms";
|
|
5
|
-
//import {MatDialog, MatDialogConfig, MatDialogRef} from "@angular/material/dialog";
|
|
6
|
-
//import {SpinnerDialogComponent} from "../popup/spinner-dialog.component";
|
|
7
|
-
export class SelectEditor {
|
|
8
|
-
get options() {
|
|
9
|
-
if (this.using_selectOptionsPerRowFilterFunction) {
|
|
10
|
-
return this._filteredOptions;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
return this._options;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
set options(value) {
|
|
17
|
-
this._options = value;
|
|
18
|
-
}
|
|
19
|
-
// private spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];
|
|
20
|
-
constructor() {
|
|
21
|
-
this.using_selectOptionsPerRowFilterFunction = false;
|
|
22
|
-
this._spinnerDialogIsOpen = false;
|
|
23
|
-
}
|
|
24
|
-
agInit(params) {
|
|
25
|
-
this.params = params;
|
|
26
|
-
this.options = [];
|
|
27
|
-
this.optionsValueField = "";
|
|
28
|
-
this.optionsDisplayField = "";
|
|
29
|
-
if (this.params && this.params.column && this.params.column.colDef) {
|
|
30
|
-
this.gridValueField = this.params.column.colDef.field;
|
|
31
|
-
this.options = this.params.column.colDef.selectOptions;
|
|
32
|
-
this.optionsValueField = this.params.column.colDef.selectOptionsValueField;
|
|
33
|
-
this.optionsDisplayField = this.params.column.colDef.selectOptionsDisplayField;
|
|
34
|
-
if (this.params.column.colDef.selectOptionsPerRowFilterFunction) {
|
|
35
|
-
let backup = this.selectOptionsPerRowFilterFunction;
|
|
36
|
-
try {
|
|
37
|
-
this.selectOptionsPerRowFilterFunction = this.params.column.colDef.selectOptionsPerRowFilterFunction;
|
|
38
|
-
this.using_selectOptionsPerRowFilterFunction = !!this.selectOptionsPerRowFilterFunction;
|
|
39
|
-
}
|
|
40
|
-
catch (e) {
|
|
41
|
-
console.error("selectOptionsPerRowFilterFunction option has wrong signature for column : " + this.params.column.colDef.headerName + "\n"
|
|
42
|
-
+ " Requires signature (context:any, rowData: any, option: any) => boolean");
|
|
43
|
-
this.selectOptionsPerRowFilterFunction = backup;
|
|
44
|
-
this.using_selectOptionsPerRowFilterFunction = !!backup;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
this.context = this.params.column.colDef.context;
|
|
48
|
-
this.fillGroupAttribute = this.params.column.colDef.fillGroupAttribute;
|
|
49
|
-
this.fillAll = this.params.column.colDef.fillAll && ("" + this.params.column.colDef.fillAll).toLowerCase() !== "false";
|
|
50
|
-
this.showFillButton = this.params.column.colDef.showFillButton && ("" + this.params.column.colDef.showFillButton).toLowerCase() !== "false";
|
|
51
|
-
if (this._options
|
|
52
|
-
&& this.params.node
|
|
53
|
-
&& this.params.node.data
|
|
54
|
-
&& this.using_selectOptionsPerRowFilterFunction) {
|
|
55
|
-
this._filteredOptions = this._options.filter((option) => {
|
|
56
|
-
return this.selectOptionsPerRowFilterFunction(this.context, this.params.node.data, option);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (this.params) {
|
|
61
|
-
this.value = this.params.value ? "" + this.params.value : "";
|
|
62
|
-
}
|
|
63
|
-
if (this.showFillButton && !this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === "")) {
|
|
64
|
-
throw new Error("Invalid state, cannot use fill button without specifying the fillGroupAttribute or fillAll.");
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
ngOnDestroy() {
|
|
68
|
-
if (this.params && this.params.node && this.params.node[(this.gridValueField + "_originalValue")]) {
|
|
69
|
-
this.value = this.params.node[(this.gridValueField + "_originalValue")];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
onChange(event) {
|
|
73
|
-
if (event && event.currentTarget) {
|
|
74
|
-
if (this.params && this.params.node && !this.params.node[(this.gridValueField + "_originalValue")]) {
|
|
75
|
-
this.params.node[(this.gridValueField + "_originalValue")] = this.value;
|
|
76
|
-
}
|
|
77
|
-
// This looks unnecessary, since this.value is linked to the value of the select component, but
|
|
78
|
-
// because this also ends editing, it also queues the destruction of this component and the call to getValue.
|
|
79
|
-
// The problem was that this.value isn't updated with the new value before this event fires,
|
|
80
|
-
// so we need to update it manually here.
|
|
81
|
-
this.value = event.currentTarget.value;
|
|
82
|
-
this.params.node.setDataValue(this.gridValueField, this.value);
|
|
83
|
-
}
|
|
84
|
-
if (this.params) {
|
|
85
|
-
// If the fill button, which is part of the editor, is activated, don't stop editing
|
|
86
|
-
// immediately after making a selection.
|
|
87
|
-
if (!this.showFillButton) {
|
|
88
|
-
this.params.stopEditing();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
getValue() {
|
|
93
|
-
return this.value ? this.value : "";
|
|
94
|
-
}
|
|
95
|
-
isPopup() {
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
onFillButtonClicked() {
|
|
99
|
-
if (!this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === "")) {
|
|
100
|
-
throw new Error('No column attribute "fillGroupAttribute" or "fillAll" specified. This is required to use the Fill functionality.');
|
|
101
|
-
}
|
|
102
|
-
if (this.params && this.params.column && this.params.column.gridApi && this.params.node && (this.fillAll || (this.fillGroupAttribute && this.fillGroupAttribute !== ""))) {
|
|
103
|
-
let thisRowNode = this.params.node;
|
|
104
|
-
//this.startSpinnerDialog();
|
|
105
|
-
this.params.column.gridApi.forEachNodeAfterFilter((rowNode) => {
|
|
106
|
-
if (rowNode && rowNode.data && thisRowNode && thisRowNode.data && (this.fillAll || rowNode.data[this.fillGroupAttribute] === thisRowNode.data[this.fillGroupAttribute])) {
|
|
107
|
-
let spoofedEvent = {
|
|
108
|
-
api: this.params.column.gridApi,
|
|
109
|
-
colDef: this.params.column.colDef,
|
|
110
|
-
column: this.params.column,
|
|
111
|
-
columnApi: this.params.column.columnApi,
|
|
112
|
-
context: undefined,
|
|
113
|
-
data: rowNode.data,
|
|
114
|
-
event: null,
|
|
115
|
-
newValue: this.value,
|
|
116
|
-
node: rowNode,
|
|
117
|
-
oldValue: rowNode.data[this.gridValueField],
|
|
118
|
-
rowIndex: rowNode.rowIndex,
|
|
119
|
-
rowPinned: undefined,
|
|
120
|
-
type: "cellValueChanged",
|
|
121
|
-
value: this.value
|
|
122
|
-
};
|
|
123
|
-
rowNode.data[this.gridValueField] = this.value;
|
|
124
|
-
rowNode.setDataValue(this.gridValueField, this.value);
|
|
125
|
-
this.params.column.gridApi.dispatchEvent(spoofedEvent);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
this.params.column.gridApi.refreshCells();
|
|
129
|
-
setTimeout(() => {
|
|
130
|
-
//this.stopSpinnerDialogs();
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/forms";
|
|
5
|
+
//import {MatDialog, MatDialogConfig, MatDialogRef} from "@angular/material/dialog";
|
|
6
|
+
//import {SpinnerDialogComponent} from "../popup/spinner-dialog.component";
|
|
7
|
+
export class SelectEditor {
|
|
8
|
+
get options() {
|
|
9
|
+
if (this.using_selectOptionsPerRowFilterFunction) {
|
|
10
|
+
return this._filteredOptions;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return this._options;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
set options(value) {
|
|
17
|
+
this._options = value;
|
|
18
|
+
}
|
|
19
|
+
// private spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];
|
|
20
|
+
constructor() {
|
|
21
|
+
this.using_selectOptionsPerRowFilterFunction = false;
|
|
22
|
+
this._spinnerDialogIsOpen = false;
|
|
23
|
+
}
|
|
24
|
+
agInit(params) {
|
|
25
|
+
this.params = params;
|
|
26
|
+
this.options = [];
|
|
27
|
+
this.optionsValueField = "";
|
|
28
|
+
this.optionsDisplayField = "";
|
|
29
|
+
if (this.params && this.params.column && this.params.column.colDef) {
|
|
30
|
+
this.gridValueField = this.params.column.colDef.field;
|
|
31
|
+
this.options = this.params.column.colDef.selectOptions;
|
|
32
|
+
this.optionsValueField = this.params.column.colDef.selectOptionsValueField;
|
|
33
|
+
this.optionsDisplayField = this.params.column.colDef.selectOptionsDisplayField;
|
|
34
|
+
if (this.params.column.colDef.selectOptionsPerRowFilterFunction) {
|
|
35
|
+
let backup = this.selectOptionsPerRowFilterFunction;
|
|
36
|
+
try {
|
|
37
|
+
this.selectOptionsPerRowFilterFunction = this.params.column.colDef.selectOptionsPerRowFilterFunction;
|
|
38
|
+
this.using_selectOptionsPerRowFilterFunction = !!this.selectOptionsPerRowFilterFunction;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
console.error("selectOptionsPerRowFilterFunction option has wrong signature for column : " + this.params.column.colDef.headerName + "\n"
|
|
42
|
+
+ " Requires signature (context:any, rowData: any, option: any) => boolean");
|
|
43
|
+
this.selectOptionsPerRowFilterFunction = backup;
|
|
44
|
+
this.using_selectOptionsPerRowFilterFunction = !!backup;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
this.context = this.params.column.colDef.context;
|
|
48
|
+
this.fillGroupAttribute = this.params.column.colDef.fillGroupAttribute;
|
|
49
|
+
this.fillAll = this.params.column.colDef.fillAll && ("" + this.params.column.colDef.fillAll).toLowerCase() !== "false";
|
|
50
|
+
this.showFillButton = this.params.column.colDef.showFillButton && ("" + this.params.column.colDef.showFillButton).toLowerCase() !== "false";
|
|
51
|
+
if (this._options
|
|
52
|
+
&& this.params.node
|
|
53
|
+
&& this.params.node.data
|
|
54
|
+
&& this.using_selectOptionsPerRowFilterFunction) {
|
|
55
|
+
this._filteredOptions = this._options.filter((option) => {
|
|
56
|
+
return this.selectOptionsPerRowFilterFunction(this.context, this.params.node.data, option);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (this.params) {
|
|
61
|
+
this.value = this.params.value ? "" + this.params.value : "";
|
|
62
|
+
}
|
|
63
|
+
if (this.showFillButton && !this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === "")) {
|
|
64
|
+
throw new Error("Invalid state, cannot use fill button without specifying the fillGroupAttribute or fillAll.");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
ngOnDestroy() {
|
|
68
|
+
if (this.params && this.params.node && this.params.node[(this.gridValueField + "_originalValue")]) {
|
|
69
|
+
this.value = this.params.node[(this.gridValueField + "_originalValue")];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
onChange(event) {
|
|
73
|
+
if (event && event.currentTarget) {
|
|
74
|
+
if (this.params && this.params.node && !this.params.node[(this.gridValueField + "_originalValue")]) {
|
|
75
|
+
this.params.node[(this.gridValueField + "_originalValue")] = this.value;
|
|
76
|
+
}
|
|
77
|
+
// This looks unnecessary, since this.value is linked to the value of the select component, but
|
|
78
|
+
// because this also ends editing, it also queues the destruction of this component and the call to getValue.
|
|
79
|
+
// The problem was that this.value isn't updated with the new value before this event fires,
|
|
80
|
+
// so we need to update it manually here.
|
|
81
|
+
this.value = event.currentTarget.value;
|
|
82
|
+
this.params.node.setDataValue(this.gridValueField, this.value);
|
|
83
|
+
}
|
|
84
|
+
if (this.params) {
|
|
85
|
+
// If the fill button, which is part of the editor, is activated, don't stop editing
|
|
86
|
+
// immediately after making a selection.
|
|
87
|
+
if (!this.showFillButton) {
|
|
88
|
+
this.params.stopEditing();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
getValue() {
|
|
93
|
+
return this.value ? this.value : "";
|
|
94
|
+
}
|
|
95
|
+
isPopup() {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
onFillButtonClicked() {
|
|
99
|
+
if (!this.fillAll && (!this.fillGroupAttribute || this.fillGroupAttribute === "")) {
|
|
100
|
+
throw new Error('No column attribute "fillGroupAttribute" or "fillAll" specified. This is required to use the Fill functionality.');
|
|
101
|
+
}
|
|
102
|
+
if (this.params && this.params.column && this.params.column.gridApi && this.params.node && (this.fillAll || (this.fillGroupAttribute && this.fillGroupAttribute !== ""))) {
|
|
103
|
+
let thisRowNode = this.params.node;
|
|
104
|
+
//this.startSpinnerDialog();
|
|
105
|
+
this.params.column.gridApi.forEachNodeAfterFilter((rowNode) => {
|
|
106
|
+
if (rowNode && rowNode.data && thisRowNode && thisRowNode.data && (this.fillAll || rowNode.data[this.fillGroupAttribute] === thisRowNode.data[this.fillGroupAttribute])) {
|
|
107
|
+
let spoofedEvent = {
|
|
108
|
+
api: this.params.column.gridApi,
|
|
109
|
+
colDef: this.params.column.colDef,
|
|
110
|
+
column: this.params.column,
|
|
111
|
+
columnApi: this.params.column.columnApi,
|
|
112
|
+
context: undefined,
|
|
113
|
+
data: rowNode.data,
|
|
114
|
+
event: null,
|
|
115
|
+
newValue: this.value,
|
|
116
|
+
node: rowNode,
|
|
117
|
+
oldValue: rowNode.data[this.gridValueField],
|
|
118
|
+
rowIndex: rowNode.rowIndex,
|
|
119
|
+
rowPinned: undefined,
|
|
120
|
+
type: "cellValueChanged",
|
|
121
|
+
value: this.value
|
|
122
|
+
};
|
|
123
|
+
rowNode.data[this.gridValueField] = this.value;
|
|
124
|
+
rowNode.setDataValue(this.gridValueField, this.value);
|
|
125
|
+
this.params.column.gridApi.dispatchEvent(spoofedEvent);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
this.params.column.gridApi.refreshCells();
|
|
129
|
+
setTimeout(() => {
|
|
130
|
+
//this.stopSpinnerDialogs();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectEditor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SelectEditor, selector: "ng-component", ngImport: i0, template: `
|
|
136
136
|
<div class="full-width full-height flex-column-container">
|
|
137
137
|
<div class="full-height flex-stretch flex-row">
|
|
138
138
|
<select class="full-width full-height" [(value)]="value" (change)="onChange($event)">
|
|
@@ -150,10 +150,10 @@ export class SelectEditor {
|
|
|
150
150
|
<button class="full-height" (click)="onFillButtonClicked()">Fill</button>
|
|
151
151
|
</div>
|
|
152
152
|
</div>
|
|
153
|
-
`, isInline: true, styles: [".full-width{width:100%}.full-height{height:100%}.flex-column-container{display:flex;flex-direction:row}.flex-row{display:flex}.flex-stretch{display:flex;flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] }); }
|
|
154
|
-
}
|
|
155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
156
|
-
type: Component,
|
|
153
|
+
`, isInline: true, styles: [".full-width{width:100%}.full-height{height:100%}.flex-column-container{display:flex;flex-direction:row}.flex-row{display:flex}.flex-stretch{display:flex;flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] }); }
|
|
154
|
+
}
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectEditor, decorators: [{
|
|
156
|
+
type: Component,
|
|
157
157
|
args: [{ template: `
|
|
158
158
|
<div class="full-width full-height flex-column-container">
|
|
159
159
|
<div class="full-height flex-stretch flex-row">
|
|
@@ -172,6 +172,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
172
172
|
<button class="full-height" (click)="onFillButtonClicked()">Fill</button>
|
|
173
173
|
</div>
|
|
174
174
|
</div>
|
|
175
|
-
`, styles: [".full-width{width:100%}.full-height{height:100%}.flex-column-container{display:flex;flex-direction:row}.flex-row{display:flex}.flex-stretch{display:flex;flex:1}\n"] }]
|
|
176
|
-
}], ctorParameters:
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RpY3Rpb25hcnktZWRpdG9yL3NyYy9ncmlkLWVkaXRvcnMvc2VsZWN0LmVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7O0FBRW5ELG9GQUFvRjtBQUNwRiwyRUFBMkU7QUFvRDNFLE1BQU0sT0FBTyxZQUFZO0lBSXJCLElBQVcsT0FBTztRQUNkLElBQUksSUFBSSxDQUFDLHVDQUF1QyxFQUFFO1lBQzlDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ2hDO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBd0JMLDZFQUE2RTtJQUV6RTtRQW5CVSw0Q0FBdUMsR0FBWSxLQUFLLENBQUM7UUFnQjNELHlCQUFvQixHQUFZLEtBQUssQ0FBQztJQUdDLENBQUM7SUFFaEQsTUFBTSxDQUFDLE1BQVc7UUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFF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QztZQUVILElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLDRCQUE0QjtZQUNoQyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzsrR0E1S1EsWUFBWTttR0FBWixZQUFZLG9EQS9DbkI7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCQzs7NEZBNkJNLFlBQVk7a0JBbER4QixTQUFTOytCQUdKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lDZWxsRWRpdG9yQW5ndWxhckNvbXB9IGZyb20gXCJhZy1ncmlkLWFuZ3VsYXJcIjtcclxuLy9pbXBvcnQge01hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWZ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuLy9pbXBvcnQge1NwaW5uZXJEaWFsb2dDb21wb25lbnR9IGZyb20gXCIuLi9wb3B1cC9zcGlubmVyLWRpYWxvZy5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoXHJcbiAge1xyXG4gICAgdGVtcGxhdGU6XHJcbiAgICAgIGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodCBmbGV4LWNvbHVtbi1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdWxsLWhlaWdodCBmbGV4LXN0cmV0Y2ggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZ1bGwtd2lkdGggZnVsbC1oZWlnaHRcIiBbKHZhbHVlKV09XCJ2YWx1ZVwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gaGlkZGVuPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IEFuIE9wdGlvblxyXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cInt7b3B0aW9uLmhhc093blByb3BlcnR5KG9wdGlvbnNWYWx1ZUZpZWxkKSA/IG9wdGlvbltvcHRpb25zVmFsdWVGaWVsZF0gOiAob3B0aW9uLnZhbHVlKSA/IG9wdGlvbi52YWx1ZSA6IG9wdGlvbiB9fVwiPlxyXG4gICAgICAgICAgICAgICAge3tvcHRpb24uaGFzT3duUHJvcGVydHkob3B0aW9uc0Rpc3BsYXlGaWVsZCkgPyBvcHRpb25bb3B0aW9uc0Rpc3BsYXlGaWVsZF0gOiAob3B0aW9uLmRpc3BsYXkpID8gb3B0aW9uLmRpc3BsYXkgOiBvcHRpb24gfX1cclxuICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RmlsbEJ1dHRvblwiIGNsYXNzPVwiZnVsbC1oZWlnaHQgZmxleC1yb3cgYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZnVsbC1oZWlnaHRcIiAoY2xpY2spPVwib25GaWxsQnV0dG9uQ2xpY2tlZCgpXCI+RmlsbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIGBcclxuICAgICxcclxuICAgIHN0eWxlczogW1xyXG4gICAgICBgXHJcbiAgICAgICAgLmZ1bGwtd2lkdGgge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZnVsbC1oZWlnaHQge1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZsZXgtY29sdW1uLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5mbGV4LXJvdyB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZsZXgtc3RyZXRjaCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgZmxleDogMTtcclxuICAgICAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIFNlbGVjdEVkaXRvciBpbXBsZW1lbnRzIElDZWxsRWRpdG9yQW5ndWxhckNvbXAsIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnk7XHJcbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcclxuICAgIHByaXZhdGUgX29wdGlvbnM6IGFueVtdO1xyXG4gICAgcHVibGljIGdldCBvcHRpb25zKCk6IGFueVtdIHtcclxuICAgICAgICBpZiAodGhpcy51c2luZ19zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IGFueVtdKSB7XHJcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcHRpb25zVmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gICAgcHVibGljIG9wdGlvbnNEaXNwbGF5RmllbGQ6IHN0cmluZztcclxuXHJcbiAgICAvLyB2YXJpYWJsZXMgdXNlZCBmb3IgdGhlIG9wdGlvbmFsIHBlci1yb3ctZmlsdGVyaW5nXHJcbiAgICBwdWJsaWMgY29udGV4dDogYW55O1xyXG4gICAgcHJvdGVjdGVkIHVzaW5nX3NlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIHNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbjogKGNvbnRleHQ6IGFueSwgcm93RGF0YTogYW55LCBvcHRpb246IGFueSkgPT4gYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX2ZpbHRlcmVkT3B0aW9uczogYW55W107XHJcblxyXG5cclxuXHJcbiAgICBwdWJsaWMgZ3JpZFZhbHVlRmllbGQ6IHN0cmluZztcclxuXHJcbiAgICBwdWJsaWMgc2hvd0ZpbGxCdXR0b246IGJvb2xlYW47XHRcdC8vIFRoaXMgcmVwcmVzZW50cyB3aGV0aGVyIHRoZSBlZGl0b3Igc2hvdWxkIHNob3cgdGhlIFwiRmlsbFwiIGJ1dHRvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIHVzZWQgdG8gY29weSB0aGUgdmFsdWUgb2YgdGhpcyBjZWxsIHRvIG90aGVyIGNlbGxzIGluIHRoaXMgY29sdW1uIGluIHRoZSBncmlkXHJcbiAgICBwdWJsaWMgZmlsbEdyb3VwQXR0cmlidXRlOiBzdHJpbmc7XHRcdC8vIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBcIkdyb3VwXCIgYSBwYXJ0aWN1bGFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm93IGJlbG9uZ3MgdG8sIHdoaWNoIGlzIHVzZWQgd2hlbiB0aGUgZmlsbCBidXR0b24gaXMgYWN0aXZlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gY2xpY2tlZCwgdGhlIGZpbGwgYnV0dG9uIHdpbGwgY29weSB0aGUgZGF0YSBpbiB0aGF0IGNlbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB0aGUgY29ycmVzcG9uZGluZyBjZWxscyBpbiByb3dzIG9mIHRoZSBzYW1lIGdyb3VwLlxyXG4gICAgcHVibGljIGZpbGxBbGw6IGJvb2xlYW47ICAgICAgICAgICAgICAgIC8vIElmIGZpbGxBbGwgaXMgc2V0LCBhbGwgZGF0YSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZ3JvdXBlZCB0b2dldGhlclxyXG5cclxuICAgIHByaXZhdGUgX3NwaW5uZXJEaWFsb2dJc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuLy8gICAgcHJpdmF0ZSBzcGlubmVyRGlhbG9nUmVmczogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigvKnByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyovKSB7IH1cclxuXHJcbiAgICBhZ0luaXQocGFyYW1zOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLm9wdGlvbnNWYWx1ZUZpZWxkID0gXCJcIjtcclxuICAgICAgICB0aGlzLm9wdGlvbnNEaXNwbGF5RmllbGQgPSBcIlwiO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wYXJhbXMgJiYgdGhpcy5wYXJhbXMuY29sdW1uICYmIHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkVmFsdWVGaWVsZCA9IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuZmllbGQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLnNlbGVjdE9wdGlvbnM7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc1ZhbHVlRmllbGQgPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLnNlbGVjdE9wdGlvbnNWYWx1ZUZpZWxkO1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNEaXNwbGF5RmllbGQgPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLnNlbGVjdE9wdGlvbnNEaXNwbGF5RmllbGQ7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIGxldCBiYWNrdXAgPSB0aGlzLnNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbjtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24gPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLnNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzaW5nX3NlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbiA9ICEhdGhpcy5zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb247XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbiBvcHRpb24gaGFzIHdyb25nIHNpZ25hdHVyZSBmb3IgY29sdW1uIDogXCIgKyB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLmhlYWRlck5hbWUgKyBcIlxcblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICsgXCIgIFJlcXVpcmVzIHNpZ25hdHVyZSAoY29udGV4dDphbnksIHJvd0RhdGE6IGFueSwgb3B0aW9uOiBhbnkpID0+IGJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24gPSBiYWNrdXA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2luZ19zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24gPSAhIWJhY2t1cDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5jb250ZXh0O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5maWxsR3JvdXBBdHRyaWJ1dGUgPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLmZpbGxHcm91cEF0dHJpYnV0ZTtcclxuICAgICAgICAgICAgdGhpcy5maWxsQWxsID0gdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5maWxsQWxsICYmIChcIlwiICsgdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5maWxsQWxsKS50b0xvd2VyQ2FzZSgpICE9PSBcImZhbHNlXCI7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dGaWxsQnV0dG9uID0gdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5zaG93RmlsbEJ1dHRvbiAmJiAoXCJcIiArIHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuc2hvd0ZpbGxCdXR0b24pLnRvTG93ZXJDYXNlKCkgIT09IFwiZmFsc2VcIjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9vcHRpb25zXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLnBhcmFtcy5ub2RlXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLnBhcmFtcy5ub2RlLmRhdGFcclxuICAgICAgICAgICAgICAgICYmIHRoaXMudXNpbmdfc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRPcHRpb25zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uKHRoaXMuY29udGV4dCwgdGhpcy5wYXJhbXMubm9kZS5kYXRhLCBvcHRpb24pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtcykge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJhbXMudmFsdWUgPyBcIlwiICsgdGhpcy5wYXJhbXMudmFsdWUgOiBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbGxCdXR0b24gJiYgIXRoaXMuZmlsbEFsbCAmJiAoIXRoaXMuZmlsbEdyb3VwQXR0cmlidXRlIHx8IHRoaXMuZmlsbEdyb3VwQXR0cmlidXRlID09PSBcIlwiKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlLCBjYW5ub3QgdXNlIGZpbGwgYnV0dG9uIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgZmlsbEdyb3VwQXR0cmlidXRlIG9yIGZpbGxBbGwuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5wYXJhbXMgJiYgdGhpcy5wYXJhbXMubm9kZSAmJiB0aGlzLnBhcmFtcy5ub2RlWyh0aGlzLmdyaWRWYWx1ZUZpZWxkICsgXCJfb3JpZ2luYWxWYWx1ZVwiKV0pIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGFyYW1zLm5vZGVbKHRoaXMuZ3JpZFZhbHVlRmllbGQgKyBcIl9vcmlnaW5hbFZhbHVlXCIpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC5jdXJyZW50VGFyZ2V0KSB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMgJiYgdGhpcy5wYXJhbXMubm9kZSAmJiAhdGhpcy5wYXJhbXMubm9kZVsodGhpcy5ncmlkVmFsdWVGaWVsZCArIFwiX29yaWdpbmFsVmFsdWVcIildKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5ub2RlWyh0aGlzLmdyaWRWYWx1ZUZpZWxkICsgXCJfb3JpZ2luYWxWYWx1ZVwiKV0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBUaGlzIGxvb2tzIHVubmVjZXNzYXJ5LCBzaW5jZSB0aGlzLnZhbHVlIGlzIGxpbmtlZCB0byB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdCBjb21wb25lbnQsIGJ1dFxyXG4gICAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgYWxzbyBlbmRzIGVkaXRpbmcsIGl0IGFsc28gcXVldWVzIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGlzIGNvbXBvbmVudCBhbmQgdGhlIGNhbGwgdG8gZ2V0VmFsdWUuXHJcbiAgICAgICAgICAgIC8vIFRoZSBwcm9ibGVtIHdhcyB0aGF0IHRoaXMudmFsdWUgaXNuJ3QgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdmFsdWUgYmVmb3JlIHRoaXMgZXZlbnQgZmlyZXMsXHJcbiAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gdXBkYXRlIGl0IG1hbnVhbGx5IGhlcmUuXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtcy5ub2RlLnNldERhdGFWYWx1ZSh0aGlzLmdyaWRWYWx1ZUZpZWxkLCB0aGlzLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1zKSB7XHJcblxyXG4gICAgICAgICAgICAvLyAgSWYgdGhlIGZpbGwgYnV0dG9uLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBlZGl0b3IsIGlzIGFjdGl2YXRlZCwgZG9uJ3Qgc3RvcCBlZGl0aW5nXHJcbiAgICAgICAgICAgIC8vIGltbWVkaWF0ZWx5IGFmdGVyIG1ha2luZyBhIHNlbGVjdGlvbi5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dGaWxsQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5zdG9wRWRpdGluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBpc1BvcHVwKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZpbGxCdXR0b25DbGlja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5maWxsQWxsICYmICghdGhpcy5maWxsR3JvdXBBdHRyaWJ1dGUgfHwgdGhpcy5maWxsR3JvdXBBdHRyaWJ1dGUgPT09IFwiXCIpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY29sdW1uIGF0dHJpYnV0ZSBcImZpbGxHcm91cEF0dHJpYnV0ZVwiIG9yIFwiZmlsbEFsbFwiIHNwZWNpZmllZC4gVGhpcyBpcyByZXF1aXJlZCB0byB1c2UgdGhlIEZpbGwgZnVuY3Rpb25hbGl0eS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtcy5jb2x1bW4gJiYgdGhpcy5wYXJhbXMuY29sdW1uLmdyaWRBcGkgJiYgdGhpcy5wYXJhbXMubm9kZSAmJiAodGhpcy5maWxsQWxsIHx8ICh0aGlzLmZpbGxHcm91cEF0dHJpYnV0ZSAmJiB0aGlzLmZpbGxHcm91cEF0dHJpYnV0ZSAhPT0gXCJcIikpKSB7XHJcbiAgICAgICAgICAgIGxldCB0aGlzUm93Tm9kZSA9IHRoaXMucGFyYW1zLm5vZGU7XHJcblxyXG4gICAgICAgICAgICAvL3RoaXMuc3RhcnRTcGlubmVyRGlhbG9nKCk7XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLmNvbHVtbi5ncmlkQXBpLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXIoKHJvd05vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyb3dOb2RlICYmIHJvd05vZGUuZGF0YSAmJiB0aGlzUm93Tm9kZSAmJiB0aGlzUm93Tm9kZS5kYXRhICYmICh0aGlzLmZpbGxBbGwgfHwgcm93Tm9kZS5kYXRhW3RoaXMuZmlsbEdyb3VwQXR0cmlidXRlXSA9PT0gdGhpc1Jvd05vZGUuZGF0YVt0aGlzLmZpbGxHcm91cEF0dHJpYnV0ZV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNwb29mZWRFdmVudDogYW55ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGk6IHRoaXMucGFyYW1zLmNvbHVtbi5ncmlkQXBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xEZWY6IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5wYXJhbXMuY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5BcGk6IHRoaXMucGFyYW1zLmNvbHVtbi5jb2x1bW5BcGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcm93Tm9kZS5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWU6IHRoaXMudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IHJvd05vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlOiByb3dOb2RlLmRhdGFbdGhpcy5ncmlkVmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiByb3dOb2RlLnJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dQaW5uZWQ6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjZWxsVmFsdWVDaGFuZ2VkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcm93Tm9kZS5kYXRhW3RoaXMuZ3JpZFZhbHVlRmllbGRdID0gdGhpcy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICByb3dOb2RlLnNldERhdGFWYWx1ZSh0aGlzLmdyaWRWYWx1ZUZpZWxkLCB0aGlzLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcy5jb2x1bW4uZ3JpZEFwaS5kaXNwYXRjaEV2ZW50KHNwb29mZWRFdmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMuY29sdW1uLmdyaWRBcGkucmVmcmVzaENlbGxzKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLnN0b3BTcGlubmVyRGlhbG9ncygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cdC8qXHJcbiAgICBzdGFydFNwaW5uZXJEaWFsb2coKTogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+IHtcclxuICAgICAgICBpZiAodGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgY29uZmlndXJhdGlvbjogTWF0RGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogXCJQbGVhc2Ugd2FpdC4uLlwiLFxyXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMyxcclxuICAgICAgICAgICAgZGlhbWV0ZXI6IDMwXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25maWd1cmF0aW9uLndpZHRoID0gXCIxM2VtXCI7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U3Bpbm5lckRpYWxvZ0NvbXBvbmVudD4gPSB0aGlzLmRpYWxvZy5vcGVuKFNwaW5uZXJEaWFsb2dDb21wb25lbnQsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSBmYWxzZTsgfSk7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyRGlhbG9nUmVmcy5wdXNoKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFNwaW5uZXJEaWFsb2dzKCk6IHZvaWQge1xyXG4gICAgICAgIGZvciAobGV0IGRpYWxvZ1JlZiBvZiB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzID0gW107XHJcbiAgICB9XHJcblx0Ki9cclxufVxyXG4iXX0=
|
|
175
|
+
`, styles: [".full-width{width:100%}.full-height{height:100%}.flex-column-container{display:flex;flex-direction:row}.flex-row{display:flex}.flex-stretch{display:flex;flex:1}\n"] }]
|
|
176
|
+
}], ctorParameters: () => [] });
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RpY3Rpb25hcnktZWRpdG9yL3NyYy9ncmlkLWVkaXRvcnMvc2VsZWN0LmVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7O0FBRW5ELG9GQUFvRjtBQUNwRiwyRUFBMkU7QUFvRDNFLE1BQU0sT0FBTyxZQUFZO0lBSXJCLElBQVcsT0FBTztRQUNkLElBQUksSUFBSSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxLQUFZO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUF3QkwsNkVBQTZFO0lBRXpFO1FBbkJVLDRDQUF1QyxHQUFZLEtBQUssQ0FBQztRQWdCM0QseUJBQW9CLEdBQVksS0FBSyxDQUFDO0lBR0MsQ0FBQztJQUVoRCxNQUFNLENBQUMsTUFBVztRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FB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QU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzNELENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLDRCQUE0QjtZQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOzhHQTVLUSxZQUFZO2tHQUFaLFlBQVksb0RBL0NuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JDOzsyRkE2Qk0sWUFBWTtrQkFsRHhCLFNBQVM7K0JBR0o7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3l9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SUNlbGxFZGl0b3JBbmd1bGFyQ29tcH0gZnJvbSBcImFnLWdyaWQtYW5ndWxhclwiO1xyXG4vL2ltcG9ydCB7TWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG4vL2ltcG9ydCB7U3Bpbm5lckRpYWxvZ0NvbXBvbmVudH0gZnJvbSBcIi4uL3BvcHVwL3NwaW5uZXItZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudChcclxuICB7XHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtaGVpZ2h0IGZsZXgtY29sdW1uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ1bGwtaGVpZ2h0IGZsZXgtc3RyZXRjaCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodFwiIFsodmFsdWUpXT1cInZhbHVlXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiBoaWRkZW4+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgQW4gT3B0aW9uXHJcbiAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcclxuICAgICAgICAgICAgICAgIHZhbHVlPVwie3tvcHRpb24uaGFzT3duUHJvcGVydHkob3B0aW9uc1ZhbHVlRmllbGQpID8gb3B0aW9uW29wdGlvbnNWYWx1ZUZpZWxkXSA6IChvcHRpb24udmFsdWUpID8gb3B0aW9uLnZhbHVlIDogb3B0aW9uIH19XCI+XHJcbiAgICAgICAgICAgICAgICB7e29wdGlvbi5oYXNPd25Qcm9wZXJ0eShvcHRpb25zRGlzcGxheUZpZWxkKSA/IG9wdGlvbltvcHRpb25zRGlzcGxheUZpZWxkXSA6IChvcHRpb24uZGlzcGxheSkgPyBvcHRpb24uZGlzcGxheSA6IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGaWxsQnV0dG9uXCIgY2xhc3M9XCJmdWxsLWhlaWdodCBmbGV4LXJvdyBidXR0b24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmdWxsLWhlaWdodFwiIChjbGljayk9XCJvbkZpbGxCdXR0b25DbGlja2VkKClcIj5GaWxsPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgYFxyXG4gICAgLFxyXG4gICAgc3R5bGVzOiBbXHJcbiAgICAgIGBcclxuICAgICAgICAuZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZmxleC1jb2x1bW4tY29udGFpbmVyIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZsZXgtcm93IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZmxleC1zdHJldGNoIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgYFxyXG4gICAgXVxyXG4gIH1cclxuKVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0RWRpdG9yIGltcGxlbWVudHMgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcCwgT25EZXN0cm95IHtcclxuICAgIHB1YmxpYyBwYXJhbXM6IGFueTtcclxuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xyXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogYW55W107XHJcbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnMoKTogYW55W10ge1xyXG4gICAgICAgIGlmICh0aGlzLnVzaW5nX3NlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRPcHRpb25zO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgb3B0aW9ucyh2YWx1ZTogYW55W10pIHtcclxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wdGlvbnNWYWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgb3B0aW9uc0Rpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG5cclxuICAgIC8vIHZhcmlhYmxlcyB1c2VkIGZvciB0aGUgb3B0aW9uYWwgcGVyLXJvdy1maWx0ZXJpbmdcclxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcbiAgICBwcm90ZWN0ZWQgdXNpbmdfc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uOiAoY29udGV4dDogYW55LCByb3dEYXRhOiBhbnksIG9wdGlvbjogYW55KSA9PiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBfZmlsdGVyZWRPcHRpb25zOiBhbnlbXTtcclxuXHJcblxyXG5cclxuICAgIHB1YmxpYyBncmlkVmFsdWVGaWVsZDogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBzaG93RmlsbEJ1dHRvbjogYm9vbGVhbjtcdFx0Ly8gVGhpcyByZXByZXNlbnRzIHdoZXRoZXIgdGhlIGVkaXRvciBzaG91bGQgc2hvdyB0aGUgXCJGaWxsXCIgYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggaXMgdXNlZCB0byBjb3B5IHRoZSB2YWx1ZSBvZiB0aGlzIGNlbGwgdG8gb3RoZXIgY2VsbHMgaW4gdGhpcyBjb2x1bW4gaW4gdGhlIGdyaWRcclxuICAgIHB1YmxpYyBmaWxsR3JvdXBBdHRyaWJ1dGU6IHN0cmluZztcdFx0Ly8gVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIFwiR3JvdXBcIiBhIHBhcnRpY3VsYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3cgYmVsb25ncyB0bywgd2hpY2ggaXMgdXNlZCB3aGVuIHRoZSBmaWxsIGJ1dHRvbiBpcyBhY3RpdmUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBjbGlja2VkLCB0aGUgZmlsbCBidXR0b24gd2lsbCBjb3B5IHRoZSBkYXRhIGluIHRoYXQgY2VsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNlbGxzIGluIHJvd3Mgb2YgdGhlIHNhbWUgZ3JvdXAuXHJcbiAgICBwdWJsaWMgZmlsbEFsbDogYm9vbGVhbjsgICAgICAgICAgICAgICAgLy8gSWYgZmlsbEFsbCBpcyBzZXQsIGFsbCBkYXRhIHdpbGwgYXV0b21hdGljYWxseSBiZSBncm91cGVkIHRvZ2V0aGVyXHJcblxyXG4gICAgcHJpdmF0ZSBfc3Bpbm5lckRpYWxvZ0lzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4vLyAgICBwcml2YXRlIHNwaW5uZXJEaWFsb2dSZWZzOiBNYXREaWFsb2dSZWY8U3Bpbm5lckRpYWxvZ0NvbXBvbmVudD5bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKC8qcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nKi8pIHsgfVxyXG5cclxuICAgIGFnSW5pdChwYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMub3B0aW9uc1ZhbHVlRmllbGQgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMub3B0aW9uc0Rpc3BsYXlGaWVsZCA9IFwiXCI7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtcy5jb2x1bW4gJiYgdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZikge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWRWYWx1ZUZpZWxkID0gdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5maWVsZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuc2VsZWN0T3B0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zVmFsdWVGaWVsZCA9IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuc2VsZWN0T3B0aW9uc1ZhbHVlRmllbGQ7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0Rpc3BsYXlGaWVsZCA9IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuc2VsZWN0T3B0aW9uc0Rpc3BsYXlGaWVsZDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLnNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhY2t1cCA9IHRoaXMuc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbiA9IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNpbmdfc2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uID0gISF0aGlzLnNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbjtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwic2VsZWN0T3B0aW9uc1BlclJvd0ZpbHRlckZ1bmN0aW9uIG9wdGlvbiBoYXMgd3Jvbmcgc2lnbmF0dXJlIGZvciBjb2x1bW4gOiBcIiArIHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuaGVhZGVyTmFtZSArIFwiXFxuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKyBcIiAgUmVxdWlyZXMgc2lnbmF0dXJlIChjb250ZXh0OmFueSwgcm93RGF0YTogYW55LCBvcHRpb246IGFueSkgPT4gYm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbiA9IGJhY2t1cDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzaW5nX3NlbGVjdE9wdGlvbnNQZXJSb3dGaWx0ZXJGdW5jdGlvbiA9ICEhYmFja3VwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLmNvbnRleHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZpbGxHcm91cEF0dHJpYnV0ZSA9IHRoaXMucGFyYW1zLmNvbHVtbi5jb2xEZWYuZmlsbEdyb3VwQXR0cmlidXRlO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGxBbGwgPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLmZpbGxBbGwgJiYgKFwiXCIgKyB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLmZpbGxBbGwpLnRvTG93ZXJDYXNlKCkgIT09IFwiZmFsc2VcIjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0ZpbGxCdXR0b24gPSB0aGlzLnBhcmFtcy5jb2x1bW4uY29sRGVmLnNob3dGaWxsQnV0dG9uICYmIChcIlwiICsgdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZi5zaG93RmlsbEJ1dHRvbikudG9Mb3dlckNhc2UoKSAhPT0gXCJmYWxzZVwiO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnNcclxuICAgICAgICAgICAgICAgICYmIHRoaXMucGFyYW1zLm5vZGVcclxuICAgICAgICAgICAgICAgICYmIHRoaXMucGFyYW1zLm5vZGUuZGF0YVxyXG4gICAgICAgICAgICAgICAgJiYgdGhpcy51c2luZ19zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24pIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RPcHRpb25zUGVyUm93RmlsdGVyRnVuY3Rpb24odGhpcy5jb250ZXh0LCB0aGlzLnBhcmFtcy5ub2RlLmRhdGEsIG9wdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1zKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnBhcmFtcy52YWx1ZSA/IFwiXCIgKyB0aGlzLnBhcmFtcy52YWx1ZSA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zaG93RmlsbEJ1dHRvbiAmJiAhdGhpcy5maWxsQWxsICYmICghdGhpcy5maWxsR3JvdXBBdHRyaWJ1dGUgfHwgdGhpcy5maWxsR3JvdXBBdHRyaWJ1dGUgPT09IFwiXCIpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGUsIGNhbm5vdCB1c2UgZmlsbCBidXR0b24gd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBmaWxsR3JvdXBBdHRyaWJ1dGUgb3IgZmlsbEFsbC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtcy5ub2RlICYmIHRoaXMucGFyYW1zLm5vZGVbKHRoaXMuZ3JpZFZhbHVlRmllbGQgKyBcIl9vcmlnaW5hbFZhbHVlXCIpXSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJhbXMubm9kZVsodGhpcy5ncmlkVmFsdWVGaWVsZCArIFwiX29yaWdpbmFsVmFsdWVcIildO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtcy5ub2RlICYmICF0aGlzLnBhcmFtcy5ub2RlWyh0aGlzLmdyaWRWYWx1ZUZpZWxkICsgXCJfb3JpZ2luYWxWYWx1ZVwiKV0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLm5vZGVbKHRoaXMuZ3JpZFZhbHVlRmllbGQgKyBcIl9vcmlnaW5hbFZhbHVlXCIpXSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFRoaXMgbG9va3MgdW5uZWNlc3NhcnksIHNpbmNlIHRoaXMudmFsdWUgaXMgbGlua2VkIHRvIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0IGNvbXBvbmVudCwgYnV0XHJcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBhbHNvIGVuZHMgZWRpdGluZywgaXQgYWxzbyBxdWV1ZXMgdGhlIGRlc3RydWN0aW9uIG9mIHRoaXMgY29tcG9uZW50IGFuZCB0aGUgY2FsbCB0byBnZXRWYWx1ZS5cclxuICAgICAgICAgICAgLy8gVGhlIHByb2JsZW0gd2FzIHRoYXQgdGhpcy52YWx1ZSBpc24ndCB1cGRhdGVkIHdpdGggdGhlIG5ldyB2YWx1ZSBiZWZvcmUgdGhpcyBldmVudCBmaXJlcyxcclxuICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byB1cGRhdGUgaXQgbWFudWFsbHkgaGVyZS5cclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLm5vZGUuc2V0RGF0YVZhbHVlKHRoaXMuZ3JpZFZhbHVlRmllbGQsIHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wYXJhbXMpIHtcclxuXHJcbiAgICAgICAgICAgIC8vICBJZiB0aGUgZmlsbCBidXR0b24sIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGVkaXRvciwgaXMgYWN0aXZhdGVkLCBkb24ndCBzdG9wIGVkaXRpbmdcclxuICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgbWFraW5nIGEgc2VsZWN0aW9uLlxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0ZpbGxCdXR0b24pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLnN0b3BFZGl0aW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGlzUG9wdXAoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRmlsbEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbGxBbGwgJiYgKCF0aGlzLmZpbGxHcm91cEF0dHJpYnV0ZSB8fCB0aGlzLmZpbGxHcm91cEF0dHJpYnV0ZSA9PT0gXCJcIikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2x1bW4gYXR0cmlidXRlIFwiZmlsbEdyb3VwQXR0cmlidXRlXCIgb3IgXCJmaWxsQWxsXCIgc3BlY2lmaWVkLiBUaGlzIGlzIHJlcXVpcmVkIHRvIHVzZSB0aGUgRmlsbCBmdW5jdGlvbmFsaXR5LicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1zICYmIHRoaXMucGFyYW1zLmNvbHVtbiAmJiB0aGlzLnBhcmFtcy5jb2x1bW4uZ3JpZEFwaSAmJiB0aGlzLnBhcmFtcy5ub2RlICYmICh0aGlzLmZpbGxBbGwgfHwgKHRoaXMuZmlsbEdyb3VwQXR0cmlidXRlICYmIHRoaXMuZmlsbEdyb3VwQXR0cmlidXRlICE9PSBcIlwiKSkpIHtcclxuICAgICAgICAgICAgbGV0IHRoaXNSb3dOb2RlID0gdGhpcy5wYXJhbXMubm9kZTtcclxuXHJcbiAgICAgICAgICAgIC8vdGhpcy5zdGFydFNwaW5uZXJEaWFsb2coKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMuY29sdW1uLmdyaWRBcGkuZm9yRWFjaE5vZGVBZnRlckZpbHRlcigocm93Tm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJvd05vZGUgJiYgcm93Tm9kZS5kYXRhICYmIHRoaXNSb3dOb2RlICYmIHRoaXNSb3dOb2RlLmRhdGEgJiYgKHRoaXMuZmlsbEFsbCB8fCByb3dOb2RlLmRhdGFbdGhpcy5maWxsR3JvdXBBdHRyaWJ1dGVdID09PSB0aGlzUm93Tm9kZS5kYXRhW3RoaXMuZmlsbEdyb3VwQXR0cmlidXRlXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3Bvb2ZlZEV2ZW50OiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaTogdGhpcy5wYXJhbXMuY29sdW1uLmdyaWRBcGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbERlZjogdGhpcy5wYXJhbXMuY29sdW1uLmNvbERlZixcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLnBhcmFtcy5jb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkFwaTogdGhpcy5wYXJhbXMuY29sdW1uLmNvbHVtbkFwaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiByb3dOb2RlLmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZTogdGhpcy52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogcm93Tm9kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkVmFsdWU6IHJvd05vZGUuZGF0YVt0aGlzLmdyaWRWYWx1ZUZpZWxkXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd05vZGUucm93SW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd1Bpbm5lZDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImNlbGxWYWx1ZUNoYW5nZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByb3dOb2RlLmRhdGFbdGhpcy5ncmlkVmFsdWVGaWVsZF0gPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd05vZGUuc2V0RGF0YVZhbHVlKHRoaXMuZ3JpZFZhbHVlRmllbGQsIHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1zLmNvbHVtbi5ncmlkQXBpLmRpc3BhdGNoRXZlbnQoc3Bvb2ZlZEV2ZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBhcmFtcy5jb2x1bW4uZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuc3RvcFNwaW5uZXJEaWFsb2dzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblx0LypcclxuICAgIHN0YXJ0U3Bpbm5lckRpYWxvZygpOiBNYXREaWFsb2dSZWY8U3Bpbm5lckRpYWxvZ0NvbXBvbmVudD4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9zcGlubmVyRGlhbG9nSXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3BlbiA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCBjb25maWd1cmF0aW9uOiBNYXREaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBcIlBsZWFzZSB3YWl0Li4uXCIsXHJcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAzLFxyXG4gICAgICAgICAgICBkaWFtZXRlcjogMzBcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24ud2lkdGggPSBcIjEzZW1cIjtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGxldCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiA9IHRoaXMuZGlhbG9nLm9wZW4oU3Bpbm5lckRpYWxvZ0NvbXBvbmVudCwgY29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHsgdGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3BlbiA9IGZhbHNlOyB9KTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzLnB1c2goZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZjtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wU3Bpbm5lckRpYWxvZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgZm9yIChsZXQgZGlhbG9nUmVmIG9mIHRoaXMuc3Bpbm5lckRpYWxvZ1JlZnMpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Bpbm5lckRpYWxvZ1JlZnMgPSBbXTtcclxuICAgIH1cclxuXHQqL1xyXG59XHJcbiJdfQ==
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { CommonModule } from "@angular/common";
|
|
3
|
-
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
-
import { SelectRenderer } from "./select.renderer";
|
|
5
|
-
import { DateRenderer } from "./date.renderer";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class AgGridRendererModule {
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
10
|
-
DateRenderer], imports: [CommonModule,
|
|
11
|
-
FormsModule,
|
|
12
|
-
ReactiveFormsModule], exports: [SelectRenderer,
|
|
13
|
-
DateRenderer] }); }
|
|
14
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
15
|
-
FormsModule,
|
|
16
|
-
ReactiveFormsModule] }); }
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
19
|
-
type: NgModule,
|
|
20
|
-
args: [{
|
|
21
|
-
imports: [
|
|
22
|
-
CommonModule,
|
|
23
|
-
FormsModule,
|
|
24
|
-
ReactiveFormsModule,
|
|
25
|
-
],
|
|
26
|
-
declarations: [
|
|
27
|
-
SelectRenderer,
|
|
28
|
-
DateRenderer
|
|
29
|
-
],
|
|
30
|
-
exports: [
|
|
31
|
-
SelectRenderer,
|
|
32
|
-
DateRenderer
|
|
33
|
-
]
|
|
34
|
-
}]
|
|
35
|
-
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
+
import { SelectRenderer } from "./select.renderer";
|
|
5
|
+
import { DateRenderer } from "./date.renderer";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class AgGridRendererModule {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AgGridRendererModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AgGridRendererModule, declarations: [SelectRenderer,
|
|
10
|
+
DateRenderer], imports: [CommonModule,
|
|
11
|
+
FormsModule,
|
|
12
|
+
ReactiveFormsModule], exports: [SelectRenderer,
|
|
13
|
+
DateRenderer] }); }
|
|
14
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AgGridRendererModule, imports: [CommonModule,
|
|
15
|
+
FormsModule,
|
|
16
|
+
ReactiveFormsModule] }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AgGridRendererModule, decorators: [{
|
|
19
|
+
type: NgModule,
|
|
20
|
+
args: [{
|
|
21
|
+
imports: [
|
|
22
|
+
CommonModule,
|
|
23
|
+
FormsModule,
|
|
24
|
+
ReactiveFormsModule,
|
|
25
|
+
],
|
|
26
|
+
declarations: [
|
|
27
|
+
SelectRenderer,
|
|
28
|
+
DateRenderer
|
|
29
|
+
],
|
|
30
|
+
exports: [
|
|
31
|
+
SelectRenderer,
|
|
32
|
+
DateRenderer
|
|
33
|
+
]
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yZW5kZXJlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvZ3JpZC1yZW5kZXJlcnMvYWctZ3JpZC1yZW5kZXJlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBZ0I3QyxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFSL0IsY0FBYztZQUNWLFlBQVksYUFOVixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQixhQU96QixjQUFjO1lBQ1YsWUFBWTsrR0FHTCxvQkFBb0IsWUFiekIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7OzJGQVdkLG9CQUFvQjtrQkFmaEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjtxQkFDdEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNoQixjQUFjO3dCQUNWLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNYLGNBQWM7d0JBQ1YsWUFBWTtxQkFDYjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgU2VsZWN0UmVuZGVyZXIgfSBmcm9tIFwiLi9zZWxlY3QucmVuZGVyZXJcIjtcclxuaW1wb3J0IHtEYXRlUmVuZGVyZXJ9IGZyb20gXCIuL2RhdGUucmVuZGVyZXJcIjtcclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuXHRcdFNlbGVjdFJlbmRlcmVyLFxyXG4gICAgICBEYXRlUmVuZGVyZXJcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcblx0XHRTZWxlY3RSZW5kZXJlcixcclxuICAgICAgRGF0ZVJlbmRlcmVyXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ0dyaWRSZW5kZXJlck1vZHVsZSB7IH1cclxuIl19
|