vcomply-workflow-engine 6.1.9 → 6.1.11

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 (58) hide show
  1. package/esm2022/lib/constants/link-responsibility.constants.mjs +5 -1
  2. package/esm2022/lib/report-a-case/components/assignee/assignee.component.mjs +1 -1
  3. package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +1 -1
  4. package/esm2022/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.mjs +4 -4
  5. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +19 -10
  6. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +1 -1
  7. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +1 -1
  8. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +1 -1
  9. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +1 -1
  10. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +1 -1
  11. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +1 -1
  12. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +6 -3
  13. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +1 -1
  14. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -1
  15. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +1 -1
  16. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +3 -3
  17. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +2 -2
  18. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +187 -74
  19. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.interface.mjs +2 -0
  20. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.module.mjs +16 -4
  21. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +1 -1
  22. package/esm2022/lib/sharedComponents/pipes/getRCList.pipe.mjs +24 -0
  23. package/esm2022/lib/sharedComponents/pipes/parentResponsibilitySelection.pipe.mjs +22 -0
  24. package/esm2022/lib/sharedComponents/pipes/pipe.module.mjs +20 -0
  25. package/esm2022/lib/sharedComponents/pipes/userDetails.pipe.mjs +44 -0
  26. package/esm2022/lib/sharedComponents/policy-template/select-template-list/select-template-list.component.mjs +1 -1
  27. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +1 -1
  28. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +1 -1
  29. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +1 -1
  30. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +1 -1
  31. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +1 -1
  32. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +1 -1
  33. package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +1 -1
  34. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +1 -1
  35. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +1 -1
  36. package/esm2022/lib/ui-kit/avatar/avatar.component.mjs +26 -0
  37. package/esm2022/lib/ui-kit/avatar/avatar.constants.mjs +13 -0
  38. package/esm2022/lib/ui-kit/avatar/avatar.module.mjs +20 -0
  39. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +2 -2
  40. package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +2 -2
  41. package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +2 -2
  42. package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +2 -2
  43. package/fesm2022/vcomply-workflow-engine.mjs +396 -121
  44. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  45. package/lib/constants/link-responsibility.constants.d.ts +4 -0
  46. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +2 -1
  47. package/lib/sharedComponents/frequency/frequency.service.d.ts +1 -1
  48. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +38 -3
  49. package/lib/sharedComponents/link-responsibility/link-responsibility.interface.d.ts +8 -0
  50. package/lib/sharedComponents/link-responsibility/link-responsibility.module.d.ts +4 -1
  51. package/lib/sharedComponents/pipes/getRCList.pipe.d.ts +7 -0
  52. package/lib/sharedComponents/pipes/parentResponsibilitySelection.pipe.d.ts +7 -0
  53. package/lib/sharedComponents/pipes/pipe.module.d.ts +10 -0
  54. package/lib/sharedComponents/pipes/userDetails.pipe.d.ts +11 -0
  55. package/lib/ui-kit/avatar/avatar.component.d.ts +8 -0
  56. package/lib/ui-kit/avatar/avatar.constants.d.ts +12 -0
  57. package/lib/ui-kit/avatar/avatar.module.d.ts +10 -0
  58. package/package.json +1 -1
@@ -1,25 +1,34 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { cloneDeep } from 'lodash';
3
3
  import { LINK_RESPONSIBILITY_CONSTANTS } from '../../constants/link-responsibility.constants';
4
+ import { AVATAR_CONSTANTS } from '../../ui-kit/avatar/avatar.constants';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../frequency/frequency.service";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "../floating-bar/floating-bar.component";
9
- import * as i5 from "../../formgroup/cs-checkbox/cs-checkbox.component";
10
- import * as i6 from "../no-data/no-data.component";
11
- import * as i7 from "../v-loader/loader-inline/loader-inline.component";
12
- import * as i8 from "../../ui-kit/popover/popover.component";
13
- import * as i9 from "../../ui-kit/popover/popover.directive";
14
- import * as i10 from "../../ui-kit/pagination/pagination/pagination.component";
7
+ import * as i2 from "../../workflow-services/common-workflow-services/compliance-common.service";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/forms";
10
+ import * as i5 from "../floating-bar/floating-bar.component";
11
+ import * as i6 from "../../formgroup/cs-checkbox/cs-checkbox.component";
12
+ import * as i7 from "../no-data/no-data.component";
13
+ import * as i8 from "../v-loader/loader-inline/loader-inline.component";
14
+ import * as i9 from "../../ui-kit/popover/popover.component";
15
+ import * as i10 from "../../ui-kit/popover/popover.directive";
16
+ import * as i11 from "../../ui-kit/pagination/pagination/pagination.component";
17
+ import * as i12 from "../../ui-kit/tooltip/tooltip.directive";
18
+ import * as i13 from "../../ui-kit/avatar/avatar.component";
19
+ import * as i14 from "../pipes/userDetails.pipe";
20
+ import * as i15 from "../pipes/getRCList.pipe";
21
+ import * as i16 from "../pipes/parentResponsibilitySelection.pipe";
15
22
  export class LinkResponsibilityListComponent {
16
- constructor(frequencyService) {
23
+ constructor(frequencyService, complianceCommonService) {
17
24
  this.frequencyService = frequencyService;
25
+ this.complianceCommonService = complianceCommonService;
18
26
  this.respIdKey = '';
19
27
  this.selectedResponsibilityValues = [];
20
28
  this.radioSelection = false;
21
29
  this.closeButton = new EventEmitter();
22
30
  this.selectedResponsibility = new EventEmitter();
31
+ this.AVATAR_CONSTANTS = AVATAR_CONSTANTS;
23
32
  this.animation = false;
24
33
  this.responsibilityLoader = false;
25
34
  this.isValidObj = false;
@@ -75,46 +84,69 @@ export class LinkResponsibilityListComponent {
75
84
  this.responsibilitySearchText = '';
76
85
  this.noDataMessage = LINK_RESPONSIBILITY_CONSTANTS.NO_DATA_MESSAGE.NO_DATA;
77
86
  this.noDataImagePath = LINK_RESPONSIBILITY_CONSTANTS.NO_DATA.IMAGE;
87
+ this.floaterBarText = LINK_RESPONSIBILITY_CONSTANTS.FLOATING_BAR;
88
+ this.userList = [];
89
+ this.rcList = [];
90
+ this.allRcList = [];
91
+ this.viewResponsibilityData = {};
92
+ this.responsibilityFloaterBarData = [];
93
+ this.isResponsibilitySelected = false;
78
94
  }
79
95
  ngOnInit() {
80
96
  this.getResponsibilityValues();
81
97
  this.getResponsibilityList();
98
+ this.getRcList();
82
99
  }
83
100
  back() {
84
101
  this.closeButton.emit();
85
102
  }
86
103
  getResponsibilityValues() {
87
- if (this.selectedResponsibilityValues) {
88
- this.selectedResponsibilityId = this.selectedResponsibilityValues.map((ele) => {
89
- if (ele[this.respIdKey]) {
90
- return ele[this.respIdKey];
91
- }
92
- });
93
- this.selectedResponsibilityValues = Object.keys(this.selectedResponsibilityValues)?.length
94
- ? this.selectedResponsibilityValues
95
- : {};
96
- this.isValidObj = this.selectedResponsibilityValues
97
- ? Object.keys(this.selectedResponsibilityValues)?.length > 0
98
- : false;
104
+ if (this.selectedResponsibilityValues?.length) {
105
+ this.responsibilityFloaterBarData = this.selectedResponsibilityValues.map((item) => item?.responsibilityId);
106
+ this.populateResponsibilityValues();
99
107
  }
100
108
  this.animation = true;
101
109
  setTimeout(() => {
102
110
  this.animation = false;
103
111
  }, 300);
104
112
  }
113
+ populateResponsibilityValues() {
114
+ if (!Array.isArray(this.selectedResponsibilityValues))
115
+ return;
116
+ this.selectedResponsibilityValues =
117
+ this.selectedResponsibilityValues.flatMap(({ responsibilityId, reportName, assigneeIds = [], responsibilityCenters = [], }) => {
118
+ if (!Array.isArray(assigneeIds) ||
119
+ !Array.isArray(responsibilityCenters))
120
+ return [];
121
+ return assigneeIds.flatMap((assigneeId) => responsibilityCenters.map((responsibilityCenter) => ({
122
+ responsibilityId,
123
+ assigneeId,
124
+ responsibilityCenter,
125
+ reportName,
126
+ })));
127
+ });
128
+ }
129
+ getRcList() {
130
+ this.complianceCommonService.getRcListInfo().subscribe((res) => {
131
+ this.allRcList = res;
132
+ });
133
+ }
105
134
  getResponsibilityList(pageNo = 1) {
106
135
  this.responsibilityLoader = true;
107
136
  this.frequencyService
108
- ?.getAllResponsibilities(pageNo).subscribe({
137
+ ?.getAllResponsibilities(pageNo, this.responsibilityPayload)
138
+ .subscribe({
109
139
  next: (res) => {
110
140
  if (res?.data) {
111
- this.responsibilitiesData = this.mapResponsibilitiesData(res.data);
141
+ this.responsibilitiesData = this.mapResponsibilitiesData(res?.data);
142
+ this.userList = res?.data?.users;
143
+ this.rcList = res?.data?.responsibilityCenters;
112
144
  }
113
145
  this.responsibilityLoader = false;
114
146
  },
115
147
  error: () => {
116
148
  this.responsibilityLoader = false;
117
- }
149
+ },
118
150
  });
119
151
  }
120
152
  mapResponsibilitiesData(res) {
@@ -124,25 +156,12 @@ export class LinkResponsibilityListComponent {
124
156
  const startIndex = (currentPage - 1) * pageSize + 1;
125
157
  const endIndex = Math.min(startIndex + pageSize - 1, totalItems);
126
158
  return {
127
- data: res.responsibilities.map((item) => ({
128
- ReportId: item?.rid,
129
- ReportName: item?.title,
130
- ControlId: item?.id ? `[CID-${item.id}]` : '',
131
- status: item?.status,
132
- frequency: item?.frequency,
133
- assignor: item?.assignor,
134
- assignees: item?.assignees,
135
- responsibilityCenters: item?.responsibility_centers,
136
- reviewers: item?.reviewers,
137
- type: item?.type,
138
- complianceType: item?.compliance_type,
139
- category_details_array: item?.category_details_array || [],
140
- })),
159
+ data: res?.responsibilities,
141
160
  total_responsibilities: totalItems,
142
161
  total_pages: Math.ceil(totalItems / pageSize),
143
162
  responsibilityCurrentPage: currentPage,
144
163
  responsibilities_from: startIndex,
145
- responsibilities_to: endIndex
164
+ responsibilities_to: endIndex,
146
165
  };
147
166
  }
148
167
  responsibilityPageChange(pageNumber) {
@@ -155,14 +174,46 @@ export class LinkResponsibilityListComponent {
155
174
  deleteItem(item) {
156
175
  const index = this.selectedResponsibilityId.findIndex((element) => element == item[this.respIdKey]);
157
176
  this.selectedResponsibilityId.splice(index, 1);
158
- this.selectedResponsibilityValues = this.selectedResponsibilityValues.filter((ele) => ele[this.respIdKey] !== item[this.respIdKey]);
177
+ this.selectedResponsibilityValues =
178
+ this.selectedResponsibilityValues.filter((ele) => ele[this.respIdKey] !== item[this.respIdKey]);
159
179
  this.isValidObj = false;
160
- this.setList();
161
180
  }
162
181
  save(event) {
163
182
  this.closeButton.emit();
183
+ this.filterUniqueResponsibilityValues();
164
184
  this.selectedResponsibility.emit(this.selectedResponsibilityValues);
165
185
  }
186
+ filterUniqueResponsibilityValues() {
187
+ if (!this.selectedResponsibilityValues?.length)
188
+ return;
189
+ const result = {};
190
+ this.selectedResponsibilityValues.forEach((item) => {
191
+ this.insertUniqueResponsibility(result, item);
192
+ });
193
+ // Convert the result object into an array
194
+ this.selectedResponsibilityValues = Object.values(result);
195
+ }
196
+ insertUniqueResponsibility(result, item) {
197
+ const { responsibilityId, assigneeId, responsibilityCenter } = item;
198
+ if (!result[responsibilityId]) {
199
+ result[responsibilityId] = {
200
+ responsibilityId,
201
+ assigneeIds: [],
202
+ responsibilityCenters: [],
203
+ reportName: item?.reportName,
204
+ };
205
+ }
206
+ else {
207
+ // Add assigneeId if not already present
208
+ if (!result[responsibilityId]?.assigneeIds?.includes(assigneeId)) {
209
+ result[responsibilityId]?.assigneeIds?.push(assigneeId);
210
+ }
211
+ // Add responsibilityCenter if not already present
212
+ if (!result[responsibilityId]?.responsibilityCenters?.includes(responsibilityCenter)) {
213
+ result[responsibilityId]?.responsibilityCenters?.push(responsibilityCenter);
214
+ }
215
+ }
216
+ }
166
217
  onClickTabChange(tab) {
167
218
  this.currentTab = tab?.type;
168
219
  this.responsibilityPayload.filterData.complianceType = [this.currentTab];
@@ -196,46 +247,108 @@ export class LinkResponsibilityListComponent {
196
247
  this.isOnCompletionRc = this.feature.isFeatureEnabled('ff_on_completion_rc');
197
248
  }
198
249
  selectResp(resp, mode) {
199
- const index = this.selectedResponsibilityId.findIndex((element) => element == resp);
200
- if (index === -1 && mode) {
201
- this.selectedResponsibilityId.push(resp);
202
- this.setList();
203
- }
204
- else {
205
- this.selectedResponsibilityId.splice(index, 1);
206
- this.selectedResponsibilityValues = this.selectedResponsibilityValues.filter((ele) => ele[this.respIdKey] !== resp);
207
- this.setList();
208
- }
250
+ const selectedResp = this.generateResponsibilityId(resp);
251
+ if (!selectedResp?.length)
252
+ return;
253
+ selectedResp.forEach((item) => {
254
+ const existsIndex = this.selectedResponsibilityValues.findIndex((ele) => ele.responsibilityId === item.responsibilityId &&
255
+ ele.assigneeId === item.assigneeId &&
256
+ ele.responsibilityCenter === item.responsibilityCenter);
257
+ if (mode && existsIndex === -1) {
258
+ // Add if not present
259
+ this.selectedResponsibilityValues.push(item);
260
+ }
261
+ else {
262
+ // Remove if present
263
+ this.selectedResponsibilityValues.splice(existsIndex, 1);
264
+ }
265
+ });
266
+ this.selectedResponsibilityId = this.selectedResponsibilityValues.map((ele) => ele.responsibilityId);
267
+ this.isResponsibilitySelected = this.selectedResponsibilityValues.some((ele) => ele?.responsibilityId === resp?.id);
268
+ this.responsibilityFloaterBarData = [
269
+ ...new Set(this.selectedResponsibilityId),
270
+ ];
209
271
  }
210
- setList() {
211
- const data = [];
212
- const respValues = cloneDeep(this.selectedResponsibilityValues);
213
- const respList = cloneDeep(this.responsibilitiesData.data);
214
- const selectedResponsibilityId = cloneDeep(this.selectedResponsibilityId);
215
- selectedResponsibilityId.forEach((element) => {
216
- const foundResponsibility = respList.find((ele) => ele[this.respIdKey] === element);
217
- if (foundResponsibility) {
218
- data.push(foundResponsibility);
272
+ generateResponsibilityId(resp) {
273
+ const assigneeIds = resp?.assignees?.userId || [];
274
+ const responsibilityCenters = resp?.responsibilityCenters || [null];
275
+ const respObj = [];
276
+ assigneeIds.forEach((assigneeId) => {
277
+ if (!responsibilityCenters?.length) {
278
+ respObj.push(this.generateRespObj(resp, assigneeId, null));
279
+ return;
219
280
  }
281
+ responsibilityCenters.forEach((rc) => {
282
+ respObj.push(this.generateRespObj(resp, assigneeId, rc));
283
+ });
220
284
  });
221
- if (this.selectedResponsibilityValues?.length > 0) {
222
- const newData = data.filter(element => !respValues.some((value) => value[this.respIdKey] === element[this.respIdKey]));
223
- this.selectedResponsibilityValues = [...respValues, ...newData];
285
+ return respObj;
286
+ }
287
+ generateRespObj(resp, assigneeId, responsibilityCenter) {
288
+ return {
289
+ responsibilityId: resp?.id,
290
+ assigneeId: assigneeId,
291
+ responsibilityCenter: responsibilityCenter,
292
+ reportName: resp?.title,
293
+ };
294
+ }
295
+ viewResponsibility(id) {
296
+ if (this.viewResponsibilityId === id) {
297
+ this.viewResponsibilityId = null;
298
+ this.viewResponsibilityData = {};
299
+ return;
224
300
  }
225
- else {
226
- this.selectedResponsibilityValues = data;
301
+ this.viewResponsibilityId = id;
302
+ const responsibility = this.responsibilitiesData?.data?.find((item) => item?.id === id);
303
+ this.viewResponsibilityData[id] =
304
+ this.createSeparateResponsibilities(responsibility);
305
+ }
306
+ createSeparateResponsibilities(responsibility) {
307
+ if (!responsibility)
308
+ return [];
309
+ const assignees = responsibility.assignees?.userId || [];
310
+ const responsibilityCenters = responsibility.responsibilityCenters || [
311
+ null,
312
+ ];
313
+ // If no assignees or RCs, return original responsibility
314
+ if (assignees.length === 0 && responsibilityCenters.length === 0) {
315
+ return [responsibility];
227
316
  }
228
- this.isValidObj = this.selectedResponsibilityValues
229
- ? Object.keys(this.selectedResponsibilityValues)?.length > 0
230
- : false;
317
+ const newResponsibilities = [];
318
+ // Create a new responsibility for each assignee-RC combination
319
+ assignees.forEach((assigneeId) => {
320
+ responsibilityCenters.forEach((rcId) => {
321
+ const newResponsibility = {
322
+ ...cloneDeep(responsibility),
323
+ assignees: {
324
+ ...responsibility.assignees,
325
+ userId: [assigneeId],
326
+ activeUserId: [assigneeId],
327
+ },
328
+ responsibilityCenters: [rcId],
329
+ assigneeDetails: [
330
+ {
331
+ assignee: assigneeId,
332
+ responsibilityCenter: rcId,
333
+ performance: null,
334
+ nextDueDate: null,
335
+ reviewerPerformance: null,
336
+ reviewerNextDueDate: null,
337
+ },
338
+ ],
339
+ };
340
+ newResponsibilities.push(newResponsibility);
341
+ });
342
+ });
343
+ return newResponsibilities;
231
344
  }
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, deps: [{ token: i1.FrequencyService }], target: i0.ɵɵFactoryTarget.Component }); }
233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LinkResponsibilityListComponent, selector: "app-link-responsibility-list", inputs: { onCompletionOfResponsibility: "onCompletionOfResponsibility", feature: "feature", respIdKey: "respIdKey", selectedResponsibilityValues: "selectedResponsibilityValues", radioSelection: "radioSelection" }, outputs: { closeButton: "closeButton", selectedResponsibility: "selectedResponsibility" }, ngImport: i0, template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n [class.active]=\"\n selectedResponsibilityId?.includes(responsibility?.ReportId)\n \"\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"responsibilitiesData?.responsibilities_from + i\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [ngValue]=\"\n selectedResponsibilityId?.includes(responsibility?.ReportId)\n \"\n (ngValueChange)=\"selectResp(responsibility?.ReportId, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n <div\n class=\"value vx-fs-12 vx-label-txt vx-pr-5\"\n [appTooltip]=\"responsibility?.ReportName\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibility?.ControlId }} {{ responsibility?.ReportName }}\n </div>\n </div>\n\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]\n ?.category_name as categoryName\n \"\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center program\"\n >\n <div class=\"program-inner vx-d-block\">\n <div\n class=\"program-value vx-fs-11 vx-label-txt vx-pr-5\"\n [appTooltip]=\"\n responsibility?.category_details_array[0]?.category_name ??\n '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ categoryName ?? \"--\" }}\n </div>\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]\n ?.parent_category_name?.length\n \"\n class=\"within-part vx-d-flex vx-align-center vx-pr-3\"\n >\n <div\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3 vx-txt-blue\"\n >\n Within\n </div>\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]?.parent_category_name\n ?.slice()\n ?.reverse()\n ?.join(' < ') as parent_category\n \"\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"parent_category\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ parent_category }}\n </div>\n </div>\n </div>\n <button\n *ngIf=\"responsibility?.category_details_array?.length >= 2\"\n appPopover\n (click)=\"programPopup.popover()\"\n placement=\"right\"\n class=\"program-count vx-fs-11 vx-fw-500 vx-txt-white vx-p-0 vx-pl-1 vx-pr-1 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n +{{ responsibility?.category_details_array?.length - 1 }}\n </button>\n <app-popover #programPopup>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let subCategory of responsibility?.category_details_array\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <div class=\"vx-d-block vx-w-100\">\n <span\n class=\"value\"\n [appTooltip]=\"subCategory?.category_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >{{ subCategory?.category_name }}</span\n >\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]\n ?.parent_category_name?.length\n \"\n class=\"within-part vx-d-flex vx-align-center vx-pr-3\"\n >\n <div\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3 vx-txt-blue\"\n >\n Within\n </div>\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]?.parent_category_name\n ?.slice()\n ?.reverse()\n ?.join(' < ') as parent_category\n \"\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"parent_category\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ parent_category }}\n </div>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"isValidObj ? selectedResponsibilityValues : []\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!isValidObj\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:1.5rem .75rem 1.5rem 2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#747576;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 17.5rem);overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 19.5rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #f1f1f1;margin-bottom:.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial .sr-no,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#747576;min-height:2.5rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:.625rem;font-weight:500;display:flex;height:2.5rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:.75rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility{width:calc(100% - 15.5rem);min-width:calc(100% - 15.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility.with-rc{width:calc(100% - 31rem);min-width:calc(100% - 31rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center{width:15.5rem;min-width:15.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center .program-inner{max-width:calc(100% - 2rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center .program-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center button.program-count{background:#1e5dd3;border-radius:.125rem;border:none;min-width:1.5rem;height:1.25rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program{width:13.5rem;min-width:13.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program .program-inner{max-width:calc(100% - 2rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program .program-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program button.program-count{background:#1e5dd3;border-radius:.125rem;border:none;min-width:1.5rem;height:1.25rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i5.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i6.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i7.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i8.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i9.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i10.PaginationComponentUI, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }] }); }
345
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, deps: [{ token: i1.FrequencyService }, { token: i2.ComplianceCommonService }], target: i0.ɵɵFactoryTarget.Component }); }
346
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LinkResponsibilityListComponent, selector: "app-link-responsibility-list", inputs: { onCompletionOfResponsibility: "onCompletionOfResponsibility", feature: "feature", respIdKey: "respIdKey", selectedResponsibilityValues: "selectedResponsibilityValues", radioSelection: "radioSelection" }, outputs: { closeButton: "closeButton", selectedResponsibility: "selectedResponsibility" }, ngImport: i0, template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.id\"\n [ngValue]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"&#xe9e7;\"\n : \"&#xe9e8;\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.id\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i7.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i11.PaginationComponentUI, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.AvatarComponent, selector: "app-avatar", inputs: ["userDetails", "type", "avatarClass"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i14.GetUserDetailsPipe, name: "getUserDetails" }, { kind: "pipe", type: i15.GetRCListPipe, name: "getRCList" }, { kind: "pipe", type: i16.ParentResponsibilitySelectionPipe, name: "isRespSelected" }] }); }
234
347
  }
235
348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, decorators: [{
236
349
  type: Component,
237
- args: [{ selector: 'app-link-responsibility-list', template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n [class.active]=\"\n selectedResponsibilityId?.includes(responsibility?.ReportId)\n \"\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"responsibilitiesData?.responsibilities_from + i\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [ngValue]=\"\n selectedResponsibilityId?.includes(responsibility?.ReportId)\n \"\n (ngValueChange)=\"selectResp(responsibility?.ReportId, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n <div\n class=\"value vx-fs-12 vx-label-txt vx-pr-5\"\n [appTooltip]=\"responsibility?.ReportName\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibility?.ControlId }} {{ responsibility?.ReportName }}\n </div>\n </div>\n\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]\n ?.category_name as categoryName\n \"\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center program\"\n >\n <div class=\"program-inner vx-d-block\">\n <div\n class=\"program-value vx-fs-11 vx-label-txt vx-pr-5\"\n [appTooltip]=\"\n responsibility?.category_details_array[0]?.category_name ??\n '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ categoryName ?? \"--\" }}\n </div>\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]\n ?.parent_category_name?.length\n \"\n class=\"within-part vx-d-flex vx-align-center vx-pr-3\"\n >\n <div\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3 vx-txt-blue\"\n >\n Within\n </div>\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]?.parent_category_name\n ?.slice()\n ?.reverse()\n ?.join(' < ') as parent_category\n \"\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"parent_category\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ parent_category }}\n </div>\n </div>\n </div>\n <button\n *ngIf=\"responsibility?.category_details_array?.length >= 2\"\n appPopover\n (click)=\"programPopup.popover()\"\n placement=\"right\"\n class=\"program-count vx-fs-11 vx-fw-500 vx-txt-white vx-p-0 vx-pl-1 vx-pr-1 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n +{{ responsibility?.category_details_array?.length - 1 }}\n </button>\n <app-popover #programPopup>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let subCategory of responsibility?.category_details_array\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <div class=\"vx-d-block vx-w-100\">\n <span\n class=\"value\"\n [appTooltip]=\"subCategory?.category_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >{{ subCategory?.category_name }}</span\n >\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]\n ?.parent_category_name?.length\n \"\n class=\"within-part vx-d-flex vx-align-center vx-pr-3\"\n >\n <div\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3 vx-txt-blue\"\n >\n Within\n </div>\n <div\n *ngIf=\"\n responsibility?.category_details_array[0]?.parent_category_name\n ?.slice()\n ?.reverse()\n ?.join(' < ') as parent_category\n \"\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"parent_category\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ parent_category }}\n </div>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"isValidObj ? selectedResponsibilityValues : []\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!isValidObj\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:1.5rem .75rem 1.5rem 2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#747576;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 17.5rem);overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 19.5rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #f1f1f1;margin-bottom:.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial .sr-no,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#747576;min-height:2.5rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:.625rem;font-weight:500;display:flex;height:2.5rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:.75rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility{width:calc(100% - 15.5rem);min-width:calc(100% - 15.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility.with-rc{width:calc(100% - 31rem);min-width:calc(100% - 31rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center{width:15.5rem;min-width:15.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center .program-inner{max-width:calc(100% - 2rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center .program-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-center button.program-count{background:#1e5dd3;border-radius:.125rem;border:none;min-width:1.5rem;height:1.25rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program{width:13.5rem;min-width:13.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program .program-inner{max-width:calc(100% - 2rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program .program-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.program button.program-count{background:#1e5dd3;border-radius:.125rem;border:none;min-width:1.5rem;height:1.25rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
238
- }], ctorParameters: function () { return [{ type: i1.FrequencyService }]; }, propDecorators: { onCompletionOfResponsibility: [{
350
+ args: [{ selector: 'app-link-responsibility-list', template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\">&#xe90b;</i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.id\"\n [ngValue]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"&#xe9e7;\"\n : \"&#xe9e8;\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.id\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
351
+ }], ctorParameters: function () { return [{ type: i1.FrequencyService }, { type: i2.ComplianceCommonService }]; }, propDecorators: { onCompletionOfResponsibility: [{
239
352
  type: Input
240
353
  }], feature: [{
241
354
  type: Input
@@ -250,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
250
363
  }], selectedResponsibility: [{
251
364
  type: Output
252
365
  }] } });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7OztBQVE5RixNQUFNLE9BQU8sK0JBQStCO0lBMEUxQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZFN0MsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixpQ0FBNEIsR0FBUSxFQUFFLENBQUM7UUFDdkMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFL0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBQy9C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K0I7bUdBQS9CLCtCQUErQixxWENWNUMsc21XQW9SQTs7NEZEMVFhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSw4QkFBOEI7dUdBSy9CLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxpbmstcmVzcG9uc2liaWxpdHktbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rUmVzcG9uc2liaWxpdHlMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgb25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eTogYW55O1xuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XG4gIEBJbnB1dCgpIHJlc3BJZEtleTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM6IGFueSA9IFtdO1xuICBASW5wdXQoKSByYWRpb1NlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgQE91dHB1dCgpIGNsb3NlQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBhbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNWYWxpZE9iajogYm9vbGVhbiA9IGZhbHNlO1xuICBpc09uQ29tcGxldGlvblJjOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eVRhYkNvdW50OiBhbnkgPSB7XG4gICAgcmVndWxhdGlvbkNvdW50OiAwLFxuICAgIHN0YW5kYXJkQ291bnQ6IDAsXG4gICAgaW50ZXJuYWxDb3VudDogMCxcbiAgICBvdGhlcnNDb3VudDogMCxcbiAgfTtcbiAgdHlwZVRvQ291bnRQcm9wZXJ0eTogYW55ID0ge1xuICAgIDA6ICdvdGhlcnNDb3VudCcsXG4gICAgMTogJ3JlZ3VsYXRpb25Db3VudCcsXG4gICAgMjogJ3N0YW5kYXJkQ291bnQnLFxuICAgIDM6ICdpbnRlcm5hbENvdW50JyxcbiAgfTtcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkID0ge1xuICAgIHR5cGU6ICdhbGwnLFxuICAgIHBhZ2luYXRpb25UeXBlOiAnbGFyZ2UnLFxuICAgIGE6ICcnLFxuICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgIGZpbHRlckRhdGE6IHtcbiAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXZpZXdlcklkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgY29tcGxpYW5jZVR5cGU6IFsxXSxcbiAgICB9LFxuICAgIHBhZ2VObzogMSxcbiAgICBzb3J0T2JqOiB7XG4gICAgICBzb3J0Qnk6ICcnLFxuICAgICAgdHlwZTogJycsXG4gICAgfSxcbiAgICBwYWdlTmFtZTogJ292ZXJ2aWV3JyxcbiAgfTtcblxuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQ6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5VGFiczogYW55W10gPSBbXG4gICAgeyBuYW1lOiAnUkVHVUxBVElPTlMnLCB0eXBlOiAxIH0sXG4gICAgeyBuYW1lOiAnU1RBTkRBUkRTJywgdHlwZTogMiB9LFxuICAgIHsgbmFtZTogJ0lOVEVSTkFMIENPTlRST0xTJywgdHlwZTogMyB9LFxuICAgIHsgbmFtZTogJ09USEVSUycsIHR5cGU6IDAgfSxcbiAgXTtcblxuICBjdXJyZW50VGFiOm51bWJlciA9IDE7XG4gIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHJlZ3VsYXRpb25Db3VudDogbnVtYmVyID0gMDtcbiAgc3RhbmRhcmRzQ291bnQ6IG51bWJlciA9IDA7XG4gIGludGVybmFsc0NvdW50OiBudW1iZXIgPSAwO1xuICBvdGhlcnNDb3VudDogbnVtYmVyID0gMDtcblxuICByZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUy5OT19EQVRBX01FU1NBR0UuTk9fREFUQTtcbiAgbm9EYXRhSW1hZ2VQYXRoOiBzdHJpbmcgPSBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUy5OT19EQVRBLklNQUdFO1xuXG4gIHJlc3BvbnNpYmlsaXR5TGlzdDogYW55O1xuICBmZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mOiBhbnk7XG4gIGNsb3NlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgYmFjaygpIHtcbiAgICB0aGlzLmNsb3NlQnV0dG9uLmVtaXQoKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXR5VmFsdWVzKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLm1hcChcbiAgICAgICAgKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGVsZVt0aGlzLnJlc3BJZEtleV0pIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVbdGhpcy5yZXNwSWRLZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IE9iamVjdC5rZXlzKFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXNcbiAgICAgICk/Lmxlbmd0aFxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICA6IHt9O1xuICAgICAgdGhpcy5pc1ZhbGlkT2JqID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgID8gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzKT8ubGVuZ3RoID4gMFxuICAgICAgICA6IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUxpc3QocGFnZU5vOiBudW1iZXIgPSAxKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlXG4gICAgICA/LmdldEFsbFJlc3BvbnNpYmlsaXRpZXMocGFnZU5vKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmRhdGEpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhID0gdGhpcy5tYXBSZXNwb25zaWJpbGl0aWVzRGF0YShyZXMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmVzcG9uc2liaWxpdGllc0RhdGEocmVzOiBhbnkpIHtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IDEwO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gcmVzPy5wYWdlIHx8IDE7XG4gICAgY29uc3QgdG90YWxJdGVtcyA9IHJlcz8udG90YWwgfHwgMDtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAoY3VycmVudFBhZ2UgLSAxKSAqIHBhZ2VTaXplICsgMTtcbiAgICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSAtIDEsIHRvdGFsSXRlbXMpO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiByZXMucmVzcG9uc2liaWxpdGllcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgUmVwb3J0SWQ6IGl0ZW0/LnJpZCxcbiAgICAgICAgUmVwb3J0TmFtZTogaXRlbT8udGl0bGUsXG4gICAgICAgIENvbnRyb2xJZDogaXRlbT8uaWQgPyBgW0NJRC0ke2l0ZW0uaWR9XWAgOiAnJyxcbiAgICAgICAgc3RhdHVzOiBpdGVtPy5zdGF0dXMsXG4gICAgICAgIGZyZXF1ZW5jeTogaXRlbT8uZnJlcXVlbmN5LFxuICAgICAgICBhc3NpZ25vcjogaXRlbT8uYXNzaWdub3IsXG4gICAgICAgIGFzc2lnbmVlczogaXRlbT8uYXNzaWduZWVzLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnM6IGl0ZW0/LnJlc3BvbnNpYmlsaXR5X2NlbnRlcnMsXG4gICAgICAgIHJldmlld2VyczogaXRlbT8ucmV2aWV3ZXJzLFxuICAgICAgICB0eXBlOiBpdGVtPy50eXBlLFxuICAgICAgICBjb21wbGlhbmNlVHlwZTogaXRlbT8uY29tcGxpYW5jZV90eXBlLFxuICAgICAgICBjYXRlZ29yeV9kZXRhaWxzX2FycmF5OiBpdGVtPy5jYXRlZ29yeV9kZXRhaWxzX2FycmF5IHx8IFtdLFxuICAgICAgfSkpLFxuICAgICAgdG90YWxfcmVzcG9uc2liaWxpdGllczogdG90YWxJdGVtcyxcbiAgICAgIHRvdGFsX3BhZ2VzOiBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLFxuICAgICAgcmVzcG9uc2liaWxpdGllc19mcm9tOiBzdGFydEluZGV4LFxuICAgICAgcmVzcG9uc2liaWxpdGllc190bzogZW5kSW5kZXhcbiAgICB9O1xuICB9XG5cbiAgcmVzcG9uc2liaWxpdHlQYWdlQ2hhbmdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyICE9PSB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gcGFnZU51bWJlcjtcbiAgICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VOdW1iZXIpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5maW5kSW5kZXgoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5maWx0ZXIoXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZVt0aGlzLnJlc3BJZEtleV0gIT09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgKTtcbiAgICB0aGlzLmlzVmFsaWRPYmogPSBmYWxzZTtcbiAgICB0aGlzLnNldExpc3QoKTtcbiAgfVxuXG4gIHNhdmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY2xvc2VCdXR0b24uZW1pdCgpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eS5lbWl0KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyk7XG4gIH1cblxuICBvbkNsaWNrVGFiQ2hhbmdlKHRhYjogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGFiPy50eXBlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLmZpbHRlckRhdGEuY29tcGxpYW5jZVR5cGUgPSBbdGhpcy5jdXJyZW50VGFiXTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnBhZ2VObyA9IHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5zZWFyY2hUZXh0ID0gdGhpcy5yZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCk7XG4gIH1cblxuICBzZWFyY2goKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuc2VhcmNoVGV4dCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0O1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCk7XG4gIH1cblxuICBzZXRSZXNwb25zaWJpbGl0aWVzQ291bnQoKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpKTtcbiAgICBwYXlsb2FkLmZpbHRlckRhdGEuY29tcGxpYW5jZVR5cGUgPSBbMCwgMSwgMiwgM107XG4gICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlXG4gICAgICA/LmdldFJlc3BvbnNpYmlsaXRpZXNDb3VudChwYXlsb2FkKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50LnJlZ3VsYXRpb25Db3VudCA9IHJlcz8ucmVndWxhdGlvbl9jb3VudDtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50LnN0YW5kYXJkQ291bnQgPSByZXM/LnN0YW5kYXJkX2NvdW50O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQuaW50ZXJuYWxDb3VudCA9IHJlcz8uaW50ZXJuYWxfY291bnQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5vdGhlcnNDb3VudCA9IHJlcz8ub3RoZXJzX2NvdW50O1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbGwgdGhlIEZlYXR1cmUgZmxhZyBiYXNlZCB2YXJpYWJsZXNcbiAgZmVhdHVyZUZsYWdJbml0aWFsaXphdGlvbigpIHtcbiAgICB0aGlzLmZlYXR1cmVGbGFnX29uX2NvbXBsZXRpb25fb2YgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9mcmVxdWVuY3lfb25fY29tcGxldGlvbl9vZidcbiAgICApO1xuICAgIHRoaXMuaXNPbkNvbXBsZXRpb25SYyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX29uX2NvbXBsZXRpb25fcmMnXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdFJlc3AocmVzcDogYW55LCBtb2RlOiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkLmZpbmRJbmRleChcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gcmVzcFxuICAgICk7XG4gICAgaWYgKGluZGV4ID09PSAtMSAmJiBtb2RlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5wdXNoKHJlc3ApO1xuICAgICAgdGhpcy5zZXRMaXN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmlsdGVyKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVt0aGlzLnJlc3BJZEtleV0gIT09IHJlc3BcbiAgICAgICk7XG4gICAgICB0aGlzLnNldExpc3QoKTtcbiAgICB9XG4gIH1cblxuICBzZXRMaXN0KCkge1xuICAgIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG4gICAgY29uc3QgcmVzcFZhbHVlcyA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMpO1xuICAgIGNvbnN0IHJlc3BMaXN0ID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGEuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkKTtcbiAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBmb3VuZFJlc3BvbnNpYmlsaXR5ID0gcmVzcExpc3QuZmluZCgoZWxlOiBhbnkpID0+IGVsZVt0aGlzLnJlc3BJZEtleV0gPT09IGVsZW1lbnQpO1xuICAgICAgaWYgKGZvdW5kUmVzcG9uc2liaWxpdHkpIHtcbiAgICAgICAgZGF0YS5wdXNoKGZvdW5kUmVzcG9uc2liaWxpdHkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoID4gMCl7XG4gICAgICBjb25zdCBuZXdEYXRhID0gZGF0YS5maWx0ZXIoZWxlbWVudCA9PlxuICAgICAgICAhcmVzcFZhbHVlcy5zb21lKCh2YWx1ZTogYW55KSA9PiB2YWx1ZVt0aGlzLnJlc3BJZEtleV0gPT09IGVsZW1lbnRbdGhpcy5yZXNwSWRLZXldKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IFsuLi5yZXNwVmFsdWVzLCAuLi5uZXdEYXRhXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgPSBkYXRhO1xuICAgIH1cblxuICAgIHRoaXMuaXNWYWxpZE9iaiA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMpPy5sZW5ndGggPiAwXG4gICAgICA6IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtaGVhZCB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHk8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1ib2R5XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uYWxsUmVzcG9uc2liaWxpdHlDb3VudCA+IDBcIlxuICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgcmVzcG9uc2liaWxpdHlUYWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LXRhYmxlLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtbXItMSB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUYWIgPT09IGkgKyAxIHx8IChjdXJyZW50VGFiID09PSAwICYmIGkgPT09IDMpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYkNoYW5nZSh0YWIpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ub25lXT1cInJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtYmxvY2sgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+e3sgdGFiLm5hbWUgfX08L2xhYmVsXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodCB2eC1kLWZsZXggdngtanVzdGlmeS1lbmQgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1kLWlubGluZS1ibG9jayB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5VGFiQ291bnRbdHlwZVRvQ291bnRQcm9wZXJ0eVt0YWIudHlwZV1dIHx8IDBcbiAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1zZWFyY2ggdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMlwiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eVNlYXJjaFRleHRcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1wYWdpbmF0aW9uXG4gICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUxvYWRlciAmJiByZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcGFnZXMgPiAxXCJcbiAgICAgIFtzdGFydF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllc19mcm9tXCJcbiAgICAgIFtlbmRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfdG9cIlxuICAgICAgW3RvdGFsXT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9yZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgIFtwYWdlQ291bnRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZV09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZVwiXG4gICAgICAoc2VsZWN0ZWRQYWdlKT1cInJlc3BvbnNpYmlsaXR5UGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9hcHAtcGFnaW5hdGlvbj5cbiAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1taWQgdngtbWItNFwiXG4gICAgICBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgcmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzID4gMVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmICFyZXNwb25zaWJpbGl0eUxvYWRlclxuICAgICAgICBcIlxuICAgICAgICBbbm9EYXRhSW1hZ2VdPVwibm9EYXRhSW1hZ2VQYXRoXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwibm9EYXRhTWVzc2FnZVwiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8ubGVuZ3RoID4gMCAmJiAhcmVzcG9uc2liaWxpdHlMb2FkZXJcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eVwiXG4gICAgICAgICAgICAgIFtjbGFzcy53aXRoLXJjXT1cImlzT25Db21wbGV0aW9uUmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUSUVTXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5LWNlbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNPbkNvbXBsZXRpb25SY1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZD8uaW5jbHVkZXMocmVzcG9uc2liaWxpdHk/LlJlcG9ydElkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2liaWxpdHkgb2YgcmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE7XG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzci1ub1wiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbSArIGlcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbSArIGkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZD8uaW5jbHVkZXMocmVzcG9uc2liaWxpdHk/LlJlcG9ydElkKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0UmVzcChyZXNwb25zaWJpbGl0eT8uUmVwb3J0SWQsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLndpdGgtcmNdPVwiaXNPbkNvbXBsZXRpb25SY1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dCB2eC1wci01XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eT8uUmVwb3J0TmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXR5Py5Db250cm9sSWQgfX0ge3sgcmVzcG9uc2liaWxpdHk/LlJlcG9ydE5hbWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5jYXRlZ29yeV9kZXRhaWxzX2FycmF5WzBdXG4gICAgICAgICAgICAgICAgICA/LmNhdGVnb3J5X25hbWUgYXMgY2F0ZWdvcnlOYW1lXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHByb2dyYW1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1pbm5lciB2eC1kLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLXZhbHVlIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dCB2eC1wci01XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uY2F0ZWdvcnlfZGV0YWlsc19hcnJheVswXT8uY2F0ZWdvcnlfbmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICAnLS0nXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeU5hbWUgPz8gXCItLVwiIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LmNhdGVnb3J5X2RldGFpbHNfYXJyYXlbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIndpdGhpbi1wYXJ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHItM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndpdGhpbi1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTMgdngtdHh0LWJsdWVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBXaXRoaW5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5jYXRlZ29yeV9kZXRhaWxzX2FycmF5WzBdPy5wYXJlbnRfY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPy5zbGljZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgPy5qb2luKCcgPCAnKSBhcyBwYXJlbnRfY2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tdmFsdWUgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInBhcmVudF9jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHBhcmVudF9jYXRlZ29yeSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eT8uY2F0ZWdvcnlfZGV0YWlsc19hcnJheT8ubGVuZ3RoID49IDJcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvZ3JhbVBvcHVwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3JhbS1jb3VudCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXAtMCB2eC1wbC0xIHZ4LXByLTEgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Py5jYXRlZ29yeV9kZXRhaWxzX2FycmF5Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3Byb2dyYW1Qb3B1cD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1YkNhdGVnb3J5IG9mIHJlc3BvbnNpYmlsaXR5Py5jYXRlZ29yeV9kZXRhaWxzX2FycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtYmxvY2sgdngtdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJzdWJDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgc3ViQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5jYXRlZ29yeV9kZXRhaWxzX2FycmF5WzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ucGFyZW50X2NhdGVnb3J5X25hbWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tcGFydCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tYm94IHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zIHZ4LXR4dC1ibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uY2F0ZWdvcnlfZGV0YWlsc19hcnJheVswXT8ucGFyZW50X2NhdGVnb3J5X25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNsaWNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uam9pbignIDwgJykgYXMgcGFyZW50X2NhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tdmFsdWUgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwYXJlbnRfY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXJlbnRfY2F0ZWdvcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlMb2FkZXJcIlxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJpc1ZhbGlkT2JqID8gc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA6IFtdXCJcbiAgICAgIFtkaXNwbGF5RWxlbWVudEtleV09XCInUmVwb3J0TmFtZSdcIlxuICAgICAgKGNsb3NlTGlzdCk9XCJiYWNrKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVJdGVtKCRldmVudClcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwiIWlzVmFsaWRPYmpcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sK0JBQStCO0lBcUYxQyxZQUNVLGdCQUFrQyxFQUNsQyx1QkFBZ0Q7UUFEaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBcEZqRCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGlDQUE0QixHQUFRLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUUvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVks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bUIsRUFBRSxJQUFJO3lCQUMxQjtxQkFDRjtpQkFDRixDQUFDO2dCQUNGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7K0dBdFpVLCtCQUErQjttR0FBL0IsK0JBQStCLHFYQ2I1QyxxNWNBc1dBOzs0RkR6VmEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4Qjs2SUFLL0IsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IExJTktfUkVTUE9OU0lCSUxJVFlfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmstcmVzcG9uc2liaWxpdHkuY29uc3RhbnRzJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBBVkFUQVJfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vdWkta2l0L2F2YXRhci9hdmF0YXIuY29uc3RhbnRzJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5IH0gZnJvbSAnLi9saW5rLXJlc3BvbnNpYmlsaXR5LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1saW5rLXJlc3BvbnNpYmlsaXR5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmstcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlua1Jlc3BvbnNpYmlsaXR5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9uQ29tcGxldGlvbk9mUmVzcG9uc2liaWxpdHk6IGFueTtcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBASW5wdXQoKSByZXNwSWRLZXk6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgcmFkaW9TZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2xvc2VCdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEFWQVRBUl9DT05TVEFOVFMgPSBBVkFUQVJfQ09OU1RBTlRTO1xuXG4gIGFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICByZXNwb25zaWJpbGl0eUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1ZhbGlkT2JqOiBib29sZWFuID0gZmFsc2U7XG4gIGlzT25Db21wbGV0aW9uUmM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICByZXNwb25zaWJpbGl0aWVzRGF0YTogYW55ID0ge307XG4gIHJlc3BvbnNpYmlsaXR5VGFiQ291bnQ6IGFueSA9IHtcbiAgICByZWd1bGF0aW9uQ291bnQ6IDAsXG4gICAgc3RhbmRhcmRDb3VudDogMCxcbiAgICBpbnRlcm5hbENvdW50OiAwLFxuICAgIG90aGVyc0NvdW50OiAwLFxuICB9O1xuICB0eXBlVG9Db3VudFByb3BlcnR5OiBhbnkgPSB7XG4gICAgMDogJ290aGVyc0NvdW50JyxcbiAgICAxOiAncmVndWxhdGlvbkNvdW50JyxcbiAgICAyOiAnc3RhbmRhcmRDb3VudCcsXG4gICAgMzogJ2ludGVybmFsQ291bnQnLFxuICB9O1xuICByZXNwb25zaWJpbGl0eVBheWxvYWQgPSB7XG4gICAgdHlwZTogJ2FsbCcsXG4gICAgcGFnaW5hdGlvblR5cGU6ICdsYXJnZScsXG4gICAgYTogJycsXG4gICAgc2VhcmNoVGV4dDogJycsXG4gICAgZmlsdGVyRGF0YToge1xuICAgICAgYXBwTGlzdDogW10sXG4gICAgICByaXNrSWRzOiBbXSxcbiAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxuICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXG4gICAgICBjb21wbGlhbmNlVHlwZTogWzFdLFxuICAgIH0sXG4gICAgcGFnZU5vOiAxLFxuICAgIHNvcnRPYmo6IHtcbiAgICAgIHNvcnRCeTogJycsXG4gICAgICB0eXBlOiAnJyxcbiAgICB9LFxuICAgIHBhZ2VOYW1lOiAnb3ZlcnZpZXcnLFxuICB9O1xuXG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZDogYW55W10gPSBbXTtcbiAgcmVzcG9uc2liaWxpdHlUYWJzOiBhbnlbXSA9IFtcbiAgICB7IG5hbWU6ICdSRUdVTEFUSU9OUycsIHR5cGU6IDEgfSxcbiAgICB7IG5hbWU6ICdTVEFOREFSRFMnLCB0eXBlOiAyIH0sXG4gICAgeyBuYW1lOiAnSU5URVJOQUwgQ09OVFJPTFMnLCB0eXBlOiAzIH0sXG4gICAgeyBuYW1lOiAnT1RIRVJTJywgdHlwZTogMCB9LFxuICBdO1xuXG4gIGN1cnJlbnRUYWI6IG51bWJlciA9IDE7XG4gIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHJlZ3VsYXRpb25Db3VudDogbnVtYmVyID0gMDtcbiAgc3RhbmRhcmRzQ291bnQ6IG51bWJlciA9IDA7XG4gIGludGVybmFsc0NvdW50OiBudW1iZXIgPSAwO1xuICBvdGhlcnNDb3VudDogbnVtYmVyID0gMDtcblxuICByZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUy5OT19EQVRBX01FU1NBR0UuTk9fREFUQTtcbiAgbm9EYXRhSW1hZ2VQYXRoOiBzdHJpbmcgPSBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUy5OT19EQVRBLklNQUdFO1xuICBmbG9hdGVyQmFyVGV4dDogYW55ID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuRkxPQVRJTkdfQkFSO1xuXG4gIHJlc3BvbnNpYmlsaXR5TGlzdDogYW55O1xuICBmZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mOiBhbnk7XG4gIGNsb3NlOiBhbnk7XG4gIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICByY0xpc3Q6IGFueVtdID0gW107XG4gIGFsbFJjTGlzdDogYW55W10gPSBbXTtcbiAgdmlld1Jlc3BvbnNpYmlsaXR5SWQ6IGFueTtcbiAgdmlld1Jlc3BvbnNpYmlsaXR5RGF0YTogYW55ID0ge307XG4gIHJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGE6IGFueSA9IFtdO1xuXG4gIGlzUmVzcG9uc2liaWxpdHlTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eVZhbHVlcygpO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCk7XG4gICAgdGhpcy5nZXRSY0xpc3QoKTtcbiAgfVxuXG4gIGJhY2soKSB7XG4gICAgdGhpcy5jbG9zZUJ1dHRvbi5lbWl0KCk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGbG9hdGVyQmFyRGF0YSA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5tYXAoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnJlc3BvbnNpYmlsaXR5SWRcbiAgICAgICk7XG4gICAgICB0aGlzLnBvcHVsYXRlUmVzcG9uc2liaWxpdHlWYWx1ZXMoKTtcbiAgICB9XG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICB9XG5cbiAgcG9wdWxhdGVSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5mbGF0TWFwKFxuICAgICAgICAoe1xuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5SWQsXG4gICAgICAgICAgcmVwb3J0TmFtZSxcbiAgICAgICAgICBhc3NpZ25lZUlkcyA9IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IFtdLFxuICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYXNzaWduZWVJZHMpIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShyZXNwb25zaWJpbGl0eUNlbnRlcnMpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgcmV0dXJuIGFzc2lnbmVlSWRzLmZsYXRNYXAoKGFzc2lnbmVlSWQpID0+XG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMubWFwKChyZXNwb25zaWJpbGl0eUNlbnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlJZCxcbiAgICAgICAgICAgICAgYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0UmNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UuZ2V0UmNMaXN0SW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsUmNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VObzogbnVtYmVyID0gMSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObywgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YSA9IHRoaXMubWFwUmVzcG9uc2liaWxpdGllc0RhdGEocmVzPy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXM/LmRhdGE/LnVzZXJzO1xuICAgICAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSZXNwb25zaWJpbGl0aWVzRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHBhZ2VTaXplID0gMTA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXM/LnBhZ2UgfHwgMTtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gcmVzPy50b3RhbCB8fCAwO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplIC0gMSwgdG90YWxJdGVtcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogcmVzPy5yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgdG90YWxfcmVzcG9uc2liaWxpdGllczogdG90YWxJdGVtcyxcbiAgICAgIHRvdGFsX3BhZ2VzOiBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLFxuICAgICAgcmVzcG9uc2liaWxpdGllc19mcm9tOiBzdGFydEluZGV4LFxuICAgICAgcmVzcG9uc2liaWxpdGllc190bzogZW5kSW5kZXgsXG4gICAgfTtcbiAgfVxuXG4gIHJlc3BvbnNpYmlsaXR5UGFnZUNoYW5nZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZU51bWJlciAhPT0gdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YS5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gcGFnZU51bWJlcjtcbiAgICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VOdW1iZXIpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5maW5kSW5kZXgoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmlsdGVyKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVt0aGlzLnJlc3BJZEtleV0gIT09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgICApO1xuICAgIHRoaXMuaXNWYWxpZE9iaiA9IGZhbHNlO1xuICB9XG5cbiAgc2F2ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jbG9zZUJ1dHRvbi5lbWl0KCk7XG4gICAgdGhpcy5maWx0ZXJVbmlxdWVSZXNwb25zaWJpbGl0eVZhbHVlcygpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eS5lbWl0KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyk7XG4gIH1cblxuICBmaWx0ZXJVbmlxdWVSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgcmVzdWx0OiBSZXNwb25zaWJpbGl0eSA9IHt9O1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXG4gICAgICB0aGlzLmluc2VydFVuaXF1ZVJlc3BvbnNpYmlsaXR5KHJlc3VsdCwgaXRlbSk7XG4gICAgfSk7XG4gICAgLy8gQ29udmVydCB0aGUgcmVzdWx0IG9iamVjdCBpbnRvIGFuIGFycmF5XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICB9XG5cbiAgaW5zZXJ0VW5pcXVlUmVzcG9uc2liaWxpdHkocmVzdWx0OiBSZXNwb25zaWJpbGl0eSwgaXRlbTogYW55KSB7XG4gICAgY29uc3QgeyByZXNwb25zaWJpbGl0eUlkLCBhc3NpZ25lZUlkLCByZXNwb25zaWJpbGl0eUNlbnRlciB9ID0gaXRlbTtcbiAgICBpZiAoIXJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXSkge1xuICAgICAgcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdID0ge1xuICAgICAgICByZXNwb25zaWJpbGl0eUlkLFxuICAgICAgICBhc3NpZ25lZUlkczogW10sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogW10sXG4gICAgICAgIHJlcG9ydE5hbWU6IGl0ZW0/LnJlcG9ydE5hbWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBZGQgYXNzaWduZWVJZCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoIXJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8uYXNzaWduZWVJZHM/LmluY2x1ZGVzKGFzc2lnbmVlSWQpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8uYXNzaWduZWVJZHM/LnB1c2goYXNzaWduZWVJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCByZXNwb25zaWJpbGl0eUNlbnRlciBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoXG4gICAgICAgICFyZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LnJlc3BvbnNpYmlsaXR5Q2VudGVycz8uaW5jbHVkZXMoXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5wdXNoKFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1RhYkNoYW5nZSh0YWI6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFRhYiA9IHRhYj8udHlwZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gW3RoaXMuY3VycmVudFRhYl07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuc2VhcmNoVGV4dCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0O1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcztcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRleHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnBhZ2VObyA9IHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2V0UmVzcG9uc2liaWxpdGllc0NvdW50KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkKSk7XG4gICAgcGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gWzAsIDEsIDIsIDNdO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5yZWd1bGF0aW9uQ291bnQgPSByZXM/LnJlZ3VsYXRpb25fY291bnQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5zdGFuZGFyZENvdW50ID0gcmVzPy5zdGFuZGFyZF9jb3VudDtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50LmludGVybmFsQ291bnQgPSByZXM/LmludGVybmFsX2NvdW50O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQub3RoZXJzQ291bnQgPSByZXM/Lm90aGVyc19jb3VudDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgYWxsIHRoZSBGZWF0dXJlIGZsYWcgYmFzZWQgdmFyaWFibGVzXG4gIGZlYXR1cmVGbGFnSW5pdGlhbGl6YXRpb24oKSB7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfZnJlcXVlbmN5X29uX2NvbXBsZXRpb25fb2YnXG4gICAgKTtcbiAgICB0aGlzLmlzT25Db21wbGV0aW9uUmMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9vbl9jb21wbGV0aW9uX3JjJ1xuICAgICk7XG4gIH1cblxuICBzZWxlY3RSZXNwKHJlc3A6IGFueSwgbW9kZTogYm9vbGVhbikge1xuICAgIGNvbnN0IHNlbGVjdGVkUmVzcCA9IHRoaXMuZ2VuZXJhdGVSZXNwb25zaWJpbGl0eUlkKHJlc3ApO1xuICAgIGlmICghc2VsZWN0ZWRSZXNwPy5sZW5ndGgpIHJldHVybjtcblxuICAgIHNlbGVjdGVkUmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgIGVsZS5yZXNwb25zaWJpbGl0eUlkID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5SWQgJiZcbiAgICAgICAgICBlbGUuYXNzaWduZWVJZCA9PT0gaXRlbS5hc3NpZ25lZUlkICYmXG4gICAgICAgICAgZWxlLnJlc3BvbnNpYmlsaXR5Q2VudGVyID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICApO1xuICAgICAgaWYgKG1vZGUgJiYgZXhpc3RzSW5kZXggPT09IC0xKSB7XG4gICAgICAgIC8vIEFkZCBpZiBub3QgcHJlc2VudFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSBpZiBwcmVzZW50XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5zcGxpY2UoZXhpc3RzSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUucmVzcG9uc2liaWxpdHlJZFxuICAgICk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuc29tZShcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5yZXNwb25zaWJpbGl0eUlkID09PSByZXNwPy5pZFxuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhID0gW1xuICAgICAgLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZCksXG4gICAgXTtcbiAgfVxuXG4gIGdlbmVyYXRlUmVzcG9uc2liaWxpdHlJZChyZXNwOiBhbnkpIHtcbiAgICBjb25zdCBhc3NpZ25lZUlkcyA9IHJlc3A/LmFzc2lnbmVlcz8udXNlcklkIHx8IFtdO1xuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHJlc3A/LnJlc3BvbnNpYmlsaXR5Q2VudGVycyB8fCBbbnVsbF07XG5cbiAgICBjb25zdCByZXNwT2JqOiBhbnlbXSA9IFtdO1xuXG4gICAgYXNzaWduZWVJZHMuZm9yRWFjaCgoYXNzaWduZWVJZDogYW55KSA9PiB7XG4gICAgICBpZighcmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgcmVzcE9iai5wdXNoKHRoaXMuZ2VuZXJhdGVSZXNwT2JqKHJlc3AsIGFzc2lnbmVlSWQsIG51bGwpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzLmZvckVhY2goKHJjOiBhbnkpID0+IHtcbiAgICAgICAgcmVzcE9iai5wdXNoKHRoaXMuZ2VuZXJhdGVSZXNwT2JqKHJlc3AsIGFzc2lnbmVlSWQsIHJjKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXNwT2JqO1xuICB9XG5cbiAgZ2VuZXJhdGVSZXNwT2JqKHJlc3A6IGFueSwgYXNzaWduZWVJZDogYW55LCByZXNwb25zaWJpbGl0eUNlbnRlcjogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3BvbnNpYmlsaXR5SWQ6IHJlc3A/LmlkLFxuICAgICAgYXNzaWduZWVJZDogYXNzaWduZWVJZCxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXNwb25zaWJpbGl0eUNlbnRlcixcbiAgICAgIHJlcG9ydE5hbWU6IHJlc3A/LnRpdGxlLFxuICAgIH1cbiAgfVxuXG5cbiAgdmlld1Jlc3BvbnNpYmlsaXR5KGlkOiBhbnkpIHtcbiAgICBpZiAodGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9PT0gaWQpIHtcbiAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPSBudWxsO1xuICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlEYXRhID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPSBpZDtcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eSA9IHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/LmZpbmQoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5pZCA9PT0gaWRcbiAgICApO1xuICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5RGF0YVtpZF0gPVxuICAgICAgdGhpcy5jcmVhdGVTZXBhcmF0ZVJlc3BvbnNpYmlsaXRpZXMocmVzcG9uc2liaWxpdHkpO1xuICB9XG5cbiAgY3JlYXRlU2VwYXJhdGVSZXNwb25zaWJpbGl0aWVzKHJlc3BvbnNpYmlsaXR5OiBhbnkpOiBhbnlbXSB7XG4gICAgaWYgKCFyZXNwb25zaWJpbGl0eSkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgYXNzaWduZWVzID0gcmVzcG9uc2liaWxpdHkuYXNzaWduZWVzPy51c2VySWQgfHwgW107XG4gICAgY29uc3QgcmVzcG9uc2liaWxpdHlDZW50ZXJzID0gcmVzcG9uc2liaWxpdHkucmVzcG9uc2liaWxpdHlDZW50ZXJzIHx8IFtcbiAgICAgIG51bGwsXG4gICAgXTtcbiAgICAvLyBJZiBubyBhc3NpZ25lZXMgb3IgUkNzLCByZXR1cm4gb3JpZ2luYWwgcmVzcG9uc2liaWxpdHlcbiAgICBpZiAoYXNzaWduZWVzLmxlbmd0aCA9PT0gMCAmJiByZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3Jlc3BvbnNpYmlsaXR5XTtcbiAgICB9XG4gICAgY29uc3QgbmV3UmVzcG9uc2liaWxpdGllczogYW55W10gPSBbXTtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyByZXNwb25zaWJpbGl0eSBmb3IgZWFjaCBhc3NpZ25lZS1SQyBjb21iaW5hdGlvblxuICAgIGFzc2lnbmVlcy5mb3JFYWNoKChhc3NpZ25lZUlkOiBudW1iZXIpID0+IHtcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyY0lkOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3UmVzcG9uc2liaWxpdHkgPSB7XG4gICAgICAgICAgLi4uY2xvbmVEZWVwKHJlc3BvbnNpYmlsaXR5KSxcbiAgICAgICAgICBhc3NpZ25lZXM6IHtcbiAgICAgICAgICAgIC4uLnJlc3BvbnNpYmlsaXR5LmFzc2lnbmVlcyxcbiAgICAgICAgICAgIHVzZXJJZDogW2Fzc2lnbmVlSWRdLFxuICAgICAgICAgICAgYWN0aXZlVXNlcklkOiBbYXNzaWduZWVJZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnM6IFtyY0lkXSxcbiAgICAgICAgICBhc3NpZ25lZURldGFpbHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXNzaWduZWU6IGFzc2lnbmVlSWQsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByY0lkLFxuICAgICAgICAgICAgICBwZXJmb3JtYW5jZTogbnVsbCxcbiAgICAgICAgICAgICAgbmV4dER1ZURhdGU6IG51bGwsXG4gICAgICAgICAgICAgIHJldmlld2VyUGVyZm9ybWFuY2U6IG51bGwsXG4gICAgICAgICAgICAgIHJldmlld2VyTmV4dER1ZURhdGU6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIG5ld1Jlc3BvbnNpYmlsaXRpZXMucHVzaChuZXdSZXNwb25zaWJpbGl0eSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSZXNwb25zaWJpbGl0aWVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtaGVhZCB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHk8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1ib2R5XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uYWxsUmVzcG9uc2liaWxpdHlDb3VudCA+IDBcIlxuICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgcmVzcG9uc2liaWxpdHlUYWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LXRhYmxlLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtbXItMSB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUYWIgPT09IGkgKyAxIHx8IChjdXJyZW50VGFiID09PSAwICYmIGkgPT09IDMpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYkNoYW5nZSh0YWIpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ub25lXT1cInJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtYmxvY2sgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+e3sgdGFiLm5hbWUgfX08L2xhYmVsXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodCB2eC1kLWZsZXggdngtanVzdGlmeS1lbmQgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1kLWlubGluZS1ibG9jayB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5VGFiQ291bnRbdHlwZVRvQ291bnRQcm9wZXJ0eVt0YWIudHlwZV1dIHx8IDBcbiAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1zZWFyY2ggdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMlwiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eVNlYXJjaFRleHRcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtbWlkIHZ4LW1iLTRcIlxuICAgICAgW2NsYXNzLndpdGgtcGFnaW5hdGlvbl09XCJcbiAgICAgICAgIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlcyA+IDFcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/Lmxlbmd0aCA9PT0gMCAmJiAhcmVzcG9uc2liaWxpdHlMb2FkZXJcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIm5vRGF0YUltYWdlUGF0aFwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIm5vRGF0YU1lc3NhZ2VcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/Lmxlbmd0aCA+IDAgJiYgIXJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1yY109XCJpc09uQ29tcGxldGlvblJjXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUkVTUE9OU0lCSUxJVElFU1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1jZW50ZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImlzT25Db21wbGV0aW9uUmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNpYmlsaXR5IG9mIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5kYXRhO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3cgY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5vcGVuXT1cInRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1ub1wiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInMSdcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbSArIGkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVzcG9uc2liaWxpdHk/LmlkXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFJlc3AocmVzcG9uc2liaWxpdHksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXJGaWxlQXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJBVkFUQVJfQ09OU1RBTlRTLlRZUEUuQVNTSUdOT1JcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlckRldGFpbHNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNpYmlsaXR5Py5hc3NpZ25vcl0gfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZXM/LnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0IGFzIGFzc2lnbmVlRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgIFthdmF0YXJDbGFzc109XCJBVkFUQVJfQ09OU1RBTlRTLkNPTE9SLkdSRUVOXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IEFWQVRBUl9DT05TVEFOVFMuQU5ZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogQVZBVEFSX0NPTlNUQU5UUy5BTExcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFt1c2VyRGV0YWlsc109XCJhc3NpZ25lZURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0b3BQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlIHZ4LWZzLTEzIHZ4LW5ldXRyYWwtMTAwIHZ4LWxoLTVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eT8udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdHk/LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1uZXV0cmFsLTEwMCB2eC1saC00IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUjpcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdldFJDTGlzdCA6IHJjTGlzdCA6IGFsbFJjTGlzdCBhcyByY0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNwLW5hbWUgdngtZnMtMTEgdngtZ3JheS02MCB2eC1saC00IHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmNMaXN0Py5sZW5ndGggPiAwID8gcmNMaXN0WzBdIDogJy0tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByY0xpc3Q/Lmxlbmd0aCA+IDAgPyByY0xpc3RbMF0gOiBcIi0tXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtYmFkZ2VOdW0geHMgbWluaW1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNwUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmVzcFBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjIG9mIHJjTGlzdCB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyByYyB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFjdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uYXNzaWduZWVUeXBlID09PSBBVkFUQVJfQ09OU1RBTlRTLkFMTC50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yY1R5cGUgPT09IEFWQVRBUl9DT05TVEFOVFMuQUxMLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld1Jlc3BvbnNpYmlsaXR5KHJlc3BvbnNpYmlsaXR5Py5pZClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1pY29uLWJ1dHRvbiBtaW5pbWFsIHNtYWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIiYjeGU5ZTc7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCImI3hlOWU4O1wiXG4gICAgICAgICAgICAgICAgICAgIH19PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZCAmJlxuICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eURhdGFbdmlld1Jlc3BvbnNpYmlsaXR5SWRdPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvcGVuLW1vcmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygdmlld1Jlc3BvbnNpYmlsaXR5RGF0YVt2aWV3UmVzcG9uc2liaWxpdHlJZF1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzIDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RSZXNwKGRhdGEsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHktbmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmFzc2lnbmVlcz8udXNlcklkXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGdldFVzZXJEZXRhaWxzIDogdXNlckxpc3QgYXMgYXNzaWduZWVEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItYXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIkFWQVRBUl9DT05TVEFOVFMuVFlQRS5BU1NJR05PUlwiXG4gICAgICAgICAgICAgICAgICAgICAgW3VzZXJEZXRhaWxzXT1cImFzc2lnbmVlRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTEgdngtbmV1dHJhbC0xMDAgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzaWduZWVEZXRhaWxzWzBdPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlRGV0YWlsc1swXT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1uZXV0cmFsLTEwMCB2eC1saC00IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVI6XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRSQ0xpc3QgOiByY0xpc3QgOiBhbGxSY0xpc3QgYXMgY2hpbGRSY0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc3AtbmFtZSB2eC1mcy0xMSB2eC1ncmF5LTYwIHZ4LWxoLTQgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUmNMaXN0Py5sZW5ndGggPiAwID8gY2hpbGRSY0xpc3RbMF0gOiAnLS0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlsZFJjTGlzdD8ubGVuZ3RoID4gMCA/IGNoaWxkUmNMaXN0WzBdIDogXCItLVwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgcmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzID4gMVwiXG4gICAgICBbc3RhcnRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbVwiXG4gICAgICBbZW5kXT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzX3RvXCJcbiAgICAgIFt0b3RhbF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcmVzcG9uc2liaWxpdGllc1wiXG4gICAgICBbcGFnZUNvdW50XT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlc1wiXG4gICAgICBbY3VycmVudFBhZ2VdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2VcIlxuICAgICAgKHNlbGVjdGVkUGFnZSk9XCJyZXNwb25zaWJpbGl0eVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXBwLXBhZ2luYXRpb24+XG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgIFtzZWxlY3RlZERhdGFdPVwicmVzcG9uc2liaWxpdHlGbG9hdGVyQmFyRGF0YVwiXG4gICAgICBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ1JlcG9ydE5hbWUnXCJcbiAgICAgIChjbG9zZUxpc3QpPVwiYmFjaygpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlSXRlbSgkZXZlbnQpXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cIiFyZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhPy5sZW5ndGhcIlxuICAgICAgW2lzUmVzcG9uc2liaWxpdHldPVwidHJ1ZVwiXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cImZsb2F0ZXJCYXJUZXh0LlNJTkdVTEFSX1RFWFRcIlxuICAgICAgW3BsdXJhbFRleHRdPVwiZmxvYXRlckJhclRleHQuUExVUkFMX1RFWFRcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=