raise-common-lib 0.0.248 → 0.0.249
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -57
- package/bundles/raise-common-lib.umd.js +1937 -12
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/common-grid/index.component.js +210 -8
- package/esm2015/lib/date-tree-filter/date-tree-filter-popover/index.component.js +761 -0
- package/esm2015/lib/date-tree-filter/date-tree-filter.helper.js +679 -0
- package/esm2015/lib/raise-common-lib.module.js +4 -1
- package/esm2015/public-api.js +3 -1
- package/esm2015/raise-common-lib.js +2 -2
- package/esm5/lib/common-grid/index.component.js +244 -8
- package/esm5/lib/date-tree-filter/date-tree-filter-popover/index.component.js +902 -0
- package/esm5/lib/date-tree-filter/date-tree-filter.helper.js +787 -0
- package/esm5/lib/raise-common-lib.module.js +4 -1
- package/esm5/public-api.js +3 -1
- package/esm5/raise-common-lib.js +2 -2
- package/fesm2015/raise-common-lib.js +1649 -9
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +1931 -10
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/common-grid/index.component.d.ts +30 -1
- package/lib/date-tree-filter/date-tree-filter-popover/index.component.d.ts +46 -0
- package/lib/date-tree-filter/date-tree-filter.helper.d.ts +54 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/arrow_right.svg +4 -4
- package/src/assets/img/calendar-disabled.svg +6 -6
- package/src/assets/img/calendar.svg +6 -6
- package/src/assets/img/calendar_arrow_left.svg +3 -3
- package/src/assets/img/calendar_arrow_right.svg +3 -3
- package/src/assets/img/checked-vector.svg +3 -3
- package/src/assets/img/dialog-close.svg +4 -4
- package/src/assets/img/dialog-grow.svg +6 -6
- package/src/assets/img/dialog-shrink.svg +6 -6
- package/src/assets/img/plus.svg +4 -4
- package/src/assets/img/raise_logo_main_new.svg +27 -27
- package/src/assets/img/search.svg +4 -4
- package/src/assets/img/shrink-icon.svg +6 -6
- package/src/assets/img/time-disabled.svg +4 -4
- package/src/assets/img/time.svg +4 -4
- package/src/assets/img/toolbar-action-addFolder.svg +17 -17
- package/src/assets/img/toolbar-action-calculator.svg +11 -11
- package/src/assets/img/toolbar-action-collapse.svg +7 -7
- package/src/assets/img/toolbar-action-combine.svg +4 -4
- package/src/assets/img/toolbar-action-edit.svg +4 -4
- package/src/assets/img/toolbar-action-expand.svg +7 -7
- package/src/assets/img/toolbar-action-folderMove.svg +8 -8
- package/src/assets/img/toolbar-action-lock.svg +6 -6
- package/src/assets/img/toolbar-action-preview.svg +7 -7
- package/src/assets/img/toolbar-action-publish.svg +5 -5
- package/src/assets/img/toolbar-action-reminders.svg +10 -10
- package/src/assets/img/toolbar-action-rename.svg +7 -7
- package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
- package/src/assets/img/toolbar-action-send-file.svg +5 -5
- package/src/assets/img/toolbar-action-settle.svg +7 -7
- package/src/assets/img/toolbar-action-share.svg +5 -5
- package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
- package/src/assets/img/toolbar-action-sync.svg +4 -4
- package/src/assets/img/toolbar-action-template.svg +6 -6
- package/src/assets/img/toolbar-action-workflow.svg +9 -9
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* Generated from: lib/common-grid/index.component.ts
|
|
4
4
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
|
-
import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ChangeDetectorRef, } from "@angular/core";
|
|
6
|
+
import { Component, ElementRef, EventEmitter, HostListener, Input, Output, TemplateRef, ViewChild, ChangeDetectorRef, } from "@angular/core";
|
|
7
7
|
import { GridComponent } from "@syncfusion/ej2-angular-grids";
|
|
8
8
|
import { times } from "lodash";
|
|
9
9
|
import { getTranslation } from "../utils/utils";
|
|
10
|
+
import { createRsCommonGridDateTreeHelper, } from "../date-tree-filter/date-tree-filter.helper";
|
|
10
11
|
export class CommonGridComponent {
|
|
11
12
|
/**
|
|
12
13
|
* @param {?} ref
|
|
@@ -58,6 +59,23 @@ export class CommonGridComponent {
|
|
|
58
59
|
this.alwaysShowCheckbox = false;
|
|
59
60
|
this.disableSystemRow = false; // 禁用IsSytem = true的整行
|
|
60
61
|
// 禁用IsSytem = true的整行
|
|
62
|
+
/**
|
|
63
|
+
* 开启日期树筛选(默认关闭,不影响现有页面)
|
|
64
|
+
*/
|
|
65
|
+
this.enableDateTreeFilter = false;
|
|
66
|
+
/**
|
|
67
|
+
* 参与日期树筛选的列名或 hint,如 ['CreatedOn', 'ModifiedOn']
|
|
68
|
+
*/
|
|
69
|
+
this.dateTreeFilterFields = [];
|
|
70
|
+
/**
|
|
71
|
+
* 未筛选原始数据(可选)。
|
|
72
|
+
* 不传时由组件在 dataSource 变更时自动快照;传则由页面自行维护 raw。
|
|
73
|
+
*/
|
|
74
|
+
this.dateTreeSourceRows = null;
|
|
75
|
+
/**
|
|
76
|
+
* 内聚模式下仍向页面同步筛选结果(默认 false,一般无需绑定)
|
|
77
|
+
*/
|
|
78
|
+
this.dateTreeEmitFilteredRows = false;
|
|
61
79
|
this.recordDoubleClick = new EventEmitter();
|
|
62
80
|
this.actionComplete = new EventEmitter();
|
|
63
81
|
this.rowSelected = new EventEmitter();
|
|
@@ -75,6 +93,16 @@ export class CommonGridComponent {
|
|
|
75
93
|
this.rowDrop = new EventEmitter();
|
|
76
94
|
this.rowDrag = new EventEmitter();
|
|
77
95
|
this.rowDragStart = new EventEmitter();
|
|
96
|
+
/**
|
|
97
|
+
* 日期树筛选后的行数据(可选,复杂页面与 dateTreeSourceRows 搭配使用)
|
|
98
|
+
*/
|
|
99
|
+
this.dateTreeFilteredRows = new EventEmitter();
|
|
100
|
+
/**
|
|
101
|
+
* 内聚模式:表格实际绑定的数据
|
|
102
|
+
*/
|
|
103
|
+
this.dateTreeDisplayRows = [];
|
|
104
|
+
this.dateTreeRawRows = [];
|
|
105
|
+
this.dateTreeApplyingFilter = false;
|
|
78
106
|
this.selectId = [];
|
|
79
107
|
this.startPaging = false;
|
|
80
108
|
this.indexList = [];
|
|
@@ -99,6 +127,11 @@ export class CommonGridComponent {
|
|
|
99
127
|
return list;
|
|
100
128
|
});
|
|
101
129
|
this.translation = getTranslation();
|
|
130
|
+
this.dateTreeHelper = createRsCommonGridDateTreeHelper(this, (/**
|
|
131
|
+
* @param {?} rows
|
|
132
|
+
* @return {?}
|
|
133
|
+
*/
|
|
134
|
+
(rows) => this.onDateTreeRowsApplied(rows)));
|
|
102
135
|
}
|
|
103
136
|
/**
|
|
104
137
|
* @return {?}
|
|
@@ -118,17 +151,41 @@ export class CommonGridComponent {
|
|
|
118
151
|
trackByFn(index, item) {
|
|
119
152
|
return index; // or a unique identifier in your object
|
|
120
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* ejs-grid 绑定数据源:内聚模式用内部展示数据,否则用 dataSource
|
|
156
|
+
* @return {?}
|
|
157
|
+
*/
|
|
158
|
+
get gridBindDataSource() {
|
|
159
|
+
if (this.enableDateTreeFilter && this.dateTreeSourceRows == null) {
|
|
160
|
+
return this.dateTreeDisplayRows;
|
|
161
|
+
}
|
|
162
|
+
return this.dataSource;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* 日期树 popover 用的全量数据
|
|
166
|
+
* @return {?}
|
|
167
|
+
*/
|
|
168
|
+
get dateTreePopoverSourceRows() {
|
|
169
|
+
if (this.dateTreeSourceRows != null) {
|
|
170
|
+
return this.dateTreeSourceRows;
|
|
171
|
+
}
|
|
172
|
+
return this.dateTreeRawRows;
|
|
173
|
+
}
|
|
121
174
|
/**
|
|
122
175
|
* @param {?} changes
|
|
123
176
|
* @return {?}
|
|
124
177
|
*/
|
|
125
178
|
ngOnChanges(changes) {
|
|
126
|
-
|
|
179
|
+
/** @type {?} */
|
|
180
|
+
var bindRows = changes.dataSource && changes.dataSource.currentValue
|
|
181
|
+
? changes.dataSource.currentValue
|
|
182
|
+
: null;
|
|
183
|
+
if (bindRows) {
|
|
127
184
|
if (this.allowPaging &&
|
|
128
|
-
|
|
185
|
+
bindRows.length &&
|
|
129
186
|
!this.pageSettings) {
|
|
130
187
|
this.pageSettings =
|
|
131
|
-
|
|
188
|
+
bindRows.length > 9
|
|
132
189
|
? {
|
|
133
190
|
pageSizes: ["All", "25", "50", "100"],
|
|
134
191
|
pageSize: 50,
|
|
@@ -136,6 +193,95 @@ export class CommonGridComponent {
|
|
|
136
193
|
: null;
|
|
137
194
|
}
|
|
138
195
|
}
|
|
196
|
+
if (this.enableDateTreeFilter &&
|
|
197
|
+
this.dateTreeSourceRows == null &&
|
|
198
|
+
changes.dataSource &&
|
|
199
|
+
!this.dateTreeApplyingFilter) {
|
|
200
|
+
this.captureDateTreeRawFromDataSource(changes.dataSource.currentValue);
|
|
201
|
+
}
|
|
202
|
+
if (changes.enableDateTreeFilter && changes.enableDateTreeFilter.currentValue) {
|
|
203
|
+
this.captureDateTreeRawFromDataSource(this.dataSource);
|
|
204
|
+
}
|
|
205
|
+
if (changes.enableDateTreeFilter && !changes.enableDateTreeFilter.currentValue) {
|
|
206
|
+
this.dateTreeHelper && this.dateTreeHelper.close();
|
|
207
|
+
this.dateTreeDisplayRows = [];
|
|
208
|
+
this.dateTreeRawRows = [];
|
|
209
|
+
}
|
|
210
|
+
if (this.enableDateTreeFilter &&
|
|
211
|
+
(changes.enableDateTreeFilter ||
|
|
212
|
+
changes.dateTreeFilterFields ||
|
|
213
|
+
changes.dateTreeSourceRows ||
|
|
214
|
+
changes.fields ||
|
|
215
|
+
changes.dataSource)) {
|
|
216
|
+
this.refreshDateTreeFilter();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* @private
|
|
221
|
+
* @param {?} rows
|
|
222
|
+
* @return {?}
|
|
223
|
+
*/
|
|
224
|
+
captureDateTreeRawFromDataSource(rows) {
|
|
225
|
+
this.dateTreeRawRows = rows ? rows.slice() : [];
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* @param {?} event
|
|
229
|
+
* @return {?}
|
|
230
|
+
*/
|
|
231
|
+
onDocumentMouseDown(event) {
|
|
232
|
+
if (this.enableDateTreeFilter && this.dateTreeHelper) {
|
|
233
|
+
this.dateTreeHelper.handleDocumentMouseDown(event);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* @param {?} event
|
|
238
|
+
* @return {?}
|
|
239
|
+
*/
|
|
240
|
+
onDocumentMouseOver(event) {
|
|
241
|
+
if (this.enableDateTreeFilter && this.dateTreeHelper) {
|
|
242
|
+
this.dateTreeHelper.handleDocumentMouseOver(event);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* @private
|
|
247
|
+
* @return {?}
|
|
248
|
+
*/
|
|
249
|
+
refreshDateTreeFilter() {
|
|
250
|
+
if (!this.enableDateTreeFilter || !this.dateTreeHelper) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
/** @type {?} */
|
|
254
|
+
var rows = this.dateTreeSourceRows != null
|
|
255
|
+
? this.dateTreeSourceRows
|
|
256
|
+
: this.dateTreeRawRows || [];
|
|
257
|
+
this.dateTreeHelper.setup({
|
|
258
|
+
rows: rows,
|
|
259
|
+
fields: this.fields || [],
|
|
260
|
+
hints: this.dateTreeFilterFields || [],
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* @private
|
|
265
|
+
* @param {?} rows
|
|
266
|
+
* @return {?}
|
|
267
|
+
*/
|
|
268
|
+
onDateTreeRowsApplied(rows) {
|
|
269
|
+
/** @type {?} */
|
|
270
|
+
var result = rows || [];
|
|
271
|
+
this.dateTreeApplyingFilter = true;
|
|
272
|
+
if (this.enableDateTreeFilter && this.dateTreeSourceRows == null) {
|
|
273
|
+
this.dateTreeDisplayRows = result;
|
|
274
|
+
}
|
|
275
|
+
if (this.dateTreeSourceRows != null || this.dateTreeEmitFilteredRows) {
|
|
276
|
+
this.dateTreeFilteredRows.emit(result);
|
|
277
|
+
}
|
|
278
|
+
this.ref && this.ref.markForCheck();
|
|
279
|
+
setTimeout((/**
|
|
280
|
+
* @return {?}
|
|
281
|
+
*/
|
|
282
|
+
() => {
|
|
283
|
+
this.dateTreeApplyingFilter = false;
|
|
284
|
+
}), 0);
|
|
139
285
|
}
|
|
140
286
|
/**
|
|
141
287
|
* @return {?}
|
|
@@ -338,7 +484,10 @@ export class CommonGridComponent {
|
|
|
338
484
|
args.requestType === "sorting")) {
|
|
339
485
|
this.startPaging = true;
|
|
340
486
|
}
|
|
341
|
-
if (
|
|
487
|
+
if (this.enableDateTreeFilter && this.dateTreeHelper) {
|
|
488
|
+
this.dateTreeHelper.handleGridActionBegin(args);
|
|
489
|
+
}
|
|
490
|
+
else if (args.requestType == "filterchoicerequest" ||
|
|
342
491
|
args.requestType === "filtersearchbegin") {
|
|
343
492
|
args.filterChoiceCount = 15000;
|
|
344
493
|
}
|
|
@@ -615,7 +764,7 @@ export class CommonGridComponent {
|
|
|
615
764
|
CommonGridComponent.decorators = [
|
|
616
765
|
{ type: Component, args: [{
|
|
617
766
|
selector: "rs-common-grid",
|
|
618
|
-
template: "<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"
|
|
767
|
+
template: "<rs-date-tree-filter-popover\r\n *ngIf=\"enableDateTreeFilter && dateTreeHelper && dateTreeHelper.popoverVisible\"\r\n #dateTreePopoverRef\r\n [ngStyle]=\"dateTreeHelper.popoverStyle\"\r\n [field]=\"dateTreeHelper.popoverField\"\r\n [translation]=\"translation\"\r\n [sourceRows]=\"dateTreePopoverSourceRows\"\r\n [dateFields]=\"dateTreeHelper.dateFields\"\r\n [selectedByField]=\"dateTreeHelper.selectedByField\"\r\n [fieldLabelMap]=\"dateTreeHelper.fieldLabelMap\"\r\n (apply)=\"dateTreeHelper.updateSelection($event)\"\r\n (close)=\"dateTreeHelper.close()\"\r\n></rs-date-tree-filter-popover>\r\n<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"gridBindDataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"gridBindDataSource && gridBindDataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n [headerTemplate]=\"item.showHeaderTemplate ? headerTemplate : undefined\"\r\n [isPrimaryKey]=\"item?.isPrimaryKey ? true : false\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
|
|
619
768
|
styles: [""]
|
|
620
769
|
}] }
|
|
621
770
|
];
|
|
@@ -653,6 +802,10 @@ CommonGridComponent.propDecorators = {
|
|
|
653
802
|
alwaysShowCheckbox: [{ type: Input }],
|
|
654
803
|
defaultRecord: [{ type: Input }],
|
|
655
804
|
disableSystemRow: [{ type: Input }],
|
|
805
|
+
enableDateTreeFilter: [{ type: Input }],
|
|
806
|
+
dateTreeFilterFields: [{ type: Input }],
|
|
807
|
+
dateTreeSourceRows: [{ type: Input }],
|
|
808
|
+
dateTreeEmitFilteredRows: [{ type: Input }],
|
|
656
809
|
recordDoubleClick: [{ type: Output }],
|
|
657
810
|
actionComplete: [{ type: Output }],
|
|
658
811
|
rowSelected: [{ type: Output }],
|
|
@@ -669,7 +822,11 @@ CommonGridComponent.propDecorators = {
|
|
|
669
822
|
rowSelecting: [{ type: Output }],
|
|
670
823
|
rowDrop: [{ type: Output }],
|
|
671
824
|
rowDrag: [{ type: Output }],
|
|
672
|
-
rowDragStart: [{ type: Output }]
|
|
825
|
+
rowDragStart: [{ type: Output }],
|
|
826
|
+
dateTreeFilteredRows: [{ type: Output }],
|
|
827
|
+
dateTreePopoverRef: [{ type: ViewChild, args: ["dateTreePopoverRef", { read: ElementRef, static: false },] }],
|
|
828
|
+
onDocumentMouseDown: [{ type: HostListener, args: ["document:mousedown", ["$event"],] }],
|
|
829
|
+
onDocumentMouseOver: [{ type: HostListener, args: ["document:mouseover", ["$event"],] }]
|
|
673
830
|
};
|
|
674
831
|
if (false) {
|
|
675
832
|
/** @type {?} */
|
|
@@ -747,6 +904,27 @@ if (false) {
|
|
|
747
904
|
CommonGridComponent.prototype.defaultRecord;
|
|
748
905
|
/** @type {?} */
|
|
749
906
|
CommonGridComponent.prototype.disableSystemRow;
|
|
907
|
+
/**
|
|
908
|
+
* 开启日期树筛选(默认关闭,不影响现有页面)
|
|
909
|
+
* @type {?}
|
|
910
|
+
*/
|
|
911
|
+
CommonGridComponent.prototype.enableDateTreeFilter;
|
|
912
|
+
/**
|
|
913
|
+
* 参与日期树筛选的列名或 hint,如 ['CreatedOn', 'ModifiedOn']
|
|
914
|
+
* @type {?}
|
|
915
|
+
*/
|
|
916
|
+
CommonGridComponent.prototype.dateTreeFilterFields;
|
|
917
|
+
/**
|
|
918
|
+
* 未筛选原始数据(可选)。
|
|
919
|
+
* 不传时由组件在 dataSource 变更时自动快照;传则由页面自行维护 raw。
|
|
920
|
+
* @type {?}
|
|
921
|
+
*/
|
|
922
|
+
CommonGridComponent.prototype.dateTreeSourceRows;
|
|
923
|
+
/**
|
|
924
|
+
* 内聚模式下仍向页面同步筛选结果(默认 false,一般无需绑定)
|
|
925
|
+
* @type {?}
|
|
926
|
+
*/
|
|
927
|
+
CommonGridComponent.prototype.dateTreeEmitFilteredRows;
|
|
750
928
|
/** @type {?} */
|
|
751
929
|
CommonGridComponent.prototype.recordDoubleClick;
|
|
752
930
|
/** @type {?} */
|
|
@@ -781,6 +959,30 @@ if (false) {
|
|
|
781
959
|
CommonGridComponent.prototype.rowDrag;
|
|
782
960
|
/** @type {?} */
|
|
783
961
|
CommonGridComponent.prototype.rowDragStart;
|
|
962
|
+
/**
|
|
963
|
+
* 日期树筛选后的行数据(可选,复杂页面与 dateTreeSourceRows 搭配使用)
|
|
964
|
+
* @type {?}
|
|
965
|
+
*/
|
|
966
|
+
CommonGridComponent.prototype.dateTreeFilteredRows;
|
|
967
|
+
/** @type {?} */
|
|
968
|
+
CommonGridComponent.prototype.dateTreePopoverRef;
|
|
969
|
+
/** @type {?} */
|
|
970
|
+
CommonGridComponent.prototype.dateTreeHelper;
|
|
971
|
+
/**
|
|
972
|
+
* 内聚模式:表格实际绑定的数据
|
|
973
|
+
* @type {?}
|
|
974
|
+
*/
|
|
975
|
+
CommonGridComponent.prototype.dateTreeDisplayRows;
|
|
976
|
+
/**
|
|
977
|
+
* @type {?}
|
|
978
|
+
* @private
|
|
979
|
+
*/
|
|
980
|
+
CommonGridComponent.prototype.dateTreeRawRows;
|
|
981
|
+
/**
|
|
982
|
+
* @type {?}
|
|
983
|
+
* @private
|
|
984
|
+
*/
|
|
985
|
+
CommonGridComponent.prototype.dateTreeApplyingFilter;
|
|
784
986
|
/** @type {?} */
|
|
785
987
|
CommonGridComponent.prototype.selectId;
|
|
786
988
|
/** @type {?} */
|
|
@@ -799,4 +1001,4 @@ if (false) {
|
|
|
799
1001
|
*/
|
|
800
1002
|
CommonGridComponent.prototype.ref;
|
|
801
1003
|
}
|
|
802
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU9oRCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBaUY5QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlFakMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7OztRQUU5QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDOztRQUVoQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUVsQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixhQUFRLEdBQUcscUJBQXFCLENBQUM7UUFDakMsa0JBQWEs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OztJQUNGLGlEQUE2Qzs7SUFDN0MsNENBQTRCOztJQUM1QiwrQ0FBMkM7O0lBRTNDLGdEQUFpRDs7SUFDakQsNkNBQThDOztJQUM5QywwQ0FBMkM7O0lBQzNDLDRDQUE2Qzs7SUFDN0MsNkNBQThDOztJQUM5Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsNENBQTZDOztJQUM3QywwQ0FBMkM7O0lBQzNDLDBDQUEyQzs7SUFDM0MsMkNBQTRDOztJQUM1Qyx3Q0FBeUM7O0lBQ3pDLGtEQUFtRDs7SUFDbkQsMkNBQTRDOztJQUM1QyxzQ0FBdUM7O0lBQ3ZDLHNDQUF1Qzs7SUFDdkMsMkNBQTRDOztJQUU1Qyx1Q0FBYzs7SUFDZCwwQ0FBb0I7O0lBQ3BCLHdDQUFlOztJQUNmLHdDQUEyQjs7SUFFM0IsMENBQW1COztJQWtWbkIsdUNBUUU7Ozs7O0lBeFZVLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IHRpbWVzIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItaW5wdXRzXCI7XHJcbmltcG9ydCB7IElBY3Rpb25NZW51SXRlbSwgSUNvbHVtbkZpZWxkIH0gZnJvbSBcIi4uL2NvbnN0YW50XCI7XHJcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZ3JpZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoXCJncmlkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBncmlkOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveCA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRkZW5Mb2FkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRob3JpemVkID0gdHJ1ZTsgLy8gRGF0YXNldOaYr+WQpuaOiOadg++8jOacquaOiOadg+WImeaYvuekuuadg+mZkOmUmeivr+aPkOekulxyXG4gIC8vIG9ubHkgdXNlIGZvciBsb2NhbCBkYXRhIHBhZ2luYXRpb25cclxuICBASW5wdXQoKSBzZWxlY3RlZERpZmZLZXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGdyaWRIZWlnaHQgPSBcIlwiO1xyXG4gIC8vIOi/meeOqeaEj+W/heWhq++8jOS4jeeEtmZpbHRlciBjb2x1bW5DaG9vc2Vy6YO95Lya5oql6ZSZXHJcbiAgQElucHV0KCkgZ3JpZElkID0gXCJncmlkXCI7XHJcbiAgQElucHV0KCkgcmVzaXplU2V0dGluZ3MgPSB7IG1vZGU6IFwiQXV0b1wiIH07XHJcbiAgQElucHV0KCkgZmlsdGVyU2V0dGluZ3MgPSB7IHR5cGU6IFwiTWVudVwiIH07XHJcbiAgQElucHV0KCkgdGVtcGxhdGU6IGFueTtcclxuICBASW5wdXQoKSBmaWVsZHM6IElDb2x1bW5GaWVsZFtdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRTZXR0aW5ncztcclxuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwYWdlU2V0dGluZ3M7XHJcbiAgQElucHV0KCkgYWxsb3dQYWdpbmcgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93Um93RHJhZ0FuZERyb3AgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGlwTW9kZSA9IFwiRWxsaXBzaXNXaXRoVG9vbHRpcFwiO1xyXG4gIEBJbnB1dCgpIGNoZWNrQm94V2lkdGggPSAzMjsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNoaWxkR3JpZDtcclxuICBASW5wdXQoKSBmcm96ZW5Db2x1bW5zOyAvLyBjb2wg5pWw6YeP6L+H5bCR55qE5pe25YCZ77yMY2hlY2vlrr3luqbkvJrmi4nkvLjvvIzov5nml7blgJnorr7nva5udWxsXHJcbiAgQElucHV0KCkgY29sdW1uQ2hvb3NlclNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8qKlxyXG5cdCAqIFNhbXBsZTogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dGV4dDogXCJQcmV2aWV3XCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJwcmV2aWV3LWljb25cIixcclxuXHRcdFx0XHRpY29uQ3NzOiBcInByZXZpZXdcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiRG93bmxvYWRcIixcclxuXHRcdFx0XHR0YXJnZXQ6IFwiLmUtY29udGVudFwiLFxyXG5cdFx0XHRcdGlkOiBcImRvd25sb2FkLWljb25cIixcclxuXHRcdFx0XHRpY29uQ3NzOiBcImRvd25sb2FkXCIsXHJcblx0XHRcdH1cclxuXHRcdF1cclxuXHRcdOeUqOS6juWumuS5iXJvd+S4rSDngrnlh7vkuovku7ZcclxuXHQgKi9cclxuICBASW5wdXQoKSBjb250ZXh0TWVudUl0ZW1zOiBJQWN0aW9uTWVudUl0ZW1bXSA9IFtdO1xyXG4gIC8vIEBJbnB1dCgpIHNlbGVjdGlvblNldHRpbmdzID0geyBjaGVja2JveE9ubHk6IHRydWUsIHR5cGU6IFwiTXVsdGlwbGVcIiB9O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvblNldHRpbmdzID0ge1xyXG4gICAgdHlwZTogXCJNdWx0aXBsZVwiLFxyXG4gICAgLy8gcGVyc2lzdFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIGNoZWNrYm94T25seTogdHJ1ZSxcclxuICB9O1xyXG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRSZWNvcmQ6IGFueTtcclxuICBASW5wdXQoKSBkaXNhYmxlU3lzdGVtUm93OiBib29sZWFuID0gZmFsc2U7IC8vIOemgeeUqElzU3l0ZW0gPSB0cnVl55qE5pW06KGMXHJcblxyXG4gIEBPdXRwdXQoKSByZWNvcmREb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEZXNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEZXNlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Db250ZXh0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnlDZWxsSW5mbyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVjb3JkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkJlZ2luID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRhdGFCb3VuZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0UXVlcnlDZWxsSW5mbyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93U2VsZWN0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEcm9wID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEcmFnID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNlbGVjdElkID0gW107XHJcbiAgc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICBpbmRleExpc3QgPSBbXTtcclxuICBjbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IGdldFRyYW5zbGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZGRlbkxvYWRlZCkgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5ncmlkSWQgPVxyXG4gICAgICB0aGlzLmdyaWRJZCArIERhdGUubm93KCkgKyBcIl9cIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDUpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDsgLy8gb3IgYSB1bmlxdWUgaWRlbnRpZmllciBpbiB5b3VyIG9iamVjdFxyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5kYXRhU291cmNlICYmIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuYWxsb3dQYWdpbmcgJiZcclxuICAgICAgICBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlLmxlbmd0aCAmJlxyXG4gICAgICAgICF0aGlzLnBhZ2VTZXR0aW5nc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnBhZ2VTZXR0aW5ncyA9XHJcbiAgICAgICAgICBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlLmxlbmd0aCA+IDlcclxuICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZXM6IFtcIkFsbFwiLCBcIjI1XCIsIFwiNTBcIiwgXCIxMDBcIl0sXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogNTAsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9sb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWQpIHtcclxuICAgICAgKHRoaXMuZ3JpZC5sb2NhbGVPYmogYXMgYW55KS5sb2NhbGVTdHJpbmdzLkVtcHR5UmVjb3JkID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLllPVV9ET19OT1RfSEFWRV9USEVfREFUQVNFVF9QRVJNSVNTSU9OIHx8XHJcbiAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgZGF0YXNldCBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIHJlY29yZC5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9kYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICAvLyDmlbTkuKrnu4Tku7bliqDovb3lrozmiJDml7bnmoTlm57osIPlh73mlbBcclxuICAgIHZhciBwYWdlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1wYWdlcmNvbnRhaW5lclwiKTtcclxuICAgIGlmIChwYWdlckNvbnRhaW5lcikge1xyXG4gICAgICB2YXIgbGlua0VsZW1lbnRzID0gcGFnZXJDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5lLWxpbmtcIik7XHJcbiAgICAgIGxpbmtFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJocmVmXCIpOyAvLyBTTVAyLTEwMzEwIOWIoOmZpOWIhumhteWZqOeahGhyZWblsZ7mgKdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQm91bmQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9leHBvcnRRdWVyeUNlbGxJbmZvKGFyZ3MpIHtcclxuICAgIHRoaXMuZXhwb3J0UXVlcnlDZWxsSW5mby5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWcoYXJncykge1xyXG4gICAgdGhpcy5yb3dEcmFnLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcm93RHJhZ1N0YXJ0KGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZ1N0YXJ0LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcmVjb3JkRG91YmxlQ2xpY2soJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZERvdWJsZUNsaWNrLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGluZygkZXZlbnQpIHtcclxuICAgIHRoaXMucm93RGVzZWxlY3RpbmcuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuXHQgKiBbc2VsZWN0aW9uU2V0dGluZ3NdPVwieyBjaGVja2JveE9ubHk6IHRydWUgfVwiXHJcblx0ICAgW3Nob3dDaGVja0JveF09XCJ0cnVlXCJcclxuXHQgICDmjqfku7bkvb/nlKjml7bvvIzlv4XpobvphY3nva7kuIrpnaLkuKTkuKrlsZ7mgKfvvIzlkKbliJnvvIzlhajpgInkvJrlpLHmlYhcclxuXHQgKi9cclxuICBfcm93U2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgIGlmICgkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKCRldmVudC5kYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0Rlc2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRQYWdpbmcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSBbXTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSB0aGlzLnNlbGVjdElkLmZpbHRlcihcclxuICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICBpdGVtW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSAhPT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX29uQ29udGV4dE1lbnUoYXJncykge1xyXG4gICAgdGhpcy5vbkNvbnRleHRNZW51LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfYWN0aW9uQmVnaW4oYXJncykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJwYWdpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzb3J0aW5nXCIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT0gXCJmaWx0ZXJjaG9pY2VyZXF1ZXN0XCIgfHxcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJzZWFyY2hiZWdpblwiXHJcbiAgICApIHtcclxuICAgICAgYXJncy5maWx0ZXJDaG9pY2VDb3VudCA9IDE1MDAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uQmVnaW4uZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChrZXl3b3Jkcykge1xyXG4gICAgdGhpcy5ncmlkLnNlYXJjaChrZXl3b3Jkcyk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvd3MoaW5kZXhMaXN0OiBudW1iZXJbXSkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvd3MoaW5kZXhMaXN0KTtcclxuICB9XHJcbiAgc2VsZWN0Um93KGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KGluZGV4KTtcclxuICB9XHJcbiAgZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRDdXJyZW50Vmlld1JlY29yZHMoKTtcclxuICB9XHJcblxyXG4gIGN1c3RvbWlzZUNlbGwoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnF1ZXJ5Q2VsbEluZm8uZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dE1lbnVPcGVuKGFyZ3M/OiBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSAoYXJncyBhcyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfCBhbnkpLnJvd0luZm8ucm93RGF0YTtcclxuICAgIGlmICghZGF0YSkge1xyXG4gICAgICBhcmdzLmNhbmNlbCA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBlbmFibGVJdGVtcyA9IFtdO1xyXG4gICAgbGV0IGhpZGVJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LnJlZnJlc2goKTsgLy8g5q+P5qyh54K55Ye75oyJ6ZKu5by556qX5YmN6ZyA5YaN5qyh5Yid5aeL5YyW54q25oCBIOWQpuWImeS4jeabtOaWsO+8m1xyXG4gICAgdGhpcy5jb250ZXh0TWVudUl0ZW1zLmZvckVhY2goKGl0ZW06IElBY3Rpb25NZW51SXRlbSkgPT4ge1xyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq5kaXNhYmxlZOeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5kaXNhYmxlZCB8fFxyXG4gICAgICAgIChkYXRhLmRpc2FibGVJdGVtICYmIGRhdGEuZGlzYWJsZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgZW5hYmxlSXRlbXMucHVzaChpdGVtLnRleHQpO1xyXG4gICAgICAgIC8vIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrumcgOimgWhpZGXnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uaXNIaWRlIHx8XHJcbiAgICAgICAgKGRhdGEuaGlkZUl0ZW0gJiYgZGF0YS5oaWRlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBoaWRlSXRlbXMucHVzaChpdGVtLnRleHQpO1xyXG4gICAgICAgIC8vIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5oaWRlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoZW5hYmxlSXRlbXMsIGZhbHNlKTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5oaWRlSXRlbXMoaGlkZUl0ZW1zLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBfYWN0aW9uSGFuZGxlcigkZXZlbnQpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERpZmZLZXkgJiZcclxuICAgICAgKCRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJwYWdpbmdcIiB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJzZWFyY2hpbmdcIiB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJpbmdcIiB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJzb3J0aW5nXCIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbmRleExpc3QgPSBbXTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGlvbkhhbmRsZXIuZW1pdCgkZXZlbnQpO1xyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNob29zZVJlY29yZHMoKSB7XHJcbiAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpLmZvckVhY2goKHJvdzogYW55LCBpKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcm93ICYmXHJcbiAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gcm93W3RoaXMuc2VsZWN0ZWREaWZmS2V5XSAmJlxyXG4gICAgICAgICAgZGF0YS5pc1NlbGVjdGVkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmluZGV4TGlzdC5wdXNoKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyh0aGlzLmluZGV4TGlzdCk7XHJcbiAgfVxyXG5cclxuICBfcmVjb3JkQ2xpY2soJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZENsaWNrLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIF9yb3dTZWxlY3RpbmcoZSkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcuZW1pdChlKTtcclxuICB9XHJcbiAgcmVmcmVzaENvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaENvbHVtbnMoKTtcclxuICB9XHJcbiAgcmVmcmVzaEhlYWRlcigpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoSGVhZGVyKCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzPykge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KGV4Y2VsRXhwb3J0UHJvcGVydGllcyk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZFJlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dEcm9wKGUpIHtcclxuICAgIHRoaXMucm93RHJvcC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RhdGFCb3VuZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVTeXN0ZW1Sb3cgJiYgJGV2ZW50LmRhdGEgJiYgJGV2ZW50LmRhdGEuSXNTeXN0ZW0pIHtcclxuICAgICAgJGV2ZW50LnJvdy5jbGFzc0xpc3QuYWRkKFwiZS1kaXNhYmxlZFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGF0YUJvdW5kLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5ncmlkLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBleGNlbEV4cG9ydCgpIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5hZGRSZWNvcmQoeyAuLi50aGlzLmRlZmF1bHRSZWNvcmQsIGlzTmV3OiB0cnVlIH0sIDApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coMCk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIHNhdmVJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmVuZEVkaXQoKTtcclxuICB9XHJcblxyXG4gIGVkaXRJdGVtKGluZGV4KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhOdW1iZXIoaW5kZXgpKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhOdW1iZXIoaW5kZXgpKTtcclxuICAgIHZhciBzZWxlY3RlZFJlY29yZCA9IHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKVswXSBhcyBhbnk7XHJcbiAgICB0aGlzLmdyaWQuZGVsZXRlUmVjb3JkKHNlbGVjdGVkUmVjb3JkIGFzIHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuY2xvc2VFZGl0KCk7XHJcbiAgICB0aGlzLmRlbGV0ZUl0ZW0oaW5kZXgpO1xyXG4gIH1cclxuICBwdWJsaWMgaW5pdExpc3QgPSAobnVtID0gMjUsIGtleSA9IFwiSWRcIikgPT4ge1xyXG4gICAgY29uc3QgbGlzdCA9IFtdO1xyXG4gICAgdGltZXMobnVtLCAoaSkgPT4ge1xyXG4gICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgIFtrZXldOiBpLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfTtcclxuICBwdWJsaWMgc2hvd0xvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiZ3JpZC1sb2FkaW5nXCI7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlTG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
1004
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFFVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxnQ0FBZ0MsR0FFakMsTUFBTSw2Q0FBNkMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBdUc5QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBHakMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7OztRQUU5QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDOztRQUVoQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUVsQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FB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Qjs7SUFDcEIsd0NBQWU7O0lBQ2Ysd0NBQTJCOztJQUUzQiwwQ0FBbUI7O0lBdWJuQix1Q0FRRTs7Ozs7SUE3YlUsa0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZ3JpZHNcIjtcclxuaW1wb3J0IHsgdGltZXMgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1pbnB1dHNcIjtcclxuaW1wb3J0IHsgSUFjdGlvbk1lbnVJdGVtLCBJQ29sdW1uRmllbGQgfSBmcm9tIFwiLi4vY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgZ2V0VHJhbnNsYXRpb24gfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBjcmVhdGVSc0NvbW1vbkdyaWREYXRlVHJlZUhlbHBlcixcclxuICBEYXRlVHJlZUZpbHRlckhlbHBlcixcclxufSBmcm9tIFwiLi4vZGF0ZS10cmVlLWZpbHRlci9kYXRlLXRyZWUtZmlsdGVyLmhlbHBlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKFwiZ3JpZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgZ3JpZDogR3JpZENvbXBvbmVudDtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3ggPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZGVuTG9hZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aG9yaXplZCA9IHRydWU7IC8vIERhdGFzZXTmmK/lkKbmjojmnYPvvIzmnKrmjojmnYPliJnmmL7npLrmnYPpmZDplJnor6/mj5DnpLpcclxuICAvLyBvbmx5IHVzZSBmb3IgbG9jYWwgZGF0YSBwYWdpbmF0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0ZWREaWZmS2V5ID0gXCJcIjtcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gXCJcIjtcclxuICAvLyDov5nnjqnmhI/lv4XloavvvIzkuI3nhLZmaWx0ZXIgY29sdW1uQ2hvb3NlcumDveS8muaKpemUmVxyXG4gIEBJbnB1dCgpIGdyaWRJZCA9IFwiZ3JpZFwiO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZVNldHRpbmdzID0geyBtb2RlOiBcIkF1dG9cIiB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiBcIk1lbnVcIiB9O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgZmllbGRzOiBJQ29sdW1uRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcclxuICBASW5wdXQoKSBlZGl0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcGFnZVNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGFsbG93UGFnaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd1Jvd0RyYWdBbmREcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSBcIkVsbGlwc2lzV2l0aFRvb2x0aXBcIjtcclxuICBASW5wdXQoKSBjaGVja0JveFdpZHRoID0gMzI7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjaGlsZEdyaWQ7XHJcbiAgQElucHV0KCkgZnJvemVuQ29sdW1uczsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNvbHVtbkNob29zZXJTZXR0aW5ncztcclxuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG4gIC8qKiDlvIDlkK/ml6XmnJ/moJHnrZvpgInvvIjpu5jorqTlhbPpl63vvIzkuI3lvbHlk43njrDmnInpobXpnaLvvIkgKi9cclxuICBASW5wdXQoKSBlbmFibGVEYXRlVHJlZUZpbHRlciA9IGZhbHNlO1xyXG4gIC8qKiDlj4LkuI7ml6XmnJ/moJHnrZvpgInnmoTliJflkI3miJYgaGludO+8jOWmgiBbJ0NyZWF0ZWRPbicsICdNb2RpZmllZE9uJ10gKi9cclxuICBASW5wdXQoKSBkYXRlVHJlZUZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICAvKipcclxuICAgKiDmnKrnrZvpgInljp/lp4vmlbDmja7vvIjlj6/pgInvvInjgIJcclxuICAgKiDkuI3kvKDml7bnlLHnu4Tku7blnKggZGF0YVNvdXJjZSDlj5jmm7Tml7boh6rliqjlv6vnhafvvJvkvKDliJnnlLHpobXpnaLoh6rooYznu7TmiqQgcmF344CCXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGF0ZVRyZWVTb3VyY2VSb3dzOiBhbnlbXSA9IG51bGw7XHJcbiAgLyoqIOWGheiBmuaooeW8j+S4i+S7jeWQkemhtemdouWQjOatpeetm+mAiee7k+aenO+8iOm7mOiupCBmYWxzZe+8jOS4gOiIrOaXoOmcgOe7keWumu+8iSAqL1xyXG4gIEBJbnB1dCgpIGRhdGVUcmVlRW1pdEZpbHRlcmVkUm93cyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiDml6XmnJ/moJHnrZvpgInlkI7nmoTooYzmlbDmja7vvIjlj6/pgInvvIzlpI3mnYLpobXpnaLkuI4gZGF0ZVRyZWVTb3VyY2VSb3dzIOaQremFjeS9v+eUqO+8iSAqL1xyXG4gIEBPdXRwdXQoKSBkYXRlVHJlZUZpbHRlcmVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkYXRlVHJlZVBvcG92ZXJSZWZcIiwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGF0ZVRyZWVQb3BvdmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBkYXRlVHJlZUhlbHBlcjogRGF0ZVRyZWVGaWx0ZXJIZWxwZXI7XHJcbiAgLyoqIOWGheiBmuaooeW8j++8muihqOagvOWunumZhee7keWumueahOaVsOaNriAqL1xyXG4gIGRhdGVUcmVlRGlzcGxheVJvd3M6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRlVHJlZVJhd1Jvd3M6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRlVHJlZUFwcGx5aW5nRmlsdGVyID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdElkID0gW107XHJcbiAgc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICBpbmRleExpc3QgPSBbXTtcclxuICBjbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IGdldFRyYW5zbGF0aW9uKCk7XHJcbiAgICB0aGlzLmRhdGVUcmVlSGVscGVyID0gY3JlYXRlUnNDb21tb25HcmlkRGF0ZVRyZWVIZWxwZXIoXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIChyb3dzKSA9PiB0aGlzLm9uRGF0ZVRyZWVSb3dzQXBwbGllZChyb3dzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuTG9hZGVkKSB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLmdyaWRJZCA9XHJcbiAgICAgIHRoaXMuZ3JpZElkICsgRGF0ZS5ub3coKSArIFwiX1wiICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgNSk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4OyAvLyBvciBhIHVuaXF1ZSBpZGVudGlmaWVyIGluIHlvdXIgb2JqZWN0XHJcbiAgfVxyXG5cclxuICAvKiogZWpzLWdyaWQg57uR5a6a5pWw5o2u5rqQ77ya5YaF6IGa5qih5byP55So5YaF6YOo5bGV56S65pWw5o2u77yM5ZCm5YiZ55SoIGRhdGFTb3VyY2UgKi9cclxuICBnZXQgZ3JpZEJpbmREYXRhU291cmNlKCk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRyZWVEaXNwbGF5Um93cztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICAvKiog5pel5pyf5qCRIHBvcG92ZXIg55So55qE5YWo6YeP5pWw5o2uICovXHJcbiAgZ2V0IGRhdGVUcmVlUG9wb3ZlclNvdXJjZVJvd3MoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRyZWVSYXdSb3dzO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdmFyIGJpbmRSb3dzID1cclxuICAgICAgY2hhbmdlcy5kYXRhU291cmNlICYmIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWVcclxuICAgICAgICA/IGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWVcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBpZiAoYmluZFJvd3MpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuYWxsb3dQYWdpbmcgJiZcclxuICAgICAgICBiaW5kUm93cy5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5wYWdlU2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgYmluZFJvd3MubGVuZ3RoID4gOVxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplczogW1wiQWxsXCIsIFwiMjVcIiwgXCI1MFwiLCBcIjEwMFwiXSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmXHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzID09IG51bGwgJiZcclxuICAgICAgY2hhbmdlcy5kYXRhU291cmNlICYmXHJcbiAgICAgICF0aGlzLmRhdGVUcmVlQXBwbHlpbmdGaWx0ZXJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNhcHR1cmVEYXRlVHJlZVJhd0Zyb21EYXRhU291cmNlKGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgJiYgY2hhbmdlcy5lbmFibGVEYXRlVHJlZUZpbHRlci5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jYXB0dXJlRGF0ZVRyZWVSYXdGcm9tRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgJiYgIWNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIgJiYgdGhpcy5kYXRlVHJlZUhlbHBlci5jbG9zZSgpO1xyXG4gICAgICB0aGlzLmRhdGVUcmVlRGlzcGxheVJvd3MgPSBbXTtcclxuICAgICAgdGhpcy5kYXRlVHJlZVJhd1Jvd3MgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJlxyXG4gICAgICAoY2hhbmdlcy5lbmFibGVEYXRlVHJlZUZpbHRlciB8fFxyXG4gICAgICAgIGNoYW5nZXMuZGF0ZVRyZWVGaWx0ZXJGaWVsZHMgfHxcclxuICAgICAgICBjaGFuZ2VzLmRhdGVUcmVlU291cmNlUm93cyB8fFxyXG4gICAgICAgIGNoYW5nZXMuZmllbGRzIHx8XHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGVUcmVlRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhcHR1cmVEYXRlVHJlZVJhd0Zyb21EYXRhU291cmNlKHJvd3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmRhdGVUcmVlUmF3Um93cyA9IHJvd3MgPyByb3dzLnNsaWNlKCkgOiBbXTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDptb3VzZWRvd25cIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmIHRoaXMuZGF0ZVRyZWVIZWxwZXIpIHtcclxuICAgICAgdGhpcy5kYXRlVHJlZUhlbHBlci5oYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6bW91c2VvdmVyXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkRvY3VtZW50TW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlSGVscGVyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIuaGFuZGxlRG9jdW1lbnRNb3VzZU92ZXIoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoRGF0ZVRyZWVGaWx0ZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgfHwgIXRoaXMuZGF0ZVRyZWVIZWxwZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIHJvd3MgPVxyXG4gICAgICB0aGlzLmRhdGVUcmVlU291cmNlUm93cyAhPSBudWxsXHJcbiAgICAgICAgPyB0aGlzLmRhdGVUcmVlU291cmNlUm93c1xyXG4gICAgICAgIDogdGhpcy5kYXRlVHJlZVJhd1Jvd3MgfHwgW107XHJcbiAgICB0aGlzLmRhdGVUcmVlSGVscGVyLnNldHVwKHtcclxuICAgICAgcm93czogcm93cyxcclxuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyB8fCBbXSxcclxuICAgICAgaGludHM6IHRoaXMuZGF0ZVRyZWVGaWx0ZXJGaWVsZHMgfHwgW10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25EYXRlVHJlZVJvd3NBcHBsaWVkKHJvd3M6IGFueVtdKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gcm93cyB8fCBbXTtcclxuICAgIHRoaXMuZGF0ZVRyZWVBcHBseWluZ0ZpbHRlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlU291cmNlUm93cyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVEaXNwbGF5Um93cyA9IHJlc3VsdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGVUcmVlU291cmNlUm93cyAhPSBudWxsIHx8IHRoaXMuZGF0ZVRyZWVFbWl0RmlsdGVyZWRSb3dzKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVGaWx0ZXJlZFJvd3MuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlVHJlZUFwcGx5aW5nRmlsdGVyID0gZmFsc2U7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIF9sb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWQpIHtcclxuICAgICAgKHRoaXMuZ3JpZC5sb2NhbGVPYmogYXMgYW55KS5sb2NhbGVTdHJpbmdzLkVtcHR5UmVjb3JkID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLllPVV9ET19OT1RfSEFWRV9USEVfREFUQVNFVF9QRVJNSVNTSU9OIHx8XHJcbiAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgZGF0YXNldCBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIHJlY29yZC5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9kYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICAvLyDmlbTkuKrnu4Tku7bliqDovb3lrozmiJDml7bnmoTlm57osIPlh73mlbBcclxuICAgIHZhciBwYWdlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1wYWdlcmNvbnRhaW5lclwiKTtcclxuICAgIGlmIChwYWdlckNvbnRhaW5lcikge1xyXG4gICAgICB2YXIgbGlua0VsZW1lbnRzID0gcGFnZXJDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5lLWxpbmtcIik7XHJcbiAgICAgIGxpbmtFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJocmVmXCIpOyAvLyBTTVAyLTEwMzEwIOWIoOmZpOWIhumhteWZqOeahGhyZWblsZ7mgKdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQm91bmQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9leHBvcnRRdWVyeUNlbGxJbmZvKGFyZ3MpIHtcclxuICAgIHRoaXMuZXhwb3J0UXVlcnlDZWxsSW5mby5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWcoYXJncykge1xyXG4gICAgdGhpcy5yb3dEcmFnLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcm93RHJhZ1N0YXJ0KGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZ1N0YXJ0LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcmVjb3JkRG91YmxlQ2xpY2soJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZERvdWJsZUNsaWNrLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGluZygkZXZlbnQpIHtcclxuICAgIHRoaXMucm93RGVzZWxlY3RpbmcuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuXHQgKiBbc2VsZWN0aW9uU2V0dGluZ3NdPVwieyBjaGVja2JveE9ubHk6IHRydWUgfVwiXHJcblx0ICAgW3Nob3dDaGVja0JveF09XCJ0cnVlXCJcclxuXHQgICDmjqfku7bkvb/nlKjml7bvvIzlv4XpobvphY3nva7kuIrpnaLkuKTkuKrlsZ7mgKfvvIzlkKbliJnvvIzlhajpgInkvJrlpLHmlYhcclxuXHQgKi9cclxuICBfcm93U2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgIGlmICgkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKCRldmVudC5kYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0Rlc2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRQYWdpbmcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSBbXTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSB0aGlzLnNlbGVjdElkLmZpbHRlcihcclxuICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICBpdGVtW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSAhPT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX29uQ29udGV4dE1lbnUoYXJncykge1xyXG4gICAgdGhpcy5vbkNvbnRleHRNZW51LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfYWN0aW9uQmVnaW4oYXJncykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJwYWdpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzb3J0aW5nXCIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlSGVscGVyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIuaGFuZGxlR3JpZEFjdGlvbkJlZ2luKGFyZ3MpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PSBcImZpbHRlcmNob2ljZXJlcXVlc3RcIiB8fFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcnNlYXJjaGJlZ2luXCJcclxuICAgICkge1xyXG4gICAgICBhcmdzLmZpbHRlckNob2ljZUNvdW50ID0gMTUwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25CZWdpbi5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGtleXdvcmRzKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VhcmNoKGtleXdvcmRzKTtcclxuICB9XHJcbiAgc2VsZWN0Um93cyhpbmRleExpc3Q6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyhpbmRleExpc3QpO1xyXG4gIH1cclxuICBzZWxlY3RSb3coaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coaW5kZXgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50Vmlld1JlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9taXNlQ2VsbCgkZXZlbnQpIHtcclxuICAgIHRoaXMucXVlcnlDZWxsSW5mby5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudU9wZW4oYXJncz86IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YSA9IChhcmdzIGFzIEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB8IGFueSkucm93SW5mby5yb3dEYXRhO1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIGFyZ3MuY2FuY2VsID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVuYWJsZUl0ZW1zID0gW107XHJcbiAgICBsZXQgaGlkZUl0ZW1zID0gW107XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUucmVmcmVzaCgpOyAvLyDmr4/mrKHngrnlh7vmjInpkq7lvLnnqpfliY3pnIDlho3mrKHliJ3lp4vljJbnirbmgIEg5ZCm5YiZ5LiN5pu05paw77ybXHJcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogSUFjdGlvbk1lbnVJdGVtKSA9PiB7XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrmRpc2FibGVk55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmRpc2FibGVkIHx8XHJcbiAgICAgICAgKGRhdGEuZGlzYWJsZUl0ZW0gJiYgZGF0YS5kaXNhYmxlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBlbmFibGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKu6ZyA6KaBaGlkZeeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5pc0hpZGUgfHxcclxuICAgICAgICAoZGF0YS5oaWRlSXRlbSAmJiBkYXRhLmhpZGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGhpZGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhlbmFibGVJdGVtcywgZmFsc2UpO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhoaWRlSXRlbXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25IYW5kbGVyKCRldmVudCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlci5lbWl0KCRldmVudCk7XHJcbiAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hvb3NlUmVjb3JkcygpIHtcclxuICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkuZm9yRWFjaCgocm93OiBhbnksIGkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByb3cgJiZcclxuICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSByb3dbdGhpcy5zZWxlY3RlZERpZmZLZXldICYmXHJcbiAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKHRoaXMuaW5kZXhMaXN0KTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmRDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2goKTtcclxuICB9XHJcbiAgX3Jvd1NlbGVjdGluZyhlKSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZy5lbWl0KGUpO1xyXG4gIH1cclxuICByZWZyZXNoQ29sdW1ucygpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoQ29sdW1ucygpO1xyXG4gIH1cclxuICByZWZyZXNoSGVhZGVyKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hIZWFkZXIoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXM/KSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBvblJvd0Ryb3AoZSkge1xyXG4gICAgdGhpcy5yb3dEcm9wLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBfcm93RGF0YUJvdW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVN5c3RlbVJvdyAmJiAkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5Jc1N5c3RlbSkge1xyXG4gICAgICAkZXZlbnQucm93LmNsYXNzTGlzdC5hZGQoXCJlLWRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEYXRhQm91bmQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmdyaWQuY2xlYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIGV4Y2VsRXhwb3J0KCkge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmFkZFJlY29yZCh7IC4uLnRoaXMuZGVmYXVsdFJlY29yZCwgaXNOZXc6IHRydWUgfSwgMCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuZW5kRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEl0ZW0oaW5kZXgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgdmFyIHNlbGVjdGVkUmVjb3JkID0gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpWzBdIGFzIGFueTtcclxuICAgIHRoaXMuZ3JpZC5kZWxldGVSZWNvcmQoc2VsZWN0ZWRSZWNvcmQgYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5jbG9zZUVkaXQoKTtcclxuICAgIHRoaXMuZGVsZXRlSXRlbShpbmRleCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbml0TGlzdCA9IChudW0gPSAyNSwga2V5ID0gXCJJZFwiKSA9PiB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICB0aW1lcyhudW0sIChpKSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgW2tleV06IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9O1xyXG4gIHB1YmxpYyBzaG93TG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|