raise-common-lib 0.0.1 → 0.0.4

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.
Files changed (36) hide show
  1. package/bundles/raise-common-lib.umd.js +1130 -0
  2. package/bundles/raise-common-lib.umd.js.map +1 -0
  3. package/bundles/raise-common-lib.umd.min.js +16 -0
  4. package/bundles/raise-common-lib.umd.min.js.map +1 -0
  5. package/esm2015/lib/common-grid/index.component.js +716 -0
  6. package/esm2015/lib/constant/index.js +107 -0
  7. package/esm2015/lib/raise-common-lib.module.js +38 -0
  8. package/esm2015/public-api.js +11 -0
  9. package/esm2015/raise-common-lib.js +10 -0
  10. package/esm5/lib/common-grid/index.component.js +865 -0
  11. package/esm5/lib/constant/index.js +107 -0
  12. package/esm5/lib/raise-common-lib.module.js +42 -0
  13. package/esm5/public-api.js +11 -0
  14. package/esm5/raise-common-lib.js +10 -0
  15. package/fesm2015/raise-common-lib.js +766 -0
  16. package/fesm2015/raise-common-lib.js.map +1 -0
  17. package/fesm5/raise-common-lib.js +917 -0
  18. package/fesm5/raise-common-lib.js.map +1 -0
  19. package/lib/common-grid/index.component.d.ts +116 -0
  20. package/lib/constant/index.d.ts +54 -0
  21. package/lib/raise-common-lib.module.d.ts +2 -0
  22. package/package.json +17 -4
  23. package/{src/public-api.ts → public-api.d.ts} +2 -5
  24. package/raise-common-lib.d.ts +4 -0
  25. package/raise-common-lib.metadata.json +1 -0
  26. package/karma.conf.js +0 -32
  27. package/ng-package.json +0 -7
  28. package/src/lib/common-grid/grid-utils.ts +0 -26
  29. package/src/lib/common-grid/index.component.html +0 -80
  30. package/src/lib/common-grid/index.component.scss +0 -230
  31. package/src/lib/common-grid/index.component.ts +0 -420
  32. package/src/lib/constant/index.ts +0 -59
  33. package/src/lib/raise-common-lib.module.ts +0 -48
  34. package/tsconfig.lib.json +0 -26
  35. package/tsconfig.spec.json +0 -17
  36. package/tslint.json +0 -17
@@ -0,0 +1,716 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/common-grid/index.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ChangeDetectorRef, } from '@angular/core';
7
+ import { GridComponent } from '@syncfusion/ej2-angular-grids';
8
+ export class CommonGridComponent {
9
+ /**
10
+ * @param {?} ref
11
+ */
12
+ constructor(ref) {
13
+ this.ref = ref;
14
+ this.showCheckBox = true;
15
+ this.loaded = true;
16
+ this.hiddenLoaded = false;
17
+ this.authorized = true; // Dataset是否授权,未授权则显示权限错误提示
18
+ // Dataset是否授权,未授权则显示权限错误提示
19
+ // only use for local data pagination
20
+ this.selectedDiffKey = '';
21
+ this.gridHeight = '';
22
+ // 这玩意必填,不然filter columnChooser都会报错
23
+ this.gridId = 'grid';
24
+ this.resizeSettings = { mode: 'Auto' };
25
+ this.filterSettings = { type: 'Menu' };
26
+ this.fields = [];
27
+ this.dataSource = [];
28
+ this.allowPaging = true;
29
+ this.clipMode = 'EllipsisWithTooltip';
30
+ this.checkBoxWidth = 32; // col 数量过少的时候,check宽度会拉伸,这时候设置null
31
+ /**
32
+ * Sample: [
33
+ * {
34
+ * text: "Preview",
35
+ * target: ".e-content",
36
+ * id: "preview-icon",
37
+ * iconCss: "preview",
38
+ * },
39
+ * {
40
+ * text: "Download",
41
+ * target: ".e-content",
42
+ * id: "download-icon",
43
+ * iconCss: "download",
44
+ * }
45
+ * ]
46
+ * 用于定义row中 点击事件
47
+ */
48
+ this.contextMenuItems = [];
49
+ // @Input() selectionSettings = { checkboxOnly: true, type: "Multiple" };
50
+ this.selectionSettings = {
51
+ type: 'Multiple',
52
+ // persistSelection: true,
53
+ checkboxOnly: true,
54
+ };
55
+ this.alwaysShowCheckbox = false;
56
+ this.disableSystemRow = false; // 禁用IsSytem = true的整行
57
+ // 禁用IsSytem = true的整行
58
+ this.recordDoubleClick = new EventEmitter();
59
+ this.actionComplete = new EventEmitter();
60
+ this.rowSelected = new EventEmitter();
61
+ this.rowDeselected = new EventEmitter();
62
+ this.onContextMenu = new EventEmitter();
63
+ this.actionHandler = new EventEmitter();
64
+ this.queryCellInfo = new EventEmitter();
65
+ this.recordClick = new EventEmitter();
66
+ this.actionBegin = new EventEmitter();
67
+ this.rowDataBound = new EventEmitter();
68
+ this.dataBound = new EventEmitter();
69
+ this.exportQueryCellInfo = new EventEmitter();
70
+ this.rowSelecting = new EventEmitter();
71
+ this.selectId = [];
72
+ this.startPaging = false;
73
+ this.indexList = [];
74
+ this.className = 'grid-loading';
75
+ this.translation = JSON.parse(localStorage.getItem('translation'));
76
+ }
77
+ /**
78
+ * @return {?}
79
+ */
80
+ ngOnInit() {
81
+ if (this.hiddenLoaded)
82
+ this.className = '';
83
+ this.ref && this.ref.markForCheck();
84
+ }
85
+ /**
86
+ * @param {?} index
87
+ * @param {?} item
88
+ * @return {?}
89
+ */
90
+ trackByFn(index, item) {
91
+ return index; // or a unique identifier in your object
92
+ }
93
+ /**
94
+ * @param {?} changes
95
+ * @return {?}
96
+ */
97
+ ngOnChanges(changes) {
98
+ if (changes.dataSource && changes.dataSource.currentValue) {
99
+ if (this.allowPaging &&
100
+ changes.dataSource.currentValue.length &&
101
+ !this.pageSettings) {
102
+ this.pageSettings =
103
+ changes.dataSource.currentValue.length > 9
104
+ ? {
105
+ pageSizes: ['All', '25', '50', '100'],
106
+ pageSize: 50,
107
+ }
108
+ : null;
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * @return {?}
114
+ */
115
+ _load() {
116
+ if (!this.authorized) {
117
+ ((/** @type {?} */ (this.grid.localeObj))).localeStrings.EmptyRecord =
118
+ this.translation.YOU_DO_NOT_HAVE_THE_DATASET_PERMISSION ||
119
+ "You don't have the dataset permission to view the record.";
120
+ }
121
+ }
122
+ /**
123
+ * @param {?} args
124
+ * @return {?}
125
+ */
126
+ _dataBound(args) {
127
+ // 整个组件加载完成时的回调函数
128
+ /** @type {?} */
129
+ var pagerContainer = document.querySelector('.e-pagercontainer');
130
+ if (pagerContainer) {
131
+ /** @type {?} */
132
+ var linkElements = pagerContainer.querySelectorAll('.e-link');
133
+ linkElements.forEach((/**
134
+ * @param {?} element
135
+ * @return {?}
136
+ */
137
+ function (element) {
138
+ element.removeAttribute('href'); // SMP2-10310 删除分页器的href属性
139
+ }));
140
+ }
141
+ if (this.selectedDiffKey) {
142
+ setTimeout((/**
143
+ * @return {?}
144
+ */
145
+ () => {
146
+ this.chooseRecords();
147
+ }));
148
+ }
149
+ this.dataBound.emit(args);
150
+ }
151
+ /**
152
+ * @param {?} args
153
+ * @return {?}
154
+ */
155
+ _exportQueryCellInfo(args) {
156
+ this.exportQueryCellInfo.emit(args);
157
+ }
158
+ /**
159
+ * @param {?} $event
160
+ * @return {?}
161
+ */
162
+ _recordDoubleClick($event) {
163
+ this.recordDoubleClick.emit($event);
164
+ }
165
+ /**
166
+ * [selectionSettings]="{ checkboxOnly: true }"
167
+ * [showCheckBox]="true"
168
+ * 控件使用时,必须配置上面两个属性,否则,全选会失效
169
+ * @param {?} $event
170
+ * @return {?}
171
+ */
172
+ _rowSelected($event) {
173
+ if (this.selectedDiffKey) {
174
+ if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {
175
+ if ($event.data && $event.data.length) {
176
+ $event.data.forEach((/**
177
+ * @param {?} item
178
+ * @return {?}
179
+ */
180
+ (item) => {
181
+ item.isSelected = true;
182
+ this.selectId.push(item);
183
+ }));
184
+ this.dataSource.forEach((/**
185
+ * @param {?} data
186
+ * @return {?}
187
+ */
188
+ (data) => {
189
+ $event.data.forEach((/**
190
+ * @param {?} _data
191
+ * @return {?}
192
+ */
193
+ (_data) => {
194
+ if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {
195
+ data.isSelected = true;
196
+ }
197
+ }));
198
+ }));
199
+ }
200
+ }
201
+ else {
202
+ $event.data.isSelected = true;
203
+ this.selectId.push($event.data);
204
+ this.dataSource.forEach((/**
205
+ * @param {?} data
206
+ * @return {?}
207
+ */
208
+ (data) => {
209
+ if (data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]) {
210
+ data.isSelected = true;
211
+ }
212
+ }));
213
+ }
214
+ this.ref && this.ref.markForCheck();
215
+ }
216
+ this.rowSelected.emit($event);
217
+ }
218
+ /**
219
+ * @param {?} $event
220
+ * @return {?}
221
+ */
222
+ _rowDeselected($event) {
223
+ if (this.selectedDiffKey) {
224
+ if (this.startPaging) {
225
+ return;
226
+ }
227
+ if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {
228
+ $event.data.forEach((/**
229
+ * @param {?} item
230
+ * @return {?}
231
+ */
232
+ (item) => {
233
+ item.isSelected = false;
234
+ }));
235
+ this.selectId = [];
236
+ this.dataSource.forEach((/**
237
+ * @param {?} data
238
+ * @return {?}
239
+ */
240
+ (data) => {
241
+ $event.data.forEach((/**
242
+ * @param {?} _data
243
+ * @return {?}
244
+ */
245
+ (_data) => {
246
+ if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {
247
+ data.isSelected = false;
248
+ }
249
+ }));
250
+ }));
251
+ }
252
+ else {
253
+ $event.data.isSelected = false;
254
+ this.selectId = this.selectId.filter((/**
255
+ * @param {?} item
256
+ * @return {?}
257
+ */
258
+ (item) => item[this.selectedDiffKey] !== $event.data[this.selectedDiffKey]));
259
+ this.dataSource.forEach((/**
260
+ * @param {?} data
261
+ * @return {?}
262
+ */
263
+ (data) => {
264
+ if (data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]) {
265
+ data.isSelected = false;
266
+ }
267
+ }));
268
+ }
269
+ this.ref && this.ref.markForCheck();
270
+ }
271
+ this.rowDeselected.emit($event);
272
+ }
273
+ /**
274
+ * @param {?} args
275
+ * @return {?}
276
+ */
277
+ _onContextMenu(args) {
278
+ this.onContextMenu.emit(args);
279
+ }
280
+ /**
281
+ * @param {?} args
282
+ * @return {?}
283
+ */
284
+ _actionBegin(args) {
285
+ if (this.selectedDiffKey &&
286
+ (args.requestType === 'paging' ||
287
+ args.requestType === 'searching' ||
288
+ args.requestType === 'filtering' ||
289
+ args.requestType === 'sorting')) {
290
+ this.startPaging = true;
291
+ }
292
+ this.actionBegin.emit(args);
293
+ }
294
+ /**
295
+ * @param {?} keywords
296
+ * @return {?}
297
+ */
298
+ search(keywords) {
299
+ this.grid.search(keywords);
300
+ }
301
+ /**
302
+ * @param {?} indexList
303
+ * @return {?}
304
+ */
305
+ selectRows(indexList) {
306
+ this.grid.selectRows(indexList);
307
+ }
308
+ /**
309
+ * @param {?} index
310
+ * @return {?}
311
+ */
312
+ selectRow(index) {
313
+ this.grid.selectRow(index);
314
+ }
315
+ /**
316
+ * @return {?}
317
+ */
318
+ getCurrentViewRecords() {
319
+ return this.grid.getCurrentViewRecords();
320
+ }
321
+ /**
322
+ * @param {?} $event
323
+ * @return {?}
324
+ */
325
+ customiseCell($event) {
326
+ this.queryCellInfo.emit($event);
327
+ }
328
+ /**
329
+ * @param {?=} args
330
+ * @return {?}
331
+ */
332
+ contextMenuOpen(args) {
333
+ /** @type {?} */
334
+ const data = ((/** @type {?} */ (args))).rowInfo.rowData;
335
+ if (!data) {
336
+ args.cancel = true;
337
+ return;
338
+ }
339
+ /** @type {?} */
340
+ let enableItems = [];
341
+ /** @type {?} */
342
+ let hideItems = [];
343
+ this.grid.contextMenuModule.contextMenu.refresh(); // 每次点击按钮弹窗前需再次初始化状态 否则不更新;
344
+ this.contextMenuItems.forEach((/**
345
+ * @param {?} item
346
+ * @return {?}
347
+ */
348
+ (item) => {
349
+ // 用于处理部分按钮disabled的情况
350
+ if (item.disabled ||
351
+ (data.disableItem && data.disableItem.includes(item.iconCss))) {
352
+ enableItems.push(item.text);
353
+ // this.grid.contextMenuModule.contextMenu.enableItems(
354
+ // [item.text],
355
+ // false
356
+ // );
357
+ }
358
+ // 用于处理部分按钮需要hide的情况
359
+ if (item.isHide ||
360
+ (data.hideItem && data.hideItem.includes(item.iconCss))) {
361
+ hideItems.push(item.text);
362
+ // this.grid.contextMenuModule.contextMenu.hideItems(
363
+ // [item.text],
364
+ // false
365
+ // );
366
+ }
367
+ }));
368
+ this.grid.contextMenuModule.contextMenu.enableItems(enableItems, false);
369
+ this.grid.contextMenuModule.contextMenu.hideItems(hideItems, false);
370
+ }
371
+ /**
372
+ * @param {?} $event
373
+ * @return {?}
374
+ */
375
+ _actionHandler($event) {
376
+ if (this.selectedDiffKey &&
377
+ ($event.requestType === 'paging' ||
378
+ $event.requestType === 'searching' ||
379
+ $event.requestType === 'filtering' ||
380
+ $event.requestType === 'sorting')) {
381
+ this.indexList = [];
382
+ setTimeout((/**
383
+ * @return {?}
384
+ */
385
+ () => {
386
+ this.chooseRecords();
387
+ this.startPaging = false;
388
+ this.ref && this.ref.detectChanges();
389
+ this.ref && this.ref.markForCheck();
390
+ }));
391
+ }
392
+ this.actionHandler.emit($event);
393
+ this.actionComplete.emit($event);
394
+ }
395
+ /**
396
+ * @private
397
+ * @return {?}
398
+ */
399
+ chooseRecords() {
400
+ this.indexList = [];
401
+ this.dataSource.forEach((/**
402
+ * @param {?} data
403
+ * @return {?}
404
+ */
405
+ (data) => {
406
+ this.grid.getCurrentViewRecords().forEach((/**
407
+ * @param {?} row
408
+ * @param {?} i
409
+ * @return {?}
410
+ */
411
+ (row, i) => {
412
+ if (row &&
413
+ data[this.selectedDiffKey] === row[this.selectedDiffKey] &&
414
+ data.isSelected) {
415
+ this.indexList.push(i);
416
+ }
417
+ }));
418
+ }));
419
+ this.grid.selectRows(this.indexList);
420
+ }
421
+ /**
422
+ * @param {?} $event
423
+ * @return {?}
424
+ */
425
+ _recordClick($event) {
426
+ this.recordClick.emit($event);
427
+ }
428
+ /**
429
+ * @return {?}
430
+ */
431
+ refresh() {
432
+ this.grid.refresh();
433
+ }
434
+ /**
435
+ * @param {?} e
436
+ * @return {?}
437
+ */
438
+ _rowSelecting(e) {
439
+ this.rowSelecting.emit(e);
440
+ }
441
+ /**
442
+ * @return {?}
443
+ */
444
+ refreshColumns() {
445
+ this.grid.refreshColumns();
446
+ }
447
+ /**
448
+ * @return {?}
449
+ */
450
+ refreshHeader() {
451
+ this.grid.refreshHeader();
452
+ }
453
+ /**
454
+ * @param {?=} excelExportProperties
455
+ * @return {?}
456
+ */
457
+ export(excelExportProperties) {
458
+ this.grid.excelExport(excelExportProperties);
459
+ }
460
+ /**
461
+ * @return {?}
462
+ */
463
+ getSelectedRecords() {
464
+ return this.grid.getSelectedRecords();
465
+ }
466
+ /**
467
+ * @param {?} $event
468
+ * @return {?}
469
+ */
470
+ _rowDataBound($event) {
471
+ if (this.disableSystemRow && $event.data && $event.data.IsSystem) {
472
+ $event.row.classList.add('e-disabled');
473
+ }
474
+ this.rowDataBound.emit($event);
475
+ }
476
+ /**
477
+ * @return {?}
478
+ */
479
+ clearSelection() {
480
+ this.grid.clearSelection();
481
+ }
482
+ /**
483
+ * @return {?}
484
+ */
485
+ excelExport() {
486
+ this.grid.excelExport();
487
+ }
488
+ /**
489
+ * @return {?}
490
+ */
491
+ addItem() {
492
+ this.grid.addRecord(Object.assign({}, this.defaultRecord, { isNew: true }), 0);
493
+ setTimeout((/**
494
+ * @return {?}
495
+ */
496
+ () => {
497
+ this.grid.selectRow(0);
498
+ this.grid.startEdit();
499
+ }), 30);
500
+ }
501
+ /**
502
+ * @return {?}
503
+ */
504
+ saveItem() {
505
+ this.grid.endEdit();
506
+ }
507
+ /**
508
+ * @param {?} index
509
+ * @return {?}
510
+ */
511
+ editItem(index) {
512
+ setTimeout((/**
513
+ * @return {?}
514
+ */
515
+ () => {
516
+ this.grid.selectRow(Number(index));
517
+ this.grid.startEdit();
518
+ }), 30);
519
+ }
520
+ /**
521
+ * @param {?} index
522
+ * @return {?}
523
+ */
524
+ deleteItem(index) {
525
+ this.grid.selectRow(Number(index));
526
+ /** @type {?} */
527
+ var selectedRecord = (/** @type {?} */ (this.grid.getSelectedRecords()[0]));
528
+ this.grid.deleteRecord((/** @type {?} */ (selectedRecord)));
529
+ }
530
+ /**
531
+ * @param {?} index
532
+ * @return {?}
533
+ */
534
+ cancelItem(index) {
535
+ this.grid.closeEdit();
536
+ this.deleteItem(index);
537
+ }
538
+ /**
539
+ * @return {?}
540
+ */
541
+ showLoading() {
542
+ this.className = 'grid-loading';
543
+ this.ref && this.ref.markForCheck();
544
+ this.ref && this.ref.detectChanges();
545
+ }
546
+ /**
547
+ * @return {?}
548
+ */
549
+ hideLoading() {
550
+ this.className = '';
551
+ this.ref && this.ref.markForCheck();
552
+ this.ref && this.ref.detectChanges();
553
+ }
554
+ }
555
+ CommonGridComponent.decorators = [
556
+ { type: Component, args: [{
557
+ selector: 'kt-common-grid',
558
+ template: "<ejs-grid\r\n\t#grid\r\n\t[id]=\"gridId\"\r\n\t[ngClass]=\"{\r\n\t\t'hide-Check-box': !alwaysShowCheckbox,\r\n\t\t'grid-loading': className === 'grid-loading'\r\n\t}\"\r\n\t[dataSource]=\"dataSource\"\r\n\t[allowPaging]=\"allowPaging && pageSettings\"\r\n\t[allowResizing]=\"true\"\r\n\t[pageSettings]=\"pageSettings\"\r\n\t[showColumnMenu]=\"true\"\r\n\t[allowSorting]=\"true\"\r\n\t[allowFiltering]=\"true\"\r\n\t[allowExcelExport]=\"true\"\r\n\t[filterSettings]=\"filterSettings\"\r\n\t[resizeSettings]=\"resizeSettings\"\r\n\t[allowSelection]=\"true\"\r\n\t[editSettings]=\"editSettings\"\r\n\t[childGrid]=\"childGrid\"\r\n\t[contextMenuItems]=\"\r\n\t\tdataSource && dataSource.length ? contextMenuItems : null\r\n\t\"\r\n\t[selectionSettings]=\"selectionSettings\"\r\n\t(recordClick)=\"_recordClick($event)\"\r\n\t(recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n\t(actionBegin)=\"_actionBegin($event)\"\r\n\t(actionComplete)=\"_actionHandler($event)\"\r\n\t(rowSelected)=\"_rowSelected($event)\"\r\n\t(rowDeselected)=\"_rowDeselected($event)\"\r\n\tstyle=\"border: none\"\r\n\t(contextMenuClick)=\"_onContextMenu($event)\"\r\n\t(contextMenuOpen)=\"contextMenuOpen($event)\"\r\n\t(queryCellInfo)=\"customiseCell($event)\"\r\n\t(dataBound)=\"_dataBound($event)\"\r\n\t(rowDataBound)=\"_rowDataBound($event)\"\r\n\t(rowSelecting)=\"_rowSelecting($event)\"\r\n\t(excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n\t(load)=\"_load()\"\r\n>\r\n\t<e-columns>\r\n\t\t<e-column\r\n\t\t\t*ngIf=\"showCheckBox\"\r\n\t\t\ttype=\"checkbox\"\r\n\t\t\t[width]=\"checkBoxWidth\"\r\n\t\t\t[showColumnMenu]=\"false\"\r\n\t\t></e-column>\r\n\t\t<e-column\r\n\t\t\t*ngFor=\"let item of fields; trackBy: trackByFn\"\r\n\t\t\t[field]=\"item.columnName\"\r\n\t\t\t[filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n\t\t\t[customAttributes]=\"\r\n\t\t\t\titem.colName === 'entityUserList' ||\r\n\t\t\t\titem.colName === 'kycProgress'\r\n\t\t\t\t\t? { class: 'hideColumnFilterClass' }\r\n\t\t\t\t\t: {}\r\n\t\t\t\"\r\n\t\t\t[headerText]=\"item.columnDisplayName\"\r\n\t\t\t[textAlign]=\"item.textAlign\"\r\n\t\t\t[showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n\t\t\t[allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n\t\t\t[allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n\t\t\t[editType]=\"item.editType\"\r\n\t\t\t[validationRules]=\"item.validationRules\"\r\n\t\t\t[type]=\"item.dataType\"\r\n\t\t\t[width]=\"item.width\"\r\n\t\t\t[minWidth]=\"item.minWidth\"\r\n\t\t\t[format]=\"item.format\"\r\n\t\t\t[visible]=\"item.visible\"\r\n\t\t\t[template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n\t\t\t[clipMode]=\"\r\n\t\t\t\titem.clipMode\r\n\t\t\t\t\t? item.clipMode\r\n\t\t\t\t\t: clipMode || 'EllipsisWithTooltip'\r\n\t\t\t\"\r\n\t\t\t[sortComparer]=\"item.dateComparer\"\r\n\t\t>\r\n\t\t</e-column>\r\n\t</e-columns>\r\n</ejs-grid>\r\n",
559
+ styles: [".e-grid.e-gridhover tr[role=row]:hover .e-rowcell:not(.e-cellselectionbackground):not(.e-active):not(.e-updatedtd):not(.e-indentcell){background:rgba(31,123,255,.04)!important}.e-summaryrow .e-summarycell:nth-child(2){padding-left:0!important}.e-footerpadding{padding-right:0!important}.e-footerpadding .e-summaryrow{margin-right:5px!important}.e-footerpadding .e-summaryrow .e-indentcell{background-color:unset!important}kt-common-grid{display:flex;flex:1;height:100%}kt-common-grid .e-grid{height:100%}kt-common-grid .e-grid .e-headercontent{margin-right:0!important}.e-grid td.e-active{background:#edf5ff!important}.grid-tools{height:32px;min-height:32px;display:flex;align-items:center;justify-content:space-between;padding-left:7px}.grid-tools .right-opt-group{display:flex;align-items:center;margin-right:6px}.grid-tools .tools-button{border:none;font-family:Arial;font-size:12px;color:#43566c;background:0 0;display:flex;align-items:center;padding:0;margin-right:16px}.grid-tools .tools-button.disabled-button{pointer-events:none;opacity:.5}.grid-tools .tools-button img{margin-right:4px;height:16px!important;width:16px!important}.grid-tools .tools-button .tools-font{transform:translateY(1px);display:inline-block}.grid-tools .select-num{font-size:12px;color:#43566c;margin-right:24px;white-space:nowrap}.e-rowcell{padding:0 8px 0 12px}.e-rowcell.e-gridchkbox{padding:0 0 0 8px!important}.e-headercell{padding:0}.e-headercell:first-child.e-defaultcursor+.e-headercell .e-headercelldiv{padding-left:0}.e-headercell .e-headercelldiv{margin:0;padding:0 20px 0 12px}.e-headercell .e-headerchkcelldiv{padding:0 0 0 8px!important}.e-headercell .e-columnmenu{position:absolute;right:0;float:unset;margin:0;padding:0;top:8px}.e-headercell .e-sortfilterdiv{padding-top:11px}.e-headercell.e-rightalign .e-sortfilterdiv{padding-left:5px}.e-detailheadercell{height:28px!important}.e-grid{font-family:Arial!important;display:flex;flex-direction:column;flex:1;border:none;overflow:hidden}.e-grid .e-gridcontent{flex:1}.e-grid .e-content{overflow:scroll!important}.e-grid .e-content::-webkit-scrollbar{width:5px;height:5px;background:#fff;position:static;z-index:999;border-radius:10px}.e-grid .e-content::-webkit-scrollbar-thumb{background:#eaedf0;border-radius:10px}.e-grid .e-gridheader{margin-right:5px!important;padding-right:0!important;height:30px!important}.e-grid .e-content,.e-grid .e-gridcontent{display:flex;flex-direction:column;flex:1}.e-grid .e-columnheader,.e-grid .e-headercell,.e-grid .e-rhandler{height:28px!important}.e-grid .e-headertext{font-size:10px!important}.e-grid .e-headercell .e-columnmenu{color:#929dab}.e-grid .e-row{height:26px!important;line-height:26px!important}.e-grid .e-rowcell{font-size:11px!important;color:#43566c!important;padding-top:0;padding-bottom:0;padding-right:7px}.e-grid .e-rowcell .mat-icon-button{height:26px;width:26px;line-height:26px}.e-grid .e-rowcell:empty{height:26px!important}.e-grid .e-rowcell.e-gridchkbox+.e-rowcell{padding-left:0!important}.e-grid .e-gridpager{border:none}.e-grid .e-gridpager .e-gridcontent{transform:unset}.e-grid .e-summaryrow{height:24px!important}.e-grid .e-summaryrow .e-indentcell,.e-grid .e-summaryrow .e-summarycell{background-color:#fff;border:none;font-family:Arial;font-size:11px!important;font-weight:700;color:#43566c;padding:0 12px}.e-grid .e-row:last-child .e-rowcell{border-bottom:1px solid #dee2e6}"]
560
+ }] }
561
+ ];
562
+ /** @nocollapse */
563
+ CommonGridComponent.ctorParameters = () => [
564
+ { type: ChangeDetectorRef }
565
+ ];
566
+ CommonGridComponent.propDecorators = {
567
+ grid: [{ type: ViewChild, args: ['grid', { static: false },] }],
568
+ showCheckBox: [{ type: Input }],
569
+ loaded: [{ type: Input }],
570
+ hiddenLoaded: [{ type: Input }],
571
+ authorized: [{ type: Input }],
572
+ selectedDiffKey: [{ type: Input }],
573
+ gridHeight: [{ type: Input }],
574
+ gridId: [{ type: Input }],
575
+ resizeSettings: [{ type: Input }],
576
+ filterSettings: [{ type: Input }],
577
+ template: [{ type: Input }],
578
+ fields: [{ type: Input }],
579
+ dataSource: [{ type: Input }],
580
+ editSettings: [{ type: Input }],
581
+ columnTemplate: [{ type: Input }],
582
+ pageSettings: [{ type: Input }],
583
+ allowPaging: [{ type: Input }],
584
+ clipMode: [{ type: Input }],
585
+ checkBoxWidth: [{ type: Input }],
586
+ childGrid: [{ type: Input }],
587
+ contextMenuItems: [{ type: Input }],
588
+ selectionSettings: [{ type: Input }],
589
+ alwaysShowCheckbox: [{ type: Input }],
590
+ defaultRecord: [{ type: Input }],
591
+ disableSystemRow: [{ type: Input }],
592
+ recordDoubleClick: [{ type: Output }],
593
+ actionComplete: [{ type: Output }],
594
+ rowSelected: [{ type: Output }],
595
+ rowDeselected: [{ type: Output }],
596
+ onContextMenu: [{ type: Output }],
597
+ actionHandler: [{ type: Output }],
598
+ queryCellInfo: [{ type: Output }],
599
+ recordClick: [{ type: Output }],
600
+ actionBegin: [{ type: Output }],
601
+ rowDataBound: [{ type: Output }],
602
+ dataBound: [{ type: Output }],
603
+ exportQueryCellInfo: [{ type: Output }],
604
+ rowSelecting: [{ type: Output }]
605
+ };
606
+ if (false) {
607
+ /** @type {?} */
608
+ CommonGridComponent.prototype.grid;
609
+ /** @type {?} */
610
+ CommonGridComponent.prototype.showCheckBox;
611
+ /** @type {?} */
612
+ CommonGridComponent.prototype.loaded;
613
+ /** @type {?} */
614
+ CommonGridComponent.prototype.hiddenLoaded;
615
+ /** @type {?} */
616
+ CommonGridComponent.prototype.authorized;
617
+ /** @type {?} */
618
+ CommonGridComponent.prototype.selectedDiffKey;
619
+ /** @type {?} */
620
+ CommonGridComponent.prototype.gridHeight;
621
+ /** @type {?} */
622
+ CommonGridComponent.prototype.gridId;
623
+ /** @type {?} */
624
+ CommonGridComponent.prototype.resizeSettings;
625
+ /** @type {?} */
626
+ CommonGridComponent.prototype.filterSettings;
627
+ /** @type {?} */
628
+ CommonGridComponent.prototype.template;
629
+ /** @type {?} */
630
+ CommonGridComponent.prototype.fields;
631
+ /** @type {?} */
632
+ CommonGridComponent.prototype.dataSource;
633
+ /** @type {?} */
634
+ CommonGridComponent.prototype.editSettings;
635
+ /** @type {?} */
636
+ CommonGridComponent.prototype.columnTemplate;
637
+ /** @type {?} */
638
+ CommonGridComponent.prototype.pageSettings;
639
+ /** @type {?} */
640
+ CommonGridComponent.prototype.allowPaging;
641
+ /** @type {?} */
642
+ CommonGridComponent.prototype.clipMode;
643
+ /** @type {?} */
644
+ CommonGridComponent.prototype.checkBoxWidth;
645
+ /** @type {?} */
646
+ CommonGridComponent.prototype.childGrid;
647
+ /**
648
+ * Sample: [
649
+ * {
650
+ * text: "Preview",
651
+ * target: ".e-content",
652
+ * id: "preview-icon",
653
+ * iconCss: "preview",
654
+ * },
655
+ * {
656
+ * text: "Download",
657
+ * target: ".e-content",
658
+ * id: "download-icon",
659
+ * iconCss: "download",
660
+ * }
661
+ * ]
662
+ * 用于定义row中 点击事件
663
+ * @type {?}
664
+ */
665
+ CommonGridComponent.prototype.contextMenuItems;
666
+ /** @type {?} */
667
+ CommonGridComponent.prototype.selectionSettings;
668
+ /** @type {?} */
669
+ CommonGridComponent.prototype.alwaysShowCheckbox;
670
+ /** @type {?} */
671
+ CommonGridComponent.prototype.defaultRecord;
672
+ /** @type {?} */
673
+ CommonGridComponent.prototype.disableSystemRow;
674
+ /** @type {?} */
675
+ CommonGridComponent.prototype.recordDoubleClick;
676
+ /** @type {?} */
677
+ CommonGridComponent.prototype.actionComplete;
678
+ /** @type {?} */
679
+ CommonGridComponent.prototype.rowSelected;
680
+ /** @type {?} */
681
+ CommonGridComponent.prototype.rowDeselected;
682
+ /** @type {?} */
683
+ CommonGridComponent.prototype.onContextMenu;
684
+ /** @type {?} */
685
+ CommonGridComponent.prototype.actionHandler;
686
+ /** @type {?} */
687
+ CommonGridComponent.prototype.queryCellInfo;
688
+ /** @type {?} */
689
+ CommonGridComponent.prototype.recordClick;
690
+ /** @type {?} */
691
+ CommonGridComponent.prototype.actionBegin;
692
+ /** @type {?} */
693
+ CommonGridComponent.prototype.rowDataBound;
694
+ /** @type {?} */
695
+ CommonGridComponent.prototype.dataBound;
696
+ /** @type {?} */
697
+ CommonGridComponent.prototype.exportQueryCellInfo;
698
+ /** @type {?} */
699
+ CommonGridComponent.prototype.rowSelecting;
700
+ /** @type {?} */
701
+ CommonGridComponent.prototype.selectId;
702
+ /** @type {?} */
703
+ CommonGridComponent.prototype.startPaging;
704
+ /** @type {?} */
705
+ CommonGridComponent.prototype.indexList;
706
+ /** @type {?} */
707
+ CommonGridComponent.prototype.className;
708
+ /** @type {?} */
709
+ CommonGridComponent.prototype.translation;
710
+ /**
711
+ * @type {?}
712
+ * @private
713
+ */
714
+ CommonGridComponent.prototype.ref;
715
+ }
716
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQVU5RCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBMEU5QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXZFakMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7OztRQUU5QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDOztRQUVoQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUVsQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxxQkFBcUIsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLG1DQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBb0J2RCxxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDOztRQUV6QyxzQkFBaUIsR0FBRztZQUMzQixJQUFJLEVBQUUsVUFB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ICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkcyc7XHJcblxyXG5pbXBvcnQgeyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1pbnB1dHMnO1xyXG5pbXBvcnQgeyBJQWN0aW9uTWVudUl0ZW0sIElDb2x1bW5GaWVsZCB9IGZyb20gJy4uL2NvbnN0YW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3QtY29tbW9uLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmRleC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5kZXguY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vbkdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBncmlkOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveCA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRkZW5Mb2FkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRob3JpemVkID0gdHJ1ZTsgLy8gRGF0YXNldOaYr+WQpuaOiOadg++8jOacquaOiOadg+WImeaYvuekuuadg+mZkOmUmeivr+aPkOekulxyXG4gIC8vIG9ubHkgdXNlIGZvciBsb2NhbCBkYXRhIHBhZ2luYXRpb25cclxuICBASW5wdXQoKSBzZWxlY3RlZERpZmZLZXkgPSAnJztcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gJyc7XHJcbiAgLy8g6L+Z546p5oSP5b+F5aGr77yM5LiN54S2ZmlsdGVyIGNvbHVtbkNob29zZXLpg73kvJrmiqXplJlcclxuICBASW5wdXQoKSBncmlkSWQgPSAnZ3JpZCc7XHJcbiAgQElucHV0KCkgcmVzaXplU2V0dGluZ3MgPSB7IG1vZGU6ICdBdXRvJyB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiAnTWVudScgfTtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZTogYW55O1xyXG4gIEBJbnB1dCgpIGZpZWxkczogSUNvbHVtbkZpZWxkW10gPSBbXTtcclxuICBASW5wdXQoKSBkYXRhU291cmNlID0gW107XHJcbiAgQElucHV0KCkgZWRpdFNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGNvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHBhZ2VTZXR0aW5ncztcclxuICBASW5wdXQoKSBhbGxvd1BhZ2luZyA9IHRydWU7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSAnRWxsaXBzaXNXaXRoVG9vbHRpcCc7XHJcbiAgQElucHV0KCkgY2hlY2tCb3hXaWR0aCA9IDMyOyAvLyBjb2wg5pWw6YeP6L+H5bCR55qE5pe25YCZ77yMY2hlY2vlrr3luqbkvJrmi4nkvLjvvIzov5nml7blgJnorr7nva5udWxsXHJcbiAgQElucHV0KCkgY2hpbGRHcmlkO1xyXG5cclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6ICdNdWx0aXBsZScsXHJcbiAgICAvLyBwZXJzaXN0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgY2hlY2tib3hPbmx5OiB0cnVlLFxyXG4gIH07XHJcbiAgQElucHV0KCkgYWx3YXlzU2hvd0NoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVmYXVsdFJlY29yZDogYW55O1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTeXN0ZW1Sb3c6IGJvb2xlYW4gPSBmYWxzZTsgLy8g56aB55SoSXNTeXRlbSA9IHRydWXnmoTmlbTooYxcclxuXHJcbiAgQE91dHB1dCgpIHJlY29yZERvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25Db21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Rlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgc2VsZWN0SWQgPSBbXTtcclxuICBzdGFydFBhZ2luZyA9IGZhbHNlO1xyXG4gIGluZGV4TGlzdCA9IFtdO1xyXG4gIGNsYXNzTmFtZSA9ICdncmlkLWxvYWRpbmcnO1xyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYW5zbGF0aW9uJykpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW5Mb2FkZWQpIHRoaXMuY2xhc3NOYW1lID0gJyc7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4OyAvLyBvciBhIHVuaXF1ZSBpZGVudGlmaWVyIGluIHlvdXIgb2JqZWN0XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgJiYgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5hbGxvd1BhZ2luZyAmJlxyXG4gICAgICAgIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUubGVuZ3RoICYmXHJcbiAgICAgICAgIXRoaXMucGFnZVNldHRpbmdzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGFnZVNldHRpbmdzID1cclxuICAgICAgICAgIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUubGVuZ3RoID4gOVxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplczogWydBbGwnLCAnMjUnLCAnNTAnLCAnMTAwJ10sXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogNTAsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9sb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWQpIHtcclxuICAgICAgKHRoaXMuZ3JpZC5sb2NhbGVPYmogYXMgYW55KS5sb2NhbGVTdHJpbmdzLkVtcHR5UmVjb3JkID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLllPVV9ET19OT1RfSEFWRV9USEVfREFUQVNFVF9QRVJNSVNTSU9OIHx8XHJcbiAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgZGF0YXNldCBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIHJlY29yZC5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9kYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICAvLyDmlbTkuKrnu4Tku7bliqDovb3lrozmiJDml7bnmoTlm57osIPlh73mlbBcclxuICAgIHZhciBwYWdlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5lLXBhZ2VyY29udGFpbmVyJyk7XHJcbiAgICBpZiAocGFnZXJDb250YWluZXIpIHtcclxuICAgICAgdmFyIGxpbmtFbGVtZW50cyA9IHBhZ2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lLWxpbmsnKTtcclxuICAgICAgbGlua0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnaHJlZicpOyAvLyBTTVAyLTEwMzEwIOWIoOmZpOWIhumhteWZqOeahGhyZWblsZ7mgKdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQm91bmQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9leHBvcnRRdWVyeUNlbGxJbmZvKGFyZ3MpIHtcclxuICAgIHRoaXMuZXhwb3J0UXVlcnlDZWxsSW5mby5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZERvdWJsZUNsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmREb3VibGVDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG5cdCAqIFtzZWxlY3Rpb25TZXR0aW5nc109XCJ7IGNoZWNrYm94T25seTogdHJ1ZSB9XCJcclxuXHQgICBbc2hvd0NoZWNrQm94XT1cInRydWVcIlxyXG5cdCAgIOaOp+S7tuS9v+eUqOaXtu+8jOW/hemhu+mFjee9ruS4iumdouS4pOS4quWxnuaAp++8jOWQpuWIme+8jOWFqOmAieS8muWkseaViFxyXG5cdCAqL1xyXG4gIF9yb3dTZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgaWYgKCRldmVudC5kYXRhICYmICRldmVudC5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goJGV2ZW50LmRhdGEpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAodGhpcy5zdGFydFBhZ2luZykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IFtdO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IHRoaXMuc2VsZWN0SWQuZmlsdGVyKFxyXG4gICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5zZWxlY3RlZERpZmZLZXldICE9PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGVzZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfb25Db250ZXh0TWVudShhcmdzKSB7XHJcbiAgICB0aGlzLm9uQ29udGV4dE1lbnUuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25CZWdpbihhcmdzKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgIChhcmdzLnJlcXVlc3RUeXBlID09PSAncGFnaW5nJyB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09ICdzZWFyY2hpbmcnIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gJ2ZpbHRlcmluZycgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSAnc29ydGluZycpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGlvbkJlZ2luLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2goa2V5d29yZHMpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWFyY2goa2V5d29yZHMpO1xyXG4gIH1cclxuICBzZWxlY3RSb3dzKGluZGV4TGlzdDogbnVtYmVyW10pIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGluZGV4TGlzdCk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvdyhpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhpbmRleCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRWaWV3UmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21pc2VDZWxsKCRldmVudCkge1xyXG4gICAgdGhpcy5xdWVyeUNlbGxJbmZvLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNvbnRleHRNZW51T3BlbihhcmdzPzogQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gKGFyZ3MgYXMgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIHwgYW55KS5yb3dJbmZvLnJvd0RhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgYXJncy5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZW5hYmxlSXRlbXMgPSBbXTtcclxuICAgIGxldCBoaWRlSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5yZWZyZXNoKCk7IC8vIOavj+asoeeCueWHu+aMiemSruW8ueeql+WJjemcgOWGjeasoeWIneWni+WMlueKtuaAgSDlkKbliJnkuI3mm7TmlrDvvJtcclxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBJQWN0aW9uTWVudUl0ZW0pID0+IHtcclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKuZGlzYWJsZWTnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgfHxcclxuICAgICAgICAoZGF0YS5kaXNhYmxlSXRlbSAmJiBkYXRhLmRpc2FibGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGVuYWJsZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq7pnIDopoFoaWRl55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmlzSGlkZSB8fFxyXG4gICAgICAgIChkYXRhLmhpZGVJdGVtICYmIGRhdGEuaGlkZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaGlkZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKGVuYWJsZUl0ZW1zLCBmYWxzZSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKGhpZGVJdGVtcywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkhhbmRsZXIoJGV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgICgkZXZlbnQucmVxdWVzdFR5cGUgPT09ICdwYWdpbmcnIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSAnc2VhcmNoaW5nJyB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gJ2ZpbHRlcmluZycgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09ICdzb3J0aW5nJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlci5lbWl0KCRldmVudCk7XHJcbiAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hvb3NlUmVjb3JkcygpIHtcclxuICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkuZm9yRWFjaCgocm93OiBhbnksIGkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByb3cgJiZcclxuICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSByb3dbdGhpcy5zZWxlY3RlZERpZmZLZXldICYmXHJcbiAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKHRoaXMuaW5kZXhMaXN0KTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmRDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2goKTtcclxuICB9XHJcbiAgX3Jvd1NlbGVjdGluZyhlKSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZy5lbWl0KGUpO1xyXG4gIH1cclxuICByZWZyZXNoQ29sdW1ucygpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoQ29sdW1ucygpO1xyXG4gIH1cclxuICByZWZyZXNoSGVhZGVyKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hIZWFkZXIoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXM/KSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGF0YUJvdW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVN5c3RlbVJvdyAmJiAkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5Jc1N5c3RlbSkge1xyXG4gICAgICAkZXZlbnQucm93LmNsYXNzTGlzdC5hZGQoJ2UtZGlzYWJsZWQnKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGF0YUJvdW5kLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5ncmlkLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBleGNlbEV4cG9ydCgpIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5hZGRSZWNvcmQoeyAuLi50aGlzLmRlZmF1bHRSZWNvcmQsIGlzTmV3OiB0cnVlIH0sIDApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coMCk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIHNhdmVJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmVuZEVkaXQoKTtcclxuICB9XHJcblxyXG4gIGVkaXRJdGVtKGluZGV4KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhOdW1iZXIoaW5kZXgpKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhOdW1iZXIoaW5kZXgpKTtcclxuICAgIHZhciBzZWxlY3RlZFJlY29yZCA9IHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKVswXSBhcyBhbnk7XHJcbiAgICB0aGlzLmdyaWQuZGVsZXRlUmVjb3JkKHNlbGVjdGVkUmVjb3JkIGFzIHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuY2xvc2VFZGl0KCk7XHJcbiAgICB0aGlzLmRlbGV0ZUl0ZW0oaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSAnZ3JpZC1sb2FkaW5nJztcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSAnJztcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iXX0=