raise-common-lib-new 0.0.2

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 (171) hide show
  1. package/README.md +24 -0
  2. package/assets/language/fr.d.ts +3377 -0
  3. package/assets/language/ja.d.ts +3351 -0
  4. package/assets/language/ko.d.ts +3351 -0
  5. package/assets/language/zh-CN.d.ts +3064 -0
  6. package/assets/language/zh-TW.d.ts +3354 -0
  7. package/esm2022/assets/language/fr.mjs +3378 -0
  8. package/esm2022/assets/language/ja.mjs +3352 -0
  9. package/esm2022/assets/language/ko.mjs +3352 -0
  10. package/esm2022/assets/language/zh-CN.mjs +3065 -0
  11. package/esm2022/assets/language/zh-TW.mjs +3355 -0
  12. package/esm2022/lib/commentary/constants.mjs +2 -0
  13. package/esm2022/lib/commentary/index.component.mjs +146 -0
  14. package/esm2022/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.mjs +44 -0
  15. package/esm2022/lib/common-grid/grid-action/grid-action.component.mjs +18 -0
  16. package/esm2022/lib/common-grid/index.component.mjs +461 -0
  17. package/esm2022/lib/constant/index.mjs +11 -0
  18. package/esm2022/lib/dialog/common-delete-dialog/index.component.mjs +46 -0
  19. package/esm2022/lib/dialog/common-dialog/index.component.mjs +85 -0
  20. package/esm2022/lib/dialog/new-action-notification/new-action-notification.component.mjs +51 -0
  21. package/esm2022/lib/float-box/index.component.mjs +217 -0
  22. package/esm2022/lib/form/checkbox-group/index.component.mjs +57 -0
  23. package/esm2022/lib/form/drawer-form/constants.mjs +10 -0
  24. package/esm2022/lib/form/drawer-form/drawer-form.component.mjs +336 -0
  25. package/esm2022/lib/form/encrypted-input/index.component.mjs +35 -0
  26. package/esm2022/lib/form/radio-group/index.component.mjs +42 -0
  27. package/esm2022/lib/form/switch-input/index.component.mjs +42 -0
  28. package/esm2022/lib/form/tag-input/index.component.mjs +82 -0
  29. package/esm2022/lib/form/toolbar-item/index.component.mjs +56 -0
  30. package/esm2022/lib/layout/drawer/index.component.mjs +165 -0
  31. package/esm2022/lib/layout/grid-box/index.component.mjs +67 -0
  32. package/esm2022/lib/layout/main-container/index.component.mjs +60 -0
  33. package/esm2022/lib/layout/multi-tab/index.component.mjs +263 -0
  34. package/esm2022/lib/layout/nav-card-group/constants.mjs +2 -0
  35. package/esm2022/lib/layout/nav-card-group/index.component.mjs +37 -0
  36. package/esm2022/lib/layout/page-list/index.component.mjs +73 -0
  37. package/esm2022/lib/layout/page-tab/index.component.mjs +56 -0
  38. package/esm2022/lib/layout/rs-aside/index.component.mjs +76 -0
  39. package/esm2022/lib/layout/rs-footer/index.component.mjs +16 -0
  40. package/esm2022/lib/layout/rs-header/index.component.mjs +56 -0
  41. package/esm2022/lib/layout/toolbar/constants.mjs +2 -0
  42. package/esm2022/lib/layout/toolbar/index.component.mjs +79 -0
  43. package/esm2022/lib/raise-common-lib.module.mjs +505 -0
  44. package/esm2022/lib/service/common-function.service.mjs +141 -0
  45. package/esm2022/lib/service/dialog.service.mjs +132 -0
  46. package/esm2022/lib/service/drawer.service.mjs +111 -0
  47. package/esm2022/lib/service/icon-loader.service.mjs +23 -0
  48. package/esm2022/lib/service/keep-alive.service.mjs +83 -0
  49. package/esm2022/lib/service/translation.service.mjs +98 -0
  50. package/esm2022/lib/utils/decorator.mjs +14 -0
  51. package/esm2022/public-api.mjs +35 -0
  52. package/esm2022/raise-common-lib-new.mjs +5 -0
  53. package/fesm2022/raise-common-lib-new.mjs +20114 -0
  54. package/fesm2022/raise-common-lib-new.mjs.map +1 -0
  55. package/index.d.ts +5 -0
  56. package/lib/commentary/constants.d.ts +15 -0
  57. package/lib/commentary/index.component.d.ts +38 -0
  58. package/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.d.ts +10 -0
  59. package/lib/common-grid/grid-action/grid-action.component.d.ts +14 -0
  60. package/lib/common-grid/index.component.d.ts +122 -0
  61. package/lib/constant/index.d.ts +54 -0
  62. package/lib/dialog/common-delete-dialog/index.component.d.ts +29 -0
  63. package/lib/dialog/common-dialog/index.component.d.ts +29 -0
  64. package/lib/dialog/new-action-notification/new-action-notification.component.d.ts +33 -0
  65. package/lib/float-box/index.component.d.ts +33 -0
  66. package/lib/form/checkbox-group/index.component.d.ts +22 -0
  67. package/lib/form/drawer-form/constants.d.ts +34 -0
  68. package/lib/form/drawer-form/drawer-form.component.d.ts +67 -0
  69. package/lib/form/encrypted-input/index.component.d.ts +14 -0
  70. package/lib/form/radio-group/index.component.d.ts +19 -0
  71. package/lib/form/switch-input/index.component.d.ts +15 -0
  72. package/lib/form/tag-input/index.component.d.ts +25 -0
  73. package/lib/form/toolbar-item/index.component.d.ts +17 -0
  74. package/lib/layout/drawer/index.component.d.ts +45 -0
  75. package/lib/layout/grid-box/index.component.d.ts +19 -0
  76. package/lib/layout/main-container/index.component.d.ts +18 -0
  77. package/lib/layout/multi-tab/index.component.d.ts +52 -0
  78. package/lib/layout/nav-card-group/constants.d.ts +14 -0
  79. package/lib/layout/nav-card-group/index.component.d.ts +16 -0
  80. package/lib/layout/page-list/index.component.d.ts +21 -0
  81. package/lib/layout/page-tab/index.component.d.ts +18 -0
  82. package/lib/layout/rs-aside/index.component.d.ts +19 -0
  83. package/lib/layout/rs-footer/index.component.d.ts +8 -0
  84. package/lib/layout/rs-header/index.component.d.ts +21 -0
  85. package/lib/layout/toolbar/constants.d.ts +8 -0
  86. package/lib/layout/toolbar/index.component.d.ts +22 -0
  87. package/lib/raise-common-lib.module.d.ts +54 -0
  88. package/lib/service/common-function.service.d.ts +18 -0
  89. package/lib/service/dialog.service.d.ts +55 -0
  90. package/lib/service/drawer.service.d.ts +46 -0
  91. package/lib/service/icon-loader.service.d.ts +11 -0
  92. package/lib/service/keep-alive.service.d.ts +15 -0
  93. package/lib/service/translation.service.d.ts +12 -0
  94. package/lib/utils/decorator.d.ts +1 -0
  95. package/package.json +25 -0
  96. package/public-api.d.ts +31 -0
  97. package/src/assets/img/arrow_right.svg +4 -0
  98. package/src/assets/img/calendar-disabled.svg +6 -0
  99. package/src/assets/img/calendar.svg +6 -0
  100. package/src/assets/img/calendar_arrow_left.svg +3 -0
  101. package/src/assets/img/calendar_arrow_right.svg +3 -0
  102. package/src/assets/img/checked-vector.svg +3 -0
  103. package/src/assets/img/close-url.svg +10 -0
  104. package/src/assets/img/close.svg +10 -0
  105. package/src/assets/img/comment-cancel.svg +4 -0
  106. package/src/assets/img/comment-check.svg +5 -0
  107. package/src/assets/img/delete.svg +14 -0
  108. package/src/assets/img/desktop-refresh-btn.svg +6 -0
  109. package/src/assets/img/down-arrow.svg +3 -0
  110. package/src/assets/img/drawer-back.svg +4 -0
  111. package/src/assets/img/dropdown-arrow-disabled.svg +3 -0
  112. package/src/assets/img/dropdown-arrow.svg +3 -0
  113. package/src/assets/img/export.svg +5 -0
  114. package/src/assets/img/eye-close.svg +4 -0
  115. package/src/assets/img/eye-open.svg +4 -0
  116. package/src/assets/img/grid-action-copy.svg +6 -0
  117. package/src/assets/img/grid-action-delete.svg +14 -0
  118. package/src/assets/img/grid-action-detail.svg +7 -0
  119. package/src/assets/img/grid-action-download.svg +7 -0
  120. package/src/assets/img/grid-action-edit.svg +4 -0
  121. package/src/assets/img/grid-action-export.svg +12 -0
  122. package/src/assets/img/grid-action-move.svg +8 -0
  123. package/src/assets/img/grid-action-note.svg +10 -0
  124. package/src/assets/img/grid-action-send.svg +5 -0
  125. package/src/assets/img/grid-action-settle.svg +13 -0
  126. package/src/assets/img/grid-menu-arrow-right.svg +3 -0
  127. package/src/assets/img/grid-pager-arrow-left.svg +3 -0
  128. package/src/assets/img/grid-pager-arrows-left.svg +4 -0
  129. package/src/assets/img/icon-more-active.svg +7 -0
  130. package/src/assets/img/icon-more.svg +7 -0
  131. package/src/assets/img/more.svg +5 -0
  132. package/src/assets/img/notification-close.svg +4 -0
  133. package/src/assets/img/notification-collapse.svg +14 -0
  134. package/src/assets/img/notification-status-error.svg +5 -0
  135. package/src/assets/img/notification-status-loading.svg +9 -0
  136. package/src/assets/img/notification-status-success.svg +4 -0
  137. package/src/assets/img/notification-status-warning.svg +5 -0
  138. package/src/assets/img/plus.svg +4 -0
  139. package/src/assets/img/raise_loading.gif +0 -0
  140. package/src/assets/img/raise_logo_main.svg +13 -0
  141. package/src/assets/img/search.svg +4 -0
  142. package/src/assets/img/split-button-arrow.svg +3 -0
  143. package/src/assets/img/table-column-menu.svg +5 -0
  144. package/src/assets/img/table-sort-arrow.svg +6 -0
  145. package/src/assets/img/tag-remove.svg +4 -0
  146. package/src/assets/img/toggle-menu-icon.svg +3 -0
  147. package/src/assets/img/toolbar-action-add.svg +4 -0
  148. package/src/assets/img/toolbar-action-delete.svg +14 -0
  149. package/src/assets/img/toolbar-action-download.svg +5 -0
  150. package/src/assets/img/toolbar-action-duplicate.svg +6 -0
  151. package/src/assets/img/toolbar-action-export.svg +5 -0
  152. package/src/assets/img/toolbar-action-import.svg +5 -0
  153. package/src/assets/img/toolbar-action-refresh.svg +14 -0
  154. package/src/assets/img/toolbar-action-upload.svg +5 -0
  155. package/src/assets/img/tooltip-icon.svg +4 -0
  156. package/src/assets/language/fr.ts +3603 -0
  157. package/src/assets/language/ja.ts +3501 -0
  158. package/src/assets/language/ko.ts +3478 -0
  159. package/src/assets/language/zh-CN.ts +3115 -0
  160. package/src/assets/language/zh-TW.ts +3411 -0
  161. package/src/assets/style/reset/button.scss +187 -0
  162. package/src/assets/style/reset/checkbox.scss +33 -0
  163. package/src/assets/style/reset/dropdown.scss +564 -0
  164. package/src/assets/style/reset/grid.scss +845 -0
  165. package/src/assets/style/reset/input.scss +97 -0
  166. package/src/assets/style/reset/mat-dialog.scss +7 -0
  167. package/src/assets/style/reset/radio.scss +37 -0
  168. package/src/assets/style/reset/switch.scss +32 -0
  169. package/src/assets/style/style.scss +63 -0
  170. package/src/assets/style/syncfusion.min.css +1 -0
  171. package/src/assets/style/variables.scss +60 -0
@@ -0,0 +1,461 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
2
+ import { times } from "lodash";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@syncfusion/ej2-angular-grids";
6
+ import * as i3 from "@syncfusion/ej2-angular-charts";
7
+ export class CommonGridComponent {
8
+ ref;
9
+ grid;
10
+ showCheckBox = true;
11
+ loaded = true;
12
+ hiddenLoaded = false;
13
+ authorized = true; // Dataset是否授权,未授权则显示权限错误提示
14
+ // only use for local data pagination
15
+ selectedDiffKey = "";
16
+ gridHeight = "";
17
+ // 这玩意必填,不然filter columnChooser都会报错
18
+ gridId = "grid";
19
+ resizeSettings = { mode: "Auto" };
20
+ filterSettings = { type: "Menu" };
21
+ template;
22
+ fields = [];
23
+ dataSource = [];
24
+ editSettings;
25
+ columnTemplate;
26
+ pageSettings;
27
+ allowPaging = true;
28
+ clipMode = "EllipsisWithTooltip";
29
+ checkBoxWidth = 32; // col 数量过少的时候,check宽度会拉伸,这时候设置null
30
+ childGrid;
31
+ frozenColumns; // col 数量过少的时候,check宽度会拉伸,这时候设置null
32
+ columnChooserSettings;
33
+ /**
34
+ * Sample: [
35
+ {
36
+ text: "Preview",
37
+ target: ".e-content",
38
+ id: "preview-icon",
39
+ iconCss: "preview",
40
+ },
41
+ {
42
+ text: "Download",
43
+ target: ".e-content",
44
+ id: "download-icon",
45
+ iconCss: "download",
46
+ }
47
+ ]
48
+ 用于定义row中 点击事件
49
+ */
50
+ contextMenuItems = [];
51
+ // @Input() selectionSettings = { checkboxOnly: true, type: "Multiple" };
52
+ selectionSettings = {
53
+ type: "Multiple",
54
+ // persistSelection: true,
55
+ checkboxOnly: true,
56
+ };
57
+ alwaysShowCheckbox = false;
58
+ defaultRecord;
59
+ disableSystemRow = false; // 禁用IsSytem = true的整行
60
+ recordDoubleClick = new EventEmitter();
61
+ actionComplete = new EventEmitter();
62
+ rowSelected = new EventEmitter();
63
+ rowDeselected = new EventEmitter();
64
+ onContextMenu = new EventEmitter();
65
+ actionHandler = new EventEmitter();
66
+ queryCellInfo = new EventEmitter();
67
+ recordClick = new EventEmitter();
68
+ actionBegin = new EventEmitter();
69
+ rowDataBound = new EventEmitter();
70
+ dataBound = new EventEmitter();
71
+ exportQueryCellInfo = new EventEmitter();
72
+ rowSelecting = new EventEmitter();
73
+ selectId = [];
74
+ startPaging = false;
75
+ indexList = [];
76
+ className = "grid-loading";
77
+ translation;
78
+ constructor(ref) {
79
+ this.ref = ref;
80
+ this.translation = JSON.parse(localStorage.getItem("translation"));
81
+ }
82
+ ngOnInit() {
83
+ if (this.hiddenLoaded)
84
+ this.className = "";
85
+ this.gridId =
86
+ this.gridId + Date.now() + "_" + Math.random().toString(36).slice(2, 5);
87
+ this.ref && this.ref.markForCheck();
88
+ }
89
+ trackByFn(index, item) {
90
+ return index; // or a unique identifier in your object
91
+ }
92
+ ngOnChanges(changes) {
93
+ if (changes.dataSource && changes.dataSource.currentValue) {
94
+ if (this.allowPaging &&
95
+ changes.dataSource.currentValue.length &&
96
+ !this.pageSettings) {
97
+ this.pageSettings =
98
+ changes.dataSource.currentValue.length > 9
99
+ ? {
100
+ pageSizes: ["All", "25", "50", "100"],
101
+ pageSize: 50,
102
+ }
103
+ : null;
104
+ }
105
+ }
106
+ }
107
+ _load() {
108
+ if (!this.authorized) {
109
+ this.grid.localeObj.localeStrings.EmptyRecord =
110
+ this.translation.YOU_DO_NOT_HAVE_THE_DATASET_PERMISSION ||
111
+ "You don't have the dataset permission to view the record.";
112
+ }
113
+ }
114
+ _dataBound(args) {
115
+ // 整个组件加载完成时的回调函数
116
+ var pagerContainer = document.querySelector(".e-pagercontainer");
117
+ if (pagerContainer) {
118
+ var linkElements = pagerContainer.querySelectorAll(".e-link");
119
+ linkElements.forEach(function (element) {
120
+ element.removeAttribute("href"); // SMP2-10310 删除分页器的href属性
121
+ });
122
+ }
123
+ if (this.selectedDiffKey) {
124
+ setTimeout(() => {
125
+ this.chooseRecords();
126
+ });
127
+ }
128
+ this.dataBound.emit(args);
129
+ }
130
+ _exportQueryCellInfo(args) {
131
+ this.exportQueryCellInfo.emit(args);
132
+ }
133
+ _recordDoubleClick($event) {
134
+ this.recordDoubleClick.emit($event);
135
+ }
136
+ /**
137
+ * [selectionSettings]="{ checkboxOnly: true }"
138
+ [showCheckBox]="true"
139
+ 控件使用时,必须配置上面两个属性,否则,全选会失效
140
+ */
141
+ _rowSelected($event) {
142
+ if (this.selectedDiffKey) {
143
+ if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {
144
+ if ($event.data && $event.data.length) {
145
+ $event.data.forEach((item) => {
146
+ item.isSelected = true;
147
+ this.selectId.push(item);
148
+ });
149
+ this.dataSource.forEach((data) => {
150
+ $event.data.forEach((_data) => {
151
+ if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {
152
+ data.isSelected = true;
153
+ }
154
+ });
155
+ });
156
+ }
157
+ }
158
+ else {
159
+ $event.data.isSelected = true;
160
+ this.selectId.push($event.data);
161
+ this.dataSource.forEach((data) => {
162
+ if (data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]) {
163
+ data.isSelected = true;
164
+ }
165
+ });
166
+ }
167
+ this.ref && this.ref.markForCheck();
168
+ }
169
+ this.rowSelected.emit($event);
170
+ }
171
+ _rowDeselected($event) {
172
+ if (this.selectedDiffKey) {
173
+ if (this.startPaging) {
174
+ return;
175
+ }
176
+ if ($event.isHeaderCheckboxClicked && Array.isArray($event.data)) {
177
+ $event.data.forEach((item) => {
178
+ item.isSelected = false;
179
+ });
180
+ this.selectId = [];
181
+ this.dataSource.forEach((data) => {
182
+ $event.data.forEach((_data) => {
183
+ if (_data[this.selectedDiffKey] === data[this.selectedDiffKey]) {
184
+ data.isSelected = false;
185
+ }
186
+ });
187
+ });
188
+ }
189
+ else {
190
+ $event.data.isSelected = false;
191
+ this.selectId = this.selectId.filter((item) => item[this.selectedDiffKey] !== $event.data[this.selectedDiffKey]);
192
+ this.dataSource.forEach((data) => {
193
+ if (data[this.selectedDiffKey] === $event.data[this.selectedDiffKey]) {
194
+ data.isSelected = false;
195
+ }
196
+ });
197
+ }
198
+ this.ref && this.ref.markForCheck();
199
+ }
200
+ this.rowDeselected.emit($event);
201
+ }
202
+ _onContextMenu(args) {
203
+ this.onContextMenu.emit(args);
204
+ }
205
+ _actionBegin(args) {
206
+ if (this.selectedDiffKey &&
207
+ (args.requestType === "paging" ||
208
+ args.requestType === "searching" ||
209
+ args.requestType === "filtering" ||
210
+ args.requestType === "sorting")) {
211
+ this.startPaging = true;
212
+ }
213
+ if (args.requestType == "filterchoicerequest" ||
214
+ args.requestType === "filtersearchbegin") {
215
+ args.filterChoiceCount = 15000;
216
+ }
217
+ this.actionBegin.emit(args);
218
+ }
219
+ search(keywords) {
220
+ this.grid.search(keywords);
221
+ }
222
+ selectRows(indexList) {
223
+ this.grid.selectRows(indexList);
224
+ }
225
+ selectRow(index) {
226
+ this.grid.selectRow(index);
227
+ }
228
+ getCurrentViewRecords() {
229
+ return this.grid.getCurrentViewRecords();
230
+ }
231
+ customiseCell($event) {
232
+ this.queryCellInfo.emit($event);
233
+ }
234
+ contextMenuOpen(args) {
235
+ const data = args.rowInfo.rowData;
236
+ if (!data) {
237
+ args.cancel = true;
238
+ return;
239
+ }
240
+ let enableItems = [];
241
+ let hideItems = [];
242
+ this.grid.contextMenuModule.contextMenu.refresh(); // 每次点击按钮弹窗前需再次初始化状态 否则不更新;
243
+ this.contextMenuItems.forEach((item) => {
244
+ // 用于处理部分按钮disabled的情况
245
+ if (item.disabled ||
246
+ (data.disableItem && data.disableItem.includes(item.iconCss))) {
247
+ enableItems.push(item.text);
248
+ // this.grid.contextMenuModule.contextMenu.enableItems(
249
+ // [item.text],
250
+ // false
251
+ // );
252
+ }
253
+ // 用于处理部分按钮需要hide的情况
254
+ if (item.isHide ||
255
+ (data.hideItem && data.hideItem.includes(item.iconCss))) {
256
+ hideItems.push(item.text);
257
+ // this.grid.contextMenuModule.contextMenu.hideItems(
258
+ // [item.text],
259
+ // false
260
+ // );
261
+ }
262
+ });
263
+ this.grid.contextMenuModule.contextMenu.enableItems(enableItems, false);
264
+ this.grid.contextMenuModule.contextMenu.hideItems(hideItems, false);
265
+ }
266
+ _actionHandler($event) {
267
+ if (this.selectedDiffKey &&
268
+ ($event.requestType === "paging" ||
269
+ $event.requestType === "searching" ||
270
+ $event.requestType === "filtering" ||
271
+ $event.requestType === "sorting")) {
272
+ this.indexList = [];
273
+ setTimeout(() => {
274
+ this.chooseRecords();
275
+ this.startPaging = false;
276
+ this.ref && this.ref.detectChanges();
277
+ this.ref && this.ref.markForCheck();
278
+ });
279
+ }
280
+ this.actionHandler.emit($event);
281
+ this.actionComplete.emit($event);
282
+ }
283
+ chooseRecords() {
284
+ this.indexList = [];
285
+ this.dataSource.forEach((data) => {
286
+ this.grid.getCurrentViewRecords().forEach((row, i) => {
287
+ if (row &&
288
+ data[this.selectedDiffKey] === row[this.selectedDiffKey] &&
289
+ data.isSelected) {
290
+ this.indexList.push(i);
291
+ }
292
+ });
293
+ });
294
+ this.grid.selectRows(this.indexList);
295
+ }
296
+ _recordClick($event) {
297
+ this.recordClick.emit($event);
298
+ }
299
+ refresh() {
300
+ this.grid.refresh();
301
+ }
302
+ _rowSelecting(e) {
303
+ this.rowSelecting.emit(e);
304
+ }
305
+ refreshColumns() {
306
+ this.grid.refreshColumns();
307
+ }
308
+ refreshHeader() {
309
+ this.grid.refreshHeader();
310
+ }
311
+ export(excelExportProperties) {
312
+ this.grid.excelExport(excelExportProperties);
313
+ }
314
+ getSelectedRecords() {
315
+ return this.grid.getSelectedRecords();
316
+ }
317
+ _rowDataBound($event) {
318
+ if (this.disableSystemRow && $event.data && $event.data.IsSystem) {
319
+ $event.row.classList.add("e-disabled");
320
+ }
321
+ this.rowDataBound.emit($event);
322
+ }
323
+ clearSelection() {
324
+ this.grid.clearSelection();
325
+ }
326
+ excelExport() {
327
+ this.grid.excelExport();
328
+ }
329
+ addItem() {
330
+ this.grid.addRecord({ ...this.defaultRecord, isNew: true }, 0);
331
+ setTimeout(() => {
332
+ this.grid.selectRow(0);
333
+ this.grid.startEdit();
334
+ }, 30);
335
+ }
336
+ saveItem() {
337
+ this.grid.endEdit();
338
+ }
339
+ editItem(index) {
340
+ setTimeout(() => {
341
+ this.grid.selectRow(Number(index));
342
+ this.grid.startEdit();
343
+ }, 30);
344
+ }
345
+ deleteItem(index) {
346
+ this.grid.selectRow(Number(index));
347
+ var selectedRecord = this.grid.getSelectedRecords()[0];
348
+ this.grid.deleteRecord(selectedRecord);
349
+ }
350
+ cancelItem(index) {
351
+ this.grid.closeEdit();
352
+ this.deleteItem(index);
353
+ }
354
+ initList = (num = 25, key = "Id") => {
355
+ const list = [];
356
+ times(num, (i) => {
357
+ list.push({
358
+ [key]: i,
359
+ });
360
+ });
361
+ return list;
362
+ };
363
+ showLoading() {
364
+ this.className = "grid-loading";
365
+ this.ref && this.ref.markForCheck();
366
+ this.ref && this.ref.detectChanges();
367
+ }
368
+ hideLoading() {
369
+ this.className = "";
370
+ this.ref && this.ref.markForCheck();
371
+ this.ref && this.ref.detectChanges();
372
+ }
373
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
374
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CommonGridComponent, selector: "rs-common-grid", inputs: { showCheckBox: "showCheckBox", loaded: "loaded", hiddenLoaded: "hiddenLoaded", authorized: "authorized", selectedDiffKey: "selectedDiffKey", gridHeight: "gridHeight", gridId: "gridId", resizeSettings: "resizeSettings", filterSettings: "filterSettings", template: "template", fields: "fields", dataSource: "dataSource", editSettings: "editSettings", columnTemplate: "columnTemplate", pageSettings: "pageSettings", allowPaging: "allowPaging", clipMode: "clipMode", checkBoxWidth: "checkBoxWidth", childGrid: "childGrid", frozenColumns: "frozenColumns", columnChooserSettings: "columnChooserSettings", contextMenuItems: "contextMenuItems", selectionSettings: "selectionSettings", alwaysShowCheckbox: "alwaysShowCheckbox", defaultRecord: "defaultRecord", disableSystemRow: "disableSystemRow" }, outputs: { recordDoubleClick: "recordDoubleClick", actionComplete: "actionComplete", rowSelected: "rowSelected", rowDeselected: "rowDeselected", onContextMenu: "onContextMenu", actionHandler: "actionHandler", queryCellInfo: "queryCellInfo", recordClick: "recordClick", actionBegin: "actionBegin", rowDataBound: "rowDataBound", dataBound: "dataBound", exportQueryCellInfo: "exportQueryCellInfo", rowSelecting: "rowSelecting" }, viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], usesOnChanges: true, ngImport: i0, 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\t[frozenColumns]=\"frozenColumns\"\r\n\t[columnChooserSettings]=\"columnChooserSettings\"\r\n\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\t[allowResizing]=\"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; let last = last\"\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 || 'string'\"\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\t[allowResizing]=\"!last\"\r\n\t\t>\r\n\t\t</e-column>\r\n\t</e-columns>\r\n</ejs-grid>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GridComponent, selector: "ejs-grid", inputs: ["adaptiveUIMode", "aggregates", "allowExcelExport", "allowFiltering", "allowGrouping", "allowKeyboard", "allowMultiSorting", "allowPaging", "allowPdfExport", "allowReordering", "allowResizing", "allowRowDragAndDrop", "allowSelection", "allowSorting", "allowTextWrap", "autoFit", "childGrid", "clipMode", "columnChooserSettings", "columnMenuItems", "columnQueryMode", "columns", "contextMenuItems", "cssClass", "currencyCode", "currentAction", "currentViewData", "dataSource", "detailTemplate", "editSettings", "ej2StatePersistenceVersion", "emptyRecordTemplate", "enableAdaptiveUI", "enableAltRow", "enableAutoFill", "enableColumnVirtualization", "enableHeaderFocus", "enableHover", "enableHtmlSanitizer", "enableImmutableMode", "enableInfiniteScrolling", "enablePersistence", "enableRtl", "enableStickyHeader", "enableVirtualMaskRow", "enableVirtualization", "exportGrids", "filterSettings", "frozenColumns", "frozenRows", "gridLines", "groupSettings", "height", "hierarchyPrintMode", "infiniteScrollSettings", "loadingIndicator", "locale", "pageSettings", "pagerTemplate", "parentDetails", "printMode", "query", "queryString", "resizeSettings", "rowDropSettings", "rowHeight", "rowRenderingMode", "rowTemplate", "searchSettings", "selectedRowIndex", "selectionSettings", "showColumnChooser", "showColumnMenu", "showHider", "sortSettings", "textWrapSettings", "toolbar", "toolbarTemplate", "width"], outputs: ["actionBegin", "actionComplete", "actionFailure", "batchAdd", "batchCancel", "batchDelete", "beforeAutoFill", "beforeBatchAdd", "beforeBatchDelete", "beforeBatchSave", "beforeCopy", "beforeDataBound", "beforeExcelExport", "beforeOpenAdaptiveDialog", "beforeOpenColumnChooser", "beforePaste", "beforePdfExport", "beforePrint", "beginEdit", "cellDeselected", "cellDeselecting", "cellEdit", "cellSave", "cellSaved", "cellSelected", "cellSelecting", "checkBoxChange", "columnDataStateChange", "columnDeselected", "columnDeselecting", "columnDrag", "columnDragStart", "columnDrop", "columnMenuClick", "columnMenuOpen", "columnSelected", "columnSelecting", "commandClick", "contextMenuClick", "contextMenuOpen", "created", "dataBound", "dataSourceChanged", "dataStateChange", "destroyed", "detailDataBound", "excelAggregateQueryCellInfo", "excelExportComplete", "excelHeaderQueryCellInfo", "excelQueryCellInfo", "exportDetailDataBound", "exportDetailTemplate", "exportGroupCaption", "headerCellInfo", "keyPressed", "lazyLoadGroupCollapse", "lazyLoadGroupExpand", "load", "pdfAggregateQueryCellInfo", "pdfExportComplete", "pdfHeaderQueryCellInfo", "pdfQueryCellInfo", "printComplete", "queryCellInfo", "recordClick", "recordDoubleClick", "resizeStart", "resizeStop", "resizing", "rowDataBound", "rowDeselected", "rowDeselecting", "rowDrag", "rowDragStart", "rowDragStartHelper", "rowDrop", "rowSelected", "rowSelecting", "toolbarClick", "dataSourceChange"] }, { kind: "directive", type: i2.ColumnDirective, selector: "ejs-grid>e-columns>e-column", inputs: ["allowEditing", "allowFiltering", "allowGrouping", "allowReordering", "allowResizing", "allowSearching", "allowSorting", "autoFit", "clipMode", "columns", "commands", "customAttributes", "dataSource", "defaultValue", "disableHtmlEncode", "displayAsCheckBox", "edit", "editTemplate", "editType", "enableGroupByFormat", "field", "filter", "filterBarTemplate", "filterTemplate", "foreignKeyField", "foreignKeyValue", "format", "formatter", "freeze", "headerTemplate", "headerText", "headerTextAlign", "headerValueAccessor", "hideAtMedia", "index", "isFrozen", "isIdentity", "isPrimaryKey", "lockColumn", "maxWidth", "minWidth", "showColumnMenu", "showInColumnChooser", "sortComparer", "template", "textAlign", "type", "uid", "validationRules", "valueAccessor", "visible", "width"] }, { kind: "directive", type: i2.ColumnsDirective, selector: "ejs-grid>e-columns" }, { kind: "directive", type: i2.AggregateColumnDirective, selector: "ejs-grid>e-aggregates>e-aggregate>e-columns>e-column", inputs: ["columnName", "customAggregate", "field", "footerTemplate", "format", "groupCaptionTemplate", "groupFooterTemplate", "type"] }, { kind: "directive", type: i2.AggregateColumnsDirective, selector: "ejs-grid>e-aggregates>e-aggregate>e-columns" }, { kind: "directive", type: i3.ColumnDirective, selector: "e-columns>e-column", inputs: ["border", "width"] }, { kind: "directive", type: i3.ColumnsDirective, selector: "ejs-chart>e-columns" }] });
375
+ }
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonGridComponent, decorators: [{
377
+ type: Component,
378
+ args: [{ selector: "rs-common-grid", 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\t[frozenColumns]=\"frozenColumns\"\r\n\t[columnChooserSettings]=\"columnChooserSettings\"\r\n\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\t[allowResizing]=\"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; let last = last\"\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 || 'string'\"\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\t[allowResizing]=\"!last\"\r\n\t\t>\r\n\t\t</e-column>\r\n\t</e-columns>\r\n</ejs-grid>\r\n" }]
379
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { grid: [{
380
+ type: ViewChild,
381
+ args: ["grid", { static: false }]
382
+ }], showCheckBox: [{
383
+ type: Input
384
+ }], loaded: [{
385
+ type: Input
386
+ }], hiddenLoaded: [{
387
+ type: Input
388
+ }], authorized: [{
389
+ type: Input
390
+ }], selectedDiffKey: [{
391
+ type: Input
392
+ }], gridHeight: [{
393
+ type: Input
394
+ }], gridId: [{
395
+ type: Input
396
+ }], resizeSettings: [{
397
+ type: Input
398
+ }], filterSettings: [{
399
+ type: Input
400
+ }], template: [{
401
+ type: Input
402
+ }], fields: [{
403
+ type: Input
404
+ }], dataSource: [{
405
+ type: Input
406
+ }], editSettings: [{
407
+ type: Input
408
+ }], columnTemplate: [{
409
+ type: Input
410
+ }], pageSettings: [{
411
+ type: Input
412
+ }], allowPaging: [{
413
+ type: Input
414
+ }], clipMode: [{
415
+ type: Input
416
+ }], checkBoxWidth: [{
417
+ type: Input
418
+ }], childGrid: [{
419
+ type: Input
420
+ }], frozenColumns: [{
421
+ type: Input
422
+ }], columnChooserSettings: [{
423
+ type: Input
424
+ }], contextMenuItems: [{
425
+ type: Input
426
+ }], selectionSettings: [{
427
+ type: Input
428
+ }], alwaysShowCheckbox: [{
429
+ type: Input
430
+ }], defaultRecord: [{
431
+ type: Input
432
+ }], disableSystemRow: [{
433
+ type: Input
434
+ }], recordDoubleClick: [{
435
+ type: Output
436
+ }], actionComplete: [{
437
+ type: Output
438
+ }], rowSelected: [{
439
+ type: Output
440
+ }], rowDeselected: [{
441
+ type: Output
442
+ }], onContextMenu: [{
443
+ type: Output
444
+ }], actionHandler: [{
445
+ type: Output
446
+ }], queryCellInfo: [{
447
+ type: Output
448
+ }], recordClick: [{
449
+ type: Output
450
+ }], actionBegin: [{
451
+ type: Output
452
+ }], rowDataBound: [{
453
+ type: Output
454
+ }], dataBound: [{
455
+ type: Output
456
+ }], exportQueryCellInfo: [{
457
+ type: Output
458
+ }], rowSelecting: [{
459
+ type: Output
460
+ }] } });
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2NvbW1vbi1ncmlkL2luZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhaXNlLWNvbW1vbi1saWIvc3JjL2xpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7OztBQVMvQixNQUFNLE9BQU8sbUJBQW1CO0lBNEVWO0lBMUViLElBQUksQ0FBZ0I7SUFDbEIsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCO0lBQ3ZELHFDQUFxQztJQUM1QixlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDekIsbUNBQW1DO0lBQzFCLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDaEIsY0FBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ2xDLGNBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNsQyxRQUFRLENBQU07SUFDZCxNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUM1QixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFlBQVksQ0FBQztJQUNiLGNBQWMsQ0FBbUI7SUFDakMsWUFBWSxDQUFDO0lBQ2IsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixRQUFRLEdBQUcscUJB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Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQW1CRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUtHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IHRpbWVzIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItaW5wdXRzXCI7XHJcbmltcG9ydCB7IElBY3Rpb25NZW51SXRlbSwgSUNvbHVtbkZpZWxkIH0gZnJvbSBcIi4uL2NvbnN0YW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZ3JpZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoXCJncmlkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBncmlkOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveCA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRkZW5Mb2FkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRob3JpemVkID0gdHJ1ZTsgLy8gRGF0YXNldOaYr+WQpuaOiOadg++8jOacquaOiOadg+WImeaYvuekuuadg+mZkOmUmeivr+aPkOekulxyXG4gIC8vIG9ubHkgdXNlIGZvciBsb2NhbCBkYXRhIHBhZ2luYXRpb25cclxuICBASW5wdXQoKSBzZWxlY3RlZERpZmZLZXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGdyaWRIZWlnaHQgPSBcIlwiO1xyXG4gIC8vIOi/meeOqeaEj+W/heWhq++8jOS4jeeEtmZpbHRlciBjb2x1bW5DaG9vc2Vy6YO95Lya5oql6ZSZXHJcbiAgQElucHV0KCkgZ3JpZElkID0gXCJncmlkXCI7XHJcbiAgQElucHV0KCkgcmVzaXplU2V0dGluZ3MgPSB7IG1vZGU6IFwiQXV0b1wiIH07XHJcbiAgQElucHV0KCkgZmlsdGVyU2V0dGluZ3MgPSB7IHR5cGU6IFwiTWVudVwiIH07XHJcbiAgQElucHV0KCkgdGVtcGxhdGU6IGFueTtcclxuICBASW5wdXQoKSBmaWVsZHM6IElDb2x1bW5GaWVsZFtdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRTZXR0aW5ncztcclxuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwYWdlU2V0dGluZ3M7XHJcbiAgQElucHV0KCkgYWxsb3dQYWdpbmcgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNsaXBNb2RlID0gXCJFbGxpcHNpc1dpdGhUb29sdGlwXCI7XHJcbiAgQElucHV0KCkgY2hlY2tCb3hXaWR0aCA9IDMyOyAvLyBjb2wg5pWw6YeP6L+H5bCR55qE5pe25YCZ77yMY2hlY2vlrr3luqbkvJrmi4nkvLjvvIzov5nml7blgJnorr7nva5udWxsXHJcbiAgQElucHV0KCkgY2hpbGRHcmlkO1xyXG4gIEBJbnB1dCgpIGZyb3plbkNvbHVtbnM7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjb2x1bW5DaG9vc2VyU2V0dGluZ3M7XHJcblxyXG4gIC8qKlxyXG5cdCAqIFNhbXBsZTogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dGV4dDogXCJQcmV2aWV3XCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJwcmV2aWV3LWljb25cIixcclxuXHRcdFx0XHRpY29uQ3NzOiBcInByZXZpZXdcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiRG93bmxvYWRcIixcclxuXHRcdFx0XHR0YXJnZXQ6IFwiLmUtY29udGVudFwiLFxyXG5cdFx0XHRcdGlkOiBcImRvd25sb2FkLWljb25cIixcclxuXHRcdFx0XHRpY29uQ3NzOiBcImRvd25sb2FkXCIsXHJcblx0XHRcdH1cclxuXHRcdF1cclxuXHRcdOeUqOS6juWumuS5iXJvd+S4rSDngrnlh7vkuovku7ZcclxuXHQgKi9cclxuICBASW5wdXQoKSBjb250ZXh0TWVudUl0ZW1zOiBJQWN0aW9uTWVudUl0ZW1bXSA9IFtdO1xyXG4gIC8vIEBJbnB1dCgpIHNlbGVjdGlvblNldHRpbmdzID0geyBjaGVja2JveE9ubHk6IHRydWUsIHR5cGU6IFwiTXVsdGlwbGVcIiB9O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvblNldHRpbmdzID0ge1xyXG4gICAgdHlwZTogXCJNdWx0aXBsZVwiLFxyXG4gICAgLy8gcGVyc2lzdFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIGNoZWNrYm94T25seTogdHJ1ZSxcclxuICB9O1xyXG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRSZWNvcmQ6IGFueTtcclxuICBASW5wdXQoKSBkaXNhYmxlU3lzdGVtUm93OiBib29sZWFuID0gZmFsc2U7IC8vIOemgeeUqElzU3l0ZW0gPSB0cnVl55qE5pW06KGMXHJcblxyXG4gIEBPdXRwdXQoKSByZWNvcmREb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dEZXNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25IYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeUNlbGxJbmZvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWNvcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQmVnaW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RhdGFCb3VuZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBleHBvcnRRdWVyeUNlbGxJbmZvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNlbGVjdElkID0gW107XHJcbiAgc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICBpbmRleExpc3QgPSBbXTtcclxuICBjbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZGRlbkxvYWRlZCkgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5ncmlkSWQgPVxyXG4gICAgICB0aGlzLmdyaWRJZCArIERhdGUubm93KCkgKyBcIl9cIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDUpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDsgLy8gb3IgYSB1bmlxdWUgaWRlbnRpZmllciBpbiB5b3VyIG9iamVjdFxyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5kYXRhU291cmNlICYmIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuYWxsb3dQYWdpbmcgJiZcclxuICAgICAgICBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlLmxlbmd0aCAmJlxyXG4gICAgICAgICF0aGlzLnBhZ2VTZXR0aW5nc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnBhZ2VTZXR0aW5ncyA9XHJcbiAgICAgICAgICBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlLmxlbmd0aCA+IDlcclxuICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZXM6IFtcIkFsbFwiLCBcIjI1XCIsIFwiNTBcIiwgXCIxMDBcIl0sXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogNTAsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9sb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWQpIHtcclxuICAgICAgKHRoaXMuZ3JpZC5sb2NhbGVPYmogYXMgYW55KS5sb2NhbGVTdHJpbmdzLkVtcHR5UmVjb3JkID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLllPVV9ET19OT1RfSEFWRV9USEVfREFUQVNFVF9QRVJNSVNTSU9OIHx8XHJcbiAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgZGF0YXNldCBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIHJlY29yZC5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9kYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICAvLyDmlbTkuKrnu4Tku7bliqDovb3lrozmiJDml7bnmoTlm57osIPlh73mlbBcclxuICAgIHZhciBwYWdlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1wYWdlcmNvbnRhaW5lclwiKTtcclxuICAgIGlmIChwYWdlckNvbnRhaW5lcikge1xyXG4gICAgICB2YXIgbGlua0VsZW1lbnRzID0gcGFnZXJDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5lLWxpbmtcIik7XHJcbiAgICAgIGxpbmtFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJocmVmXCIpOyAvLyBTTVAyLTEwMzEwIOWIoOmZpOWIhumhteWZqOeahGhyZWblsZ7mgKdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQm91bmQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9leHBvcnRRdWVyeUNlbGxJbmZvKGFyZ3MpIHtcclxuICAgIHRoaXMuZXhwb3J0UXVlcnlDZWxsSW5mby5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZERvdWJsZUNsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmREb3VibGVDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG5cdCAqIFtzZWxlY3Rpb25TZXR0aW5nc109XCJ7IGNoZWNrYm94T25seTogdHJ1ZSB9XCJcclxuXHQgICBbc2hvd0NoZWNrQm94XT1cInRydWVcIlxyXG5cdCAgIOaOp+S7tuS9v+eUqOaXtu+8jOW/hemhu+mFjee9ruS4iumdouS4pOS4quWxnuaAp++8jOWQpuWIme+8jOWFqOmAieS8muWkseaViFxyXG5cdCAqL1xyXG4gIF9yb3dTZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgaWYgKCRldmVudC5kYXRhICYmICRldmVudC5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goJGV2ZW50LmRhdGEpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAodGhpcy5zdGFydFBhZ2luZykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IFtdO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IHRoaXMuc2VsZWN0SWQuZmlsdGVyKFxyXG4gICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5zZWxlY3RlZERpZmZLZXldICE9PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGVzZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfb25Db250ZXh0TWVudShhcmdzKSB7XHJcbiAgICB0aGlzLm9uQ29udGV4dE1lbnUuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25CZWdpbihhcmdzKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgIChhcmdzLnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzZWFyY2hpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PSBcImZpbHRlcmNob2ljZXJlcXVlc3RcIiB8fFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcnNlYXJjaGJlZ2luXCJcclxuICAgICkge1xyXG4gICAgICBhcmdzLmZpbHRlckNob2ljZUNvdW50ID0gMTUwMDA7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuYWN0aW9uQmVnaW4uZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaChrZXl3b3Jkcykge1xyXG4gICAgdGhpcy5ncmlkLnNlYXJjaChrZXl3b3Jkcyk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvd3MoaW5kZXhMaXN0OiBudW1iZXJbXSkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvd3MoaW5kZXhMaXN0KTtcclxuICB9XHJcbiAgc2VsZWN0Um93KGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KGluZGV4KTtcclxuICB9XHJcbiAgZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRDdXJyZW50Vmlld1JlY29yZHMoKTtcclxuICB9XHJcblxyXG4gIGN1c3RvbWlzZUNlbGwoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnF1ZXJ5Q2VsbEluZm8uZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dE1lbnVPcGVuKGFyZ3M/OiBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSAoYXJncyBhcyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfCBhbnkpLnJvd0luZm8ucm93RGF0YTtcclxuICAgIGlmICghZGF0YSkge1xyXG4gICAgICBhcmdzLmNhbmNlbCA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBlbmFibGVJdGVtcyA9IFtdO1xyXG4gICAgbGV0IGhpZGVJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LnJlZnJlc2goKTsgLy8g5q+P5qyh54K55Ye75oyJ6ZKu5by556qX5YmN6ZyA5YaN5qyh5Yid5aeL5YyW54q25oCBIOWQpuWImeS4jeabtOaWsO+8m1xyXG4gICAgdGhpcy5jb250ZXh0TWVudUl0ZW1zLmZvckVhY2goKGl0ZW06IElBY3Rpb25NZW51SXRlbSkgPT4ge1xyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq5kaXNhYmxlZOeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5kaXNhYmxlZCB8fFxyXG4gICAgICAgIChkYXRhLmRpc2FibGVJdGVtICYmIGRhdGEuZGlzYWJsZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgZW5hYmxlSXRlbXMucHVzaChpdGVtLnRleHQpO1xyXG4gICAgICAgIC8vIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrumcgOimgWhpZGXnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uaXNIaWRlIHx8XHJcbiAgICAgICAgKGRhdGEuaGlkZUl0ZW0gJiYgZGF0YS5oaWRlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBoaWRlSXRlbXMucHVzaChpdGVtLnRleHQpO1xyXG4gICAgICAgIC8vIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5oaWRlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoZW5hYmxlSXRlbXMsIGZhbHNlKTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5oaWRlSXRlbXMoaGlkZUl0ZW1zLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBfYWN0aW9uSGFuZGxlcigkZXZlbnQpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERpZmZLZXkgJiZcclxuICAgICAgKCRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJwYWdpbmdcIiB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJzZWFyY2hpbmdcIiB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJpbmdcIiB8fFxyXG4gICAgICAgICRldmVudC5yZXF1ZXN0VHlwZSA9PT0gXCJzb3J0aW5nXCIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbmRleExpc3QgPSBbXTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGlvbkhhbmRsZXIuZW1pdCgkZXZlbnQpO1xyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNob29zZVJlY29yZHMoKSB7XHJcbiAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpLmZvckVhY2goKHJvdzogYW55LCBpKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcm93ICYmXHJcbiAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gcm93W3RoaXMuc2VsZWN0ZWREaWZmS2V5XSAmJlxyXG4gICAgICAgICAgZGF0YS5pc1NlbGVjdGVkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmluZGV4TGlzdC5wdXNoKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyh0aGlzLmluZGV4TGlzdCk7XHJcbiAgfVxyXG5cclxuICBfcmVjb3JkQ2xpY2soJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZENsaWNrLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIF9yb3dTZWxlY3RpbmcoZSkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcuZW1pdChlKTtcclxuICB9XHJcbiAgcmVmcmVzaENvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaENvbHVtbnMoKTtcclxuICB9XHJcbiAgcmVmcmVzaEhlYWRlcigpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoSGVhZGVyKCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzPykge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KGV4Y2VsRXhwb3J0UHJvcGVydGllcyk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZFJlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RhdGFCb3VuZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVTeXN0ZW1Sb3cgJiYgJGV2ZW50LmRhdGEgJiYgJGV2ZW50LmRhdGEuSXNTeXN0ZW0pIHtcclxuICAgICAgJGV2ZW50LnJvdy5jbGFzc0xpc3QuYWRkKFwiZS1kaXNhYmxlZFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGF0YUJvdW5kLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5ncmlkLmNsZWFyU2VsZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBleGNlbEV4cG9ydCgpIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5hZGRSZWNvcmQoeyAuLi50aGlzLmRlZmF1bHRSZWNvcmQsIGlzTmV3OiB0cnVlIH0sIDApO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coMCk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIHNhdmVJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmVuZEVkaXQoKTtcclxuICB9XHJcblxyXG4gIGVkaXRJdGVtKGluZGV4KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhOdW1iZXIoaW5kZXgpKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhOdW1iZXIoaW5kZXgpKTtcclxuICAgIHZhciBzZWxlY3RlZFJlY29yZCA9IHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKVswXSBhcyBhbnk7XHJcbiAgICB0aGlzLmdyaWQuZGVsZXRlUmVjb3JkKHNlbGVjdGVkUmVjb3JkIGFzIHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuY2xvc2VFZGl0KCk7XHJcbiAgICB0aGlzLmRlbGV0ZUl0ZW0oaW5kZXgpO1xyXG4gIH1cclxuICBwdWJsaWMgaW5pdExpc3QgPSAobnVtID0gMjUsIGtleSA9IFwiSWRcIikgPT4ge1xyXG4gICAgY29uc3QgbGlzdCA9IFtdO1xyXG4gICAgdGltZXMobnVtLCAoaSkgPT4ge1xyXG4gICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgIFtrZXldOiBpLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfTtcclxuICBwdWJsaWMgc2hvd0xvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiZ3JpZC1sb2FkaW5nXCI7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlTG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZWpzLWdyaWRcclxuXHQjZ3JpZFxyXG5cdFtpZF09XCJncmlkSWRcIlxyXG5cdFtuZ0NsYXNzXT1cIntcclxuXHRcdCdoaWRlLUNoZWNrLWJveCc6ICFhbHdheXNTaG93Q2hlY2tib3gsXHJcblx0XHQnZ3JpZC1sb2FkaW5nJzogY2xhc3NOYW1lID09PSAnZ3JpZC1sb2FkaW5nJ1xyXG5cdH1cIlxyXG5cdFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG5cdFthbGxvd1BhZ2luZ109XCJhbGxvd1BhZ2luZyAmJiBwYWdlU2V0dGluZ3NcIlxyXG5cdFthbGxvd1Jlc2l6aW5nXT1cInRydWVcIlxyXG5cdFtwYWdlU2V0dGluZ3NdPVwicGFnZVNldHRpbmdzXCJcclxuXHRbc2hvd0NvbHVtbk1lbnVdPVwidHJ1ZVwiXHJcblx0W2FsbG93U29ydGluZ109XCJ0cnVlXCJcclxuXHRbYWxsb3dGaWx0ZXJpbmddPVwidHJ1ZVwiXHJcblx0W2FsbG93RXhjZWxFeHBvcnRdPVwidHJ1ZVwiXHJcblx0W2ZpbHRlclNldHRpbmdzXT1cImZpbHRlclNldHRpbmdzXCJcclxuXHRbcmVzaXplU2V0dGluZ3NdPVwicmVzaXplU2V0dGluZ3NcIlxyXG5cdFthbGxvd1NlbGVjdGlvbl09XCJ0cnVlXCJcclxuXHRbZWRpdFNldHRpbmdzXT1cImVkaXRTZXR0aW5nc1wiXHJcblx0W2NoaWxkR3JpZF09XCJjaGlsZEdyaWRcIlxyXG5cdFtjb250ZXh0TWVudUl0ZW1zXT1cIlxyXG5cdFx0ZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLmxlbmd0aCA/IGNvbnRleHRNZW51SXRlbXMgOiBudWxsXHJcblx0XCJcclxuXHRbc2VsZWN0aW9uU2V0dGluZ3NdPVwic2VsZWN0aW9uU2V0dGluZ3NcIlxyXG5cdChyZWNvcmRDbGljayk9XCJfcmVjb3JkQ2xpY2soJGV2ZW50KVwiXHJcblx0KHJlY29yZERvdWJsZUNsaWNrKT1cIl9yZWNvcmREb3VibGVDbGljaygkZXZlbnQpXCJcclxuXHQoYWN0aW9uQmVnaW4pPVwiX2FjdGlvbkJlZ2luKCRldmVudClcIlxyXG5cdChhY3Rpb25Db21wbGV0ZSk9XCJfYWN0aW9uSGFuZGxlcigkZXZlbnQpXCJcclxuXHQocm93U2VsZWN0ZWQpPVwiX3Jvd1NlbGVjdGVkKCRldmVudClcIlxyXG5cdChyb3dEZXNlbGVjdGVkKT1cIl9yb3dEZXNlbGVjdGVkKCRldmVudClcIlxyXG5cdHN0eWxlPVwiYm9yZGVyOiBub25lXCJcclxuXHQoY29udGV4dE1lbnVDbGljayk9XCJfb25Db250ZXh0TWVudSgkZXZlbnQpXCJcclxuXHQoY29udGV4dE1lbnVPcGVuKT1cImNvbnRleHRNZW51T3BlbigkZXZlbnQpXCJcclxuXHQocXVlcnlDZWxsSW5mbyk9XCJjdXN0b21pc2VDZWxsKCRldmVudClcIlxyXG5cdChkYXRhQm91bmQpPVwiX2RhdGFCb3VuZCgkZXZlbnQpXCJcclxuXHQocm93RGF0YUJvdW5kKT1cIl9yb3dEYXRhQm91bmQoJGV2ZW50KVwiXHJcblx0KHJvd1NlbGVjdGluZyk9XCJfcm93U2VsZWN0aW5nKCRldmVudClcIlxyXG5cdChleGNlbFF1ZXJ5Q2VsbEluZm8pPVwiX2V4cG9ydFF1ZXJ5Q2VsbEluZm8oJGV2ZW50KVwiXHJcblx0KGxvYWQpPVwiX2xvYWQoKVwiXHJcblx0W2Zyb3plbkNvbHVtbnNdPVwiZnJvemVuQ29sdW1uc1wiXHJcblx0W2NvbHVtbkNob29zZXJTZXR0aW5nc109XCJjb2x1bW5DaG9vc2VyU2V0dGluZ3NcIlxyXG5cclxuPlxyXG5cdDxlLWNvbHVtbnM+XHJcblx0XHQ8ZS1jb2x1bW5cclxuXHRcdFx0Km5nSWY9XCJzaG93Q2hlY2tCb3hcIlxyXG5cdFx0XHR0eXBlPVwiY2hlY2tib3hcIlxyXG5cdFx0XHRbd2lkdGhdPVwiY2hlY2tCb3hXaWR0aFwiXHJcblx0XHRcdFtzaG93Q29sdW1uTWVudV09XCJmYWxzZVwiXHJcblx0XHRcdFthbGxvd1Jlc2l6aW5nXT1cImZhbHNlXCJcclxuXHRcdD48L2UtY29sdW1uPlxyXG5cdFx0PGUtY29sdW1uXHJcblx0XHRcdCpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkczsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgbGFzdCA9IGxhc3RcIlxyXG5cdFx0XHRbZmllbGRdPVwiaXRlbS5jb2x1bW5OYW1lXCJcclxuXHRcdFx0W2ZpbHRlcl09XCJpdGVtLmZpbHRlciA/IGl0ZW0uZmlsdGVyIDogeyB0eXBlOiAnQ2hlY2tCb3gnIH1cIlxyXG5cdFx0XHRbY3VzdG9tQXR0cmlidXRlc109XCJcclxuXHRcdFx0XHRpdGVtLmNvbE5hbWUgPT09ICdlbnRpdHlVc2VyTGlzdCcgfHxcclxuXHRcdFx0XHRpdGVtLmNvbE5hbWUgPT09ICdreWNQcm9ncmVzcydcclxuXHRcdFx0XHRcdD8geyBjbGFzczogJ2hpZGVDb2x1bW5GaWx0ZXJDbGFzcycgfVxyXG5cdFx0XHRcdFx0OiB7fVxyXG5cdFx0XHRcIlxyXG5cdFx0XHRbaGVhZGVyVGV4dF09XCJpdGVtLmNvbHVtbkRpc3BsYXlOYW1lXCJcclxuXHRcdFx0W3RleHRBbGlnbl09XCJpdGVtLnRleHRBbGlnblwiXHJcblx0XHRcdFtzaG93Q29sdW1uTWVudV09XCJpdGVtLnNob3dDb2x1bW5NZW51ID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2VcIlxyXG5cdFx0XHRbYWxsb3dGaWx0ZXJpbmddPVwiaXRlbS5hbGxvd0ZpbHRlcmluZyA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGZhbHNlXCJcclxuXHRcdFx0W2FsbG93U29ydGluZ109XCJpdGVtLmFsbG93U29ydGluZyA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGZhbHNlXCJcclxuXHRcdFx0W2VkaXRUeXBlXT1cIml0ZW0uZWRpdFR5cGVcIlxyXG5cdFx0XHRbdmFsaWRhdGlvblJ1bGVzXT1cIml0ZW0udmFsaWRhdGlvblJ1bGVzXCJcclxuXHRcdFx0W3R5cGVdPVwiaXRlbS5kYXRhVHlwZSB8fCAnc3RyaW5nJ1wiXHJcblx0XHRcdFt3aWR0aF09XCJpdGVtLndpZHRoXCJcclxuXHRcdFx0W21pbldpZHRoXT1cIml0ZW0ubWluV2lkdGhcIlxyXG5cdFx0XHRbZm9ybWF0XT1cIml0ZW0uZm9ybWF0XCJcclxuXHRcdFx0W3Zpc2libGVdPVwiaXRlbS52aXNpYmxlXCJcclxuXHRcdFx0W3RlbXBsYXRlXT1cIml0ZW0uc2hvd1RlbXBsYXRlID8gY29sdW1uVGVtcGxhdGUgOiB1bmRlZmluZWRcIlxyXG5cdFx0XHRbY2xpcE1vZGVdPVwiXHJcblx0XHRcdFx0aXRlbS5jbGlwTW9kZVxyXG5cdFx0XHRcdFx0PyBpdGVtLmNsaXBNb2RlXHJcblx0XHRcdFx0XHQ6IGNsaXBNb2RlIHx8ICdFbGxpcHNpc1dpdGhUb29sdGlwJ1xyXG5cdFx0XHRcIlxyXG5cdFx0XHRbc29ydENvbXBhcmVyXT1cIml0ZW0uZGF0ZUNvbXBhcmVyXCJcclxuXHRcdFx0W2FsbG93UmVzaXppbmddPVwiIWxhc3RcIlxyXG5cdFx0PlxyXG5cdFx0PC9lLWNvbHVtbj5cclxuXHQ8L2UtY29sdW1ucz5cclxuPC9lanMtZ3JpZD5cclxuIl19
@@ -0,0 +1,11 @@
1
+ export var ButtonColorType;
2
+ (function (ButtonColorType) {
3
+ ButtonColorType["PRIMARY"] = "primary";
4
+ ButtonColorType["CANCEL"] = "cancel";
5
+ })(ButtonColorType || (ButtonColorType = {}));
6
+ var IconPosition;
7
+ (function (IconPosition) {
8
+ IconPosition["FRONT"] = "front";
9
+ IconPosition["BEHIND"] = "behind";
10
+ })(IconPosition || (IconPosition = {}));
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvY29uc3RhbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0NBLE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDMUIsc0NBQW1CLENBQUE7SUFDbkIsb0NBQWlCLENBQUE7QUFDbEIsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCO0FBRUQsSUFBSyxZQUdKO0FBSEQsV0FBSyxZQUFZO0lBQ2hCLCtCQUFlLENBQUE7SUFDZixpQ0FBaUIsQ0FBQTtBQUNsQixDQUFDLEVBSEksWUFBWSxLQUFaLFlBQVksUUFHaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0TWVudUl0ZW1Nb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uRmllbGQge1xyXG5cdGNvbHVtbk5hbWU6IHN0cmluZztcclxuXHRjb2x1bW5EaXNwbGF5TmFtZTogc3RyaW5nO1xyXG5cdHZpc2libGU6IGJvb2xlYW47XHJcblx0LyoqXHJcblx0ICogc2FtcGxlOiB7IGNsYXNzOiAnaGlkZUNvbHVtbkZpbHRlckNsYXNzJyB9XHJcblx0ICog5Y+v5Lul6ICD6JmR5Zyo6YOo5YiG5oOF5Ya15LiL57uZY29sdW1u5aKe5YqgY2xhc3PnrYlhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRjdXN0b21BdHRyaWJ1dGVzPzogc3RyaW5nO1xyXG5cdC8vIOS4jeWhq+m7mOiupOaYr0xlZnRcclxuXHR0ZXh0QWxpZ24/OiBcIkxlZnRcIiB8IFwiUmlnaHRcIiB8IFwiQ2VudGVyXCI7XHJcblx0d2lkdGg/OiBudW1iZXI7XHJcblx0ZGF0YVR5cGU/OiBzdHJpbmc7XHJcblx0Zm9ybWF0Pzogc3RyaW5nO1xyXG5cdHRyYW5zbGF0aW9uQ29kZT86IHN0cmluZztcclxuXHRzaG93Q29sdW1uTWVudT86IGJvb2xlYW47XHJcblx0c2hvd1RlbXBsYXRlPzogYm9vbGVhbjtcclxuXHRhbGxvd0ZpbHRlcmluZz86IGJvb2xlYW47XHJcblx0YWxsb3dTb3J0aW5nPzogYm9vbGVhbjtcclxuXHRhbGxvd0VkaXRpbmc/OiBib29sZWFuO1xyXG5cdG1pbldpZHRoPzogbnVtYmVyIHwgc3RyaW5nO1xyXG5cdGVkaXRUeXBlPzogc3RyaW5nO1xyXG5cdGRyb3Bkb3duUGFyYW1zPzogYW55O1xyXG5cdGRhdGVDb21wYXJlcj86IGFueTtcclxuXHRzb3J0Q29tcGFyZXI/OiBhbnk7XHJcblx0Y2xpcE1vZGU/OiBzdHJpbmc7XHJcblx0ZmlsdGVyPzogYW55O1xyXG5cdGNvbE5hbWU/OiBzdHJpbmc7XHJcblx0dmFsaWRhdGlvblJ1bGVzPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpb25NZW51SXRlbSBleHRlbmRzIENvbnRleHRNZW51SXRlbU1vZGVsIHtcclxuXHRkaXNhYmxlZD86IGJvb2xlYW47XHJcblx0aXNIaWRlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQnV0dG9uQ29sb3JUeXBlIHtcclxuXHRQUklNQVJZID0gXCJwcmltYXJ5XCIsXHJcblx0Q0FOQ0VMID0gXCJjYW5jZWxcIixcclxufVxyXG5cclxuZW51bSBJY29uUG9zaXRpb24ge1xyXG5cdEZST05UID0gXCJmcm9udFwiLFxyXG5cdEJFSElORCA9IFwiYmVoaW5kXCIsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUJ1dHRvbiB7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHR0eXBlPzogQnV0dG9uQ29sb3JUeXBlO1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0aWNvblBvc2l0aW9uPzogSWNvblBvc2l0aW9uO1xyXG5cdGNhbGxNZXRob2Q/OiBzdHJpbmc7XHJcblx0dHJhbnNsYXRpb25Db2RlPzogc3RyaW5nO1xyXG5cdHZhbHVlPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyYXdlckJ1dHRvbiBleHRlbmRzIEJhc2VCdXR0b24ge31cclxuIl19
@@ -0,0 +1,46 @@
1
+ import { Component, Inject } from "@angular/core";
2
+ import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "../common-dialog/index.component";
6
+ export class CommonDeleteComponent {
7
+ data;
8
+ dialogRef;
9
+ translation;
10
+ title = "";
11
+ saveBtnLabel = "";
12
+ cancelBtnLabel = "";
13
+ description = "";
14
+ size = "small";
15
+ constructor(data, dialogRef) {
16
+ this.data = data;
17
+ this.dialogRef = dialogRef;
18
+ }
19
+ ngOnInit() {
20
+ this.translation = JSON.parse(localStorage.getItem("translation")) || {};
21
+ this.title =
22
+ this.data.title || this.translation["DELETE_RECORD"] || ".DELETE_RECORD";
23
+ this.saveBtnLabel =
24
+ this.data.saveBtnLabel || this.translation.DELETE || ".DELETE";
25
+ this.cancelBtnLabel =
26
+ this.data.cancelBtnLabel || this.translation.CANCEL || ".CANCEL";
27
+ this.description =
28
+ this.data.description ||
29
+ this.translation.IF_YOU_DELETE_THIS_RECORD_WARNING ||
30
+ ".If you delete this record, you won't be able to recover it. Do you want to delete it?";
31
+ this.size = this.data.size || "small";
32
+ }
33
+ onSave(e) {
34
+ this.dialogRef.close(e);
35
+ }
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonDeleteComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CommonDeleteComponent, selector: "kt-common-delete-dialog", ngImport: i0, template: "<kt-common-dialog\r\n\t[size]=\"size\"\r\n\t[title]=\"title\"\r\n\t[hideHeader]=\"false\"\r\n\t[hideCloseBtn]=\"data.hideCloseBtn === undefined ? false : data.hideCloseBtn\"\r\n\t[hideSaveBtn]=\"data.hideSaveBtn === undefined ? false : data.hideSaveBtn\"\r\n\t[saveBtnLabel]=\"saveBtnLabel\"\r\n\t[cancelBtnLabel]=\"cancelBtnLabel\"\r\n\t[showErrorIcon]=\"\r\n\t\tdata.showErrorIcon === undefined ? false : data.showErrorIcon\r\n\t\"\r\n\t[hideCloseIcon]=\"\r\n\t\tdata.hideCloseIcon === undefined ? false : data.hideCloseIcon\r\n\t\"\r\n\t(saveEmit)=\"onSave($event)\"\r\n>\r\n\t<div class=\"mapping-dialog\">\r\n\t\t{{ description }}\r\n\t</div>\r\n</kt-common-dialog>\r\n", styles: [".mapping-dialog{color:#44566c;font-family:Arial;font-size:12px;line-height:16px;white-space:pre-line}\n"], dependencies: [{ kind: "component", type: i2.CommonDialogComponent, selector: "kt-common-dialog", inputs: ["hideHeader", "hideCloseIcon", "hideCloseBtn", "hideSaveBtn", "saveBtnLabel", "cancelBtnLabel", "showErrorIcon", "size", "title", "loading"], outputs: ["saveEmit", "closeEmit"] }] });
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonDeleteComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: "kt-common-delete-dialog", template: "<kt-common-dialog\r\n\t[size]=\"size\"\r\n\t[title]=\"title\"\r\n\t[hideHeader]=\"false\"\r\n\t[hideCloseBtn]=\"data.hideCloseBtn === undefined ? false : data.hideCloseBtn\"\r\n\t[hideSaveBtn]=\"data.hideSaveBtn === undefined ? false : data.hideSaveBtn\"\r\n\t[saveBtnLabel]=\"saveBtnLabel\"\r\n\t[cancelBtnLabel]=\"cancelBtnLabel\"\r\n\t[showErrorIcon]=\"\r\n\t\tdata.showErrorIcon === undefined ? false : data.showErrorIcon\r\n\t\"\r\n\t[hideCloseIcon]=\"\r\n\t\tdata.hideCloseIcon === undefined ? false : data.hideCloseIcon\r\n\t\"\r\n\t(saveEmit)=\"onSave($event)\"\r\n>\r\n\t<div class=\"mapping-dialog\">\r\n\t\t{{ description }}\r\n\t</div>\r\n</kt-common-dialog>\r\n", styles: [".mapping-dialog{color:#44566c;font-family:Arial;font-size:12px;line-height:16px;white-space:pre-line}\n"] }]
42
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
43
+ type: Inject,
44
+ args: [MAT_DIALOG_DATA]
45
+ }] }, { type: i1.MatDialogRef }]; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2RpYWxvZy9jb21tb24tZGVsZXRlLWRpYWxvZy9pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvZGlhbG9nL2NvbW1vbi1kZWxldGUtZGlhbG9nL2luZGV4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFrQnpFLE1BQU0sT0FBTyxxQkFBcUI7SUFVdkI7SUFDQTtJQVZULFdBQVcsQ0FBQztJQUNaLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRWYsWUFFUyxJQUFrQixFQUNsQixTQUE4QztRQUQ5QyxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQXFDO0lBQ3BELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLEtBQUs7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO1FBQzNFLElBQUksQ0FBQyxZQUFZO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxjQUFjO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztRQUNuRSxJQUFJLENBQUMsV0FBVztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQ0FBaUM7Z0JBQ2xELHdGQUF3RixDQUFDO1FBQzNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBQztRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7d0dBL0JVLHFCQUFxQixrQkFTdEIsZUFBZTs0RkFUZCxxQkFBcUIsK0RDbkJsQyxvcUJBb0JBOzs0RkREYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UseUJBQXlCOzswQkFhaEMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dDb25maWcge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIHNhdmVCdG5MYWJlbD86IHN0cmluZztcclxuICBjYW5jZWxCdG5MYWJlbD86IHN0cmluZztcclxuICBzaG93RXJyb3JJY29uPzogYm9vbGVhbjtcclxuICBoaWRlQ2xvc2VJY29uPzogYm9vbGVhbjtcclxuICBzaXplPzogc3RyaW5nO1xyXG4gIGhpZGVTYXZlQnRuPzogYm9vbGVhbjtcclxuICBoaWRlQ2xvc2VCdG4/OiBib29sZWFuO1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImt0LWNvbW1vbi1kZWxldGUtZGlhbG9nXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vbkRlbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdHJhbnNsYXRpb247XHJcbiAgdGl0bGUgPSBcIlwiO1xyXG4gIHNhdmVCdG5MYWJlbCA9IFwiXCI7XHJcbiAgY2FuY2VsQnRuTGFiZWwgPSBcIlwiO1xyXG4gIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICBzaXplID0gXCJzbWFsbFwiO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxyXG4gICAgcHVibGljIGRhdGE6IERpYWxvZ0NvbmZpZyxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb21tb25EZWxldGVDb21wb25lbnQ+XHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpIHx8IHt9O1xyXG4gICAgdGhpcy50aXRsZSA9XHJcbiAgICAgIHRoaXMuZGF0YS50aXRsZSB8fCB0aGlzLnRyYW5zbGF0aW9uW1wiREVMRVRFX1JFQ09SRFwiXSB8fCBcIi5ERUxFVEVfUkVDT1JEXCI7XHJcbiAgICB0aGlzLnNhdmVCdG5MYWJlbCA9XHJcbiAgICAgIHRoaXMuZGF0YS5zYXZlQnRuTGFiZWwgfHwgdGhpcy50cmFuc2xhdGlvbi5ERUxFVEUgfHwgXCIuREVMRVRFXCI7XHJcbiAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsID1cclxuICAgICAgdGhpcy5kYXRhLmNhbmNlbEJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uQ0FOQ0VMIHx8IFwiLkNBTkNFTFwiO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9XHJcbiAgICAgIHRoaXMuZGF0YS5kZXNjcmlwdGlvbiB8fFxyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uLklGX1lPVV9ERUxFVEVfVEhJU19SRUNPUkRfV0FSTklORyB8fFxyXG4gICAgICBcIi5JZiB5b3UgZGVsZXRlIHRoaXMgcmVjb3JkLCB5b3Ugd29uJ3QgYmUgYWJsZSB0byByZWNvdmVyIGl0LiBEbyB5b3Ugd2FudCB0byBkZWxldGUgaXQ/XCI7XHJcbiAgICB0aGlzLnNpemUgPSB0aGlzLmRhdGEuc2l6ZSB8fCBcInNtYWxsXCI7XHJcbiAgfVxyXG5cclxuICBvblNhdmUoZSkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxrdC1jb21tb24tZGlhbG9nXHJcblx0W3NpemVdPVwic2l6ZVwiXHJcblx0W3RpdGxlXT1cInRpdGxlXCJcclxuXHRbaGlkZUhlYWRlcl09XCJmYWxzZVwiXHJcblx0W2hpZGVDbG9zZUJ0bl09XCJkYXRhLmhpZGVDbG9zZUJ0biA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBkYXRhLmhpZGVDbG9zZUJ0blwiXHJcblx0W2hpZGVTYXZlQnRuXT1cImRhdGEuaGlkZVNhdmVCdG4gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogZGF0YS5oaWRlU2F2ZUJ0blwiXHJcblx0W3NhdmVCdG5MYWJlbF09XCJzYXZlQnRuTGFiZWxcIlxyXG5cdFtjYW5jZWxCdG5MYWJlbF09XCJjYW5jZWxCdG5MYWJlbFwiXHJcblx0W3Nob3dFcnJvckljb25dPVwiXHJcblx0XHRkYXRhLnNob3dFcnJvckljb24gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogZGF0YS5zaG93RXJyb3JJY29uXHJcblx0XCJcclxuXHRbaGlkZUNsb3NlSWNvbl09XCJcclxuXHRcdGRhdGEuaGlkZUNsb3NlSWNvbiA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBkYXRhLmhpZGVDbG9zZUljb25cclxuXHRcIlxyXG5cdChzYXZlRW1pdCk9XCJvblNhdmUoJGV2ZW50KVwiXHJcbj5cclxuXHQ8ZGl2IGNsYXNzPVwibWFwcGluZy1kaWFsb2dcIj5cclxuXHRcdHt7IGRlc2NyaXB0aW9uIH19XHJcblx0PC9kaXY+XHJcbjwva3QtY29tbW9uLWRpYWxvZz5cclxuIl19