@syncfusion/ej2-angular-grids 28.2.12 → 29.1.33
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/CHANGELOG.md +0 -150
- package/README.md +1 -1
- package/esm2020/src/grid/columns.directive.mjs +3 -3
- package/esm2020/src/grid/grid.component.mjs +21 -3
- package/esm2020/src/grid/stacked-column.directive.mjs +3 -3
- package/fesm2015/syncfusion-ej2-angular-grids.mjs +24 -6
- package/fesm2015/syncfusion-ej2-angular-grids.mjs.map +1 -1
- package/fesm2020/syncfusion-ej2-angular-grids.mjs +24 -6
- package/fesm2020/syncfusion-ej2-angular-grids.mjs.map +1 -1
- package/package.json +10 -9
- package/schematics/utils/lib-details.d.ts +2 -2
- package/schematics/utils/lib-details.js +2 -2
- package/schematics/utils/lib-details.ts +2 -2
- package/src/grid/columns.directive.d.ts +7 -1
- package/src/grid/grid.component.d.ts +5 -1
- package/src/grid/stacked-column.directive.d.ts +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,156 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
### Grid
|
|
6
6
|
|
|
7
|
-
#### Bug fixes
|
|
8
|
-
|
|
9
|
-
- `#F195594` - Resolved a script error that occurred when focusing on hidden cells after clicking the scrollbar.
|
|
10
|
-
- `#I679119` - The issue with filtering the `Date` column by month or day value has been resolved.
|
|
11
|
-
- `#I684300` - Fixed an issue where virtual scrolling did not conclude properly when adding a new record at the bottom.
|
|
12
|
-
- `#I695471` - The issue where the `notEqual` filter in menu filtering failed for `Date` and `DateTime` columns has been resolved.
|
|
13
|
-
- `#I691688` - Resolved the issue where the grid `captionTemplate` key value conflicted with React `key` prop.
|
|
14
|
-
- `#I693712` - Resolved the issue where `customAttributes` were not applied when splitting stacked header columns with frozen columns.
|
|
15
|
-
|
|
16
|
-
## 28.2.9 (2025-03-04)
|
|
17
|
-
|
|
18
|
-
### Grid
|
|
19
|
-
|
|
20
|
-
#### Bug fixes
|
|
21
|
-
|
|
22
|
-
- `#I688846` - The issue of performance delay in checkbox row selection when filtering complex columns has been resolved.
|
|
23
|
-
- `#I687298` - Resolved the issue where column header spanning was not working correctly with stacked headers in Excel export.
|
|
24
|
-
- `#I682492` - Fixed an issue where a script error was thrown when copying with a focused stacked header in cell selection mode.
|
|
25
|
-
- `#I690056` - Resolved the issue with `persistSelection` in the grouped grid when collapsing and expanding.
|
|
26
|
-
- `#I685339` - Resolved the issue where resizing the frozen column is not adjust the content table properly.
|
|
27
|
-
|
|
28
|
-
## 28.2.7 (2025-02-25)
|
|
29
|
-
|
|
30
|
-
### Grid
|
|
31
|
-
|
|
32
|
-
#### Bug fixes
|
|
33
|
-
|
|
34
|
-
- `#I687341` - In `on-demand filtering`, filter dialog in a grouped grid with existing filters did not show all distinct values issue has been resolved.
|
|
35
|
-
- `#I591587` - The issue where the `on-demand filtering` feature did not function correctly when using a `foreign key` column has been resolved.
|
|
36
|
-
- `#I691061` - Resolved an issue where the row was selected while editing a cell in batch mode, even when `checkboxOnly` was enabled.
|
|
37
|
-
- `#I688302` - Fixed an issue where a duplicate `API` call occurred during virtual scrolling.
|
|
38
|
-
- `#I676970` - Resolved an issue where bottom white space appeared after fully scrolling down on the initial virtual grid load.
|
|
39
|
-
|
|
40
|
-
## 28.2.6 (2025-02-18)
|
|
41
|
-
|
|
42
|
-
### Grid
|
|
43
|
-
|
|
44
|
-
#### Bug fixes
|
|
45
|
-
|
|
46
|
-
- `#I684532` - Resolved the issue where the `dataSourceChanged` event was not triggered when end editing in batch mode with custom data binding.
|
|
47
|
-
- `#I686671` - Fixed an issue where the updated React state was not accessible inside the Grid `filterTemplate`.
|
|
48
|
-
- `#I689691` - Fixed a script error that occurred during the save action when using grouping and hierarchy features.
|
|
49
|
-
- `#I682492` - Resolved the script error that was thrown when copying with column selection in cell selection mode.
|
|
50
|
-
|
|
51
|
-
## 28.2.5 (2025-02-11)
|
|
52
|
-
|
|
53
|
-
### Grid
|
|
54
|
-
|
|
55
|
-
#### Bug fixes
|
|
56
|
-
|
|
57
|
-
- `#I679470` - The issue of the missing focus border on grid cells after adding rows has been resolved.
|
|
58
|
-
- `#I679056` - The problem of a script error occurring when updating the dataSource with a frozen column and the `All` option in the pager dropdown has been resolved.
|
|
59
|
-
- `#I682856` - Resolved an issue where pressing `ESC` or the cancel button in the toolbar did not properly restore a row after editing.
|
|
60
|
-
- `#I687968` - Fixed an issue where virtual scrolling did not function correctly when frozen columns were enabled.
|
|
61
|
-
- `#I679046` - Resolved an issue where infinite scrolling not loading correctly in Firefox at specific resolutions.
|
|
62
|
-
- `#I682690` - The issue where the `DropDownList popup` does not opening with `Alt + Down Arrow` in the Grid for remote data binding has been resolved.
|
|
63
|
-
|
|
64
|
-
## 28.2.4 (2025-02-04)
|
|
65
|
-
|
|
66
|
-
### Grid
|
|
67
|
-
|
|
68
|
-
#### Bug fixes
|
|
69
|
-
|
|
70
|
-
- `#I691051` - Fixed a script error thrown when accessing the `pageSize` property within the `actionComplete` event of the Grid.
|
|
71
|
-
- `#I681001` - Resolved the issue where the Update and Cancel buttons were not displayed in normal edit mode on an adaptive layout.
|
|
72
|
-
- `#I665236` - Fixed the issue where the header checkbox displayed an indeterminate state when all rows were selected with `virtualization` enabled.
|
|
73
|
-
-`#I677222` - Resolved an issue where the group caption text was not displayed properly when grouping with frozen columns.
|
|
74
|
-
- `#I679448` - Fixed an issue where the validation error message was hidden under the Grid column header when the grid had only two rows for a custom tooltip.
|
|
75
|
-
- `#I681556` - Resolved an issue where the Grid was displaying only the searched column in the `ColumnChooser`.
|
|
76
|
-
- `#FB64702` - Fixed a script error that occurred on expand or collapse when `InfiniteScrolling` with frozen columns and grouping.
|
|
77
|
-
- `#I683071` - Resolved an issue where data misalignment with the frozen column in the Material 3 theme.
|
|
78
|
-
- `#I660627` - Resolved an issue where column reordering cancellation in the `actionBegin` event did not work as expected when only the header column was reordered.
|
|
79
|
-
|
|
80
|
-
## 28.2.3 (2025-01-29)
|
|
81
|
-
|
|
82
|
-
### Grid
|
|
83
|
-
|
|
84
|
-
#### Bug fixes
|
|
85
|
-
|
|
86
|
-
- `#I665951` - A blank space that appeared on the initial render when using frozen columns with `columnVirtualization` has been fixed.
|
|
87
|
-
- `#I676688` - A script error that occurred during Excel export for image columns when grid column widths were not defined has been resolved.
|
|
88
|
-
- `#I681573` - A script error that occurred when clicking the Cancel or Save button in dialog editing with grouping has been resolved.
|
|
89
|
-
- `#I657081` - Duplicate `API` requests triggered during `virtual scrolling` in the grid have been resolved.
|
|
90
|
-
- `#I678648` - The issue with the invalid attribute name `aria-grouped` detected in the Grid component with grouping has been fixed.
|
|
91
|
-
- `#I679153` - A script error that occurred when destroying the grid with `virtualization` and `persistence` enabled has been fixed.
|
|
92
|
-
|
|
93
|
-
## 28.1.41 (2025-01-21)
|
|
94
|
-
|
|
95
|
-
### Grid
|
|
96
|
-
|
|
97
|
-
#### Bug fixes
|
|
98
|
-
|
|
99
|
-
- `#I676657` - Resolved an issue where two column chooser dialog were opened when the `openColumnChooser` method was called programmatically in an adaptive layout.
|
|
100
|
-
- `#I932065` - Fixed the tooltip flickering issue when the mouse moves inside the grid header.
|
|
101
|
-
- `#I675890` - Resolved an issue where the grid refresh action was triggered on search focus-out when performing a search for the same key.
|
|
102
|
-
|
|
103
|
-
## 28.1.38 (2025-01-07)
|
|
104
|
-
|
|
105
|
-
### Grid
|
|
106
|
-
|
|
107
|
-
#### Bug fixes
|
|
108
|
-
|
|
109
|
-
- `#I667386` - The issue where resizing a column with the frozen column feature enabled caused other columns to resize has been resolved.
|
|
110
|
-
- `#I675761` - The issue of the spinner not being displayed in the filter dialog of the grid has been resolved.
|
|
111
|
-
|
|
112
|
-
## 28.1.37 (2024-12-31)
|
|
113
|
-
|
|
114
|
-
### Grid
|
|
115
|
-
|
|
116
|
-
#### Bug fixes
|
|
117
|
-
|
|
118
|
-
- `#I662531` - The script error that occurred when autofit was enabled in the Grid, the width of the first column was undefined, and its visibility was set to false has been resolved.
|
|
119
|
-
- `#I661447` - Resolved an issue where templates were not rendered in the printed output of the React Grid.
|
|
120
|
-
- `#I664462` - Resolved the issue where `SelectedRowIndex` was not updating correctly when `allowSelection` was enabled dynamically.
|
|
121
|
-
- `#I666371` - Resolved the issue where the `rowSelected` event was triggered twice when persist selection was enabled.
|
|
122
|
-
- `#FB63898` - The script issue caused by an initial filter query with complex predicates when using the `ODataV4Adaptor` has been resolved.
|
|
123
|
-
- `#I665773` - Fixed the issue where the `Column Menu popup` was not positioned correctly when the `StickyHeader` feature was enabled, and the screen was zoomed.
|
|
124
|
-
|
|
125
|
-
## 28.1.36
|
|
126
|
-
|
|
127
|
-
### Grid
|
|
128
|
-
|
|
129
|
-
#### Bug fixes
|
|
130
|
-
|
|
131
|
-
- `I660080` - The issue where export options were not disabled when properties were set to false has been resolved.
|
|
132
|
-
- `I657741` - Escape key does not function correctly for column menu filtering when the type is set to `Menu` has been resolved.
|
|
133
|
-
- `#FB31658` - The issue of white space appearing during full downward scroll and the occurrence of repeated data with incorrect blocks during slow upward scrolling in virtual scrolling has been resolved.
|
|
134
|
-
- `#I659372` - Fixed an issue where the Select All checkbox would automatically get checked after scrolling and selecting the last record when virtual scrolling was enabled.
|
|
135
|
-
- `#I663580` - The issue with the cell save functionality not working properly on pressing the Enter key when collapsing rows has been resolved.
|
|
136
|
-
- `#I662005` - Fixed an issue where the `pageSize` setting did not work as expected after updating rules using the `QueryBuilder`.
|
|
137
|
-
- `#I660641` - Fixed an issue where the Checkbox Filter dialog was cut off when rendering the grid inside an `Accordion component`, with `filter.type` set to `CheckBox` and `filterSettings.type` set to `Menu`.
|
|
138
|
-
- `#I665951` - Resolved an issue where frozen columns with `ColumnVirtualization` caused a blank space.
|
|
139
|
-
- `#I664685` - The script error that occurred when collapsing all records and then deleting the last record has been fixed.
|
|
140
|
-
|
|
141
|
-
## 28.1.35 (2024-12-18)
|
|
142
|
-
|
|
143
|
-
### Grid
|
|
144
|
-
|
|
145
|
-
#### Bug fixes
|
|
146
|
-
|
|
147
|
-
- `#I659877` - Fixed the issue where the `getSelectedRecords` method retained previous selections when virtual scrolling was enabled.
|
|
148
|
-
- `#I660588` - The issue of a script error occurring while searching for data after clearing the sorting in the hierarchy grid has been resolved.
|
|
149
|
-
- `#I660594` - The problem of the vertical scrollbar disappearing when frozen rows are enabled in the responsive grid has been resolved.
|
|
150
|
-
- `#F195226` - The issue of being unable to navigate to the `editTemplate` with the keyboard while adding a record has been resolved.
|
|
151
|
-
- `#I656905` - Fixed an issue where clearing filters in the grid with custom page sizes displayed all records on one page.
|
|
152
|
-
|
|
153
|
-
## 28.1.33 (2024-12-12)
|
|
154
|
-
|
|
155
|
-
### Grid
|
|
156
|
-
|
|
157
7
|
#### Features
|
|
158
8
|
|
|
159
9
|
- `#FB3775` - The `ODataV4` functionality has been enhanced, enabling you to invoke custom URLs for data fetching and CRUD actions.
|
package/README.md
CHANGED
|
@@ -139,7 +139,7 @@ Check the changelog [here](https://github.com/syncfusion/ej2-angular-ui-componen
|
|
|
139
139
|
|
|
140
140
|
## License and copyright
|
|
141
141
|
|
|
142
|
-
> This is a commercial product and requires a paid license for possession or use. Syncfusion
|
|
142
|
+
> This is a commercial product and requires a paid license for possession or use. Syncfusion’s licensed software, including this component, is subject to the terms and conditions of Syncfusion's [EULA](https://www.syncfusion.com/eula/es/). To acquire a license for 80+ [Angular UI components](https://www.syncfusion.com/angular-components), you can [purchase](https://www.syncfusion.com/sales/products) or [start a free 30-day trial](https://www.syncfusion.com/account/manage-trials/start-trials).
|
|
143
143
|
|
|
144
144
|
> A free community [license](https://www.syncfusion.com/products/communitylicense) is also available for companies and individuals whose organizations have less than $1 million USD in annual gross revenue and five or fewer developers.
|
|
145
145
|
|
|
@@ -4,7 +4,7 @@ import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
|
|
|
4
4
|
import { Template } from '@syncfusion/ej2-angular-base';
|
|
5
5
|
import { StackedColumnsDirective } from './stacked-column.directive';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
let input = ['allowEditing', 'allowFiltering', 'allowGrouping', 'allowReordering', 'allowResizing', 'allowSearching', 'allowSorting', 'autoFit', 'clipMode', 'columns', 'commands', 'customAttributes', 'dataSource', 'defaultValue', 'disableHtmlEncode', 'displayAsCheckBox', 'edit', 'editTemplate', 'editType', 'enableGroupByFormat', 'field', 'filter', 'filterBarTemplate', 'filterTemplate', 'foreignKeyField', 'foreignKeyValue', 'format', 'formatter', 'freeze', 'headerTemplate', 'headerText', 'headerTextAlign', 'headerValueAccessor', 'hideAtMedia', 'index', 'isFrozen', 'isIdentity', 'isPrimaryKey', 'lockColumn', 'maxWidth', 'minWidth', 'showColumnMenu', 'showInColumnChooser', 'sortComparer', 'template', 'textAlign', 'type', 'uid', 'validationRules', 'valueAccessor', 'visible', 'width'];
|
|
7
|
+
let input = ['allowEditing', 'allowFiltering', 'allowGrouping', 'allowReordering', 'allowResizing', 'allowSearching', 'allowSorting', 'autoFit', 'clipMode', 'columns', 'commands', 'customAttributes', 'dataSource', 'defaultValue', 'disableHtmlEncode', 'displayAsCheckBox', 'edit', 'editTemplate', 'editType', 'enableGroupByFormat', 'field', 'filter', 'filterBarTemplate', 'filterTemplate', 'foreignKeyField', 'foreignKeyValue', 'format', 'formatter', 'freeze', 'headerTemplate', 'headerText', 'headerTextAlign', 'headerValueAccessor', 'hideAtMedia', 'index', 'isFrozen', 'isIdentity', 'isPrimaryKey', 'lockColumn', 'maxWidth', 'minWidth', 'showColumnMenu', 'showInColumnChooser', 'sortComparer', 'template', 'templateOptions', 'textAlign', 'type', 'uid', 'validationRules', 'valueAccessor', 'visible', 'width'];
|
|
8
8
|
let outputs = [];
|
|
9
9
|
/**
|
|
10
10
|
* `e-column` directive represent a column of the Angular Grid.
|
|
@@ -29,7 +29,7 @@ export class ColumnDirective extends ComplexBase {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
ColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ColumnDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
32
|
-
ColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ColumnDirective, selector: "ejs-grid>e-columns>e-column", inputs: { allowEditing: "allowEditing", allowFiltering: "allowFiltering", allowGrouping: "allowGrouping", allowReordering: "allowReordering", allowResizing: "allowResizing", allowSearching: "allowSearching", allowSorting: "allowSorting", autoFit: "autoFit", clipMode: "clipMode", columns: "columns", commands: "commands", customAttributes: "customAttributes", dataSource: "dataSource", defaultValue: "defaultValue", disableHtmlEncode: "disableHtmlEncode", displayAsCheckBox: "displayAsCheckBox", edit: "edit", editTemplate: "editTemplate", editType: "editType", enableGroupByFormat: "enableGroupByFormat", field: "field", filter: "filter", filterBarTemplate: "filterBarTemplate", filterTemplate: "filterTemplate", foreignKeyField: "foreignKeyField", foreignKeyValue: "foreignKeyValue", format: "format", formatter: "formatter", freeze: "freeze", headerTemplate: "headerTemplate", headerText: "headerText", headerTextAlign: "headerTextAlign", headerValueAccessor: "headerValueAccessor", hideAtMedia: "hideAtMedia", index: "index", isFrozen: "isFrozen", isIdentity: "isIdentity", isPrimaryKey: "isPrimaryKey", lockColumn: "lockColumn", maxWidth: "maxWidth", minWidth: "minWidth", showColumnMenu: "showColumnMenu", showInColumnChooser: "showInColumnChooser", sortComparer: "sortComparer", template: "template", textAlign: "textAlign", type: "type", uid: "uid", validationRules: "validationRules", valueAccessor: "valueAccessor", visible: "visible", width: "width" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "commandsTemplate", first: true, predicate: ["commandsTemplate"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "childColumns", first: true, predicate: StackedColumnsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
32
|
+
ColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ColumnDirective, selector: "ejs-grid>e-columns>e-column", inputs: { allowEditing: "allowEditing", allowFiltering: "allowFiltering", allowGrouping: "allowGrouping", allowReordering: "allowReordering", allowResizing: "allowResizing", allowSearching: "allowSearching", allowSorting: "allowSorting", autoFit: "autoFit", clipMode: "clipMode", columns: "columns", commands: "commands", customAttributes: "customAttributes", dataSource: "dataSource", defaultValue: "defaultValue", disableHtmlEncode: "disableHtmlEncode", displayAsCheckBox: "displayAsCheckBox", edit: "edit", editTemplate: "editTemplate", editType: "editType", enableGroupByFormat: "enableGroupByFormat", field: "field", filter: "filter", filterBarTemplate: "filterBarTemplate", filterTemplate: "filterTemplate", foreignKeyField: "foreignKeyField", foreignKeyValue: "foreignKeyValue", format: "format", formatter: "formatter", freeze: "freeze", headerTemplate: "headerTemplate", headerText: "headerText", headerTextAlign: "headerTextAlign", headerValueAccessor: "headerValueAccessor", hideAtMedia: "hideAtMedia", index: "index", isFrozen: "isFrozen", isIdentity: "isIdentity", isPrimaryKey: "isPrimaryKey", lockColumn: "lockColumn", maxWidth: "maxWidth", minWidth: "minWidth", showColumnMenu: "showColumnMenu", showInColumnChooser: "showInColumnChooser", sortComparer: "sortComparer", template: "template", templateOptions: "templateOptions", textAlign: "textAlign", type: "type", uid: "uid", validationRules: "validationRules", valueAccessor: "valueAccessor", visible: "visible", width: "width" }, queries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true }, { propertyName: "commandsTemplate", first: true, predicate: ["commandsTemplate"], descendants: true }, { propertyName: "filter_itemTemplate", first: true, predicate: ["filterItemTemplate"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true }, { propertyName: "childColumns", first: true, predicate: StackedColumnsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
33
33
|
__decorate([
|
|
34
34
|
Template()
|
|
35
35
|
], ColumnDirective.prototype, "template", void 0);
|
|
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
97
97
|
},
|
|
98
98
|
}]
|
|
99
99
|
}], ctorParameters: function () { return []; } });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JpZC9jb2x1bW5zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXJFLElBQUksS0FBSyxHQUFhLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2p5QixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUE0QjtJQXFjN0QsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQWpjOUMsU0FBSSxHQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFtY2hDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OzRHQTFjUSxlQUFlO2dHQUFmLGVBQWUsb25FQUhXLHVCQUF1QjtBQXNhMUQ7SUFEQyxRQUFRLEVBQUU7aURBQ1U7QUFRckI7SUFEQyxRQUFRLEVBQUU7dURBQ2dCO0FBRzNCO0lBREMsUUFBUSxFQUFFO3lEQUNrQjtBQUc3QjtJQURDLFFBQVEsRUFBRTs0REFDcUI7QUFTaEM7SUFEQyxRQUFRLEVBQUU7cURBQ2M7QUFTekI7SUFEQyxRQUFRLEVBQUU7dURBQ2dCOzJGQW5jbEIsZUFBZTtrQkFSM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLFlBQVksRUFBRSxJQUFJLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztxQkFDMUQ7aUJBQ0o7dUdBb2FVLFFBQVE7c0JBRmQsWUFBWTt1QkFBQyxVQUFVO2dCQVVqQixjQUFjO3NCQUZwQixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLdkIsZ0JBQWdCO3NCQUZ0QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFLekIsbUJBQW1CO3NCQUZ6QixZQUFZO3VCQUFDLG9CQUFvQjtnQkFXM0IsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxjQUFjO2dCQVdyQixjQUFjO3NCQUZwQixZQUFZO3VCQUFDLGdCQUFnQjs7QUFZbEM7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQTJCO0lBQzdEO1FBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7OzZHQUhRLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLG1GQUhTLGVBQWU7MkZBR3hDLGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQztxQkFDakQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IFN0YWNrZWRDb2x1bW5zRGlyZWN0aXZlIH0gZnJvbSAnLi9zdGFja2VkLWNvbHVtbi5kaXJlY3RpdmUnO1xuXG5sZXQgaW5wdXQ6IHN0cmluZ1tdID0gWydhbGxvd0VkaXRpbmcnLCAnYWxsb3dGaWx0ZXJpbmcnLCAnYWxsb3dHcm91cGluZycsICdhbGxvd1Jlb3JkZXJpbmcnLCAnYWxsb3dSZXNpemluZycsICdhbGxvd1NlYXJjaGluZycsICdhbGxvd1NvcnRpbmcnLCAnYXV0b0ZpdCcsICdjbGlwTW9kZScsICdjb2x1bW5zJywgJ2NvbW1hbmRzJywgJ2N1c3RvbUF0dHJpYnV0ZXMnLCAnZGF0YVNvdXJjZScsICdkZWZhdWx0VmFsdWUnLCAnZGlzYWJsZUh0bWxFbmNvZGUnLCAnZGlzcGxheUFzQ2hlY2tCb3gnLCAnZWRpdCcsICdlZGl0VGVtcGxhdGUnLCAnZWRpdFR5cGUnLCAnZW5hYmxlR3JvdXBCeUZvcm1hdCcsICdmaWVsZCcsICdmaWx0ZXInLCAnZmlsdGVyQmFyVGVtcGxhdGUnLCAnZmlsdGVyVGVtcGxhdGUnLCAnZm9yZWlnbktleUZpZWxkJywgJ2ZvcmVpZ25LZXlWYWx1ZScsICdmb3JtYXQnLCAnZm9ybWF0dGVyJywgJ2ZyZWV6ZScsICdoZWFkZXJUZW1wbGF0ZScsICdoZWFkZXJUZXh0JywgJ2hlYWRlclRleHRBbGlnbicsICdoZWFkZXJWYWx1ZUFjY2Vzc29yJywgJ2hpZGVBdE1lZGlhJywgJ2luZGV4JywgJ2lzRnJvemVuJywgJ2lzSWRlbnRpdHknLCAnaXNQcmltYXJ5S2V5JywgJ2xvY2tDb2x1bW4nLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAnc2hvd0NvbHVtbk1lbnUnLCAnc2hvd0luQ29sdW1uQ2hvb3NlcicsICdzb3J0Q29tcGFyZXInLCAndGVtcGxhdGUnLCAndGV4dEFsaWduJywgJ3R5cGUnLCAndWlkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZUFjY2Vzc29yJywgJ3Zpc2libGUnLCAnd2lkdGgnXTtcbmxldCBvdXRwdXRzOiBzdHJpbmdbXSA9IFtdO1xuLyoqXG4gKiBgZS1jb2x1bW5gIGRpcmVjdGl2ZSByZXByZXNlbnQgYSBjb2x1bW4gb2YgdGhlIEFuZ3VsYXIgR3JpZC4gXG4gKiBJdCBtdXN0IGJlIGNvbnRhaW5lZCBpbiBhIEdyaWQgY29tcG9uZW50KGBlanMtZ3JpZGApLiBcbiAqIGBgYGh0bWxcbiAqIDxlanMtZ3JpZCBbZGF0YVNvdXJjZV09J2RhdGEnIGFsbG93UGFnaW5nPSd0cnVlJyBhbGxvd1NvcnRpbmc9J3RydWUnPiBcbiAqICAgPGUtY29sdW1ucz5cbiAqICAgIDxlLWNvbHVtbiBmaWVsZD0nSUQnIHdpZHRoPScxMDAnPjwvZS1jb2x1bW4+XG4gKiAgICA8ZS1jb2x1bW4gZmllbGQ9J25hbWUnIGhlYWRlclRleHQ9J05hbWUnIHdpZHRoPScxMDAnPjwvZS1jb2x1bW4+XG4gKiAgIDwvZS1jb2x1bW5zPlxuICogPC9lanMtZ3JpZD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy1ncmlkPmUtY29sdW1ucz5lLWNvbHVtbicsXG4gICAgaW5wdXRzOiBpbnB1dCxcbiAgICBvdXRwdXRzOiBvdXRwdXRzLCAgICBcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkQ29sdW1uczogbmV3IENvbnRlbnRDaGlsZChTdGFja2VkQ29sdW1uc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIENvbHVtbkRpcmVjdGl2ZSBleHRlbmRzIENvbXBsZXhCYXNlPENvbHVtbkRpcmVjdGl2ZT4ge1xuICAgIHB1YmxpYyBkaXJlY3RpdmVQcm9wTGlzdDogYW55O1xuXHRcbiAgICBwdWJsaWMgY2hpbGRDb2x1bW5zOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydjb2x1bW5zJ107XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGRhdGEgdHlwZSBvZiB0aGUgY29sdW1uLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dFZGl0aW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgZWRpdGluZyBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFyZSBlZGl0YWJsZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93RWRpdGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dGaWx0ZXJpbmdgIHNldCB0byBmYWxzZSwgdGhlbiBpdCBkaXNhYmxlcyBmaWx0ZXJpbmcgb3B0aW9uIGFuZCBmaWx0ZXIgYmFyIGVsZW1lbnQgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBhcmUgZmlsdGVyYWJsZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93RmlsdGVyaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd0dyb3VwaW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgZ3JvdXBpbmcgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBhcmUgZ3JvdXBhYmxlLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dHcm91cGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dSZW9yZGVyaW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgcmVvcmRlciBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGNhbiBiZSByZW9yZGVyLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dSZW9yZGVyaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd1Jlc2l6aW5nYCBzZXQgdG8gZmFsc2UsIGl0IGRpc2FibGVzIHJlc2l6ZSBvcHRpb24gb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93UmVzaXppbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93U2VhcmNoaW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgU2VhcmNoaW5nIG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIGNvbHVtbnMgYWxsb3cgU2VhcmNoaW5nLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dTZWFyY2hpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93U29ydGluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIHNvcnRpbmcgb3B0aW9uIG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIGNvbHVtbnMgYXJlIHNvcnRhYmxlLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dTb3J0aW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhdXRvRml0YCBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgcGFydGljdWxhciBjb2x1bW4gY29udGVudCB3aWR0aCB3aWxsIGJlIFxuICAgICAqIGFkanVzdGVkIGJhc2VkIG9uIGl0cyBjb250ZW50IGluIHRoZSBpbml0aWFsIHJlbmRlcmluZyBpdHNlbGYuIFxuICAgICAqIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSBhcyB0cnVlIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgYXV0b0ZpdENvbHVtbnNgIG1ldGhvZCBpbiB0aGUgYGRhdGFCb3VuZGAgZXZlbnQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYXV0b0ZpdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBjZWxsIGNvbnRlbnQncyBvdmVyZmxvdyBtb2RlLiBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZSBcbiAgICAgKiAqIGBDbGlwYCAtICBUcnVuY2F0ZXMgdGhlIGNlbGwgY29udGVudCB3aGVuIGl0IG92ZXJmbG93cyBpdHMgYXJlYS4gXG4gICAgICogKiBgRWxsaXBzaXNgIC0gIERpc3BsYXlzIGVsbGlwc2lzIHdoZW4gdGhlIGNlbGwgY29udGVudCBvdmVyZmxvd3MgaXRzIGFyZWEuIFxuICAgICAqICogYEVsbGlwc2lzV2l0aFRvb2x0aXBgIC0gRGlzcGxheXMgZWxsaXBzaXMgd2hlbiB0aGUgY2VsbCBjb250ZW50IG92ZXJmbG93cyBpdHMgYXJlYSBcbiAgICAgKiBhbHNvIGl0IHdpbGwgZGlzcGxheSB0b29sdGlwIHdoaWxlIGhvdmVyIG9uIGVsbGlwc2lzIGFwcGxpZWQgY2VsbC5cbiAgICAgKiBAZGVmYXVsdCBFbGxpcHNpc1xuICAgICAqL1xuICAgIHB1YmxpYyBjbGlwTW9kZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBVc2VkIHRvIHJlbmRlciBtdWx0aXBsZSBoZWFkZXIgcm93cyhzdGFja2VkIGhlYWRlcnMpIG9uIHRoZSBHcmlkIGhlYWRlci5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbnM6IGFueTtcbiAgICAvKiogXG4gICAgICogYGNvbW1hbmRzYCBwcm92aWRlcyBhbiBvcHRpb24gdG8gZGlzcGxheSBjb21tYW5kIGJ1dHRvbnMgaW4gZXZlcnkgY2VsbC4gXG4gICAgICogVGhlIGF2YWlsYWJsZSBidWlsdC1pbiBjb21tYW5kIGJ1dHRvbnMgYXJlIFxuICAgICAqICogRWRpdCAtIEVkaXQgdGhlIHJlY29yZC4gXG4gICAgICogKiBEZWxldGUgLSBEZWxldGUgdGhlIHJlY29yZC4gXG4gICAgICogKiBTYXZlIC0gU2F2ZSB0aGUgcmVjb3JkLiBcbiAgICAgKiAqIENhbmNlbCAtIENhbmNlbCB0aGUgZWRpdCBzdGF0ZS5cbiAgICAgKiBcbiAgICAgKiBUaGUgZm9sbG93aW5nIGNvZGUgZXhhbXBsZSBpbXBsZW1lbnRzIHRoZSBjdXN0b20gY29tbWFuZCBjb2x1bW4uXG4gICAgICpgYGBodG1sXG4gICAgICo8c3R5bGUgdHlwZT1cInRleHQvY3NzXCIgY2xhc3M9XCJjc3NTdHlsZXNcIj5cbiAgICAgKi5kZXRhaWxzLWljb246YmVmb3JlXG4gICAgICp7XG4gICAgICogICBjb250ZW50OlwiXFxlNzRkXCI7XG4gICAgICp9XG4gICAgICo8L3N0eWxlPlxuICAgICAqPGRpdiBpZD1cIkdyaWRcIj48L2Rpdj5cbiAgICAgKmBgYFxuICAgICAqYGBgdHlwZXNjcmlwdFxuICAgICAqdmFyIGdyaWRPYmogPSBuZXcgR3JpZCh7XG4gICAgICpkYXRhc291cmNlOiB3aW5kb3cuZ3JpZERhdGEsXG4gICAgICpjb2x1bW5zIDogW1xuICAgICAqIHsgZmllbGQ6ICdDdXN0b21lcklEJywgaGVhZGVyVGV4dDogJ0N1c3RvbWVyIElEJyB9LFxuICAgICAqIHsgZmllbGQ6ICdDdXN0b21lck5hbWUnLCBoZWFkZXJUZXh0OiAnQ3VzdG9tZXIgTmFtZScgfSxcbiAgICAgKiB7Y29tbWFuZHM6IFt7YnV0dG9uT3B0aW9uOntjb250ZW50OiAnRGV0YWlscycsIGNsaWNrOiBvbkNsaWNrLCBjc3NDbGFzczogZGV0YWlscy1pY29ufX1dLCBoZWFkZXJUZXh0OiAnQ3VzdG9tZXIgRGV0YWlscyd9XG4gICAgICpdXG4gICAgICpncmlkT2JqLmFwcGVuZFRvKFwiI0dyaWRcIik7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21tYW5kczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgQ1NTIHN0eWxlcyBhbmQgYXR0cmlidXRlcyBvZiB0aGUgY29udGVudCBjZWxscyBvZiBhIHBhcnRpY3VsYXIgY29sdW1uIGNhbiBiZSBjdXN0b21pemVkLlxuICAgICAqIFxuICAgICAqIGBgYGh0bWxcbiAgICAgKjxkaXYgaWQ9XCJHcmlkXCI+PC9kaXY+XG4gICAgICpgYGBcbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKmxldCBncmlkT2JqOiBHcmlkID0gbmV3IEdyaWQoe1xuICAgICAqZGF0YVNvdXJjZTogZmlsdGVyRGF0YSxcbiAgICAgKmNvbHVtbnM6IFtcbiAgICAgKiAgIHsgZmllbGQ6ICdPcmRlcklEJywgaGVhZGVyVGV4dDogJ09yZGVyIElEJyB9LFxuICAgICAqICAge1xuICAgICAqICAgICAgIGZpZWxkOiAnRW1wbG95ZWVJRCcsIGhlYWRlclRleHQ6ICdFbXBsb3llZSBJRCcsIGN1c3RvbUF0dHJpYnV0ZXM6IHtcbiAgICAgKiAgICAgICAgICBjbGFzczogJ2VtcGxveWVlaWQnLFxuICAgICAqICAgICAgICAgIHR5cGU6ICdlbXBsb3llZS1pZC1jZWxsJ1xuICAgICAqICAgICB9XG4gICAgICogIH1dXG4gICAgICp9KTtcbiAgICAgKmdyaWRPYmouYXBwZW5kVG8oJyNHcmlkJyk7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGNvbHVtbiBkYXRhIHNvdXJjZSAgd2hpY2ggd2lsbCBhY3QgYXMgZm9yZWlnbiBkYXRhIHNvdXJjZS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRhdGFTb3VyY2U6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudCB3aGVuIGFkZGluZyBhIG5ldyByZWNvcmQgdG8gdGhlIEdyaWQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIG9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBkZWZhdWx0VmFsdWU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGRpc2FibGVIdG1sRW5jb2RlYCBpcyBzZXQgdG8gdHJ1ZSwgaXQgZW5jb2RlcyB0aGUgSFRNTCBvZiB0aGUgaGVhZGVyIGFuZCBjb250ZW50IGNlbGxzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzYWJsZUh0bWxFbmNvZGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGRpc3BsYXlBc0NoZWNrQm94YCBpcyBzZXQgdG8gdHJ1ZSwgaXQgZGlzcGxheXMgdGhlIGNvbHVtbiB2YWx1ZSBhcyBhIGNoZWNrIGJveCBpbnN0ZWFkIG9mIEJvb2xlYW4gdmFsdWUuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheUFzQ2hlY2tCb3g6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgYElFZGl0Q2VsbGAoLi4vLi4vZ3JpZC9lZGl0LyNjZWxsLWVkaXQtdGVtcGxhdGUpIG9iamVjdCB0byBjdXN0b21pemUgZGVmYXVsdCBlZGl0IGNlbGwuXG4gICAgICogQGRlZmF1bHQge31cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSB0eXBlIG9mIGNvbXBvbmVudCBmb3IgZWRpdGluZy5cbiAgICAgKiBAZGVmYXVsdCAnc3RyaW5nZWRpdCdcbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGVuYWJsZUdyb3VwQnlGb3JtYXRgIHNldCB0byB0cnVlLCB0aGVuIGl0IGdyb3VwcyB0aGUgcGFydGljdWxhciBjb2x1bW4gYnkgZm9ybWF0dGVkIHZhbHVlcy4gXG4gICAgICogQnkgZGVmYXVsdCBubyBjb2x1bW5zIGFyZSBncm91cCBieSBmb3JtYXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBlbmFibGVHcm91cEJ5Rm9ybWF0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGZpZWxkIG5hbWUgb2YgY29sdW1uIHdoaWNoIGlzIG1hcHBlZCB3aXRoIG1hcHBpbmcgbmFtZSBvZiBEYXRhU291cmNlLiBcbiAgICAgKiBUaGUgYm91bmRlZCBjb2x1bW5zIGNhbiBiZSBzb3J0LCBmaWx0ZXIgYW5kIGdyb3VwIGV0Yy4sIFxuICAgICAqIElmIHRoZSBgZmllbGRgIG5hbWUgY29udGFpbnMg4oCcZG904oCdLCB0aGVuIGl0IGlzIGNvbnNpZGVyZWQgYXMgY29tcGxleCBiaW5kaW5nLiBcbiAgICAgKiBUaGUgYGZpZWxkYCBuYW1lIG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGlkZW50aWZpZXIsIFxuICAgICAqIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhbiBhbHBoYWJldCBhbmQgc2hvdWxkIG5vdCBjb250YWluIHNwYWNlcyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIGZpZWxkOiBhbnk7XG4gICAgLyoqIFxuICAgICAqICBEZWZpbmVzIHRoZSBmaWx0ZXIgb3B0aW9ucyB0byBjdXN0b21pemUgZmlsdGVyaW5nIGZvciB0aGUgcGFydGljdWxhciBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQge31cbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsdGVyOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZmlsdGVyQmFyVGVtcGxhdGVgIGlzIHVzZWQgdG8gYWRkIGEgY3VzdG9tIGNvbXBvbmVudCBpbnN0ZWFkIG9mIGRlZmF1bHQgaW5wdXQgY29tcG9uZW50IGZvciBmaWx0ZXIgYmFyLiBcbiAgICAgKiBJdCBoYXZlIGNyZWF0ZSBhbmQgcmVhZCBmdW5jdGlvbnMuIFxuICAgICAqICogY3JlYXRlOiBJdCBpcyB1c2VkIGZvciBjcmVhdGluZyBjdXN0b20gY29tcG9uZW50cy4gXG4gICAgICogKiByZWFkOiBJdCBpcyB1c2VkIHRvIHBlcmZvcm0gY3VzdG9tIGZpbHRlciBhY3Rpb24uXG4gICAgICogXG4gICAgICogYGBgaHRtbFxuICAgICAqPGRpdiBpZD1cIkdyaWRcIj48L2Rpdj5cbiAgICAgKmBgYFxuICAgICAqYGBgdHlwZXNjcmlwdFxuICAgICAqbGV0IGdyaWRPYmo6IEdyaWQgPSBuZXcgR3JpZCh7XG4gICAgICpkYXRhU291cmNlOiBmaWx0ZXJEYXRhLFxuICAgICAqY29sdW1uczogW1xuICAgICAqICB7IGZpZWxkOiAnT3JkZXJJRCcsIGhlYWRlclRleHQ6ICdPcmRlciBJRCcgfSxcbiAgICAgKiAge1xuICAgICAqICAgICBmaWVsZDogJ0VtcGxveWVlSUQnLCBmaWx0ZXJCYXJUZW1wbGF0ZToge1xuICAgICAqICAgICAgICBjcmVhdGU6IChhcmdzOiB7IGVsZW1lbnQ6IEVsZW1lbnQsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgICBsZXQgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAqICAgICAgICAgICAgIGlucHV0LmlkID0gJ0VtcGxveWVlSUQnO1xuICAgICAqICAgICAgICAgICAgIGlucHV0LnR5cGUgPSAndGV4dCc7XG4gICAgICogICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAqICAgICAgICB9LFxuICAgICAqICAgICAgICB3cml0ZTogKGFyZ3M6IHsgZWxlbWVudDogRWxlbWVudCwgY29sdW1uOiBDb2x1bW4gfSkgPT4ge1xuICAgICAqICAgICAgICAgICAgYXJncy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgYXJncy5jb2x1bW4uZmlsdGVyQmFyVGVtcGxhdGUucmVhZCBhcyBFdmVudExpc3RlbmVyKTtcbiAgICAgKiAgICAgICAgfSxcbiAgICAgKiAgICAgICAgcmVhZDogKGFyZ3M6IHsgZWxlbWVudDogSFRNTElucHV0RWxlbWVudCwgY29sdW1uSW5kZXg6IG51bWJlciwgY29sdW1uOiBDb2x1bW4gfSkgPT4ge1xuICAgICAqICAgICAgICAgICAgZ3JpZE9iai5maWx0ZXJCeUNvbHVtbihhcmdzLmVsZW1lbnQuaWQsICdlcXVhbCcsIGFyZ3MuZWxlbWVudC52YWx1ZSk7XG4gICAgICogICAgICAgfVxuICAgICAqICAgIH1cbiAgICAgKiB9XSxcbiAgICAgKiAgYWxsb3dGaWx0ZXJpbmc6IHRydWVcbiAgICAgKn0pO1xuICAgICAqZ3JpZE9iai5hcHBlbmRUbygnI0dyaWQnKTtcbiAgICAgKmBgYFxuICAgICAqICAgICBcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlckJhclRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1hcHBpbmcgY29sdW1uIG5hbWUgb2YgdGhlIGZvcmVpZ24gZGF0YSBzb3VyY2UuIFxuICAgICAqIElmIGl0IGlzIG5vdCBkZWZpbmVkIHRoZW4gdGhlIGBjb2x1bW5zLmZpZWxkYCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgbWFwcGluZyBjb2x1bW4gbmFtZVxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9yZWlnbktleUZpZWxkOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGRpc3BsYXkgY29sdW1uIG5hbWUgZnJvbSB0aGUgZm9yZWlnbiBkYXRhIHNvdXJjZSB3aGljaCB3aWxsIGJlIG9idGFpbmVkIGZyb20gY29tcGFyaW5nIGxvY2FsIGFuZCBmb3JlaWduIGRhdGFcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZvcmVpZ25LZXlWYWx1ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBpcyB1c2VkIHRvIGNoYW5nZSBkaXNwbGF5IHZhbHVlIHdpdGggdGhlIGdpdmVuIGZvcm1hdCBhbmQgZG9lcyBub3QgYWZmZWN0IHRoZSBvcmlnaW5hbCBkYXRhLiBcbiAgICAgKiBHZXRzIHRoZSBmb3JtYXQgZnJvbSB0aGUgdXNlciB3aGljaCBjYW4gYmUgc3RhbmRhcmQgb3IgY3VzdG9tIFxuICAgICAqIFtgbnVtYmVyYF0oLi4vLi4vY29tbW9uL2ludGVybmF0aW9uYWxpemF0aW9uLyNtYW5pcHVsYXRpbmctbnVtYmVycykgXG4gICAgICogYW5kIFtgZGF0ZWBdKC4uLy4uL2NvbW1vbi9pbnRlcm5hdGlvbmFsaXphdGlvbi8jbWFuaXB1bGF0aW5nLWRhdGV0aW1lKSBmb3JtYXRzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybWF0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1ldGhvZCB3aGljaCBpcyB1c2VkIHRvIGFjaGlldmUgY3VzdG9tIGZvcm1hdHRpbmcgZnJvbSBhbiBleHRlcm5hbCBmdW5jdGlvbi4gXG4gICAgICogVGhpcyBmdW5jdGlvbiB0cmlnZ2VycyBiZWZvcmUgcmVuZGVyaW5nIG9mIGVhY2ggY2VsbC5cbiAgICAgKiBcbiAgICAgKiBgYGBodG1sXG4gICAgICo8ZGl2IGlkPVwiR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpjbGFzcyBFeHRlbmRlZEZvcm1hdHRlciBpbXBsZW1lbnRzIElDZWxsRm9ybWF0dGVyIHtcbiAgICAgKnB1YmxpYyBnZXRWYWx1ZShjb2x1bW46IENvbHVtbiwgZGF0YTogT2JqZWN0KTogT2JqZWN0IHtcbiAgICAgKiAgcmV0dXJuICc8c3BhbiBzdHlsZT1cImNvbG9yOicgKyAoZGF0YVsnVmVyaWZpZWQnXSA/ICdncmVlbicgOiAncmVkJykgKyAnXCI+PGk+JyArIGRhdGFbJ1ZlcmlmaWVkJ10gKyAnPC9pPjxzcGFuPic7XG4gICAgICp9XG4gICAgICp9XG4gICAgICpsZXQgZ3JpZE9iajogR3JpZCA9IG5ldyBHcmlkKHtcbiAgICAgKiAgICBkYXRhU291cmNlOiBmaWx0ZXJEYXRhLFxuICAgICAqICAgIGNvbHVtbnM6IFtcbiAgICAgKiAgICAgICAgeyBmaWVsZDogJ1NoaXBOYW1lJywgaGVhZGVyVGV4dDogJ1NoaXAgTmFtZScgfSxcbiAgICAgKiAgICAgICAgeyBmaWVsZDogJ1ZlcmlmaWVkJywgaGVhZGVyVGV4dDogJ1ZlcmlmaWVkIFN0YXR1cycsIGZvcm1hdHRlcjogRXh0ZW5kZWRGb3JtYXR0ZXIgfV1cbiAgICAgKn0pO1xuICAgICAqZ3JpZE9iai5hcHBlbmRUbygnI0dyaWQnKTtcbiAgICAgKmBgYFxuICAgICAqICAgICBcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdHRlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBkZWZpbmVzIHdoaWNoIHNpZGUgdGhlIGNvbHVtbiBuZWVkIHRvIGZyZWV6ZSBcbiAgICAgKiBUaGUgYXZhaWxhYmxlIGJ1aWx0LWluIGZyZWV6ZSBkaXJlY3Rpb25zIGFyZSBcbiAgICAgKiAqIExlZnQgLSBGcmVlemUgdGhlIGNvbHVtbiBhdCBsZWZ0IHNpZGUuIFxuICAgICAqICogUmlnaHQgLSBGcmVlemUgdGhlIGNvbHVtbiBhdCByaWdodCBzaWRlLiBcbiAgICAgKiAqIEZpeGVkIC0gRnJlZXplIHRoZSBjb2x1bW4gYXQgQ2VudGVyLiBcbiAgICAgKiAqIE5vbmUgLSBEb2VzIG5vdCBmcmVlemUgdGhlIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCBOb25lXG4gICAgICovXG4gICAgcHVibGljIGZyZWV6ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBoZWFkZXIgdGV4dCBvZiBjb2x1bW4gd2hpY2ggaXMgdXNlZCB0byBkaXNwbGF5IGluIGNvbHVtbiBoZWFkZXIuIFxuICAgICAqIElmIGBoZWFkZXJUZXh0YCBpcyBub3QgZGVmaW5lZCwgdGhlbiBmaWVsZCBuYW1lIHZhbHVlIHdpbGwgYmUgYXNzaWduZWQgdG8gaGVhZGVyIHRleHQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZSB0aGUgYWxpZ25tZW50IG9mIGNvbHVtbiBoZWFkZXIgd2hpY2ggaXMgdXNlZCB0byBhbGlnbiB0aGUgdGV4dCBvZiBjb2x1bW4gaGVhZGVyLlxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJUZXh0QWxpZ246IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWV0aG9kIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGhlYWRlciBjZWxsIHZhbHVlcyBmcm9tIGV4dGVybmFsIGZ1bmN0aW9uIGFuZCBkaXNwbGF5IHRoaXMgb24gZWFjaCBjZWxsIHJlbmRlcmVkLlxuICAgICAqIFxuICAgICAqIGBgYGh0bWxcbiAgICAgKjxkaXYgaWQ9XCJHcmlkXCI+PC9kaXY+XG4gICAgICpgYGBcbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKmxldCBncmlkT2JqOiBHcmlkID0gbmV3IEdyaWQoe1xuICAgICAqZGF0YVNvdXJjZTogW3sgRW1wbG95ZWVJRDogMSwgRW1wbG95ZWVOYW1lOiBbJ0pvaG4nLCAnTSddIH0sIHsgRW1wbG95ZWVJRDogMiwgRW1wbG95ZWVOYW1lOiBbJ1BldGVyJywgJ0EnXSB9XSxcbiAgICAgKmNvbHVtbnM6IFtcbiAgICAgKiAgICB7IGZpZWxkOiAnRW1wbG95ZWVJRCcsIGhlYWRlclRleHQ6ICdFbXBsb3llZSBJRCcgfSxcbiAgICAgKiAgICB7IGZpZWxkOiAnRW1wbG95ZWVOYW1lJywgaGVhZGVyVGV4dDogJ0VtcGxveWVlIEZpcnN0IE5hbWUnLFxuICAgICAqICAgICAgaGVhZGVyVmFsdWVBY2Nlc3NvcjogKGZpZWxkOiBzdHJpbmcsY29sdW1uOiBDb2x1bW4pID0+IHtcbiAgICAgKiAgICAgICAgICAgIHJldHVybiBcIm5ld2hlYWRlcm5hbWVcIjtcbiAgICAgKiAgICAgICAgfSxcbiAgICAgKiAgICB9XVxuICAgICAqfSk7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJWYWx1ZUFjY2Vzc29yOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIGNvbHVtbiB2aXNpYmlsaXR5IGNhbiBjaGFuZ2UgYmFzZWQgb24gaXRzIFtgTWVkaWEgUXVlcmllc2BdKGh0dHA6Ly9jc3NtZWRpYXF1ZXJpZXMuY29tL3doYXQtYXJlLWNzcy1tZWRpYS1xdWVyaWVzLmh0bWwpLiBcbiAgICAgKiBgaGlkZUF0TWVkaWFgIGFjY2VwdHMgb25seSB2YWxpZCBNZWRpYSBRdWVyaWVzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIGhpZGVBdE1lZGlhOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIHZhbHVlIG9mIHRoZSBjb2x1bW4uIEl0IGlzIHVzZWQgdG8gZ2V0IHRoZSBvYmplY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBpbmRleDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBZb3UgY2FuIHVzZSB0aGlzIHByb3BlcnR5IHRvIGZyZWV6ZSBzZWxlY3RlZCBjb2x1bW5zIGluIGdyaWQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGcm96ZW46IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGlzSWRlbnRpdHlgIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoaXMgY29sdW1uIGlzIGNvbnNpZGVyZWQgYXMgaWRlbnRpdHkgY29sdW1uLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzSWRlbnRpdHk6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGlzUHJpbWFyeUtleWAgaXMgc2V0IHRvIHRydWUsIGNvbnNpZGVycyB0aGlzIGNvbHVtbiBhcyB0aGUgcHJpbWFyeSBrZXkgY29uc3RyYWludC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc1ByaW1hcnlLZXk6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWFwcGluZyBjb2x1bW4gbmFtZSBvZiB0aGUgZm9yZWlnbiBkYXRhIHNvdXJjZS4gXG4gICAgICogSWYgaXQgaXMgbm90IGRlZmluZWQgdGhlbiB0aGUgYGNvbHVtbnMuZmllbGRgIHdpbGwgYmUgY29uc2lkZXJlZCBhcyBtYXBwaW5nIGNvbHVtbiBuYW1lXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9ja0NvbHVtbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSBjb2x1bW4gaW4gcGl4ZWwgb3IgcGVyY2VudGFnZSwgd2hpY2ggd2lsbCByZXN0cmljdCByZXNpemluZyBiZXlvbmQgdGhpcyBwaXhlbCBvciBwZXJjZW50YWdlLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIG1heFdpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1pbmltdW0gd2lkdGggb2YgdGhlIGNvbHVtbiBpbiBwaXhlbHMgb3IgcGVyY2VudGFnZS5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBtaW5XaWR0aDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgc2hvd0NvbHVtbk1lbnVgIHNldCB0byBmYWxzZSwgdGhlbiBpdCBkaXNhYmxlIHRoZSBjb2x1bW4gbWVudSBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGNvbHVtbiBtZW51IHdpbGwgc2hvdyBmb3IgYWxsIGNvbHVtbnNcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHNob3dDb2x1bW5NZW51OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBzaG93SW5Db2x1bW5DaG9vc2VyYCBzZXQgdG8gZmFsc2UsIHRoZW4gaGlkZXMgdGhlIHBhcnRpY3VsYXIgY29sdW1uIGluIGNvbHVtbiBjaG9vc2VyLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQgaW4gY29sdW1uIENob29zZXIuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93SW5Db2x1bW5DaG9vc2VyOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IGRlZmluZXMgdGhlIGN1c3RvbSBzb3J0IGNvbXBhcmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBzb3J0Q29tcGFyZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBjb2x1bW4gaW4gYm90aCBoZWFkZXIgYW5kIGNvbnRlbnQgY2VsbHMuXG4gICAgICogQGRlZmF1bHQgTGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyB0ZXh0QWxpZ246IGFueTtcbiAgICAvKiogXG4gICAgICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgdmFsdWUgb2YgdGhlIGNvbHVtbi4gSXQgaXMgdXNlZCB0byBnZXQgdGhlIG9iamVjdC5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyB1aWQ6IGFueTtcbiAgICAvKiogXG4gICAgICogYGVkaXRUeXBlYCguLi8uLi9ncmlkL2VkaXQvI2NlbGwtZWRpdC10eXBlLWFuZC1pdHMtcGFyYW1zKSBEZWZpbmVzIHJ1bGVzIHRvIHZhbGlkYXRlIGRhdGEgYmVmb3JlIGNyZWF0aW5nIGFuZCB1cGRhdGluZy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRpb25SdWxlczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtZXRob2QgdXNlZCB0byBhcHBseSBjdXN0b20gY2VsbCB2YWx1ZXMgZnJvbSBleHRlcm5hbCBmdW5jdGlvbiBhbmQgZGlzcGxheSB0aGlzIG9uIGVhY2ggY2VsbCByZW5kZXJlZC5cbiAgICAgKiBcbiAgICAgKiBgYGBodG1sXG4gICAgICo8ZGl2IGlkPVwiR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgZ3JpZE9iajogR3JpZCA9IG5ldyBHcmlkKHtcbiAgICAgKmRhdGFTb3VyY2U6IFt7IEVtcGxveWVlSUQ6IDEsIEVtcGxveWVlTmFtZTogWydKb2huJywgJ00nXSB9LCB7IEVtcGxveWVlSUQ6IDIsIEVtcGxveWVlTmFtZTogWydQZXRlcicsICdBJ10gfV0sXG4gICAgICpjb2x1bW5zOiBbXG4gICAgICogICAgeyBmaWVsZDogJ0VtcGxveWVlSUQnLCBoZWFkZXJUZXh0OiAnRW1wbG95ZWUgSUQnIH0sXG4gICAgICogICAgeyBmaWVsZDogJ0VtcGxveWVlTmFtZScsIGhlYWRlclRleHQ6ICdFbXBsb3llZSBGaXJzdCBOYW1lJyxcbiAgICAgKiAgICAgIHZhbHVlQWNjZXNzb3I6IChmaWVsZDogc3RyaW5nLCBkYXRhOiBPYmplY3QsIGNvbHVtbjogQ29sdW1uKSA9PiB7XG4gICAgICogICAgICAgICAgICByZXR1cm4gZGF0YVsnRW1wbG95ZWVOYW1lJ11bMF07XG4gICAgICogICAgICAgIH0sXG4gICAgICogICAgfV1cbiAgICAgKn0pO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsdWVBY2Nlc3NvcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgdmlzaWJsZWAgaXMgc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgcGFydGljdWxhciBjb2x1bW4uIEJ5IGRlZmF1bHQsIGFsbCBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2aXNpYmxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gaW4gcGl4ZWxzIG9yIHBlcmNlbnRhZ2UuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgd2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgY29sdW1uIHRlbXBsYXRlIHRoYXQgcmVuZGVycyBjdXN0b21pemVkIGVsZW1lbnQgaW4gZWFjaCBjZWxsIG9mIHRoZSBjb2x1bW4uIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIFt0ZW1wbGF0ZSBzdHJpbmddKC4uLy4uL2NvbW1vbi90ZW1wbGF0ZS1lbmdpbmUvKSBvciBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBjb2x1bW4gdGVtcGxhdGUgYXMgc3RyaW5nIG9yIEhUTUwgZWxlbWVudCBJRCB3aGljaCBpcyB1c2VkIHRvIGFkZCBjdXN0b21pemVkIGVsZW1lbnQgaW4gdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbW1hbmRzVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGNvbW1hbmRzVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJJdGVtVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGZpbHRlcl9pdGVtVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgY2VsbCBlZGl0IHRlbXBsYXRlIHRoYXQgdXNlZCBhcyBlZGl0b3IgZm9yIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRlbXBsYXRlIHN0cmluZyBvciBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VkaXRUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZWRpdFRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGZpbHRlciB0ZW1wbGF0ZS9VSSB0aGF0IHVzZWQgYXMgZmlsdGVyIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBJdCBhY2NlcHRzIGVpdGhlciB0ZW1wbGF0ZSBzdHJpbmcgb3IgSFRNTCBlbGVtZW50IElELlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZmlsdGVyVGVtcGxhdGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjpWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHNldFZhbHVlKCdjdXJyZW50SW5zdGFuY2UnLCB0aGlzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZVByb3BMaXN0ID0gaW5wdXQ7XG4gICAgfVxufVxuXG4vKipcbiAqIENvbHVtbiBBcnJheSBEaXJlY3RpdmVcbiAqIEBwcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZWpzLWdyaWQ+ZS1jb2x1bW5zJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKENvbHVtbkRpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5zRGlyZWN0aXZlIGV4dGVuZHMgQXJyYXlCYXNlPENvbHVtbnNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2NvbHVtbnMnKTtcbiAgICB9XG59Il19
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JpZC9jb2x1bW5zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXJFLElBQUksS0FBSyxHQUFhLENBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3B6QixJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7QUFDM0I7Ozs7Ozs7Ozs7O0dBV0c7QUFTSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUE0QjtJQTJjN0QsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQXZjOUMsU0FBSSxHQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUF5Y2hDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OzRHQWhkUSxlQUFlO2dHQUFmLGVBQWUsd3BFQUhXLHVCQUF1QjtBQTRhMUQ7SUFEQyxRQUFRLEVBQUU7aURBQ1U7QUFRckI7SUFEQyxRQUFRLEVBQUU7dURBQ2dCO0FBRzNCO0lBREMsUUFBUSxFQUFFO3lEQUNrQjtBQUc3QjtJQURDLFFBQVEsRUFBRTs0REFDcUI7QUFTaEM7SUFEQyxRQUFRLEVBQUU7cURBQ2M7QUFTekI7SUFEQyxRQUFRLEVBQUU7dURBQ2dCOzJGQXpjbEIsZUFBZTtrQkFSM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLFlBQVksRUFBRSxJQUFJLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztxQkFDMUQ7aUJBQ0o7dUdBMGFVLFFBQVE7c0JBRmQsWUFBWTt1QkFBQyxVQUFVO2dCQVVqQixjQUFjO3NCQUZwQixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLdkIsZ0JBQWdCO3NCQUZ0QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFLekIsbUJBQW1CO3NCQUZ6QixZQUFZO3VCQUFDLG9CQUFvQjtnQkFXM0IsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxjQUFjO2dCQVdyQixjQUFjO3NCQUZwQixZQUFZO3VCQUFDLGdCQUFnQjs7QUFZbEM7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQTJCO0lBQzdEO1FBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7OzZHQUhRLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLG1GQUhTLGVBQWU7MkZBR3hDLGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQztxQkFDakQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IFN0YWNrZWRDb2x1bW5zRGlyZWN0aXZlIH0gZnJvbSAnLi9zdGFja2VkLWNvbHVtbi5kaXJlY3RpdmUnO1xuXG5sZXQgaW5wdXQ6IHN0cmluZ1tdID0gWydhbGxvd0VkaXRpbmcnLCAnYWxsb3dGaWx0ZXJpbmcnLCAnYWxsb3dHcm91cGluZycsICdhbGxvd1Jlb3JkZXJpbmcnLCAnYWxsb3dSZXNpemluZycsICdhbGxvd1NlYXJjaGluZycsICdhbGxvd1NvcnRpbmcnLCAnYXV0b0ZpdCcsICdjbGlwTW9kZScsICdjb2x1bW5zJywgJ2NvbW1hbmRzJywgJ2N1c3RvbUF0dHJpYnV0ZXMnLCAnZGF0YVNvdXJjZScsICdkZWZhdWx0VmFsdWUnLCAnZGlzYWJsZUh0bWxFbmNvZGUnLCAnZGlzcGxheUFzQ2hlY2tCb3gnLCAnZWRpdCcsICdlZGl0VGVtcGxhdGUnLCAnZWRpdFR5cGUnLCAnZW5hYmxlR3JvdXBCeUZvcm1hdCcsICdmaWVsZCcsICdmaWx0ZXInLCAnZmlsdGVyQmFyVGVtcGxhdGUnLCAnZmlsdGVyVGVtcGxhdGUnLCAnZm9yZWlnbktleUZpZWxkJywgJ2ZvcmVpZ25LZXlWYWx1ZScsICdmb3JtYXQnLCAnZm9ybWF0dGVyJywgJ2ZyZWV6ZScsICdoZWFkZXJUZW1wbGF0ZScsICdoZWFkZXJUZXh0JywgJ2hlYWRlclRleHRBbGlnbicsICdoZWFkZXJWYWx1ZUFjY2Vzc29yJywgJ2hpZGVBdE1lZGlhJywgJ2luZGV4JywgJ2lzRnJvemVuJywgJ2lzSWRlbnRpdHknLCAnaXNQcmltYXJ5S2V5JywgJ2xvY2tDb2x1bW4nLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAnc2hvd0NvbHVtbk1lbnUnLCAnc2hvd0luQ29sdW1uQ2hvb3NlcicsICdzb3J0Q29tcGFyZXInLCAndGVtcGxhdGUnLCAndGVtcGxhdGVPcHRpb25zJywgJ3RleHRBbGlnbicsICd0eXBlJywgJ3VpZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWVBY2Nlc3NvcicsICd2aXNpYmxlJywgJ3dpZHRoJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogYGUtY29sdW1uYCBkaXJlY3RpdmUgcmVwcmVzZW50IGEgY29sdW1uIG9mIHRoZSBBbmd1bGFyIEdyaWQuIFxuICogSXQgbXVzdCBiZSBjb250YWluZWQgaW4gYSBHcmlkIGNvbXBvbmVudChgZWpzLWdyaWRgKS4gXG4gKiBgYGBodG1sXG4gKiA8ZWpzLWdyaWQgW2RhdGFTb3VyY2VdPSdkYXRhJyBhbGxvd1BhZ2luZz0ndHJ1ZScgYWxsb3dTb3J0aW5nPSd0cnVlJz4gXG4gKiAgIDxlLWNvbHVtbnM+XG4gKiAgICA8ZS1jb2x1bW4gZmllbGQ9J0lEJyB3aWR0aD0nMTAwJz48L2UtY29sdW1uPlxuICogICAgPGUtY29sdW1uIGZpZWxkPSduYW1lJyBoZWFkZXJUZXh0PSdOYW1lJyB3aWR0aD0nMTAwJz48L2UtY29sdW1uPlxuICogICA8L2UtY29sdW1ucz5cbiAqIDwvZWpzLWdyaWQ+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtZ3JpZD5lLWNvbHVtbnM+ZS1jb2x1bW4nLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZENvbHVtbnM6IG5ldyBDb250ZW50Q2hpbGQoU3RhY2tlZENvbHVtbnNEaXJlY3RpdmUpXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5EaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxDb2x1bW5EaXJlY3RpdmU+IHtcbiAgICBwdWJsaWMgZGlyZWN0aXZlUHJvcExpc3Q6IGFueTtcblx0XG4gICAgcHVibGljIGNoaWxkQ29sdW1uczogYW55O1xuICAgIHB1YmxpYyB0YWdzOiBzdHJpbmdbXSA9IFsnY29sdW1ucyddO1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBkYXRhIHR5cGUgb2YgdGhlIGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93RWRpdGluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIGVkaXRpbmcgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBhcmUgZWRpdGFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0VkaXRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93RmlsdGVyaW5nYCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZXMgZmlsdGVyaW5nIG9wdGlvbiBhbmQgZmlsdGVyIGJhciBlbGVtZW50IG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIGNvbHVtbnMgYXJlIGZpbHRlcmFibGUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd0ZpbHRlcmluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dHcm91cGluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIGdyb3VwaW5nIG9mIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEJ5IGRlZmF1bHQgYWxsIGNvbHVtbnMgYXJlIGdyb3VwYWJsZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93R3JvdXBpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYGFsbG93UmVvcmRlcmluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIHJlb3JkZXIgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBjYW4gYmUgcmVvcmRlci5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93UmVvcmRlcmluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYWxsb3dSZXNpemluZ2Agc2V0IHRvIGZhbHNlLCBpdCBkaXNhYmxlcyByZXNpemUgb3B0aW9uIG9mIGEgcGFydGljdWxhciBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd1Jlc2l6aW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd1NlYXJjaGluZ2Agc2V0IHRvIGZhbHNlLCB0aGVuIGl0IGRpc2FibGVzIFNlYXJjaGluZyBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFsbG93IFNlYXJjaGluZy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93U2VhcmNoaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBhbGxvd1NvcnRpbmdgIHNldCB0byBmYWxzZSwgdGhlbiBpdCBkaXNhYmxlcyBzb3J0aW5nIG9wdGlvbiBvZiBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBCeSBkZWZhdWx0IGFsbCBjb2x1bW5zIGFyZSBzb3J0YWJsZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93U29ydGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgYXV0b0ZpdGAgc2V0IHRvIHRydWUsIHRoZW4gdGhlIHBhcnRpY3VsYXIgY29sdW1uIGNvbnRlbnQgd2lkdGggd2lsbCBiZSBcbiAgICAgKiBhZGp1c3RlZCBiYXNlZCBvbiBpdHMgY29udGVudCBpbiB0aGUgaW5pdGlhbCByZW5kZXJpbmcgaXRzZWxmLiBcbiAgICAgKiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgYXMgdHJ1ZSBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGF1dG9GaXRDb2x1bW5zYCBtZXRob2QgaW4gdGhlIGBkYXRhQm91bmRgIGV2ZW50LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGF1dG9GaXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgY2VsbCBjb250ZW50J3Mgb3ZlcmZsb3cgbW9kZS4gVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmUgXG4gICAgICogKiBgQ2xpcGAgLSAgVHJ1bmNhdGVzIHRoZSBjZWxsIGNvbnRlbnQgd2hlbiBpdCBvdmVyZmxvd3MgaXRzIGFyZWEuIFxuICAgICAqICogYEVsbGlwc2lzYCAtICBEaXNwbGF5cyBlbGxpcHNpcyB3aGVuIHRoZSBjZWxsIGNvbnRlbnQgb3ZlcmZsb3dzIGl0cyBhcmVhLiBcbiAgICAgKiAqIGBFbGxpcHNpc1dpdGhUb29sdGlwYCAtIERpc3BsYXlzIGVsbGlwc2lzIHdoZW4gdGhlIGNlbGwgY29udGVudCBvdmVyZmxvd3MgaXRzIGFyZWEgXG4gICAgICogYWxzbyBpdCB3aWxsIGRpc3BsYXkgdG9vbHRpcCB3aGlsZSBob3ZlciBvbiBlbGxpcHNpcyBhcHBsaWVkIGNlbGwuXG4gICAgICogQGRlZmF1bHQgRWxsaXBzaXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xpcE1vZGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVXNlZCB0byByZW5kZXIgbXVsdGlwbGUgaGVhZGVyIHJvd3Moc3RhY2tlZCBoZWFkZXJzKSBvbiB0aGUgR3JpZCBoZWFkZXIuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2x1bW5zOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIGBjb21tYW5kc2AgcHJvdmlkZXMgYW4gb3B0aW9uIHRvIGRpc3BsYXkgY29tbWFuZCBidXR0b25zIGluIGV2ZXJ5IGNlbGwuIFxuICAgICAqIFRoZSBhdmFpbGFibGUgYnVpbHQtaW4gY29tbWFuZCBidXR0b25zIGFyZSBcbiAgICAgKiAqIEVkaXQgLSBFZGl0IHRoZSByZWNvcmQuIFxuICAgICAqICogRGVsZXRlIC0gRGVsZXRlIHRoZSByZWNvcmQuIFxuICAgICAqICogU2F2ZSAtIFNhdmUgdGhlIHJlY29yZC4gXG4gICAgICogKiBDYW5jZWwgLSBDYW5jZWwgdGhlIGVkaXQgc3RhdGUuXG4gICAgICogXG4gICAgICogVGhlIGZvbGxvd2luZyBjb2RlIGV4YW1wbGUgaW1wbGVtZW50cyB0aGUgY3VzdG9tIGNvbW1hbmQgY29sdW1uLlxuICAgICAqYGBgaHRtbFxuICAgICAqPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiIGNsYXNzPVwiY3NzU3R5bGVzXCI+XG4gICAgICouZGV0YWlscy1pY29uOmJlZm9yZVxuICAgICAqe1xuICAgICAqICAgY29udGVudDpcIlxcZTc0ZFwiO1xuICAgICAqfVxuICAgICAqPC9zdHlsZT5cbiAgICAgKjxkaXYgaWQ9XCJHcmlkXCI+PC9kaXY+XG4gICAgICpgYGBcbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKnZhciBncmlkT2JqID0gbmV3IEdyaWQoe1xuICAgICAqZGF0YXNvdXJjZTogd2luZG93LmdyaWREYXRhLFxuICAgICAqY29sdW1ucyA6IFtcbiAgICAgKiB7IGZpZWxkOiAnQ3VzdG9tZXJJRCcsIGhlYWRlclRleHQ6ICdDdXN0b21lciBJRCcgfSxcbiAgICAgKiB7IGZpZWxkOiAnQ3VzdG9tZXJOYW1lJywgaGVhZGVyVGV4dDogJ0N1c3RvbWVyIE5hbWUnIH0sXG4gICAgICoge2NvbW1hbmRzOiBbe2J1dHRvbk9wdGlvbjp7Y29udGVudDogJ0RldGFpbHMnLCBjbGljazogb25DbGljaywgY3NzQ2xhc3M6IGRldGFpbHMtaWNvbn19XSwgaGVhZGVyVGV4dDogJ0N1c3RvbWVyIERldGFpbHMnfVxuICAgICAqXVxuICAgICAqZ3JpZE9iai5hcHBlbmRUbyhcIiNHcmlkXCIpO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tbWFuZHM6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIENTUyBzdHlsZXMgYW5kIGF0dHJpYnV0ZXMgb2YgdGhlIGNvbnRlbnQgY2VsbHMgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbiBjYW4gYmUgY3VzdG9taXplZC5cbiAgICAgKiBcbiAgICAgKiBgYGBodG1sXG4gICAgICo8ZGl2IGlkPVwiR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgZ3JpZE9iajogR3JpZCA9IG5ldyBHcmlkKHtcbiAgICAgKmRhdGFTb3VyY2U6IGZpbHRlckRhdGEsXG4gICAgICpjb2x1bW5zOiBbXG4gICAgICogICB7IGZpZWxkOiAnT3JkZXJJRCcsIGhlYWRlclRleHQ6ICdPcmRlciBJRCcgfSxcbiAgICAgKiAgIHtcbiAgICAgKiAgICAgICBmaWVsZDogJ0VtcGxveWVlSUQnLCBoZWFkZXJUZXh0OiAnRW1wbG95ZWUgSUQnLCBjdXN0b21BdHRyaWJ1dGVzOiB7XG4gICAgICogICAgICAgICAgY2xhc3M6ICdlbXBsb3llZWlkJyxcbiAgICAgKiAgICAgICAgICB0eXBlOiAnZW1wbG95ZWUtaWQtY2VsbCdcbiAgICAgKiAgICAgfVxuICAgICAqICB9XVxuICAgICAqfSk7XG4gICAgICpncmlkT2JqLmFwcGVuZFRvKCcjR3JpZCcpO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VzdG9tQXR0cmlidXRlczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBjb2x1bW4gZGF0YSBzb3VyY2UgIHdoaWNoIHdpbGwgYWN0IGFzIGZvcmVpZ24gZGF0YSBzb3VyY2UuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhU291cmNlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnQgd2hlbiBhZGRpbmcgYSBuZXcgcmVjb3JkIHRvIHRoZSBHcmlkLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBvYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBkaXNhYmxlSHRtbEVuY29kZWAgaXMgc2V0IHRvIHRydWUsIGl0IGVuY29kZXMgdGhlIEhUTUwgb2YgdGhlIGhlYWRlciBhbmQgY29udGVudCBjZWxscy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGRpc2FibGVIdG1sRW5jb2RlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBkaXNwbGF5QXNDaGVja0JveGAgaXMgc2V0IHRvIHRydWUsIGl0IGRpc3BsYXlzIHRoZSBjb2x1bW4gdmFsdWUgYXMgYSBjaGVjayBib3ggaW5zdGVhZCBvZiBCb29sZWFuIHZhbHVlLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlBc0NoZWNrQm94OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGBJRWRpdENlbGxgKC4uLy4uL2dyaWQvZWRpdC8jY2VsbC1lZGl0LXRlbXBsYXRlKSBvYmplY3QgdG8gY3VzdG9taXplIGRlZmF1bHQgZWRpdCBjZWxsLlxuICAgICAqIEBkZWZhdWx0IHt9XG4gICAgICovXG4gICAgcHVibGljIGVkaXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiBjb21wb25lbnQgZm9yIGVkaXRpbmcuXG4gICAgICogQGRlZmF1bHQgJ3N0cmluZ2VkaXQnXG4gICAgICovXG4gICAgcHVibGljIGVkaXRUeXBlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBlbmFibGVHcm91cEJ5Rm9ybWF0YCBzZXQgdG8gdHJ1ZSwgdGhlbiBpdCBncm91cHMgdGhlIHBhcnRpY3VsYXIgY29sdW1uIGJ5IGZvcm1hdHRlZCB2YWx1ZXMuIFxuICAgICAqIEJ5IGRlZmF1bHQgbm8gY29sdW1ucyBhcmUgZ3JvdXAgYnkgZm9ybWF0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlR3JvdXBCeUZvcm1hdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBmaWVsZCBuYW1lIG9mIGNvbHVtbiB3aGljaCBpcyBtYXBwZWQgd2l0aCBtYXBwaW5nIG5hbWUgb2YgRGF0YVNvdXJjZS4gXG4gICAgICogVGhlIGJvdW5kZWQgY29sdW1ucyBjYW4gYmUgc29ydCwgZmlsdGVyIGFuZCBncm91cCBldGMuLCBcbiAgICAgKiBJZiB0aGUgYGZpZWxkYCBuYW1lIGNvbnRhaW5zIOKAnGRvdOKAnSwgdGhlbiBpdCBpcyBjb25zaWRlcmVkIGFzIGNvbXBsZXggYmluZGluZy4gXG4gICAgICogVGhlIGBmaWVsZGAgbmFtZSBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBpZGVudGlmaWVyLCBcbiAgICAgKiB0aGUgZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYW4gYWxwaGFiZXQgYW5kIHNob3VsZCBub3QgY29udGFpbiBzcGFjZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycy5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBmaWVsZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiAgRGVmaW5lcyB0aGUgZmlsdGVyIG9wdGlvbnMgdG8gY3VzdG9taXplIGZpbHRlcmluZyBmb3IgdGhlIHBhcnRpY3VsYXIgY29sdW1uLlxuICAgICAqIEBkZWZhdWx0IHt9XG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGZpbHRlckJhclRlbXBsYXRlYCBpcyB1c2VkIHRvIGFkZCBhIGN1c3RvbSBjb21wb25lbnQgaW5zdGVhZCBvZiBkZWZhdWx0IGlucHV0IGNvbXBvbmVudCBmb3IgZmlsdGVyIGJhci4gXG4gICAgICogSXQgaGF2ZSBjcmVhdGUgYW5kIHJlYWQgZnVuY3Rpb25zLiBcbiAgICAgKiAqIGNyZWF0ZTogSXQgaXMgdXNlZCBmb3IgY3JlYXRpbmcgY3VzdG9tIGNvbXBvbmVudHMuIFxuICAgICAqICogcmVhZDogSXQgaXMgdXNlZCB0byBwZXJmb3JtIGN1c3RvbSBmaWx0ZXIgYWN0aW9uLlxuICAgICAqIFxuICAgICAqIGBgYGh0bWxcbiAgICAgKjxkaXYgaWQ9XCJHcmlkXCI+PC9kaXY+XG4gICAgICpgYGBcbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKmxldCBncmlkT2JqOiBHcmlkID0gbmV3IEdyaWQoe1xuICAgICAqZGF0YVNvdXJjZTogZmlsdGVyRGF0YSxcbiAgICAgKmNvbHVtbnM6IFtcbiAgICAgKiAgeyBmaWVsZDogJ09yZGVySUQnLCBoZWFkZXJUZXh0OiAnT3JkZXIgSUQnIH0sXG4gICAgICogIHtcbiAgICAgKiAgICAgZmllbGQ6ICdFbXBsb3llZUlEJywgZmlsdGVyQmFyVGVtcGxhdGU6IHtcbiAgICAgKiAgICAgICAgY3JlYXRlOiAoYXJnczogeyBlbGVtZW50OiBFbGVtZW50LCBjb2x1bW46IENvbHVtbiB9KSA9PiB7XG4gICAgICogICAgICAgICAgICAgbGV0IGlucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgKiAgICAgICAgICAgICBpbnB1dC5pZCA9ICdFbXBsb3llZUlEJztcbiAgICAgKiAgICAgICAgICAgICBpbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAqICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgKiAgICAgICAgfSxcbiAgICAgKiAgICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnQ6IEVsZW1lbnQsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGFyZ3MuY29sdW1uLmZpbHRlckJhclRlbXBsYXRlLnJlYWQgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgICogICAgICAgIH0sXG4gICAgICogICAgICAgIHJlYWQ6IChhcmdzOiB7IGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQsIGNvbHVtbkluZGV4OiBudW1iZXIsIGNvbHVtbjogQ29sdW1uIH0pID0+IHtcbiAgICAgKiAgICAgICAgICAgIGdyaWRPYmouZmlsdGVyQnlDb2x1bW4oYXJncy5lbGVtZW50LmlkLCAnZXF1YWwnLCBhcmdzLmVsZW1lbnQudmFsdWUpO1xuICAgICAqICAgICAgIH1cbiAgICAgKiAgICB9XG4gICAgICogfV0sXG4gICAgICogIGFsbG93RmlsdGVyaW5nOiB0cnVlXG4gICAgICp9KTtcbiAgICAgKmdyaWRPYmouYXBwZW5kVG8oJyNHcmlkJyk7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmaWx0ZXJCYXJUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtYXBwaW5nIGNvbHVtbiBuYW1lIG9mIHRoZSBmb3JlaWduIGRhdGEgc291cmNlLiBcbiAgICAgKiBJZiBpdCBpcyBub3QgZGVmaW5lZCB0aGVuIHRoZSBgY29sdW1ucy5maWVsZGAgd2lsbCBiZSBjb25zaWRlcmVkIGFzIG1hcHBpbmcgY29sdW1uIG5hbWVcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGZvcmVpZ25LZXlGaWVsZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBkaXNwbGF5IGNvbHVtbiBuYW1lIGZyb20gdGhlIGZvcmVpZ24gZGF0YSBzb3VyY2Ugd2hpY2ggd2lsbCBiZSBvYnRhaW5lZCBmcm9tIGNvbXBhcmluZyBsb2NhbCBhbmQgZm9yZWlnbiBkYXRhXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JlaWduS2V5VmFsdWU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgaXMgdXNlZCB0byBjaGFuZ2UgZGlzcGxheSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBmb3JtYXQgYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUgb3JpZ2luYWwgZGF0YS4gXG4gICAgICogR2V0cyB0aGUgZm9ybWF0IGZyb20gdGhlIHVzZXIgd2hpY2ggY2FuIGJlIHN0YW5kYXJkIG9yIGN1c3RvbSBcbiAgICAgKiBbYG51bWJlcmBdKC4uLy4uL2NvbW1vbi9pbnRlcm5hdGlvbmFsaXphdGlvbi8jbWFuaXB1bGF0aW5nLW51bWJlcnMpIFxuICAgICAqIGFuZCBbYGRhdGVgXSguLi8uLi9jb21tb24vaW50ZXJuYXRpb25hbGl6YXRpb24vI21hbmlwdWxhdGluZy1kYXRldGltZSkgZm9ybWF0cy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtZXRob2Qgd2hpY2ggaXMgdXNlZCB0byBhY2hpZXZlIGN1c3RvbSBmb3JtYXR0aW5nIGZyb20gYW4gZXh0ZXJuYWwgZnVuY3Rpb24uIFxuICAgICAqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYmVmb3JlIHJlbmRlcmluZyBvZiBlYWNoIGNlbGwuXG4gICAgICogXG4gICAgICogYGBgaHRtbFxuICAgICAqPGRpdiBpZD1cIkdyaWRcIj48L2Rpdj5cbiAgICAgKmBgYFxuICAgICAqYGBgdHlwZXNjcmlwdFxuICAgICAqY2xhc3MgRXh0ZW5kZWRGb3JtYXR0ZXIgaW1wbGVtZW50cyBJQ2VsbEZvcm1hdHRlciB7XG4gICAgICpwdWJsaWMgZ2V0VmFsdWUoY29sdW1uOiBDb2x1bW4sIGRhdGE6IE9iamVjdCk6IE9iamVjdCB7XG4gICAgICogIHJldHVybiAnPHNwYW4gc3R5bGU9XCJjb2xvcjonICsgKGRhdGFbJ1ZlcmlmaWVkJ10gPyAnZ3JlZW4nIDogJ3JlZCcpICsgJ1wiPjxpPicgKyBkYXRhWydWZXJpZmllZCddICsgJzwvaT48c3Bhbj4nO1xuICAgICAqfVxuICAgICAqfVxuICAgICAqbGV0IGdyaWRPYmo6IEdyaWQgPSBuZXcgR3JpZCh7XG4gICAgICogICAgZGF0YVNvdXJjZTogZmlsdGVyRGF0YSxcbiAgICAgKiAgICBjb2x1bW5zOiBbXG4gICAgICogICAgICAgIHsgZmllbGQ6ICdTaGlwTmFtZScsIGhlYWRlclRleHQ6ICdTaGlwIE5hbWUnIH0sXG4gICAgICogICAgICAgIHsgZmllbGQ6ICdWZXJpZmllZCcsIGhlYWRlclRleHQ6ICdWZXJpZmllZCBTdGF0dXMnLCBmb3JtYXR0ZXI6IEV4dGVuZGVkRm9ybWF0dGVyIH1dXG4gICAgICp9KTtcbiAgICAgKmdyaWRPYmouYXBwZW5kVG8oJyNHcmlkJyk7XG4gICAgICpgYGBcbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogZGVmaW5lcyB3aGljaCBzaWRlIHRoZSBjb2x1bW4gbmVlZCB0byBmcmVlemUgXG4gICAgICogVGhlIGF2YWlsYWJsZSBidWlsdC1pbiBmcmVlemUgZGlyZWN0aW9ucyBhcmUgXG4gICAgICogKiBMZWZ0IC0gRnJlZXplIHRoZSBjb2x1bW4gYXQgbGVmdCBzaWRlLiBcbiAgICAgKiAqIFJpZ2h0IC0gRnJlZXplIHRoZSBjb2x1bW4gYXQgcmlnaHQgc2lkZS4gXG4gICAgICogKiBGaXhlZCAtIEZyZWV6ZSB0aGUgY29sdW1uIGF0IENlbnRlci4gXG4gICAgICogKiBOb25lIC0gRG9lcyBub3QgZnJlZXplIHRoZSBjb2x1bW4uXG4gICAgICogQGRlZmF1bHQgTm9uZVxuICAgICAqL1xuICAgIHB1YmxpYyBmcmVlemU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgaGVhZGVyIHRleHQgb2YgY29sdW1uIHdoaWNoIGlzIHVzZWQgdG8gZGlzcGxheSBpbiBjb2x1bW4gaGVhZGVyLiBcbiAgICAgKiBJZiBgaGVhZGVyVGV4dGAgaXMgbm90IGRlZmluZWQsIHRoZW4gZmllbGQgbmFtZSB2YWx1ZSB3aWxsIGJlIGFzc2lnbmVkIHRvIGhlYWRlciB0ZXh0LlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyVGV4dDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmUgdGhlIGFsaWdubWVudCBvZiBjb2x1bW4gaGVhZGVyIHdoaWNoIGlzIHVzZWQgdG8gYWxpZ24gdGhlIHRleHQgb2YgY29sdW1uIGhlYWRlci5cbiAgICAgKiBAYXNwZGVmYXVsdHZhbHVlaWdub3JlIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyVGV4dEFsaWduOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1ldGhvZCB1c2VkIHRvIGFwcGx5IGN1c3RvbSBoZWFkZXIgY2VsbCB2YWx1ZXMgZnJvbSBleHRlcm5hbCBmdW5jdGlvbiBhbmQgZGlzcGxheSB0aGlzIG9uIGVhY2ggY2VsbCByZW5kZXJlZC5cbiAgICAgKiBcbiAgICAgKiBgYGBodG1sXG4gICAgICo8ZGl2IGlkPVwiR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgZ3JpZE9iajogR3JpZCA9IG5ldyBHcmlkKHtcbiAgICAgKmRhdGFTb3VyY2U6IFt7IEVtcGxveWVlSUQ6IDEsIEVtcGxveWVlTmFtZTogWydKb2huJywgJ00nXSB9LCB7IEVtcGxveWVlSUQ6IDIsIEVtcGxveWVlTmFtZTogWydQZXRlcicsICdBJ10gfV0sXG4gICAgICpjb2x1bW5zOiBbXG4gICAgICogICAgeyBmaWVsZDogJ0VtcGxveWVlSUQnLCBoZWFkZXJUZXh0OiAnRW1wbG95ZWUgSUQnIH0sXG4gICAgICogICAgeyBmaWVsZDogJ0VtcGxveWVlTmFtZScsIGhlYWRlclRleHQ6ICdFbXBsb3llZSBGaXJzdCBOYW1lJyxcbiAgICAgKiAgICAgIGhlYWRlclZhbHVlQWNjZXNzb3I6IChmaWVsZDogc3RyaW5nLGNvbHVtbjogQ29sdW1uKSA9PiB7XG4gICAgICogICAgICAgICAgICByZXR1cm4gXCJuZXdoZWFkZXJuYW1lXCI7XG4gICAgICogICAgICAgIH0sXG4gICAgICogICAgfV1cbiAgICAgKn0pO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyVmFsdWVBY2Nlc3NvcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBjb2x1bW4gdmlzaWJpbGl0eSBjYW4gY2hhbmdlIGJhc2VkIG9uIGl0cyBbYE1lZGlhIFF1ZXJpZXNgXShodHRwOi8vY3NzbWVkaWFxdWVyaWVzLmNvbS93aGF0LWFyZS1jc3MtbWVkaWEtcXVlcmllcy5odG1sKS4gXG4gICAgICogYGhpZGVBdE1lZGlhYCBhY2NlcHRzIG9ubHkgdmFsaWQgTWVkaWEgUXVlcmllcy5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlQXRNZWRpYTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciB2YWx1ZSBvZiB0aGUgY29sdW1uLiBJdCBpcyB1c2VkIHRvIGdldCB0aGUgb2JqZWN0LlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5kZXg6IGFueTtcbiAgICAvKiogXG4gICAgICogWW91IGNhbiB1c2UgdGhpcyBwcm9wZXJ0eSB0byBmcmVlemUgc2VsZWN0ZWQgY29sdW1ucyBpbiBncmlkLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzRnJvemVuOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBpc0lkZW50aXR5YCBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGlzIGNvbHVtbiBpcyBjb25zaWRlcmVkIGFzIGlkZW50aXR5IGNvbHVtbi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBpc0lkZW50aXR5OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIGBpc1ByaW1hcnlLZXlgIGlzIHNldCB0byB0cnVlLCBjb25zaWRlcnMgdGhpcyBjb2x1bW4gYXMgdGhlIHByaW1hcnkga2V5IGNvbnN0cmFpbnQuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNQcmltYXJ5S2V5OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIG1hcHBpbmcgY29sdW1uIG5hbWUgb2YgdGhlIGZvcmVpZ24gZGF0YSBzb3VyY2UuIFxuICAgICAqIElmIGl0IGlzIG5vdCBkZWZpbmVkIHRoZW4gdGhlIGBjb2x1bW5zLmZpZWxkYCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgbWFwcGluZyBjb2x1bW4gbmFtZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGxvY2tDb2x1bW46IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgbWF4aW11bSB3aWR0aCBvZiB0aGUgY29sdW1uIGluIHBpeGVsIG9yIHBlcmNlbnRhZ2UsIHdoaWNoIHdpbGwgcmVzdHJpY3QgcmVzaXppbmcgYmV5b25kIHRoaXMgcGl4ZWwgb3IgcGVyY2VudGFnZS5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBtYXhXaWR0aDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtaW5pbXVtIHdpZHRoIG9mIHRoZSBjb2x1bW4gaW4gcGl4ZWxzIG9yIHBlcmNlbnRhZ2UuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluV2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgYHNob3dDb2x1bW5NZW51YCBzZXQgdG8gZmFsc2UsIHRoZW4gaXQgZGlzYWJsZSB0aGUgY29sdW1uIG1lbnUgb2YgYSBwYXJ0aWN1bGFyIGNvbHVtbi4gXG4gICAgICogQnkgZGVmYXVsdCBjb2x1bW4gbWVudSB3aWxsIHNob3cgZm9yIGFsbCBjb2x1bW5zXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93Q29sdW1uTWVudTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgc2hvd0luQ29sdW1uQ2hvb3NlcmAgc2V0IHRvIGZhbHNlLCB0aGVuIGhpZGVzIHRoZSBwYXJ0aWN1bGFyIGNvbHVtbiBpbiBjb2x1bW4gY2hvb3Nlci4gXG4gICAgICogQnkgZGVmYXVsdCBhbGwgY29sdW1ucyBhcmUgZGlzcGxheWVkIGluIGNvbHVtbiBDaG9vc2VyLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd0luQ29sdW1uQ2hvb3NlcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCBkZWZpbmVzIHRoZSBjdXN0b20gc29ydCBjb21wYXJlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc29ydENvbXBhcmVyOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERldGVybWluZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIGZvciBjZWxscyBpbiB0ZW1wbGF0ZSBjb2x1bW5zLiBcbiAgICAgKiBJZiBlbmFibGVBcmlhTGFiZWwgaXMgc2V0IHRvIGZhbHNlLCB0aGUgYXJpYS1sYWJlbCBhdHRyaWJ1dGUgaXMgbm90IGFwcGxpZWQgdG8gdGVtcGxhdGUgY29sdW1uIGNlbGxzLCB3aGljaCBhZmZlY3RzIHNjcmVlbiByZWFkZXIgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZGVmYXVsdCB7fVxuICAgICAqL1xuICAgIHB1YmxpYyB0ZW1wbGF0ZU9wdGlvbnM6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBjb2x1bW4gaW4gYm90aCBoZWFkZXIgYW5kIGNvbnRlbnQgY2VsbHMuXG4gICAgICogQGRlZmF1bHQgTGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyB0ZXh0QWxpZ246IGFueTtcbiAgICAvKiogXG4gICAgICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgdmFsdWUgb2YgdGhlIGNvbHVtbi4gSXQgaXMgdXNlZCB0byBnZXQgdGhlIG9iamVjdC5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyB1aWQ6IGFueTtcbiAgICAvKiogXG4gICAgICogYGVkaXRUeXBlYCguLi8uLi9ncmlkL2VkaXQvI2NlbGwtZWRpdC10eXBlLWFuZC1pdHMtcGFyYW1zKSBEZWZpbmVzIHJ1bGVzIHRvIHZhbGlkYXRlIGRhdGEgYmVmb3JlIGNyZWF0aW5nIGFuZCB1cGRhdGluZy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRpb25SdWxlczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBtZXRob2QgdXNlZCB0byBhcHBseSBjdXN0b20gY2VsbCB2YWx1ZXMgZnJvbSBleHRlcm5hbCBmdW5jdGlvbiBhbmQgZGlzcGxheSB0aGlzIG9uIGVhY2ggY2VsbCByZW5kZXJlZC5cbiAgICAgKiBcbiAgICAgKiBgYGBodG1sXG4gICAgICo8ZGl2IGlkPVwiR3JpZFwiPjwvZGl2PlxuICAgICAqYGBgXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpsZXQgZ3JpZE9iajogR3JpZCA9IG5ldyBHcmlkKHtcbiAgICAgKmRhdGFTb3VyY2U6IFt7IEVtcGxveWVlSUQ6IDEsIEVtcGxveWVlTmFtZTogWydKb2huJywgJ00nXSB9LCB7IEVtcGxveWVlSUQ6IDIsIEVtcGxveWVlTmFtZTogWydQZXRlcicsICdBJ10gfV0sXG4gICAgICpjb2x1bW5zOiBbXG4gICAgICogICAgeyBmaWVsZDogJ0VtcGxveWVlSUQnLCBoZWFkZXJUZXh0OiAnRW1wbG95ZWUgSUQnIH0sXG4gICAgICogICAgeyBmaWVsZDogJ0VtcGxveWVlTmFtZScsIGhlYWRlclRleHQ6ICdFbXBsb3llZSBGaXJzdCBOYW1lJyxcbiAgICAgKiAgICAgIHZhbHVlQWNjZXNzb3I6IChmaWVsZDogc3RyaW5nLCBkYXRhOiBPYmplY3QsIGNvbHVtbjogQ29sdW1uKSA9PiB7XG4gICAgICogICAgICAgICAgICByZXR1cm4gZGF0YVsnRW1wbG95ZWVOYW1lJ11bMF07XG4gICAgICogICAgICAgIH0sXG4gICAgICogICAgfV1cbiAgICAgKn0pO1xuICAgICAqYGBgXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsdWVBY2Nlc3NvcjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBgdmlzaWJsZWAgaXMgc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgcGFydGljdWxhciBjb2x1bW4uIEJ5IGRlZmF1bHQsIGFsbCBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2aXNpYmxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gaW4gcGl4ZWxzIG9yIHBlcmNlbnRhZ2UuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgd2lkdGg6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgY29sdW1uIHRlbXBsYXRlIHRoYXQgcmVuZGVycyBjdXN0b21pemVkIGVsZW1lbnQgaW4gZWFjaCBjZWxsIG9mIHRoZSBjb2x1bW4uIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIFt0ZW1wbGF0ZSBzdHJpbmddKC4uLy4uL2NvbW1vbi90ZW1wbGF0ZS1lbmdpbmUvKSBvciBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0ZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIHRoZSBjb2x1bW4gdGVtcGxhdGUgYXMgc3RyaW5nIG9yIEhUTUwgZWxlbWVudCBJRCB3aGljaCBpcyB1c2VkIHRvIGFkZCBjdXN0b21pemVkIGVsZW1lbnQgaW4gdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbW1hbmRzVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGNvbW1hbmRzVGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJJdGVtVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGZpbHRlcl9pdGVtVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGVmaW5lcyB0aGUgY2VsbCBlZGl0IHRlbXBsYXRlIHRoYXQgdXNlZCBhcyBlZGl0b3IgZm9yIGEgcGFydGljdWxhciBjb2x1bW4uIFxuICAgICAqIEl0IGFjY2VwdHMgZWl0aGVyIHRlbXBsYXRlIHN0cmluZyBvciBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VkaXRUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZWRpdFRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgdGhlIGZpbHRlciB0ZW1wbGF0ZS9VSSB0aGF0IHVzZWQgYXMgZmlsdGVyIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uLiBcbiAgICAgKiBJdCBhY2NlcHRzIGVpdGhlciB0ZW1wbGF0ZSBzdHJpbmcgb3IgSFRNTCBlbGVtZW50IElELlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdmaWx0ZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZmlsdGVyVGVtcGxhdGU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjpWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHNldFZhbHVlKCdjdXJyZW50SW5zdGFuY2UnLCB0aGlzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZVByb3BMaXN0ID0gaW5wdXQ7XG4gICAgfVxufVxuXG4vKipcbiAqIENvbHVtbiBBcnJheSBEaXJlY3RpdmVcbiAqIEBwcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnZWpzLWdyaWQ+ZS1jb2x1bW5zJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKENvbHVtbkRpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5zRGlyZWN0aXZlIGV4dGVuZHMgQXJyYXlCYXNlPENvbHVtbnNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2NvbHVtbnMnKTtcbiAgICB9XG59Il19
|
|
@@ -7,7 +7,7 @@ import { ColumnsDirective } from './columns.directive';
|
|
|
7
7
|
import { AggregatesDirective } from './aggregates.directive';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export const inputs = ['adaptiveUIMode', 'aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'autoFit', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'cssClass', 'currencyCode', 'currentAction', 'currentViewData', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'emptyRecordTemplate', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableStickyHeader', 'enableVirtualMaskRow', 'enableVirtualization', 'exportGrids', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'loadingIndicator', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'showHider', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width'];
|
|
10
|
-
export const outputs = ['actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenAdaptiveDialog', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportDetailTemplate', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick', 'dataSourceChange'];
|
|
10
|
+
export const outputs = ['actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeDetailTemplateDetach', 'beforeExcelExport', 'beforeOpenAdaptiveDialog', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportDetailTemplate', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick', 'dataSourceChange'];
|
|
11
11
|
export const twoWays = ['dataSource'];
|
|
12
12
|
/**
|
|
13
13
|
* `ejs-grid` represents the Angular Grid Component.
|
|
@@ -216,7 +216,7 @@ let GridComponent = class GridComponent extends Grid {
|
|
|
216
216
|
}
|
|
217
217
|
};
|
|
218
218
|
GridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: GridComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
-
GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: GridComponent, selector: "ejs-grid", inputs: { adaptiveUIMode: "adaptiveUIMode", aggregates: "aggregates", allowExcelExport: "allowExcelExport", allowFiltering: "allowFiltering", allowGrouping: "allowGrouping", allowKeyboard: "allowKeyboard", allowMultiSorting: "allowMultiSorting", allowPaging: "allowPaging", allowPdfExport: "allowPdfExport", allowReordering: "allowReordering", allowResizing: "allowResizing", allowRowDragAndDrop: "allowRowDragAndDrop", allowSelection: "allowSelection", allowSorting: "allowSorting", allowTextWrap: "allowTextWrap", autoFit: "autoFit", childGrid: "childGrid", clipMode: "clipMode", columnChooserSettings: "columnChooserSettings", columnMenuItems: "columnMenuItems", columnQueryMode: "columnQueryMode", columns: "columns", contextMenuItems: "contextMenuItems", cssClass: "cssClass", currencyCode: "currencyCode", currentAction: "currentAction", currentViewData: "currentViewData", dataSource: "dataSource", detailTemplate: "detailTemplate", editSettings: "editSettings", ej2StatePersistenceVersion: "ej2StatePersistenceVersion", emptyRecordTemplate: "emptyRecordTemplate", enableAdaptiveUI: "enableAdaptiveUI", enableAltRow: "enableAltRow", enableAutoFill: "enableAutoFill", enableColumnVirtualization: "enableColumnVirtualization", enableHeaderFocus: "enableHeaderFocus", enableHover: "enableHover", enableHtmlSanitizer: "enableHtmlSanitizer", enableImmutableMode: "enableImmutableMode", enableInfiniteScrolling: "enableInfiniteScrolling", enablePersistence: "enablePersistence", enableRtl: "enableRtl", enableStickyHeader: "enableStickyHeader", enableVirtualMaskRow: "enableVirtualMaskRow", enableVirtualization: "enableVirtualization", exportGrids: "exportGrids", filterSettings: "filterSettings", frozenColumns: "frozenColumns", frozenRows: "frozenRows", gridLines: "gridLines", groupSettings: "groupSettings", height: "height", hierarchyPrintMode: "hierarchyPrintMode", infiniteScrollSettings: "infiniteScrollSettings", loadingIndicator: "loadingIndicator", locale: "locale", pageSettings: "pageSettings", pagerTemplate: "pagerTemplate", parentDetails: "parentDetails", printMode: "printMode", query: "query", queryString: "queryString", resizeSettings: "resizeSettings", rowDropSettings: "rowDropSettings", rowHeight: "rowHeight", rowRenderingMode: "rowRenderingMode", rowTemplate: "rowTemplate", searchSettings: "searchSettings", selectedRowIndex: "selectedRowIndex", selectionSettings: "selectionSettings", showColumnChooser: "showColumnChooser", showColumnMenu: "showColumnMenu", showHider: "showHider", sortSettings: "sortSettings", textWrapSettings: "textWrapSettings", toolbar: "toolbar", toolbarTemplate: "toolbarTemplate", width: "width" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", actionFailure: "actionFailure", batchAdd: "batchAdd", batchCancel: "batchCancel", batchDelete: "batchDelete", beforeAutoFill: "beforeAutoFill", beforeBatchAdd: "beforeBatchAdd", beforeBatchDelete: "beforeBatchDelete", beforeBatchSave: "beforeBatchSave", beforeCopy: "beforeCopy", beforeDataBound: "beforeDataBound", beforeExcelExport: "beforeExcelExport", beforeOpenAdaptiveDialog: "beforeOpenAdaptiveDialog", beforeOpenColumnChooser: "beforeOpenColumnChooser", beforePaste: "beforePaste", beforePdfExport: "beforePdfExport", beforePrint: "beforePrint", beginEdit: "beginEdit", cellDeselected: "cellDeselected", cellDeselecting: "cellDeselecting", cellEdit: "cellEdit", cellSave: "cellSave", cellSaved: "cellSaved", cellSelected: "cellSelected", cellSelecting: "cellSelecting", checkBoxChange: "checkBoxChange", columnDataStateChange: "columnDataStateChange", columnDeselected: "columnDeselected", columnDeselecting: "columnDeselecting", columnDrag: "columnDrag", columnDragStart: "columnDragStart", columnDrop: "columnDrop", columnMenuClick: "columnMenuClick", columnMenuOpen: "columnMenuOpen", columnSelected: "columnSelected", columnSelecting: "columnSelecting", commandClick: "commandClick", contextMenuClick: "contextMenuClick", contextMenuOpen: "contextMenuOpen", created: "created", dataBound: "dataBound", dataSourceChanged: "dataSourceChanged", dataStateChange: "dataStateChange", destroyed: "destroyed", detailDataBound: "detailDataBound", excelAggregateQueryCellInfo: "excelAggregateQueryCellInfo", excelExportComplete: "excelExportComplete", excelHeaderQueryCellInfo: "excelHeaderQueryCellInfo", excelQueryCellInfo: "excelQueryCellInfo", exportDetailDataBound: "exportDetailDataBound", exportDetailTemplate: "exportDetailTemplate", exportGroupCaption: "exportGroupCaption", headerCellInfo: "headerCellInfo", keyPressed: "keyPressed", lazyLoadGroupCollapse: "lazyLoadGroupCollapse", lazyLoadGroupExpand: "lazyLoadGroupExpand", load: "load", pdfAggregateQueryCellInfo: "pdfAggregateQueryCellInfo", pdfExportComplete: "pdfExportComplete", pdfHeaderQueryCellInfo: "pdfHeaderQueryCellInfo", pdfQueryCellInfo: "pdfQueryCellInfo", printComplete: "printComplete", queryCellInfo: "queryCellInfo", recordClick: "recordClick", recordDoubleClick: "recordDoubleClick", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", rowDataBound: "rowDataBound", rowDeselected: "rowDeselected", rowDeselecting: "rowDeselecting", rowDrag: "rowDrag", rowDragStart: "rowDragStart", rowDragStartHelper: "rowDragStartHelper", rowDrop: "rowDrop", rowSelected: "rowSelected", rowSelecting: "rowSelecting", toolbarClick: "toolbarClick", dataSourceChange: "dataSourceChange" }, queries: [{ propertyName: "rowTemplate", first: true, predicate: ["rowTemplate"], descendants: true }, { propertyName: "emptyRecordTemplate", first: true, predicate: ["emptyRecordTemplate"], descendants: true }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true }, { propertyName: "pagerTemplate", first: true, predicate: ["pagerTemplate"], descendants: true }, { propertyName: "editSettings_template", first: true, predicate: ["editSettingsTemplate"], descendants: true }, { propertyName: "groupSettings_captionTemplate", first: true, predicate: ["groupSettingsCaptionTemplate"], descendants: true }, { propertyName: "childColumns", first: true, predicate: ColumnsDirective, descendants: true }, { propertyName: "childAggregates", first: true, predicate: AggregatesDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
219
|
+
GridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: GridComponent, selector: "ejs-grid", inputs: { adaptiveUIMode: "adaptiveUIMode", aggregates: "aggregates", allowExcelExport: "allowExcelExport", allowFiltering: "allowFiltering", allowGrouping: "allowGrouping", allowKeyboard: "allowKeyboard", allowMultiSorting: "allowMultiSorting", allowPaging: "allowPaging", allowPdfExport: "allowPdfExport", allowReordering: "allowReordering", allowResizing: "allowResizing", allowRowDragAndDrop: "allowRowDragAndDrop", allowSelection: "allowSelection", allowSorting: "allowSorting", allowTextWrap: "allowTextWrap", autoFit: "autoFit", childGrid: "childGrid", clipMode: "clipMode", columnChooserSettings: "columnChooserSettings", columnMenuItems: "columnMenuItems", columnQueryMode: "columnQueryMode", columns: "columns", contextMenuItems: "contextMenuItems", cssClass: "cssClass", currencyCode: "currencyCode", currentAction: "currentAction", currentViewData: "currentViewData", dataSource: "dataSource", detailTemplate: "detailTemplate", editSettings: "editSettings", ej2StatePersistenceVersion: "ej2StatePersistenceVersion", emptyRecordTemplate: "emptyRecordTemplate", enableAdaptiveUI: "enableAdaptiveUI", enableAltRow: "enableAltRow", enableAutoFill: "enableAutoFill", enableColumnVirtualization: "enableColumnVirtualization", enableHeaderFocus: "enableHeaderFocus", enableHover: "enableHover", enableHtmlSanitizer: "enableHtmlSanitizer", enableImmutableMode: "enableImmutableMode", enableInfiniteScrolling: "enableInfiniteScrolling", enablePersistence: "enablePersistence", enableRtl: "enableRtl", enableStickyHeader: "enableStickyHeader", enableVirtualMaskRow: "enableVirtualMaskRow", enableVirtualization: "enableVirtualization", exportGrids: "exportGrids", filterSettings: "filterSettings", frozenColumns: "frozenColumns", frozenRows: "frozenRows", gridLines: "gridLines", groupSettings: "groupSettings", height: "height", hierarchyPrintMode: "hierarchyPrintMode", infiniteScrollSettings: "infiniteScrollSettings", loadingIndicator: "loadingIndicator", locale: "locale", pageSettings: "pageSettings", pagerTemplate: "pagerTemplate", parentDetails: "parentDetails", printMode: "printMode", query: "query", queryString: "queryString", resizeSettings: "resizeSettings", rowDropSettings: "rowDropSettings", rowHeight: "rowHeight", rowRenderingMode: "rowRenderingMode", rowTemplate: "rowTemplate", searchSettings: "searchSettings", selectedRowIndex: "selectedRowIndex", selectionSettings: "selectionSettings", showColumnChooser: "showColumnChooser", showColumnMenu: "showColumnMenu", showHider: "showHider", sortSettings: "sortSettings", textWrapSettings: "textWrapSettings", toolbar: "toolbar", toolbarTemplate: "toolbarTemplate", width: "width" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", actionFailure: "actionFailure", batchAdd: "batchAdd", batchCancel: "batchCancel", batchDelete: "batchDelete", beforeAutoFill: "beforeAutoFill", beforeBatchAdd: "beforeBatchAdd", beforeBatchDelete: "beforeBatchDelete", beforeBatchSave: "beforeBatchSave", beforeCopy: "beforeCopy", beforeDataBound: "beforeDataBound", beforeDetailTemplateDetach: "beforeDetailTemplateDetach", beforeExcelExport: "beforeExcelExport", beforeOpenAdaptiveDialog: "beforeOpenAdaptiveDialog", beforeOpenColumnChooser: "beforeOpenColumnChooser", beforePaste: "beforePaste", beforePdfExport: "beforePdfExport", beforePrint: "beforePrint", beginEdit: "beginEdit", cellDeselected: "cellDeselected", cellDeselecting: "cellDeselecting", cellEdit: "cellEdit", cellSave: "cellSave", cellSaved: "cellSaved", cellSelected: "cellSelected", cellSelecting: "cellSelecting", checkBoxChange: "checkBoxChange", columnDataStateChange: "columnDataStateChange", columnDeselected: "columnDeselected", columnDeselecting: "columnDeselecting", columnDrag: "columnDrag", columnDragStart: "columnDragStart", columnDrop: "columnDrop", columnMenuClick: "columnMenuClick", columnMenuOpen: "columnMenuOpen", columnSelected: "columnSelected", columnSelecting: "columnSelecting", commandClick: "commandClick", contextMenuClick: "contextMenuClick", contextMenuOpen: "contextMenuOpen", created: "created", dataBound: "dataBound", dataSourceChanged: "dataSourceChanged", dataStateChange: "dataStateChange", destroyed: "destroyed", detailDataBound: "detailDataBound", excelAggregateQueryCellInfo: "excelAggregateQueryCellInfo", excelExportComplete: "excelExportComplete", excelHeaderQueryCellInfo: "excelHeaderQueryCellInfo", excelQueryCellInfo: "excelQueryCellInfo", exportDetailDataBound: "exportDetailDataBound", exportDetailTemplate: "exportDetailTemplate", exportGroupCaption: "exportGroupCaption", headerCellInfo: "headerCellInfo", keyPressed: "keyPressed", lazyLoadGroupCollapse: "lazyLoadGroupCollapse", lazyLoadGroupExpand: "lazyLoadGroupExpand", load: "load", pdfAggregateQueryCellInfo: "pdfAggregateQueryCellInfo", pdfExportComplete: "pdfExportComplete", pdfHeaderQueryCellInfo: "pdfHeaderQueryCellInfo", pdfQueryCellInfo: "pdfQueryCellInfo", printComplete: "printComplete", queryCellInfo: "queryCellInfo", recordClick: "recordClick", recordDoubleClick: "recordDoubleClick", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", rowDataBound: "rowDataBound", rowDeselected: "rowDeselected", rowDeselecting: "rowDeselecting", rowDrag: "rowDrag", rowDragStart: "rowDragStart", rowDragStartHelper: "rowDragStartHelper", rowDrop: "rowDrop", rowSelected: "rowSelected", rowSelecting: "rowSelecting", toolbarClick: "toolbarClick", dataSourceChange: "dataSourceChange" }, queries: [{ propertyName: "rowTemplate", first: true, predicate: ["rowTemplate"], descendants: true }, { propertyName: "emptyRecordTemplate", first: true, predicate: ["emptyRecordTemplate"], descendants: true }, { propertyName: "detailTemplate", first: true, predicate: ["detailTemplate"], descendants: true }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true }, { propertyName: "pagerTemplate", first: true, predicate: ["pagerTemplate"], descendants: true }, { propertyName: "editSettings_template", first: true, predicate: ["editSettingsTemplate"], descendants: true }, { propertyName: "groupSettings_captionTemplate", first: true, predicate: ["groupSettingsCaptionTemplate"], descendants: true }, { propertyName: "columnChooserSettings_headerTemplate", first: true, predicate: ["columnChooserSettingsHeaderTemplate"], descendants: true }, { propertyName: "columnChooserSettings_template", first: true, predicate: ["columnChooserSettingsTemplate"], descendants: true }, { propertyName: "columnChooserSettings_footerTemplate", first: true, predicate: ["columnChooserSettingsFooterTemplate"], descendants: true }, { propertyName: "childColumns", first: true, predicate: ColumnsDirective, descendants: true }, { propertyName: "childAggregates", first: true, predicate: AggregatesDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
220
220
|
__decorate([
|
|
221
221
|
Template()
|
|
222
222
|
], GridComponent.prototype, "rowTemplate", void 0);
|
|
@@ -238,6 +238,15 @@ __decorate([
|
|
|
238
238
|
__decorate([
|
|
239
239
|
Template()
|
|
240
240
|
], GridComponent.prototype, "groupSettings_captionTemplate", void 0);
|
|
241
|
+
__decorate([
|
|
242
|
+
Template()
|
|
243
|
+
], GridComponent.prototype, "columnChooserSettings_headerTemplate", void 0);
|
|
244
|
+
__decorate([
|
|
245
|
+
Template()
|
|
246
|
+
], GridComponent.prototype, "columnChooserSettings_template", void 0);
|
|
247
|
+
__decorate([
|
|
248
|
+
Template()
|
|
249
|
+
], GridComponent.prototype, "columnChooserSettings_footerTemplate", void 0);
|
|
241
250
|
GridComponent = __decorate([
|
|
242
251
|
ComponentMixins([ComponentBase])
|
|
243
252
|
], GridComponent);
|
|
@@ -276,5 +285,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
276
285
|
}], groupSettings_captionTemplate: [{
|
|
277
286
|
type: ContentChild,
|
|
278
287
|
args: ['groupSettingsCaptionTemplate']
|
|
288
|
+
}], columnChooserSettings_headerTemplate: [{
|
|
289
|
+
type: ContentChild,
|
|
290
|
+
args: ['columnChooserSettingsHeaderTemplate']
|
|
291
|
+
}], columnChooserSettings_template: [{
|
|
292
|
+
type: ContentChild,
|
|
293
|
+
args: ['columnChooserSettingsTemplate']
|
|
294
|
+
}], columnChooserSettings_footerTemplate: [{
|
|
295
|
+
type: ContentChild,
|
|
296
|
+
args: ['columnChooserSettingsFooterTemplate']
|
|
279
297
|
}] } });
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsdUJBQXVCLEVBQWlELFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsYUFBYSxFQUErQixlQUFlLEVBQTBCLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdJLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBYSxDQUFDLGdCQUFnQixFQUFDLFlBQVksRUFBQyxrQkFBa0IsRUFBQyxnQkFBZ0IsRUFBQyxlQUFlLEVBQUMsZUFBZSxFQUFDLG1CQUFtQixFQUFDLGFBQWEsRUFBQyxnQkFBZ0IsRUFBQyxpQkFBaUIsRUFBQyxlQUFlLEVBQUMscUJBQXFCLEVBQUMsZ0JBQWdCLEVBQUMsY0FBYyxFQUFDLGVBQWUsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLFVBQVUsRUFBQyx1QkFBdUIsRUFBQyxpQkFBaUIsRUFBQyxpQkFBaUIsRUFBQyxTQUFTLEVBQUMsa0JBQWtCLEVBQUMsVUFBVSxFQUFDLGNBQWMsRUFBQyxlQUFlLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLGdCQUFnQixFQUFDLGNBQWMsRUFBQyw0QkFBNEIsRUFBQyxxQkFBcUIsRUFBQyxrQkFBa0IsRUFBQyxjQUFjLEVBQUMsZ0JBQWdCLEVBQUMsNEJBQTRCLEVBQUMsbUJBQW1CLEVBQUMsYUFBYSxFQUFDLHFCQUFx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QjtJQURDLFFBQVEsRUFBRTtvREFDZTtBQUcxQjtJQURDLFFBQVEsRUFBRTs0REFDdUI7QUFHbEM7SUFEQyxRQUFRLEVBQUU7b0VBQytCO0FBL0lqQyxhQUFhO0lBRHpCLGVBQWUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0dBQ3BCLGFBQWEsQ0F5VnpCO1NBelZZLGFBQWE7MkZBQWIsYUFBYTtrQkFaekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsTUFBTSxFQUFFLE1BQU07b0JBQ2QsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUU7d0JBQ0wsWUFBWSxFQUFFLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDO3dCQUNoRCxlQUFlLEVBQUUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLENBQUM7cUJBQ3pEO2lCQUNKOytLQXFHVSxXQUFXO3NCQUZqQixZQUFZO3VCQUFDLGFBQWE7Z0JBV3BCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBZTVCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVV2QixlQUFlO3NCQUZyQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFVeEIsYUFBYTtzQkFGbkIsWUFBWTt1QkFBQyxlQUFlO2dCQUt0QixxQkFBcUI7c0JBRjNCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUs3Qiw2QkFBNkI7c0JBRm5DLFlBQVk7dUJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIEluamVjdG9yLCBWYWx1ZVByb3ZpZGVyLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UsIElDb21wb25lbnRCYXNlLCBhcHBseU1peGlucywgQ29tcG9uZW50TWl4aW5zLCBQcm9wZXJ0eUNvbGxlY3Rpb25JbmZvLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1ncmlkcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgQ29sdW1uc0RpcmVjdGl2ZSB9IGZyb20gJy4vY29sdW1ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQWdncmVnYXRlc0RpcmVjdGl2ZSB9IGZyb20gJy4vYWdncmVnYXRlcy5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgaW5wdXRzOiBzdHJpbmdbXSA9IFsnYWRhcHRpdmVVSU1vZGUnLCdhZ2dyZWdhdGVzJywnYWxsb3dFeGNlbEV4cG9ydCcsJ2FsbG93RmlsdGVyaW5nJywnYWxsb3dHcm91cGluZycsJ2FsbG93S2V5Ym9hcmQnLCdhbGxvd011bHRpU29ydGluZycsJ2FsbG93UGFnaW5nJywnYWxsb3dQZGZFeHBvcnQnLCdhbGxvd1Jlb3JkZXJpbmcnLCdhbGxvd1Jlc2l6aW5nJywnYWxsb3dSb3dEcmFnQW5kRHJvcCcsJ2FsbG93U2VsZWN0aW9uJywnYWxsb3dTb3J0aW5nJywnYWxsb3dUZXh0V3JhcCcsJ2F1dG9GaXQnLCdjaGlsZEdyaWQnLCdjbGlwTW9kZScsJ2NvbHVtbkNob29zZXJTZXR0aW5ncycsJ2NvbHVtbk1lbnVJdGVtcycsJ2NvbHVtblF1ZXJ5TW9kZScsJ2NvbHVtbnMnLCdjb250ZXh0TWVudUl0ZW1zJywnY3NzQ2xhc3MnLCdjdXJyZW5jeUNvZGUnLCdjdXJyZW50QWN0aW9uJywnY3VycmVudFZpZXdEYXRhJywnZGF0YVNvdXJjZScsJ2RldGFpbFRlbXBsYXRlJywnZWRpdFNldHRpbmdzJywnZWoyU3RhdGVQZXJzaXN0ZW5jZVZlcnNpb24nLCdlbXB0eVJlY29yZFRlbXBsYXRlJywnZW5hYmxlQWRhcHRpdmVVSScsJ2VuYWJsZUFsdFJvdycsJ2VuYWJsZUF1dG9GaWxsJywnZW5hYmxlQ29sdW1uVmlydHVhbGl6YXRpb24nLCdlbmFibGVIZWFkZXJGb2N1cycsJ2VuYWJsZUhvdmVyJywnZW5hYmxlSHRtbFNhbml0aXplcicsJ2VuYWJsZUltbXV0YWJsZU1vZGUnLCdlbmFibGVJbmZpbml0ZVNjcm9sbGluZycsJ2VuYWJsZVBlcnNpc3RlbmNlJywnZW5hYmxlUnRsJywnZW5hYmxlU3RpY2t5SGVhZGVyJywnZW5hYmxlVmlydHVhbE1hc2tSb3cnLCdlbmFibGVWaXJ0dWFsaXphdGlvbicsJ2V4cG9ydEdyaWRzJywnZmlsdGVyU2V0dGluZ3MnLCdmcm96ZW5Db2x1bW5zJywnZnJvemVuUm93cycsJ2dyaWRMaW5lcycsJ2dyb3VwU2V0dGluZ3MnLCdoZWlnaHQnLCdoaWVyYXJjaHlQcmludE1vZGUnLCdpbmZpbml0ZVNjcm9sbFNldHRpbmdzJywnbG9hZGluZ0luZGljYXRvcicsJ2xvY2FsZScsJ3BhZ2VTZXR0aW5ncycsJ3BhZ2VyVGVtcGxhdGUnLCdwYXJlbnREZXRhaWxzJywncHJpbnRNb2RlJywncXVlcnknLCdxdWVyeVN0cmluZycsJ3Jlc2l6ZVNldHRpbmdzJywncm93RHJvcFNldHRpbmdzJywncm93SGVpZ2h0Jywncm93UmVuZGVyaW5nTW9kZScsJ3Jvd1RlbXBsYXRlJywnc2VhcmNoU2V0dGluZ3MnLCdzZWxlY3RlZFJvd0luZGV4Jywnc2VsZWN0aW9uU2V0dGluZ3MnLCdzaG93Q29sdW1uQ2hvb3NlcicsJ3Nob3dDb2x1bW5NZW51Jywnc2hvd0hpZGVyJywnc29ydFNldHRpbmdzJywndGV4dFdyYXBTZXR0aW5ncycsJ3Rvb2xiYXInLCd0b29sYmFyVGVtcGxhdGUnLCd3aWR0aCddO1xuZXhwb3J0IGNvbnN0IG91dHB1dHM6IHN0cmluZ1tdID0gWydhY3Rpb25CZWdpbicsJ2FjdGlvbkNvbXBsZXRlJywnYWN0aW9uRmFpbHVyZScsJ2JhdGNoQWRkJywnYmF0Y2hDYW5jZWwnLCdiYXRjaERlbGV0ZScsJ2JlZm9yZUF1dG9GaWxsJywnYmVmb3JlQmF0Y2hBZGQnLCdiZWZvcmVCYXRjaERlbGV0ZScsJ2JlZm9yZUJhdGNoU2F2ZScsJ2JlZm9yZUNvcHknLCdiZWZvcmVEYXRhQm91bmQnLCdiZWZvcmVFeGNlbEV4cG9ydCcsJ2JlZm9yZU9wZW5BZGFwdGl2ZURpYWxvZycsJ2JlZm9yZU9wZW5Db2x1bW5DaG9vc2VyJywnYmVmb3JlUGFzdGUnLCdiZWZvcmVQZGZFeHBvcnQnLCdiZWZvcmVQcmludCcsJ2JlZ2luRWRpdCcsJ2NlbGxEZXNlbGVjdGVkJywnY2VsbERlc2VsZWN0aW5nJywnY2VsbEVkaXQnLCdjZWxsU2F2ZScsJ2NlbGxTYXZlZCcsJ2NlbGxTZWxlY3RlZCcsJ2NlbGxTZWxlY3RpbmcnLCdjaGVja0JveENoYW5nZScsJ2NvbHVtbkRhdGFTdGF0ZUNoYW5nZScsJ2NvbHVtbkRlc2VsZWN0ZWQnLCdjb2x1bW5EZXNlbGVjdGluZycsJ2NvbHVtbkRyYWcnLCdjb2x1bW5EcmFnU3RhcnQnLCdjb2x1bW5Ecm9wJywnY29sdW1uTWVudUNsaWNrJywnY29sdW1uTWVudU9wZW4nLCdjb2x1bW5TZWxlY3RlZCcsJ2NvbHVtblNlbGVjdGluZycsJ2NvbW1hbmRDbGljaycsJ2NvbnRleHRNZW51Q2xpY2snLCdjb250ZXh0TWVudU9wZW4nLCdjcmVhdGVkJywnZGF0YUJvdW5kJywnZGF0YVNvdXJjZUNoYW5nZWQnLCdkYXRhU3RhdGVDaGFuZ2UnLCdkZXN0cm95ZWQnLCdkZXRhaWxEYXRhQm91bmQnLCdleGNlbEFnZ3JlZ2F0ZVF1ZXJ5Q2VsbEluZm8nLCdleGNlbEV4cG9ydENvbXBsZXRlJywnZXhjZWxIZWFkZXJRdWVyeUNlbGxJbmZvJywnZXhjZWxRdWVyeUNlbGxJbmZvJywnZXhwb3J0RGV0YWlsRGF0YUJvdW5kJywnZXhwb3J0RGV0YWlsVGVtcGxhdGUnLCdleHBvcnRHcm91cENhcHRpb24nLCdoZWFkZXJDZWxsSW5mbycsJ2tleVByZXNzZWQnLCdsYXp5TG9hZEdyb3VwQ29sbGFwc2UnLCdsYXp5TG9hZEdyb3VwRXhwYW5kJywnbG9hZCcsJ3BkZkFnZ3JlZ2F0ZVF1ZXJ5Q2VsbEluZm8nLCdwZGZFeHBvcnRDb21wbGV0ZScsJ3BkZkhlYWRlclF1ZXJ5Q2VsbEluZm8nLCdwZGZRdWVyeUNlbGxJbmZvJywncHJpbnRDb21wbGV0ZScsJ3F1ZXJ5Q2VsbEluZm8nLCdyZWNvcmRDbGljaycsJ3JlY29yZERvdWJsZUNsaWNrJywncmVzaXplU3RhcnQnLCdyZXNpemVTdG9wJywncmVzaXppbmcnLCdyb3dEYXRhQm91bmQnLCdyb3dEZXNlbGVjdGVkJywncm93RGVzZWxlY3RpbmcnLCdyb3dEcmFnJywncm93RHJhZ1N0YXJ0Jywncm93RHJhZ1N0YXJ0SGVscGVyJywncm93RHJvcCcsJ3Jvd1NlbGVjdGVkJywncm93U2VsZWN0aW5nJywndG9vbGJhckNsaWNrJywnZGF0YVNvdXJjZUNoYW5nZSddO1xuZXhwb3J0IGNvbnN0IHR3b1dheXM6IHN0cmluZ1tdID0gWydkYXRhU291cmNlJ107XG5cbi8qKlxuICogYGVqcy1ncmlkYCByZXByZXNlbnRzIHRoZSBBbmd1bGFyIEdyaWQgQ29tcG9uZW50LlxuICogYGBgaHRtbFxuICogPGVqcy1ncmlkIFtkYXRhU291cmNlXT0nZGF0YScgYWxsb3dQYWdpbmc9J3RydWUnIGFsbG93U29ydGluZz0ndHJ1ZSc+PC9lanMtZ3JpZD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Vqcy1ncmlkJyxcbiAgICBpbnB1dHM6IGlucHV0cyxcbiAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkQ29sdW1uczogbmV3IENvbnRlbnRDaGlsZChDb2x1bW5zRGlyZWN0aXZlKSwgXG4gICAgICAgIGNoaWxkQWdncmVnYXRlczogbmV3IENvbnRlbnRDaGlsZChBZ2dyZWdhdGVzRGlyZWN0aXZlKVxuICAgIH1cbn0pXG5AQ29tcG9uZW50TWl4aW5zKFtDb21wb25lbnRCYXNlXSlcbmV4cG9ydCBjbGFzcyBHcmlkQ29tcG9uZW50IGV4dGVuZHMgR3JpZCBpbXBsZW1lbnRzIElDb21wb25lbnRCYXNlIHtcbiAgICBwdWJsaWMgY29udGV4dCA6IGFueTtcbiAgICBwdWJsaWMgdGFnT2JqZWN0czogYW55O1xuXHRhY3Rpb25CZWdpbjogYW55O1xuXHRhY3Rpb25Db21wbGV0ZTogYW55O1xuXHRhY3Rpb25GYWlsdXJlOiBhbnk7XG5cdGJhdGNoQWRkOiBhbnk7XG5cdGJhdGNoQ2FuY2VsOiBhbnk7XG5cdGJhdGNoRGVsZXRlOiBhbnk7XG5cdGJlZm9yZUF1dG9GaWxsOiBhbnk7XG5cdGJlZm9yZUJhdGNoQWRkOiBhbnk7XG5cdGJlZm9yZUJhdGNoRGVsZXRlOiBhbnk7XG5cdGJlZm9yZUJhdGNoU2F2ZTogYW55O1xuXHRiZWZvcmVDb3B5OiBhbnk7XG5cdGJlZm9yZURhdGFCb3VuZDogYW55O1xuXHRiZWZvcmVFeGNlbEV4cG9ydDogYW55O1xuXHRiZWZvcmVPcGVuQWRhcHRpdmVEaWFsb2c6IGFueTtcblx0YmVmb3JlT3BlbkNvbHVtbkNob29zZXI6IGFueTtcblx0YmVmb3JlUGFzdGU6IGFueTtcblx0YmVmb3JlUGRmRXhwb3J0OiBhbnk7XG5cdGJlZm9yZVByaW50OiBhbnk7XG5cdGJlZ2luRWRpdDogYW55O1xuXHRjZWxsRGVzZWxlY3RlZDogYW55O1xuXHRjZWxsRGVzZWxlY3Rpbmc6IGFueTtcblx0Y2VsbEVkaXQ6IGFueTtcblx0Y2VsbFNhdmU6IGFueTtcblx0Y2VsbFNhdmVkOiBhbnk7XG5cdGNlbGxTZWxlY3RlZDogYW55O1xuXHRjZWxsU2VsZWN0aW5nOiBhbnk7XG5cdGNoZWNrQm94Q2hhbmdlOiBhbnk7XG5cdGNvbHVtbkRhdGFTdGF0ZUNoYW5nZTogYW55O1xuXHRjb2x1bW5EZXNlbGVjdGVkOiBhbnk7XG5cdGNvbHVtbkRlc2VsZWN0aW5nOiBhbnk7XG5cdGNvbHVtbkRyYWc6IGFueTtcblx0Y29sdW1uRHJhZ1N0YXJ0OiBhbnk7XG5cdGNvbHVtbkRyb3A6IGFueTtcblx0Y29sdW1uTWVudUNsaWNrOiBhbnk7XG5cdGNvbHVtbk1lbnVPcGVuOiBhbnk7XG5cdGNvbHVtblNlbGVjdGVkOiBhbnk7XG5cdGNvbHVtblNlbGVjdGluZzogYW55O1xuXHRjb21tYW5kQ2xpY2s6IGFueTtcblx0Y29udGV4dE1lbnVDbGljazogYW55O1xuXHRjb250ZXh0TWVudU9wZW46IGFueTtcblx0Y3JlYXRlZDogYW55O1xuXHRkYXRhQm91bmQ6IGFueTtcblx0ZGF0YVNvdXJjZUNoYW5nZWQ6IGFueTtcblx0ZGF0YVN0YXRlQ2hhbmdlOiBhbnk7XG5cdGRlc3Ryb3llZDogYW55O1xuXHRkZXRhaWxEYXRhQm91bmQ6IGFueTtcblx0ZXhjZWxBZ2dyZWdhdGVRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdGV4Y2VsRXhwb3J0Q29tcGxldGU6IGFueTtcblx0ZXhjZWxIZWFkZXJRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdGV4Y2VsUXVlcnlDZWxsSW5mbzogYW55O1xuXHRleHBvcnREZXRhaWxEYXRhQm91bmQ6IGFueTtcblx0ZXhwb3J0RGV0YWlsVGVtcGxhdGU6IGFueTtcblx0ZXhwb3J0R3JvdXBDYXB0aW9uOiBhbnk7XG5cdGhlYWRlckNlbGxJbmZvOiBhbnk7XG5cdGtleVByZXNzZWQ6IGFueTtcblx0bGF6eUxvYWRHcm91cENvbGxhcHNlOiBhbnk7XG5cdGxhenlMb2FkR3JvdXBFeHBhbmQ6IGFueTtcblx0bG9hZDogYW55O1xuXHRwZGZBZ2dyZWdhdGVRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdHBkZkV4cG9ydENvbXBsZXRlOiBhbnk7XG5cdHBkZkhlYWRlclF1ZXJ5Q2VsbEluZm86IGFueTtcblx0cGRmUXVlcnlDZWxsSW5mbzogYW55O1xuXHRwcmludENvbXBsZXRlOiBhbnk7XG5cdHF1ZXJ5Q2VsbEluZm86IGFueTtcblx0cmVjb3JkQ2xpY2s6IGFueTtcblx0cmVjb3JkRG91YmxlQ2xpY2s6IGFueTtcblx0cmVzaXplU3RhcnQ6IGFueTtcblx0cmVzaXplU3RvcDogYW55O1xuXHRyZXNpemluZzogYW55O1xuXHRyb3dEYXRhQm91bmQ6IGFueTtcblx0cm93RGVzZWxlY3RlZDogYW55O1xuXHRyb3dEZXNlbGVjdGluZzogYW55O1xuXHRyb3dEcmFnOiBhbnk7XG5cdHJvd0RyYWdTdGFydDogYW55O1xuXHRyb3dEcmFnU3RhcnRIZWxwZXI6IGFueTtcblx0cm93RHJvcDogYW55O1xuXHRyb3dTZWxlY3RlZDogYW55O1xuXHRyb3dTZWxlY3Rpbmc6IGFueTtcblx0dG9vbGJhckNsaWNrOiBhbnk7XG5cdHB1YmxpYyBkYXRhU291cmNlQ2hhbmdlOiBhbnk7XG4gICAgcHVibGljIGNoaWxkQ29sdW1uczogUXVlcnlMaXN0PENvbHVtbnNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZEFnZ3JlZ2F0ZXM6IFF1ZXJ5TGlzdDxBZ2dyZWdhdGVzRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgdGFnczogc3RyaW5nW10gPSBbJ2NvbHVtbnMnLCAnYWdncmVnYXRlcyddO1xuICAgIC8qKiBcbiAgICAgKiBUaGUgcm93IHRlbXBsYXRlIHRoYXQgcmVuZGVycyBjdXN0b21pemVkIHJvd3MgZnJvbSB0aGUgZ2l2ZW4gdGVtcGxhdGUuIFxuICAgICAqIEJ5IGRlZmF1bHQsIEdyaWQgcmVuZGVycyBhIHRhYmxlIHJvdyBmb3IgZXZlcnkgZGF0YSBzb3VyY2UgaXRlbS4gXG4gICAgICogPiAqIEl0IGFjY2VwdHMgZWl0aGVyIFt0ZW1wbGF0ZSBzdHJpbmddKC4uLy4uL2NvbW1vbi90ZW1wbGF0ZS1lbmdpbmUvKSBvciBIVE1MIGVsZW1lbnQgSUQuIFxuICAgICAqID4gKiBUaGUgcm93IHRlbXBsYXRlIG11c3QgYmUgYSB0YWJsZSByb3cuXG4gICAgICogXG4gICAgICogPiBDaGVjayB0aGUgW2BSb3cgVGVtcGxhdGVgXSguLi8uLi9ncmlkL3Jvdy8pIGN1c3RvbWl6YXRpb24uXG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdyb3dUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgcm93VGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGVtcHR5IHJlY29yZCB0ZW1wbGF0ZSB0aGF0IHJlbmRlcnMgY3VzdG9taXplZCBlbGVtZW50IG9yIHRleHQgb3IgaW1hZ2UgaW5zdGVhZCBvZiBkaXNwbGF5aW5nIHRoZSBlbXB0eSByZWNvcmQgbWVzc2FnZSBpbiB0aGUgZ3JpZC4gXG4gICAgICogPiBJdCBhY2NlcHRzIGVpdGhlciB0aGUgW3RlbXBsYXRlIHN0cmluZ10oLi4vLi4vY29tbW9uL3RlbXBsYXRlLWVuZ2luZS8pIG9yIHRoZSBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5UmVjb3JkVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGVtcHR5UmVjb3JkVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGRldGFpbCB0ZW1wbGF0ZSBhbGxvd3MgeW91IHRvIHNob3cgb3IgaGlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgcGFydGljdWxhciByb3cuXG4gICAgICogXG4gICAgICogPiBJdCBhY2NlcHRzIGVpdGhlciB0aGUgW3RlbXBsYXRlIHN0cmluZ10oLi4vLi4vY29tbW9uL3RlbXBsYXRlLWVuZ2luZS8pIG9yIHRoZSBIVE1MIGVsZW1lbnQgSUQuXG4gICAgICpcbiAgICAgKnslIGNvZGVCbG9jayBzcmM9XCJncmlkL2RldGFpbC10ZW1wbGF0ZS1hcGkvaW5kZXgudHNcIiAlfXslIGVuZGNvZGVCbG9jayAlfVxuICAgICAqICAgICBcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZGV0YWlsVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGRldGFpbFRlbXBsYXRlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEl0IHVzZWQgdG8gcmVuZGVyIHRvb2xiYXIgdGVtcGxhdGVcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndG9vbGJhclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0b29sYmFyVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgdXNlZCB0byByZW5kZXIgcGFnZXIgdGVtcGxhdGVcbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgncGFnZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgcGFnZXJUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2VkaXRTZXR0aW5nc1RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBlZGl0U2V0dGluZ3NfdGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdncm91cFNldHRpbmdzQ2FwdGlvblRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBncm91cFNldHRpbmdzX2NhcHRpb25UZW1wbGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ0VsZTogRWxlbWVudFJlZiwgcHJpdmF0ZSBzcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOlZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMubmdFbGUubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMgPSB0aGlzLmluamVjdGVkTW9kdWxlcyB8fCBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzRmlsdGVyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc1BhZ2UnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzU2VsZWN0aW9uJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc1NvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzR3JvdXAnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzUmVvcmRlcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNSb3dERCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNEZXRhaWxSb3cnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzVG9vbGJhcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNBZ2dyZWdhdGUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzU2VhcmNoJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc1ZpcnR1YWxTY3JvbGwnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzRWRpdCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNSZXNpemUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzRXhjZWxFeHBvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzUGRmRXhwb3J0Jyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0NvbW1hbmRDb2x1bW4nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzQ29udGV4dE1lbnUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzRnJlZXplJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0NvbHVtbk1lbnUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzQ29sdW1uQ2hvb3NlcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNGb3JlaWduS2V5Jyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0luZmluaXRlU2Nyb2xsJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0xhenlMb2FkR3JvdXAnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmFkZFR3b1dheS5jYWxsKHRoaXMsIHR3b1dheXMpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5jb250ZXh0ICA9IG5ldyBDb21wb25lbnRCYXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbnRleHQubmdPbkluaXQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm5nQWZ0ZXJWaWV3SW5pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ09uRGVzdHJveSh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhZ09iamVjdHNbMF0uaW5zdGFuY2UgPSB0aGlzLmNoaWxkQ29sdW1ucztcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRBZ2dyZWdhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1sxXS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRBZ2dyZWdhdGVzIGFzIGFueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ0FmdGVyQ29udGVudENoZWNrZWQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyRXZlbnRzOiAoZXZlbnRMaXN0OiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgICBwdWJsaWMgYWRkVHdvV2F5OiAocHJvcExpc3Q6IHN0cmluZ1tdKSA9PiB2b2lkO1xufVxuXG4iXX0=
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsdUJBQXVCLEVBQWlELFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsYUFBYSxFQUErQixlQUFlLEVBQTBCLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdJLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBYSxDQUFDLGdCQUFnQixFQUFDLFlBQVksRUFBQyxrQkFBa0IsRUFBQyxnQkFBZ0IsRUFBQyxlQUFlLEVBQUMsZUFBZSxFQUFDLG1CQUFtQixFQUFDLGFBQWEsRUFBQyxnQkFBZ0IsRUFBQyxpQkFBaUIsRUFBQyxlQUFlLEVBQUMscUJBQXFCLEVBQUMsZ0JBQWdCLEVBQUMsY0FBYyxFQUFDLGVBQWUsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLFVBQVUsRUFBQyx1QkFBdUIsRUFBQyxpQkFBaUIsRUFBQyxpQkFBaUIsRUFBQyxTQUFTLEVBQUMsa0JBQWtCLEVBQUMsVUFBVSxFQUFDLGNBQWMsRUFBQyxlQUFlLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLGdCQUFnQixFQUFDLGNBQWMsRUFBQyw0QkFBNEIsRUFBQyxxQkFBcUIsRUFBQyxrQkFBa0IsRUFBQyxjQUFjLEVBQUMsZ0JBQWdCLEVBQUMsNEJBQTRCLEVBQUMsbUJBQW1CLEVBQUMsYUFBYSxFQUFDLHFCQUFxQixFQUFDLHFCQUFxQixFQUFDLHlCQUF5QixFQUFDLG1CQUFtQixFQUFDLFdBQVcsRUFBQyxvQkFBb0IsRUFBQyxzQkFBc0IsRUFBQyxzQkFBc0IsRUFBQyxhQUFhLEVBQUMsZ0JBQWdCLEVBQUMsZUFBZSxFQUFDLFlBQVksRUFBQyxXQUFXLEVBQUMsZUFBZSxFQUFDLFFBQVEsRUFBQyxvQkFBb0IsRUFBQyx3QkFBd0IsRUFBQyxrQkFBa0IsRUFBQyxRQUFRLEVBQUMsY0FBYyxFQUFDLGVBQWUsRUFBQyxlQUFlLEVBQUMsV0FBVyxFQUFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsZ0JBQWdCLEVBQUMsaUJBQWlCLEVBQUMsV0FBVyxFQUFDLGtCQUFrQixFQUFDLGFBQWEsRUFBQyxnQkFBZ0IsRUFBQyxrQkFBa0IsRUFBQyxtQkFBbUIsRUFBQyxtQkFBbUIsRUFBQyxnQkFBZ0IsRUFBQyxXQUFXLEVBQUMsY0FBYyxFQUFDLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxpQkFBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUMzMEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFhLENBQUMsYUFBYSxFQUFDLGdCQUFnQixFQUFDLGVBQWUsRUFBQyxVQUFVLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxnQkFBZ0IsRUFBQyxnQkFBZ0IsRUFBQyxtQkFBbUIsRUFBQyxpQkFBaUIsRUFBQyxZQUFZLEVBQUMsaUJBQWlCLEVBQUMsNEJBQTRCLEVBQUMsbUJBQW1CLEVBQUMsMEJBQTBCLEVBQUMseUJBQXlCLEVBQUMsYUFBYSxFQUFDLGlCQUFpQixFQUFDLGFBQWEsRUFBQyxXQUFXLEVBQUMsZ0JBQWdCLEVBQUMsaUJBQWlCLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxXQUFXLEVBQUMsY0FBYyxFQUFDLGVBQWUsRUFBQyxnQkFBZ0IsRUFBQyx1QkFBdUIsRUFBQyxrQkFBa0IsRUFBQyxtQkFBbUIsRUFBQyxZQUFZLEVBQUMsaUJBQWlCLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLGdCQUFnQixFQUFDLGdCQUFnQixFQUFDLGlCQUFpQixFQUFDLGNBQWMsRUFBQyxrQkFBa0IsRUFBQyxpQkFBaUIsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLG1CQUFtQixFQUFDLGlCQUFpQixFQUFDLFdBQVcsRUFBQyxpQkFBaUIsRUFBQyw2QkFBNkIsRUFBQyxxQkFBcUIsRUFBQywwQkFBMEIsRUFBQyxvQkFBb0IsRUFBQyx1QkFBdUIsRUFBQyxzQkFBc0IsRUFBQyxvQkFBb0IsRUFBQyxnQkFBZ0IsRUFBQyxZQUFZLEVBQUMsdUJBQXVCLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLG1CQUFtQixFQUFDLHdCQUF3QixFQUFDLGtCQUFrQixFQUFDLGVBQWUsRUFBQyxlQUFlLEVBQUMsYUFBYSxFQUFDLG1CQUFtQixFQUFDLGFBQWEsRUFBQyxZQUFZLEVBQUMsVUFBVSxFQUFDLGNBQWMsRUFBQyxlQUFlLEVBQUMsZ0JBQWdCLEVBQUMsU0FBUyxFQUFDLGNBQWMsRUFBQyxvQkFBb0IsRUFBQyxTQUFTLEVBQUMsYUFBYSxFQUFDLGNBQWMsRUFBQyxjQUFjLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUMxNUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFaEQ7Ozs7O0dBS0c7SUFhVSxhQUFhLFNBQWIsYUFBYyxTQUFRLElBQUk7SUEySm5DLFlBQW9CLEtBQWlCLEVBQVUsU0FBb0IsRUFBVSxnQkFBaUMsRUFBVSxRQUFrQjtRQUN0SSxLQUFLLEVBQUUsQ0FBQztRQURRLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFyRW5JLFNBQUksR0FBYSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQXVFOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1FBQ2xELElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzQyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5QyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1QyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5QyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzVDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5QyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNsRCxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pDLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hELElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM5QyxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbEQsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hELElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0MsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9DLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNsRCxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSTtZQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0MsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDakM7U0FDSjtRQUFDLE1BQU0sR0FBRztRQUVmLElBQUk7WUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ25ELElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2pDO1NBQ0o7UUFBQyxNQUFNLEdBQUc7UUFFZixJQUFJO1lBQ0ksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNsRCxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNqQztTQUNKO1FBQUMsTUFBTSxHQUFHO1FBRWYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFJLElBQUksYUFBYSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBc0IsQ0FBQztTQUM3RDtRQUNULElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUlKLENBQUE7MEdBbldZLGFBQWE7OEZBQWIsYUFBYSxvak5BTGEsZ0JBQWdCLGtGQUNiLG1CQUFtQix1RUFKL0MsRUFBRTtBQTRHWjtJQURDLFFBQVEsRUFBRTtrREFDYTtBQVN4QjtJQURDLFFBQVEsRUFBRTswREFDcUI7QUFhaEM7SUFEQyxRQUFRLEVBQUU7cURBQ2dCO0FBUTNCO0lBREMsUUFBUSxFQUFFO3NEQUNpQjtBQVE1QjtJQURDLFFBQVEsRUFBRTtvREFDZTtBQUcxQjtJQURDLFFBQVEsRUFBRTs0REFDdUI7QUFHbEM7SUFEQyxRQUFRLEVBQUU7b0VBQytCO0FBRzFDO0lBREMsUUFBUSxFQUFFOzJFQUNzQztBQUdqRDtJQURDLFFBQVEsRUFBRTtxRUFDZ0M7QUFHM0M7SUFEQyxRQUFRLEVBQUU7MkVBQ3NDO0FBekp4QyxhQUFhO0lBRHpCLGVBQWUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0dBQ3BCLGFBQWEsQ0FtV3pCO1NBbldZLGFBQWE7MkZBQWIsYUFBYTtrQkFaekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsTUFBTSxFQUFFLE1BQU07b0JBQ2QsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUU7d0JBQ0wsWUFBWSxFQUFFLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDO3dCQUNoRCxlQUFlLEVBQUUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLENBQUM7cUJBQ3pEO2lCQUNKOytLQXNHVSxXQUFXO3NCQUZqQixZQUFZO3VCQUFDLGFBQWE7Z0JBV3BCLG1CQUFtQjtzQkFGekIsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBZTVCLGNBQWM7c0JBRnBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVV2QixlQUFlO3NCQUZyQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFVeEIsYUFBYTtzQkFGbkIsWUFBWTt1QkFBQyxlQUFlO2dCQUt0QixxQkFBcUI7c0JBRjNCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUs3Qiw2QkFBNkI7c0JBRm5DLFlBQVk7dUJBQUMsOEJBQThCO2dCQUtyQyxvQ0FBb0M7c0JBRjFDLFlBQVk7dUJBQUMscUNBQXFDO2dCQUs1Qyw4QkFBOEI7c0JBRnBDLFlBQVk7dUJBQUMsK0JBQStCO2dCQUt0QyxvQ0FBb0M7c0JBRjFDLFlBQVk7dUJBQUMscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIEluamVjdG9yLCBWYWx1ZVByb3ZpZGVyLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UsIElDb21wb25lbnRCYXNlLCBhcHBseU1peGlucywgQ29tcG9uZW50TWl4aW5zLCBQcm9wZXJ0eUNvbGxlY3Rpb25JbmZvLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1ncmlkcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuaW1wb3J0IHsgQ29sdW1uc0RpcmVjdGl2ZSB9IGZyb20gJy4vY29sdW1ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQWdncmVnYXRlc0RpcmVjdGl2ZSB9IGZyb20gJy4vYWdncmVnYXRlcy5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgaW5wdXRzOiBzdHJpbmdbXSA9IFsnYWRhcHRpdmVVSU1vZGUnLCdhZ2dyZWdhdGVzJywnYWxsb3dFeGNlbEV4cG9ydCcsJ2FsbG93RmlsdGVyaW5nJywnYWxsb3dHcm91cGluZycsJ2FsbG93S2V5Ym9hcmQnLCdhbGxvd011bHRpU29ydGluZycsJ2FsbG93UGFnaW5nJywnYWxsb3dQZGZFeHBvcnQnLCdhbGxvd1Jlb3JkZXJpbmcnLCdhbGxvd1Jlc2l6aW5nJywnYWxsb3dSb3dEcmFnQW5kRHJvcCcsJ2FsbG93U2VsZWN0aW9uJywnYWxsb3dTb3J0aW5nJywnYWxsb3dUZXh0V3JhcCcsJ2F1dG9GaXQnLCdjaGlsZEdyaWQnLCdjbGlwTW9kZScsJ2NvbHVtbkNob29zZXJTZXR0aW5ncycsJ2NvbHVtbk1lbnVJdGVtcycsJ2NvbHVtblF1ZXJ5TW9kZScsJ2NvbHVtbnMnLCdjb250ZXh0TWVudUl0ZW1zJywnY3NzQ2xhc3MnLCdjdXJyZW5jeUNvZGUnLCdjdXJyZW50QWN0aW9uJywnY3VycmVudFZpZXdEYXRhJywnZGF0YVNvdXJjZScsJ2RldGFpbFRlbXBsYXRlJywnZWRpdFNldHRpbmdzJywnZWoyU3RhdGVQZXJzaXN0ZW5jZVZlcnNpb24nLCdlbXB0eVJlY29yZFRlbXBsYXRlJywnZW5hYmxlQWRhcHRpdmVVSScsJ2VuYWJsZUFsdFJvdycsJ2VuYWJsZUF1dG9GaWxsJywnZW5hYmxlQ29sdW1uVmlydHVhbGl6YXRpb24nLCdlbmFibGVIZWFkZXJGb2N1cycsJ2VuYWJsZUhvdmVyJywnZW5hYmxlSHRtbFNhbml0aXplcicsJ2VuYWJsZUltbXV0YWJsZU1vZGUnLCdlbmFibGVJbmZpbml0ZVNjcm9sbGluZycsJ2VuYWJsZVBlcnNpc3RlbmNlJywnZW5hYmxlUnRsJywnZW5hYmxlU3RpY2t5SGVhZGVyJywnZW5hYmxlVmlydHVhbE1hc2tSb3cnLCdlbmFibGVWaXJ0dWFsaXphdGlvbicsJ2V4cG9ydEdyaWRzJywnZmlsdGVyU2V0dGluZ3MnLCdmcm96ZW5Db2x1bW5zJywnZnJvemVuUm93cycsJ2dyaWRMaW5lcycsJ2dyb3VwU2V0dGluZ3MnLCdoZWlnaHQnLCdoaWVyYXJjaHlQcmludE1vZGUnLCdpbmZpbml0ZVNjcm9sbFNldHRpbmdzJywnbG9hZGluZ0luZGljYXRvcicsJ2xvY2FsZScsJ3BhZ2VTZXR0aW5ncycsJ3BhZ2VyVGVtcGxhdGUnLCdwYXJlbnREZXRhaWxzJywncHJpbnRNb2RlJywncXVlcnknLCdxdWVyeVN0cmluZycsJ3Jlc2l6ZVNldHRpbmdzJywncm93RHJvcFNldHRpbmdzJywncm93SGVpZ2h0Jywncm93UmVuZGVyaW5nTW9kZScsJ3Jvd1RlbXBsYXRlJywnc2VhcmNoU2V0dGluZ3MnLCdzZWxlY3RlZFJvd0luZGV4Jywnc2VsZWN0aW9uU2V0dGluZ3MnLCdzaG93Q29sdW1uQ2hvb3NlcicsJ3Nob3dDb2x1bW5NZW51Jywnc2hvd0hpZGVyJywnc29ydFNldHRpbmdzJywndGV4dFdyYXBTZXR0aW5ncycsJ3Rvb2xiYXInLCd0b29sYmFyVGVtcGxhdGUnLCd3aWR0aCddO1xuZXhwb3J0IGNvbnN0IG91dHB1dHM6IHN0cmluZ1tdID0gWydhY3Rpb25CZWdpbicsJ2FjdGlvbkNvbXBsZXRlJywnYWN0aW9uRmFpbHVyZScsJ2JhdGNoQWRkJywnYmF0Y2hDYW5jZWwnLCdiYXRjaERlbGV0ZScsJ2JlZm9yZUF1dG9GaWxsJywnYmVmb3JlQmF0Y2hBZGQnLCdiZWZvcmVCYXRjaERlbGV0ZScsJ2JlZm9yZUJhdGNoU2F2ZScsJ2JlZm9yZUNvcHknLCdiZWZvcmVEYXRhQm91bmQnLCdiZWZvcmVEZXRhaWxUZW1wbGF0ZURldGFjaCcsJ2JlZm9yZUV4Y2VsRXhwb3J0JywnYmVmb3JlT3BlbkFkYXB0aXZlRGlhbG9nJywnYmVmb3JlT3BlbkNvbHVtbkNob29zZXInLCdiZWZvcmVQYXN0ZScsJ2JlZm9yZVBkZkV4cG9ydCcsJ2JlZm9yZVByaW50JywnYmVnaW5FZGl0JywnY2VsbERlc2VsZWN0ZWQnLCdjZWxsRGVzZWxlY3RpbmcnLCdjZWxsRWRpdCcsJ2NlbGxTYXZlJywnY2VsbFNhdmVkJywnY2VsbFNlbGVjdGVkJywnY2VsbFNlbGVjdGluZycsJ2NoZWNrQm94Q2hhbmdlJywnY29sdW1uRGF0YVN0YXRlQ2hhbmdlJywnY29sdW1uRGVzZWxlY3RlZCcsJ2NvbHVtbkRlc2VsZWN0aW5nJywnY29sdW1uRHJhZycsJ2NvbHVtbkRyYWdTdGFydCcsJ2NvbHVtbkRyb3AnLCdjb2x1bW5NZW51Q2xpY2snLCdjb2x1bW5NZW51T3BlbicsJ2NvbHVtblNlbGVjdGVkJywnY29sdW1uU2VsZWN0aW5nJywnY29tbWFuZENsaWNrJywnY29udGV4dE1lbnVDbGljaycsJ2NvbnRleHRNZW51T3BlbicsJ2NyZWF0ZWQnLCdkYXRhQm91bmQnLCdkYXRhU291cmNlQ2hhbmdlZCcsJ2RhdGFTdGF0ZUNoYW5nZScsJ2Rlc3Ryb3llZCcsJ2RldGFpbERhdGFCb3VuZCcsJ2V4Y2VsQWdncmVnYXRlUXVlcnlDZWxsSW5mbycsJ2V4Y2VsRXhwb3J0Q29tcGxldGUnLCdleGNlbEhlYWRlclF1ZXJ5Q2VsbEluZm8nLCdleGNlbFF1ZXJ5Q2VsbEluZm8nLCdleHBvcnREZXRhaWxEYXRhQm91bmQnLCdleHBvcnREZXRhaWxUZW1wbGF0ZScsJ2V4cG9ydEdyb3VwQ2FwdGlvbicsJ2hlYWRlckNlbGxJbmZvJywna2V5UHJlc3NlZCcsJ2xhenlMb2FkR3JvdXBDb2xsYXBzZScsJ2xhenlMb2FkR3JvdXBFeHBhbmQnLCdsb2FkJywncGRmQWdncmVnYXRlUXVlcnlDZWxsSW5mbycsJ3BkZkV4cG9ydENvbXBsZXRlJywncGRmSGVhZGVyUXVlcnlDZWxsSW5mbycsJ3BkZlF1ZXJ5Q2VsbEluZm8nLCdwcmludENvbXBsZXRlJywncXVlcnlDZWxsSW5mbycsJ3JlY29yZENsaWNrJywncmVjb3JkRG91YmxlQ2xpY2snLCdyZXNpemVTdGFydCcsJ3Jlc2l6ZVN0b3AnLCdyZXNpemluZycsJ3Jvd0RhdGFCb3VuZCcsJ3Jvd0Rlc2VsZWN0ZWQnLCdyb3dEZXNlbGVjdGluZycsJ3Jvd0RyYWcnLCdyb3dEcmFnU3RhcnQnLCdyb3dEcmFnU3RhcnRIZWxwZXInLCdyb3dEcm9wJywncm93U2VsZWN0ZWQnLCdyb3dTZWxlY3RpbmcnLCd0b29sYmFyQ2xpY2snLCdkYXRhU291cmNlQ2hhbmdlJ107XG5leHBvcnQgY29uc3QgdHdvV2F5czogc3RyaW5nW10gPSBbJ2RhdGFTb3VyY2UnXTtcblxuLyoqXG4gKiBgZWpzLWdyaWRgIHJlcHJlc2VudHMgdGhlIEFuZ3VsYXIgR3JpZCBDb21wb25lbnQuXG4gKiBgYGBodG1sXG4gKiA8ZWpzLWdyaWQgW2RhdGFTb3VyY2VdPSdkYXRhJyBhbGxvd1BhZ2luZz0ndHJ1ZScgYWxsb3dTb3J0aW5nPSd0cnVlJz48L2Vqcy1ncmlkPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWpzLWdyaWQnLFxuICAgIGlucHV0czogaW5wdXRzLFxuICAgIG91dHB1dHM6IG91dHB1dHMsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRDb2x1bW5zOiBuZXcgQ29udGVudENoaWxkKENvbHVtbnNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRBZ2dyZWdhdGVzOiBuZXcgQ29udGVudENoaWxkKEFnZ3JlZ2F0ZXNEaXJlY3RpdmUpXG4gICAgfVxufSlcbkBDb21wb25lbnRNaXhpbnMoW0NvbXBvbmVudEJhc2VdKVxuZXhwb3J0IGNsYXNzIEdyaWRDb21wb25lbnQgZXh0ZW5kcyBHcmlkIGltcGxlbWVudHMgSUNvbXBvbmVudEJhc2Uge1xuICAgIHB1YmxpYyBjb250ZXh0IDogYW55O1xuICAgIHB1YmxpYyB0YWdPYmplY3RzOiBhbnk7XG5cdGFjdGlvbkJlZ2luOiBhbnk7XG5cdGFjdGlvbkNvbXBsZXRlOiBhbnk7XG5cdGFjdGlvbkZhaWx1cmU6IGFueTtcblx0YmF0Y2hBZGQ6IGFueTtcblx0YmF0Y2hDYW5jZWw6IGFueTtcblx0YmF0Y2hEZWxldGU6IGFueTtcblx0YmVmb3JlQXV0b0ZpbGw6IGFueTtcblx0YmVmb3JlQmF0Y2hBZGQ6IGFueTtcblx0YmVmb3JlQmF0Y2hEZWxldGU6IGFueTtcblx0YmVmb3JlQmF0Y2hTYXZlOiBhbnk7XG5cdGJlZm9yZUNvcHk6IGFueTtcblx0YmVmb3JlRGF0YUJvdW5kOiBhbnk7XG5cdGJlZm9yZURldGFpbFRlbXBsYXRlRGV0YWNoOiBhbnk7XG5cdGJlZm9yZUV4Y2VsRXhwb3J0OiBhbnk7XG5cdGJlZm9yZU9wZW5BZGFwdGl2ZURpYWxvZzogYW55O1xuXHRiZWZvcmVPcGVuQ29sdW1uQ2hvb3NlcjogYW55O1xuXHRiZWZvcmVQYXN0ZTogYW55O1xuXHRiZWZvcmVQZGZFeHBvcnQ6IGFueTtcblx0YmVmb3JlUHJpbnQ6IGFueTtcblx0YmVnaW5FZGl0OiBhbnk7XG5cdGNlbGxEZXNlbGVjdGVkOiBhbnk7XG5cdGNlbGxEZXNlbGVjdGluZzogYW55O1xuXHRjZWxsRWRpdDogYW55O1xuXHRjZWxsU2F2ZTogYW55O1xuXHRjZWxsU2F2ZWQ6IGFueTtcblx0Y2VsbFNlbGVjdGVkOiBhbnk7XG5cdGNlbGxTZWxlY3Rpbmc6IGFueTtcblx0Y2hlY2tCb3hDaGFuZ2U6IGFueTtcblx0Y29sdW1uRGF0YVN0YXRlQ2hhbmdlOiBhbnk7XG5cdGNvbHVtbkRlc2VsZWN0ZWQ6IGFueTtcblx0Y29sdW1uRGVzZWxlY3Rpbmc6IGFueTtcblx0Y29sdW1uRHJhZzogYW55O1xuXHRjb2x1bW5EcmFnU3RhcnQ6IGFueTtcblx0Y29sdW1uRHJvcDogYW55O1xuXHRjb2x1bW5NZW51Q2xpY2s6IGFueTtcblx0Y29sdW1uTWVudU9wZW46IGFueTtcblx0Y29sdW1uU2VsZWN0ZWQ6IGFueTtcblx0Y29sdW1uU2VsZWN0aW5nOiBhbnk7XG5cdGNvbW1hbmRDbGljazogYW55O1xuXHRjb250ZXh0TWVudUNsaWNrOiBhbnk7XG5cdGNvbnRleHRNZW51T3BlbjogYW55O1xuXHRjcmVhdGVkOiBhbnk7XG5cdGRhdGFCb3VuZDogYW55O1xuXHRkYXRhU291cmNlQ2hhbmdlZDogYW55O1xuXHRkYXRhU3RhdGVDaGFuZ2U6IGFueTtcblx0ZGVzdHJveWVkOiBhbnk7XG5cdGRldGFpbERhdGFCb3VuZDogYW55O1xuXHRleGNlbEFnZ3JlZ2F0ZVF1ZXJ5Q2VsbEluZm86IGFueTtcblx0ZXhjZWxFeHBvcnRDb21wbGV0ZTogYW55O1xuXHRleGNlbEhlYWRlclF1ZXJ5Q2VsbEluZm86IGFueTtcblx0ZXhjZWxRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdGV4cG9ydERldGFpbERhdGFCb3VuZDogYW55O1xuXHRleHBvcnREZXRhaWxUZW1wbGF0ZTogYW55O1xuXHRleHBvcnRHcm91cENhcHRpb246IGFueTtcblx0aGVhZGVyQ2VsbEluZm86IGFueTtcblx0a2V5UHJlc3NlZDogYW55O1xuXHRsYXp5TG9hZEdyb3VwQ29sbGFwc2U6IGFueTtcblx0bGF6eUxvYWRHcm91cEV4cGFuZDogYW55O1xuXHRsb2FkOiBhbnk7XG5cdHBkZkFnZ3JlZ2F0ZVF1ZXJ5Q2VsbEluZm86IGFueTtcblx0cGRmRXhwb3J0Q29tcGxldGU6IGFueTtcblx0cGRmSGVhZGVyUXVlcnlDZWxsSW5mbzogYW55O1xuXHRwZGZRdWVyeUNlbGxJbmZvOiBhbnk7XG5cdHByaW50Q29tcGxldGU6IGFueTtcblx0cXVlcnlDZWxsSW5mbzogYW55O1xuXHRyZWNvcmRDbGljazogYW55O1xuXHRyZWNvcmREb3VibGVDbGljazogYW55O1xuXHRyZXNpemVTdGFydDogYW55O1xuXHRyZXNpemVTdG9wOiBhbnk7XG5cdHJlc2l6aW5nOiBhbnk7XG5cdHJvd0RhdGFCb3VuZDogYW55O1xuXHRyb3dEZXNlbGVjdGVkOiBhbnk7XG5cdHJvd0Rlc2VsZWN0aW5nOiBhbnk7XG5cdHJvd0RyYWc6IGFueTtcblx0cm93RHJhZ1N0YXJ0OiBhbnk7XG5cdHJvd0RyYWdTdGFydEhlbHBlcjogYW55O1xuXHRyb3dEcm9wOiBhbnk7XG5cdHJvd1NlbGVjdGVkOiBhbnk7XG5cdHJvd1NlbGVjdGluZzogYW55O1xuXHR0b29sYmFyQ2xpY2s6IGFueTtcblx0cHVibGljIGRhdGFTb3VyY2VDaGFuZ2U6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRDb2x1bW5zOiBRdWVyeUxpc3Q8Q29sdW1uc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkQWdncmVnYXRlczogUXVlcnlMaXN0PEFnZ3JlZ2F0ZXNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyB0YWdzOiBzdHJpbmdbXSA9IFsnY29sdW1ucycsICdhZ2dyZWdhdGVzJ107XG4gICAgLyoqIFxuICAgICAqIFRoZSByb3cgdGVtcGxhdGUgdGhhdCByZW5kZXJzIGN1c3RvbWl6ZWQgcm93cyBmcm9tIHRoZSBnaXZlbiB0ZW1wbGF0ZS4gXG4gICAgICogQnkgZGVmYXVsdCwgR3JpZCByZW5kZXJzIGEgdGFibGUgcm93IGZvciBldmVyeSBkYXRhIHNvdXJjZSBpdGVtLiBcbiAgICAgKiA+ICogSXQgYWNjZXB0cyBlaXRoZXIgW3RlbXBsYXRlIHN0cmluZ10oLi4vLi4vY29tbW9uL3RlbXBsYXRlLWVuZ2luZS8pIG9yIEhUTUwgZWxlbWVudCBJRC4gXG4gICAgICogPiAqIFRoZSByb3cgdGVtcGxhdGUgbXVzdCBiZSBhIHRhYmxlIHJvdy5cbiAgICAgKiBcbiAgICAgKiA+IENoZWNrIHRoZSBbYFJvdyBUZW1wbGF0ZWBdKC4uLy4uL2dyaWQvcm93LykgY3VzdG9taXphdGlvbi5cbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3Jvd1RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyByb3dUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgZW1wdHkgcmVjb3JkIHRlbXBsYXRlIHRoYXQgcmVuZGVycyBjdXN0b21pemVkIGVsZW1lbnQgb3IgdGV4dCBvciBpbWFnZSBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgdGhlIGVtcHR5IHJlY29yZCBtZXNzYWdlIGluIHRoZSBncmlkLiBcbiAgICAgKiA+IEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBbdGVtcGxhdGUgc3RyaW5nXSguLi8uLi9jb21tb24vdGVtcGxhdGUtZW5naW5lLykgb3IgdGhlIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICogQGFzcHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHlSZWNvcmRUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZW1wdHlSZWNvcmRUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgZGV0YWlsIHRlbXBsYXRlIGFsbG93cyB5b3UgdG8gc2hvdyBvciBoaWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHJvdy5cbiAgICAgKiBcbiAgICAgKiA+IEl0IGFjY2VwdHMgZWl0aGVyIHRoZSBbdGVtcGxhdGUgc3RyaW5nXSguLi8uLi9jb21tb24vdGVtcGxhdGUtZW5naW5lLykgb3IgdGhlIEhUTUwgZWxlbWVudCBJRC5cbiAgICAgKlxuICAgICAqeyUgY29kZUJsb2NrIHNyYz1cImdyaWQvZGV0YWlsLXRlbXBsYXRlLWFwaS9pbmRleC50c1wiICV9eyUgZW5kY29kZUJsb2NrICV9XG4gICAgICogICAgIFxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdkZXRhaWxUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgZGV0YWlsVGVtcGxhdGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSXQgdXNlZCB0byByZW5kZXIgdG9vbGJhciB0ZW1wbGF0ZVxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCd0b29sYmFyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHRvb2xiYXJUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJdCB1c2VkIHRvIHJlbmRlciBwYWdlciB0ZW1wbGF0ZVxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdwYWdlclRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBwYWdlclRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnZWRpdFNldHRpbmdzVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGVkaXRTZXR0aW5nc190ZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwU2V0dGluZ3NDYXB0aW9uVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGdyb3VwU2V0dGluZ3NfY2FwdGlvblRlbXBsYXRlOiBhbnk7XG4gICAgQENvbnRlbnRDaGlsZCgnY29sdW1uQ2hvb3NlclNldHRpbmdzSGVhZGVyVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIGNvbHVtbkNob29zZXJTZXR0aW5nc19oZWFkZXJUZW1wbGF0ZTogYW55O1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbHVtbkNob29zZXJTZXR0aW5nc1RlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyBjb2x1bW5DaG9vc2VyU2V0dGluZ3NfdGVtcGxhdGU6IGFueTtcbiAgICBAQ29udGVudENoaWxkKCdjb2x1bW5DaG9vc2VyU2V0dGluZ3NGb290ZXJUZW1wbGF0ZScpXG4gICAgQFRlbXBsYXRlKClcbiAgICBwdWJsaWMgY29sdW1uQ2hvb3NlclNldHRpbmdzX2Zvb3RlclRlbXBsYXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nRWxlOiBFbGVtZW50UmVmLCBwcml2YXRlIHNyZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5uZ0VsZS5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcyA9IHRoaXMuaW5qZWN0ZWRNb2R1bGVzIHx8IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNGaWx0ZXInKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzUGFnZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNTZWxlY3Rpb24nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzU29ydCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNHcm91cCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNSZW9yZGVyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc1Jvd0REJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0RldGFpbFJvdycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNUb29sYmFyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0FnZ3JlZ2F0ZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNTZWFyY2gnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzVmlydHVhbFNjcm9sbCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNFZGl0Jyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc1Jlc2l6ZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNFeGNlbEV4cG9ydCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNQZGZFeHBvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzQ29tbWFuZENvbHVtbicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNDb250ZXh0TWVudScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNGcmVlemUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzQ29sdW1uTWVudScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnR3JpZHNDb2x1bW5DaG9vc2VyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdHcmlkc0ZvcmVpZ25LZXknKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzSW5maW5pdGVTY3JvbGwnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0dyaWRzTGF6eUxvYWRHcm91cCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMob3V0cHV0cyk7XG4gICAgICAgIHRoaXMuYWRkVHdvV2F5LmNhbGwodGhpcywgdHdvV2F5cyk7XG4gICAgICAgIHNldFZhbHVlKCdjdXJyZW50SW5zdGFuY2UnLCB0aGlzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLmNvbnRleHQgID0gbmV3IENvbXBvbmVudEJhc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ09uSW5pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQubmdBZnRlclZpZXdJbml0KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm5nT25EZXN0cm95KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFnT2JqZWN0c1swXS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRDb2x1bW5zO1xuICAgICAgICBpZiAodGhpcy5jaGlsZEFnZ3JlZ2F0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzFdLmluc3RhbmNlID0gdGhpcy5jaGlsZEFnZ3JlZ2F0ZXMgYXMgYW55O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZXh0Lm5nQWZ0ZXJDb250ZW50Q2hlY2tlZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJFdmVudHM6IChldmVudExpc3Q6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICAgIHB1YmxpYyBhZGRUd29XYXk6IChwcm9wTGlzdDogc3RyaW5nW10pID0+IHZvaWQ7XG59XG5cbiJdfQ==
|