vcomply-workflow-engine 6.1.67 → 6.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +34 -6
- package/esm2022/lib/constants/assets.constants.mjs +2 -1
- package/esm2022/lib/constants/policy.constant.mjs +6 -0
- package/esm2022/lib/constants/regix.constants.mjs +4 -0
- package/esm2022/lib/constants/responsibility.mjs +8 -0
- package/esm2022/lib/formgroup/select/cs-select/cs-select.component.mjs +2 -2
- package/esm2022/lib/interfaces/policy.interface.mjs +2 -0
- package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +9 -1
- package/esm2022/lib/more-option/more-option.component.mjs +3 -13
- package/esm2022/lib/pipes/search.pipe.mjs +2 -1
- package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +29 -3
- package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +55 -29
- package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +32 -13
- package/esm2022/lib/report-a-case/constants/api.constants.mjs +3 -2
- package/esm2022/lib/report-a-case/constants/report-case.constants.mjs +3 -1
- package/esm2022/lib/report-a-case/report-case.module.mjs +5 -2
- package/esm2022/lib/report-a-case/services/date-utility.service.mjs +29 -0
- package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +16 -4
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +54 -45
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -1
- package/esm2022/lib/sharedComponents/document-section/document-section.component.mjs +39 -14
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +24 -10
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.module.mjs +19 -15
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +2 -2
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +20 -20
- package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +19 -0
- package/esm2022/lib/sharedComponents/policy-template/select-template-list/select-template-list.component.mjs +15 -5
- package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +3 -3
- package/esm2022/lib/ui-kit/banner/banner.component.mjs +44 -0
- package/esm2022/lib/ui-kit/multi-select/cs-multiselect/cs-multiselect.component.mjs +12 -5
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +79 -19
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +2 -2
- package/esm2022/lib/workflow-engine.module.mjs +5 -2
- package/esm2022/lib/workflow-policy/ms-word.constants.mjs +2 -2
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +70 -35
- package/esm2022/lib/workflow-program/constants.mjs +9 -1
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +7 -1
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +13 -16
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +5 -5
- package/esm2022/lib/workflow-services/policy.service.mjs +7 -1
- package/esm2022/lib/workflow-services/programs.service.mjs +1 -1
- package/fesm2022/vcomply-workflow-engine.mjs +1176 -793
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -0
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +3 -0
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -0
- package/lib/constants/assets.constants.d.ts +1 -0
- package/lib/constants/policy.constant.d.ts +2 -0
- package/lib/constants/regix.constants.d.ts +3 -0
- package/lib/constants/responsibility.d.ts +7 -0
- package/lib/interfaces/policy.interface.d.ts +5 -0
- package/lib/log-an-issue/log-an-issue.component.d.ts +2 -0
- package/lib/more-option/more-option.component.d.ts +1 -0
- package/lib/report-a-case/components/assignee/assignee.component.d.ts +1 -0
- package/lib/report-a-case/components/case-assignees/case-assignees.component.d.ts +1 -0
- package/lib/report-a-case/components/case-category/case-category.component.d.ts +1 -0
- package/lib/report-a-case/components/case-details/case-details.component.d.ts +1 -0
- package/lib/report-a-case/components/case-owners/case-owners.component.d.ts +1 -0
- package/lib/report-a-case/components/case-priority/case-priority.component.d.ts +1 -0
- package/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.d.ts +9 -3
- package/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.d.ts +1 -0
- package/lib/report-a-case/components/due-date/due-date.component.d.ts +10 -2
- package/lib/report-a-case/components/field-holder/field-holder.component.d.ts +1 -0
- package/lib/report-a-case/components/linked assessment/linked-assessment.component.d.ts +1 -0
- package/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.d.ts +1 -0
- package/lib/report-a-case/components/rc-details/rc-details.component.d.ts +1 -0
- package/lib/report-a-case/components/report-date/report-date.component.d.ts +9 -1
- package/lib/report-a-case/constants/api.constants.d.ts +1 -0
- package/lib/report-a-case/constants/report-case.constants.d.ts +2 -0
- package/lib/report-a-case/report-case.module.d.ts +23 -22
- package/lib/report-a-case/services/date-utility.service.d.ts +9 -0
- package/lib/report-a-case/services/report-a-case.service.d.ts +2 -1
- package/lib/report-a-case/workflow-case/workflow-case.component.d.ts +5 -1
- package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -0
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -0
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +6 -0
- package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -0
- package/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.d.ts +1 -0
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -0
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -0
- package/lib/sharedComponents/document-section/document-section.component.d.ts +8 -5
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +5 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.module.d.ts +8 -7
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -0
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -0
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -0
- package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -0
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -0
- package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +7 -0
- package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -0
- package/lib/sharedComponents/policy-template/select-template-list/select-template-list.component.d.ts +1 -0
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -0
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -0
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -0
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -0
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -0
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -0
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -0
- package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -0
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -0
- package/lib/ui-kit/banner/banner.component.d.ts +8 -0
- package/lib/ui-kit/multi-select/cs-multiselect/cs-multiselect.component.d.ts +3 -1
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -0
- package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -0
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -0
- package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -0
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +5 -0
- package/lib/workflow-engine.module.d.ts +44 -43
- package/lib/workflow-policy/workflow-policy.component.d.ts +3 -0
- package/lib/workflow-program/constants.d.ts +3 -0
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -0
- package/lib/workflow-program/workflow-program.component.d.ts +1 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -0
- package/lib/workflow-services/policy.service.d.ts +2 -0
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { Component, ElementRef, Input, ViewChild, Output, EventEmitter, HostListener, } from '@angular/core';
|
|
2
|
-
import
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
import { REPORT_CASE, HELPER_TEXT, EMAIL_REMINDERS, BANNER_CASE_RESOLUTION_DEADLINE_WARNING, } from '../../constants/report-case.constants';
|
|
3
4
|
import { ASSETS } from '../../../constants/assets.constants';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../../services/common.service";
|
|
6
7
|
import * as i2 from "../../../sharedComponents/frequency/frequency.service";
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "
|
|
9
|
-
import * as i5 from "../../../
|
|
10
|
-
import * as i6 from "
|
|
11
|
-
import * as i7 from "
|
|
12
|
-
import * as i8 from "
|
|
13
|
-
import * as i9 from "../../../
|
|
14
|
-
import * as i10 from "
|
|
8
|
+
import * as i3 from "../../services/date-utility.service";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "../../../ui-kit/tooltip/tooltip.directive";
|
|
11
|
+
import * as i6 from "../../../sharedComponents/floating-bar/floating-bar.component";
|
|
12
|
+
import * as i7 from "ng2-date-picker";
|
|
13
|
+
import * as i8 from "@angular/forms";
|
|
14
|
+
import * as i9 from "../../../sharedComponents/v-loader/loader-inline/loader-inline.component";
|
|
15
|
+
import * as i10 from "../../../ui-kit/no-data/no-data.component";
|
|
16
|
+
import * as i11 from "../assignee/assignee.component";
|
|
17
|
+
import * as i12 from "../../../ui-kit/banner/banner.component";
|
|
15
18
|
export class DueDateComponent {
|
|
16
19
|
set initialSelection(value) {
|
|
17
20
|
this.dueDate = value?.resolution_deadline?.due_date;
|
|
@@ -20,9 +23,10 @@ export class DueDateComponent {
|
|
|
20
23
|
this.escalationEmail = value?.resolution_deadline?.owner_remind_before;
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
|
-
constructor(commonDateService, frequencyService) {
|
|
26
|
+
constructor(commonDateService, frequencyService, dateUtilityService) {
|
|
24
27
|
this.commonDateService = commonDateService;
|
|
25
28
|
this.frequencyService = frequencyService;
|
|
29
|
+
this.dateUtilityService = dateUtilityService;
|
|
26
30
|
this.ASSETS = ASSETS;
|
|
27
31
|
this.animation = true;
|
|
28
32
|
this.datePickerOverlay = false;
|
|
@@ -45,14 +49,18 @@ export class DueDateComponent {
|
|
|
45
49
|
this.escalationEmail = EMAIL_REMINDERS.escalation_email_reminder;
|
|
46
50
|
this.showError = false;
|
|
47
51
|
this.showAssigneeError = false;
|
|
52
|
+
this.CaseDeadlineWarning = BANNER_CASE_RESOLUTION_DEADLINE_WARNING;
|
|
48
53
|
this.userList = [];
|
|
49
54
|
this.groupList = [];
|
|
50
55
|
this.mode = '';
|
|
56
|
+
this.min = '';
|
|
57
|
+
this.taskCount = 0;
|
|
58
|
+
this.validDeadline = '';
|
|
51
59
|
this.closeDueDateResolution = new EventEmitter();
|
|
52
60
|
this.closeDueDateEvent = new EventEmitter();
|
|
53
61
|
}
|
|
54
62
|
ngOnInit() {
|
|
55
|
-
this.
|
|
63
|
+
this.setMinDate();
|
|
56
64
|
setTimeout(() => {
|
|
57
65
|
this.animation = false;
|
|
58
66
|
}, 300);
|
|
@@ -67,7 +75,7 @@ export class DueDateComponent {
|
|
|
67
75
|
this.initializeStageAssignees(deadline);
|
|
68
76
|
}
|
|
69
77
|
initializeDeadlineValues(deadline) {
|
|
70
|
-
this.dueDate =
|
|
78
|
+
this.dueDate = this.dateUtilityService.convertToUTC(deadline?.due_date);
|
|
71
79
|
this.emailReminder =
|
|
72
80
|
deadline.assignee_remind_before || EMAIL_REMINDERS.email_reminder;
|
|
73
81
|
this.escalationEmail =
|
|
@@ -79,6 +87,14 @@ export class DueDateComponent {
|
|
|
79
87
|
const stageAssigneeMap = this.createStageAssigneeMap(deadline.stages_assignees);
|
|
80
88
|
this.mapWorkflowStages(stageAssigneeMap);
|
|
81
89
|
}
|
|
90
|
+
setMinDate() {
|
|
91
|
+
if (this.taskCount > 0 && this.validDeadline) {
|
|
92
|
+
this.dateConfig.min = dayjs(this.validDeadline);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.dateConfig.min = this.frequencyService.formatDate();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
82
98
|
createStageAssigneeMap(stagesAssignees) {
|
|
83
99
|
return new Map(stagesAssignees.map((stage) => [stage?.stage_id, stage?.assignee_id]));
|
|
84
100
|
}
|
|
@@ -111,6 +127,7 @@ export class DueDateComponent {
|
|
|
111
127
|
'Feb',
|
|
112
128
|
'Mar',
|
|
113
129
|
'Apr',
|
|
130
|
+
'May',
|
|
114
131
|
'Jun',
|
|
115
132
|
'Jul',
|
|
116
133
|
'Aug',
|
|
@@ -119,13 +136,13 @@ export class DueDateComponent {
|
|
|
119
136
|
'Nov',
|
|
120
137
|
'Dec',
|
|
121
138
|
];
|
|
122
|
-
const dateValue =
|
|
123
|
-
const monthValue = monthArray[
|
|
124
|
-
const yearValue =
|
|
139
|
+
const dateValue = evt?.date?.$d?.getDate();
|
|
140
|
+
const monthValue = monthArray[evt?.date?.$d?.getMonth()];
|
|
141
|
+
const yearValue = evt?.date?.$d?.getFullYear();
|
|
125
142
|
const dateStr = `${dateValue} ${monthValue} ${yearValue}`;
|
|
126
143
|
}
|
|
127
144
|
if (evt?.date?.$d) {
|
|
128
|
-
this.dueDate =
|
|
145
|
+
this.dueDate = evt?.date?.$d;
|
|
129
146
|
this.showError = false;
|
|
130
147
|
}
|
|
131
148
|
this.datePicker?.api?.close();
|
|
@@ -223,18 +240,21 @@ export class DueDateComponent {
|
|
|
223
240
|
this.closeDueDateResolution.emit();
|
|
224
241
|
}
|
|
225
242
|
isDueDateValid() {
|
|
226
|
-
|
|
243
|
+
if (!this.dueDate)
|
|
244
|
+
return false;
|
|
245
|
+
if (this.taskCount > 0 && this.validDeadline) {
|
|
246
|
+
const validDeadlineDate = dayjs(this.validDeadline);
|
|
247
|
+
const selectedDate = dayjs(this.dueDate);
|
|
248
|
+
return selectedDate.isValid() && selectedDate.isAfter(validDeadlineDate);
|
|
249
|
+
}
|
|
250
|
+
return dayjs(this.dueDate).isValid();
|
|
227
251
|
}
|
|
228
252
|
areAssigneesValid() {
|
|
229
253
|
return this.workflowDetails?.stages_assignees?.every((stage, index) => this.assigneeData[index] && this.assigneeData[index]?.length > 0);
|
|
230
254
|
}
|
|
231
255
|
formatDueDate(date) {
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
localDate.setDate(localDate.getDate() + 1);
|
|
235
|
-
// Set time to midnight
|
|
236
|
-
localDate.setHours(0, 0, 0, 0);
|
|
237
|
-
return localDate.toISOString();
|
|
256
|
+
const utcDate = this.dateUtilityService.convertToUTC(date);
|
|
257
|
+
return utcDate.toISOString();
|
|
238
258
|
}
|
|
239
259
|
setDeadlineReminders() {
|
|
240
260
|
this.payload.caseToWorkflow.resolution_deadline.assignee_remind_before =
|
|
@@ -260,7 +280,7 @@ export class DueDateComponent {
|
|
|
260
280
|
};
|
|
261
281
|
}
|
|
262
282
|
setPayload() {
|
|
263
|
-
const formattedDate = this.dueDate;
|
|
283
|
+
const formattedDate = this.formatDueDate(this.dueDate);
|
|
264
284
|
this.payload.caseToWorkflow.resolution_deadline.due_date = formattedDate;
|
|
265
285
|
this.setDeadlineReminders();
|
|
266
286
|
const stagesAssignees = this.setStagesAssignees();
|
|
@@ -286,13 +306,13 @@ export class DueDateComponent {
|
|
|
286
306
|
this.escalationEmail = EMAIL_REMINDERS.escalation_email_reminder;
|
|
287
307
|
}
|
|
288
308
|
}
|
|
289
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DueDateComponent, deps: [{ token: i1.CommonService }, { token: i2.FrequencyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
290
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DueDateComponent, selector: "app-due-date", inputs: { payload: "payload", dueDate: "dueDate", workflowDetails: "workflowDetails", userList: "userList", groupList: "groupList", mode: "mode", initialSelection: "initialSelection" }, outputs: { closeDueDateResolution: "closeDueDateResolution", closeDueDateEvent: "closeDueDateEvent" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["deadlineDatePicker"], descendants: true }, { propertyName: "ASSETS", first: true, predicate: ["deadlineDatePicker"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"case-calendar vx-mb-3\">\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #deadlineDatePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n >\n <div\n class=\"case-calendar-inner vx-d-flex vx-align-center\"\n [class.disabled]=\"true\"\n >\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"stage-deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.75rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar-inner.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar-inner.disabled input,::ng-deep .configure-resolution-body .case-calendar-inner.disabled i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{margin-bottom:.75rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0;border:1px solid #f2f2f5;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-body{border-radius:0 0 .25rem .25rem;border:1px solid #f2f2f5;border-top:none}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\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.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { 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.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "directive", type: i7.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: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: i10.AssigneeComponent, selector: "app-assignee", inputs: ["assigneeList", "activeAssignee", "payload"], outputs: ["closeEvent", "selectedAssigneeEvent"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
|
|
309
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DueDateComponent, deps: [{ token: i1.CommonService }, { token: i2.FrequencyService }, { token: i3.DateUtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
310
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DueDateComponent, selector: "app-due-date", inputs: { payload: "payload", dueDate: "dueDate", workflowDetails: "workflowDetails", userList: "userList", groupList: "groupList", mode: "mode", initialSelection: "initialSelection", min: "min", taskCount: "taskCount", validDeadline: "validDeadline" }, outputs: { closeDueDateResolution: "closeDueDateResolution", closeDueDateEvent: "closeDueDateEvent" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["deadlineDatePicker"], descendants: true }, { propertyName: "ASSETS", first: true, predicate: ["deadlineDatePicker"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <app-banner *ngIf=\"mode === 'EDIT' && taskCount > 0\">\n <p banner>\n {{ CaseDeadlineWarning }}\n </p>\n </app-banner>\n <div class=\"case-calendar vx-mb-3\">\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #deadlineDatePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n >\n <div\n class=\"case-calendar-inner vx-d-flex vx-align-center\"\n [class.disabled]=\"true\"\n >\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"stage-deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.75rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar-inner.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar-inner.disabled input,::ng-deep .configure-resolution-body .case-calendar-inner.disabled i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{margin-bottom:.75rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0;border:1px solid #f2f2f5;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-body{border-radius:0 0 .25rem .25rem;border:1px solid #f2f2f5;border-top:none}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i6.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: i7.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "directive", type: i8.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: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i10.NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: i11.AssigneeComponent, selector: "app-assignee", inputs: ["assigneeList", "activeAssignee", "payload"], outputs: ["closeEvent", "selectedAssigneeEvent"] }, { kind: "component", type: i12.BannerComponent, selector: "app-banner", inputs: ["icon", "bannerClass", "isCenter"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] }); }
|
|
291
311
|
}
|
|
292
312
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DueDateComponent, decorators: [{
|
|
293
313
|
type: Component,
|
|
294
|
-
args: [{ selector: 'app-due-date', template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"case-calendar vx-mb-3\">\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #deadlineDatePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n >\n <div\n class=\"case-calendar-inner vx-d-flex vx-align-center\"\n [class.disabled]=\"true\"\n >\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"stage-deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.75rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar-inner.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar-inner.disabled input,::ng-deep .configure-resolution-body .case-calendar-inner.disabled i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{margin-bottom:.75rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0;border:1px solid #f2f2f5;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-body{border-radius:0 0 .25rem .25rem;border:1px solid #f2f2f5;border-top:none}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
|
|
295
|
-
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.FrequencyService }]; }, propDecorators: { datePicker: [{
|
|
314
|
+
args: [{ selector: 'app-due-date', template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <app-banner *ngIf=\"mode === 'EDIT' && taskCount > 0\">\n <p banner>\n {{ CaseDeadlineWarning }}\n </p>\n </app-banner>\n <div class=\"case-calendar vx-mb-3\">\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #deadlineDatePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n >\n <div\n class=\"case-calendar-inner vx-d-flex vx-align-center\"\n [class.disabled]=\"true\"\n >\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"stage-deadline-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.75rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar-inner.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar-inner.disabled input,::ng-deep .configure-resolution-body .case-calendar-inner.disabled i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{margin-bottom:.75rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0;border:1px solid #f2f2f5;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-body{border-radius:0 0 .25rem .25rem;border:1px solid #f2f2f5;border-top:none}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative;border-bottom:1px solid #f2f2f5}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
|
|
315
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.FrequencyService }, { type: i3.DateUtilityService }]; }, propDecorators: { datePicker: [{
|
|
296
316
|
type: ViewChild,
|
|
297
317
|
args: ['deadlineDatePicker']
|
|
298
318
|
}], ASSETS: [{
|
|
@@ -312,6 +332,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
312
332
|
type: Input
|
|
313
333
|
}], initialSelection: [{
|
|
314
334
|
type: Input
|
|
335
|
+
}], min: [{
|
|
336
|
+
type: Input
|
|
337
|
+
}], taskCount: [{
|
|
338
|
+
type: Input
|
|
339
|
+
}], validDeadline: [{
|
|
340
|
+
type: Input
|
|
315
341
|
}], closeDueDateResolution: [{
|
|
316
342
|
type: Output
|
|
317
343
|
}], closeDueDateEvent: [{
|
|
@@ -320,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
320
346
|
type: HostListener,
|
|
321
347
|
args: ['document:click', ['$event']]
|
|
322
348
|
}] } });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsR0FFaEIsTUFBTSx1Q0FBdUMsQ0FBQztBQUcvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7OztBQU83RCxNQUFNLE9BQU8sZ0JBQWdCO0lBa0MzQixJQUFhLGdCQUFnQixDQUFDLEtBQVU7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBS0QsWUFDVSxpQkFBZ0MsRUFDaEMsZ0JBQWtDO1FBRGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxx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QUksQ0FBQyxpQkFBaUI7U0FDaEMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUM7U0FDckQ7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLHlCQUF5QixDQUFDO1NBQ2xFO0lBQ0gsQ0FBQzsrR0FwVlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IscWxCQUVjLFVBQVUsNkJDN0JyRCxrK1lBb1VBOzs0RkR6U2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7bUlBS1MsVUFBVTtzQkFBMUMsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRS9CLE1BQU07c0JBREwsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQjNELE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFRSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQXVSUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5cbmltcG9ydCB7XG4gIFJFUE9SVF9DQVNFLFxuICBIRUxQRVJfVEVYVCxcbiAgRU1BSUxfUkVNSU5ERVJTLFxuICBNT05USF9OQU1FUyxcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3JlcG9ydC1jYXNlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWR1ZS1kYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R1ZS1kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHVlLWRhdGUuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHVlRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2RlYWRsaW5lRGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkZWFkbGluZURhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBhbmltYXRpb24gPSB0cnVlO1xuICBkYXRlUGlja2VyUG9wVXAhOiBFbGVtZW50UmVmO1xuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuICBkYXRlQ29uZmlnOiBJRGF0ZVBpY2tlckNvbmZpZyA9IHtcbiAgICBkaXNhYmxlS2V5cHJlc3M6IHRydWUsXG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxuICAgIG9wZW5PbkNsaWNrOiBmYWxzZSxcbiAgICBvcGVuT25Gb2N1czogZmFsc2UsXG4gICAgbWluOiAnJyxcbiAgfTtcbiAgY29tbW9uU2VydmljZTogYW55O1xuICBkdWVEYXRlVGV4dHMgPSBSRVBPUlRfQ0FTRTtcbiAgaGVscGVyVGV4dCA9IEhFTFBFUl9URVhUO1xuICBhc3NpZ25lZUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXNzaWduZWVMaXN0OiBhbnlbXSA9IFtdO1xuICBhc3NpZ25lZURhdGE6IHsgW2tleTogbnVtYmVyXTogYW55W10gfSA9IHt9O1xuICBjdXJyZW50U3RhZ2VJbmRleDogbnVtYmVyID0gLTE7XG4gIGFjdGl2ZUFzc2lnbmVlOiBhbnlbXSA9IFtdO1xuICBlbWFpbFJlbWluZGVyOiBudW1iZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gIGVzY2FsYXRpb25FbWFpbDogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVzY2FsYXRpb25fZW1haWxfcmVtaW5kZXI7XG4gIHNob3dFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QXNzaWduZWVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBheWxvYWQ6IGFueTtcbiAgQElucHV0KCkgZHVlRGF0ZTogYW55O1xuICBASW5wdXQoKSB3b3JrZmxvd0RldGFpbHM6IGFueTtcbiAgQElucHV0KCkgdXNlckxpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGdyb3VwTGlzdDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGU7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uYXNzaWduZWVfcmVtaW5kX2JlZm9yZTtcbiAgICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/Lm93bmVyX3JlbWluZF9iZWZvcmU7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGNsb3NlRHVlRGF0ZVJlc29sdXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbW1vbkRhdGVTZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZm9ybWF0RGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuc2V0QXNzaWduZWVMaXN0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplRWRpdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVkaXRNb2RlKCkge1xuICAgIGlmICghdGhpcy5wYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGUpIHJldHVybjtcblxuICAgIGNvbnN0IGRlYWRsaW5lID0gdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmU7XG4gICAgdGhpcy5pbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmUpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0YWdlQXNzaWduZWVzKGRlYWRsaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURlYWRsaW5lVmFsdWVzKGRlYWRsaW5lOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSBuZXcgRGF0ZShkZWFkbGluZT8uZHVlX2RhdGUpO1xuICAgIHRoaXMuZW1haWxSZW1pbmRlciA9XG4gICAgICBkZWFkbGluZS5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlIHx8IEVNQUlMX1JFTUlOREVSUy5lbWFpbF9yZW1pbmRlcjtcbiAgICB0aGlzLmVzY2FsYXRpb25FbWFpbCA9XG4gICAgICBkZWFkbGluZS5vd25lcl9yZW1pbmRfYmVmb3JlIHx8IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIGlmICghZGVhZGxpbmU/LnN0YWdlc19hc3NpZ25lZXM/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhZ2VBc3NpZ25lZU1hcCA9IHRoaXMuY3JlYXRlU3RhZ2VBc3NpZ25lZU1hcChcbiAgICAgIGRlYWRsaW5lLnN0YWdlc19hc3NpZ25lZXNcbiAgICApO1xuICAgIHRoaXMubWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoc3RhZ2VzQXNzaWduZWVzOiBhbnlbXSk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgTWFwKFxuICAgICAgc3RhZ2VzQXNzaWduZWVzLm1hcCgoc3RhZ2U6IGFueSkgPT4gW3N0YWdlPy5zdGFnZV9pZCwgc3RhZ2U/LmFzc2lnbmVlX2lkXSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBXb3JrZmxvd1N0YWdlcyhzdGFnZUFzc2lnbmVlTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXM/LmZvckVhY2goXG4gICAgICAod29ya2Zsb3dTdGFnZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlSWQgPSBzdGFnZUFzc2lnbmVlTWFwPy5nZXQod29ya2Zsb3dTdGFnZT8uc3RhZ2VfaWQpO1xuICAgICAgICBpZiAoIWFzc2lnbmVlSWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuYXNzaWduZWVMaXN0Py5maW5kKFxuICAgICAgICAgIChhc3NpZ25lZTogYW55KSA9PiBhc3NpZ25lZT8uX2lkID09PSBhc3NpZ25lZUlkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NpZ25lZSkge1xuICAgICAgICAgIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XSA9IFthc3NpZ25lZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgb3BlbkRhdGVQaWNrZXIoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjbG9zZXMgdGhlIGRhdGUgcGlja2VyIGZyb20gcG9saWN5IGZvcm1cbiAgICovXG4gIGNsb3NlRGF0ZVBpY2tlcihldnQ6IGFueSkge1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcblxuICAgIGlmICghZXZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICBsZXQgbW9udGhBcnJheSA9IFtcbiAgICAgICAgJ0phbicsXG4gICAgICAgICdGZWInLFxuICAgICAgICAnTWFyJyxcbiAgICAgICAgJ0FwcicsXG4gICAgICAgICdKdW4nLFxuICAgICAgICAnSnVsJyxcbiAgICAgICAgJ0F1ZycsXG4gICAgICAgICdTZXAnLFxuICAgICAgICAnT2N0JyxcbiAgICAgICAgJ05vdicsXG4gICAgICAgICdEZWMnLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldE1vbnRoKCldO1xuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIHRoaXMuZHVlRGF0ZSA9IG5ldyBEYXRlKGV2dC5kYXRlLiRkKTtcbiAgICAgIHRoaXMuc2hvd0Vycm9yID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5jbG9zZSgpO1xuICB9XG5cbiAgY2xvc2VEdWVEYXRlKCkge1xuICAgIHRoaXMuY2xvc2VEdWVEYXRlRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgYWN0aXZhdGVTZWxlY3RvcihhY3RpdmU6IGJvb2xlYW4sIHN0YWdlSW5kZXg/OiBudW1iZXIpIHtcbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGFjdGl2ZTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTdGFnZUluZGV4ID0gc3RhZ2VJbmRleCA/PyAtMTtcbiAgICAgIHRoaXMuYWN0aXZlQXNzaWduZWUgPVxuICAgICAgICB0aGlzLmN1cnJlbnRTdGFnZUluZGV4ICE9PSAtMVxuICAgICAgICAgID8gdGhpcy5hc3NpZ25lZURhdGFbdGhpcy5jdXJyZW50U3RhZ2VJbmRleF1cbiAgICAgICAgICA6IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNldEFzc2lnbmVlTGlzdCgpIHtcbiAgICBjb25zdCBkaXJlY3RBc3NpZ25lZXMgPSB0aGlzLmdldEFzc2lnbmVlcygpO1xuICAgIGNvbnN0IGdyb3VwQXNzaWduZWVzID0gdGhpcy5nZXRHcm91cEFzc2lnbmVlcygpO1xuICAgIHRoaXMuYXNzaWduZWVMaXN0ID0gdGhpcy5nZXRVbmlxdWVBc3NpZ25lZXMoXG4gICAgICBkaXJlY3RBc3NpZ25lZXMsXG4gICAgICBncm91cEFzc2lnbmVlc1xuICAgICk7XG4gIH1cblxuICBnZXRBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIGNvbnN0IGFzc2lnbmVlSWRzID0gdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXMgfHwgW107XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51c2VyTGlzdFxuICAgICAgICA/LmZpbHRlcigodXNlcjogYW55KSA9PiBhc3NpZ25lZUlkcy5pbmNsdWRlcyh1c2VyPy5faWQpKVxuICAgICAgICA/Lm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3Vwcyh1c2VyKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgW11cbiAgICApO1xuICB9XG5cbiAgZ2V0VXNlckdyb3Vwcyh1c2VyOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBMaXN0Py5maWx0ZXIoKGdyb3VwOiBhbnkpID0+XG4gICAgICB1c2VyPy51c2VyZ3JvdXBfaWQ/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICApO1xuICB9XG5cbiAgZ2V0R3JvdXBBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIGNvbnN0IGFzc2lnbmVlR3JvdXBJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlc19ncm91cCB8fCBbXTtcblxuICAgIHJldHVybiAoXG4gICAgICBhc3NpZ25lZUdyb3VwSWRzLmZsYXRNYXAoKGdyb3VwSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwQnlJZChncm91cElkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXNzaWduZWVzRnJvbUdyb3VwKGdyb3VwKTtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfVxuXG4gIGZpbmRHcm91cEJ5SWQoZ3JvdXBJZDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5ncm91cExpc3Q/LmZpbmQoKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5faWQgPT09IGdyb3VwSWQpO1xuICB9XG5cbiAgZ2V0QXNzaWduZWVzRnJvbUdyb3VwKGdyb3VwOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdyb3VwPy5hc3NvY2lhdGVkVXNlcnNcbiAgICAgICAgPy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVzZXJGcm9tTGlzdCA9IHRoaXMuZmluZFVzZXJCeUlkKHVzZXI/LnVzZXJJZD8uX2lkKTtcbiAgICAgICAgICBpZiAodXNlckZyb21MaXN0KSB7XG4gICAgICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXJGcm9tTGlzdCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi51c2VyRnJvbUxpc3QsXG4gICAgICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigodXNlcjogYW55KSA9PiB1c2VyICE9PSBudWxsKSB8fCBbXVxuICAgICk7XG4gIH1cblxuICBmaW5kVXNlckJ5SWQodXNlcklkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnVzZXJMaXN0Py5maW5kKCh1c2VyOiBhbnkpID0+IHVzZXI/Ll9pZCA9PT0gdXNlcklkKTtcbiAgfVxuXG4gIGdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXM6IGFueVtdLCBncm91cEFzc2lnbmVlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIFsuLi5kaXJlY3RBc3NpZ25lZXMsIC4uLmdyb3VwQXNzaWduZWVzXS5yZWR1Y2UoXG4gICAgICAoYWNjOiBhbnlbXSwgdXNlcjogYW55KSA9PiB7XG4gICAgICAgIGlmICghYWNjLnNvbWUoKHU6IGFueSkgPT4gdT8uX2lkID09PSB1c2VyPy5faWQpKSB7XG4gICAgICAgICAgYWNjLnB1c2godXNlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICBbXVxuICAgICk7XG4gIH1cblxuICBzZWxlY3RlZEFzc2lnbmVlKGV2ZW50OiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTdGFnZUluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5hc3NpZ25lZURhdGFbdGhpcy5jdXJyZW50U3RhZ2VJbmRleF0gPSBldmVudDtcbiAgICB9XG4gICAgdGhpcy5hc3NpZ25lZUNsaWNrZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2hvd0Fzc2lnbmVlRXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzYXZlQ2FzZVJlc29sdXRpb25EZWFkbGluZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNEdWVEYXRlVmFsaWQoKSkge1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuYXJlQXNzaWduZWVzVmFsaWQoKSkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2hvd0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc2V0UGF5bG9hZCgpO1xuICAgIHRoaXMuY2xvc2VEdWVEYXRlUmVzb2x1dGlvbi5lbWl0KCk7XG4gIH1cblxuICBpc0R1ZURhdGVWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmR1ZURhdGU7XG4gIH1cblxuICBhcmVBc3NpZ25lZXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXM/LmV2ZXJ5KFxuICAgICAgKHN0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XSAmJiB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0/Lmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0RHVlRGF0ZShkYXRlOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvY2FsRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIC8vIEFkZCBvbmUgZGF5IHRvIHRoZSBkYXRlXG4gICAgbG9jYWxEYXRlLnNldERhdGUobG9jYWxEYXRlLmdldERhdGUoKSArIDEpO1xuICAgIC8vIFNldCB0aW1lIHRvIG1pZG5pZ2h0XG4gICAgbG9jYWxEYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBsb2NhbERhdGUudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHNldERlYWRsaW5lUmVtaW5kZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLmFzc2lnbmVlX3JlbWluZF9iZWZvcmUgPVxuICAgICAgdGhpcy5lbWFpbFJlbWluZGVyO1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLm93bmVyX3JlbWluZF9iZWZvcmUgPVxuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWw7XG4gIH1cblxuICBzZXRTdGFnZXNBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlc1xuICAgICAgLm1hcCgoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZURhdGEgPSB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF07XG4gICAgICAgIHJldHVybiBhc3NpZ25lZURhdGFcbiAgICAgICAgICA/IHRoaXMuY3JlYXRlU3RhZ2VBc3NpZ25lZShzdGFnZSwgYXNzaWduZWVEYXRhKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgY3JlYXRlU3RhZ2VBc3NpZ25lZShzdGFnZTogYW55LCBhc3NpZ25lZURhdGE6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2VfaWQ6IHN0YWdlPy5zdGFnZV9pZCB8fCAnJyxcbiAgICAgIGFzc2lnbmVlX2lkOiBhc3NpZ25lZURhdGFbMF0/Ll9pZCB8fCAnJyxcbiAgICAgIGR1ZV9kYXRlOiBzdGFnZT8uZHVlX2RhdGUgfHwgJycsXG4gICAgfTtcbiAgfVxuXG4gIHNldFBheWxvYWQoKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZHVlRGF0ZTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5kdWVfZGF0ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgdGhpcy5zZXREZWFkbGluZVJlbWluZGVycygpO1xuICAgIGNvbnN0IHN0YWdlc0Fzc2lnbmVlcyA9IHRoaXMuc2V0U3RhZ2VzQXNzaWduZWVzKCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlcyA9XG4gICAgICBzdGFnZXNBc3NpZ25lZXM7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LndvcmtmbG93X2lkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/Ll9pZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNsYXNzOiAnZGVhZGxpbmUtZGF0ZScsXG4gICAgICBwb3B1cDogdGhpcy5kYXRlUGlja2VyUG9wVXAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMuZGF0ZVBpY2tlcixcbiAgICAgIG92ZXJsYXk6IHRoaXMuZGF0ZVBpY2tlck92ZXJsYXksXG4gICAgfTtcbiAgICB0aGlzLmNvbW1vbkRhdGVTZXJ2aWNlLmhhbmRsZURvY3VtZW50Q2xpY2soZGF0ZVBpY2tlck9iamVjdCk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmVtYWlsUmVtaW5kZXIgPT09IDApIHtcbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlciA9IEVNQUlMX1JFTUlOREVSUy5lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXNjYWxhdGlvbkVtYWlsID09PSAwKSB7XG4gICAgICB0aGlzLmVzY2FsYXRpb25FbWFpbCA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS1yZXNvbHV0aW9uXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbmZpZ3VyZS1yZXNvbHV0aW9uLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+XG4gICAgICBDb25maWd1cmUgUmVzb2x1dGlvbiBEZWFkbGluZSAmIFN0YWdlIERldGFpbHNcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS1yZXNvbHV0aW9uLWJvZHktaW5uZXJcIj5cbiAgICAgIDxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImZhbHNlXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbiAgICAgIDxhcHAtbm8tZGF0YVxuICAgICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIidObyBkYXRhIHRvIGRpc3BsYXknXCJcbiAgICAgID48L2FwcC1uby1kYXRhPlxuXG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNQRUNJRlkgVEhFIERFQURMSU5FIFRPIENMT1NFIFRISVMgQ0FTRVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyIHZ4LW1iLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS1jYWxlbmRhci1pbm5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XG4gICAgICAgICAgICAgICAgZHVlRGF0ZVRleHRzLmNhc2VfZGV0YWlscy5kdWVfZGF0ZS5kZWFkbGluZV9wbGFjZWhvbGRlclxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImR1ZURhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXG4gICAgICAgICAgICAgIGlkPVwiZGVhZGxpbmUtZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICNkZWFkbGluZURhdGVQaWNrZXJcbiAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkdWVEYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidngtb3ZlcmxheVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cImVycm9yTXNnIHZ4LWZzLTExIHZ4LWxoLTQgdngtbXQtMVwiPlxuICAgICAgICAgICAge3sgZHVlRGF0ZVRleHRzLmVycm9yTWVzc2FnZS5kdWVEYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIENPTkZJR1VSRSBERUFETElORSAmIEFTU0lHTkVFIEZPUiBFQUNIIFNUQUdFIElOIFRIRSBXT1JLRkxPV1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRvZ2dsZS1hcmVhIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoPkFsbG93IFJlb3BlbmluZyBvZiBQcmV2aW91cyBTdGFnZTwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0yXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHRoaXMgb3B0aW9uIGFsbG93cyB0aGUgYXNzaWduZWUgdG8gcmV2aXNpdCBhbmQgcmVvcGVuIGEgcHJldmlvdXNseSBjb21wbGV0ZWQgc3RhZ2UuIFRoZSBzdGFnZSB3aWxsIGJlIHJlc2V0LCBhbmQgdGhlIGFzc2lnbmVkIHVzZXIgd2lsbCBuZWVkIHRvIGNvbXBsZXRlIGl0IGFnYWluLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi10YWJsZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFNUQUdFIE5BTUVcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhdHVzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFRSQU5TSVRJT04gU1RBVFVTXG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImhlbHBlclRleHQudHJhbnNpdGlvbl9zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFTU0lHTkVFXG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImhlbHBlclRleHQuYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERFQURMSU5FXG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImhlbHBlclRleHQuZGVhZGxpbmVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiB3b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXM7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Itbm8gdngtZnMtMTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJpICsgMVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBpICsgMSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YWdlLW5hbWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImRhdGE/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZGF0YT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTJcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnN0YXR1c190cmFuc2l0aW9uPy5mcm9tTmFtZSB9fTxiciAvPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAgID5Ubzwvc3BhblxuICAgICAgICAgICAgICAgICAgPnt7IGRhdGE/LnN0YXR1c190cmFuc2l0aW9uPy50b05hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IodHJ1ZSwgaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYXNzaWduZWVEYXRhW2ldPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTMgdngtcHItM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEzXCI+U2VsZWN0IGEgVXNlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhcnJvdyB2eC1mcy0xMlwiPiYjeGU5ZTg7PC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXNzaWduZWVEYXRhW2ldPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWZ0ZXItc2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZS1jaGlwIHZ4LWZzLTExIHZ4LXBsLTIgdngtcHItMiB2eC1saC02XCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZURhdGFbaV1bMF0/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IodHJ1ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXQtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tci0xXCI+JiN4ZTliYTs8L2lcbiAgICAgICAgICAgICAgICAgICAgPkVESVRcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FzZS1jYWxlbmRhciB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXB0LTMgdngtcGItM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXItaW5uZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBkdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eScgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInN0YWdlLWRlYWRsaW5lLWRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTsgY2xvc2VEYXRlUGlja2VyKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9kcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtb3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93QXNzaWduZWVFcnJvclwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yTXNnIHZ4LWZzLTExIHZ4LWxoLTQgdngtbXQtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZHVlRGF0ZVRleHRzLmVycm9yTWVzc2FnZS5zdGFnZUFzc2lnbmVlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIEVNQUlMIFJFTUlOREVSIENPTkZJR1VSQVRJT05cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlciB2eC1tYi0yXCI+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgUkVNSU5ERVIgRU1BSUxcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImVtYWlsLWNvbmZpZ3VyZS1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1mbGV4LXdyYXAgdngtcC0yIHZ4LXBsLTMgdngtcHItMyB2eC1tYi0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tci0xXCI+XG4gICAgICAgICAgICBTZW5kIHJlZ3VsYXIgZW1haWwgcmVtaW5kZXJzIHRvIHRoZSBhc3NpZ25lZVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsUmVtaW5kZXJcIlxuICAgICAgICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleSAhPT0gJy4nXCJcbiAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1sLTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmxhY2stdGV4dFwiPmRheXM8L3NwYW4+IGJlZm9yZSB0aGUgc3RhZ2UgZGVhZGxpbmUuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIEVTQ0FMQVRJT04gRU1BSUxcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImVtYWlsLWNvbmZpZ3VyZS1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1mbGV4LXdyYXAgdngtcC0yIHZ4LXBsLTMgdngtcHItMyB2eC1tYi0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tci0xXCI+XG4gICAgICAgICAgICBTZW5kIGVtYWlsIGVzY2FsYXRpb24gdG8gdGhlIENhc2UgT3duZXJcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlc2NhbGF0aW9uRW1haWxcIlxuICAgICAgICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleSAhPT0gJy4nXCJcbiAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1sLTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmxhY2stdGV4dFwiPmRheXM8L3NwYW4+IGJlZm9yZSB0aGUgb3ZlcmFsbCBjYXNlXG4gICAgICAgICAgICBkZWFkbGluZSwgaWYgdGhlIGNhc2UgaXMgc3RpbGwgb3Blbi5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZUR1ZURhdGUoKVwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlQ2FzZVJlc29sdXRpb25EZWFkbGluZSgpXCJcbiAgICA+PC9hcHAtZmxvYXRpbmctYmFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGFwcC1hc3NpZ25lZVxuICAqbmdJZj1cImFzc2lnbmVlQ2xpY2tlZFwiXG4gIFtwYXlsb2FkXT1cInBheWxvYWRcIlxuICBbYXNzaWduZWVMaXN0XT1cImFzc2lnbmVlTGlzdFwiXG4gIFthY3RpdmVBc3NpZ25lZV09XCJhY3RpdmVBc3NpZ25lZVwiXG4gIChzZWxlY3RlZEFzc2lnbmVlRXZlbnQpPVwic2VsZWN0ZWRBc3NpZ25lZSgkZXZlbnQpXCJcbiAgKGNsb3NlRXZlbnQpPVwiYWN0aXZhdGVTZWxlY3RvcihmYWxzZSlcIlxuPjwvYXBwLWFzc2lnbmVlPlxuIl19
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxlQUFlLEVBRWYsdUNBQXVDLEdBQ3hDLE1BQU0sdUNBQXVDLENBQUM7QUFHL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVE3RCxNQUFNLE9BQU8sZ0JBQWdCO0lBbUMzQixJQUFhLGdCQUFnQixDQUFDLEtBQVU7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBUUQsWUFDVSxpQkFBZ0MsRUFDaEMs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eVVBOzs0RkQzU2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7b0tBS1MsVUFBVTtzQkFBMUMsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRS9CLE1BQU07c0JBREwsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEyQjNELE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFPRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBbVNQLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQsIElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbmltcG9ydCB7XG4gIFJFUE9SVF9DQVNFLFxuICBIRUxQRVJfVEVYVCxcbiAgRU1BSUxfUkVNSU5ERVJTLFxuICBNT05USF9OQU1FUyxcbiAgQkFOTkVSX0NBU0VfUkVTT0xVVElPTl9ERUFETElORV9XQVJOSU5HLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgRGF0ZVV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0ZS11dGlsaXR5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZHVlLWRhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kdWUtZGF0ZS5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEdWVEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnZGVhZGxpbmVEYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RlYWRsaW5lRGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGFuaW1hdGlvbiA9IHRydWU7XG4gIGRhdGVQaWNrZXJQb3BVcCE6IEVsZW1lbnRSZWY7XG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG4gIGRhdGVDb25maWc6IElEYXRlUGlja2VyQ29uZmlnID0ge1xuICAgIGRpc2FibGVLZXlwcmVzczogdHJ1ZSxcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcbiAgICB1blNlbGVjdE9uQ2xpY2s6IHRydWUsXG4gICAgb3Blbk9uQ2xpY2s6IGZhbHNlLFxuICAgIG9wZW5PbkZvY3VzOiBmYWxzZSxcbiAgICBtaW46ICcnLFxuICB9O1xuICBjb21tb25TZXJ2aWNlOiBhbnk7XG4gIGR1ZURhdGVUZXh0cyA9IFJFUE9SVF9DQVNFO1xuICBoZWxwZXJUZXh0ID0gSEVMUEVSX1RFWFQ7XG4gIGFzc2lnbmVlQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBhc3NpZ25lZUxpc3Q6IGFueVtdID0gW107XG4gIGFzc2lnbmVlRGF0YTogeyBba2V5OiBudW1iZXJdOiBhbnlbXSB9ID0ge307XG4gIGN1cnJlbnRTdGFnZUluZGV4OiBudW1iZXIgPSAtMTtcbiAgYWN0aXZlQXNzaWduZWU6IGFueVtdID0gW107XG4gIGVtYWlsUmVtaW5kZXI6IG51bWJlciA9IEVNQUlMX1JFTUlOREVSUy5lbWFpbF9yZW1pbmRlcjtcbiAgZXNjYWxhdGlvbkVtYWlsOiBudW1iZXIgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgc2hvd0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBc3NpZ25lZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBDYXNlRGVhZGxpbmVXYXJuaW5nID0gQkFOTkVSX0NBU0VfUkVTT0xVVElPTl9ERUFETElORV9XQVJOSU5HO1xuXG4gIEBJbnB1dCgpIHBheWxvYWQ6IGFueTtcbiAgQElucHV0KCkgZHVlRGF0ZTogYW55O1xuICBASW5wdXQoKSB3b3JrZmxvd0RldGFpbHM6IGFueTtcbiAgQElucHV0KCkgdXNlckxpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGdyb3VwTGlzdDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGU7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uYXNzaWduZWVfcmVtaW5kX2JlZm9yZTtcbiAgICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/Lm93bmVyX3JlbWluZF9iZWZvcmU7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIG1pbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRhc2tDb3VudDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgdmFsaWREZWFkbGluZTogc3RyaW5nID0gJyc7XG5cbiAgQE91dHB1dCgpIGNsb3NlRHVlRGF0ZVJlc29sdXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbW1vbkRhdGVTZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVVdGlsaXR5U2VydmljZTogRGF0ZVV0aWxpdHlTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRNaW5EYXRlKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5zZXRBc3NpZ25lZUxpc3QoKTtcbiAgICB0aGlzLmluaXRpYWxpemVFZGl0TW9kZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRWRpdE1vZGUoKSB7XG4gICAgaWYgKCF0aGlzLnBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZXNvbHV0aW9uX2RlYWRsaW5lPy5kdWVfZGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZSk7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIHRoaXMuZHVlRGF0ZSA9IHRoaXMuZGF0ZVV0aWxpdHlTZXJ2aWNlLmNvbnZlcnRUb1VUQyhkZWFkbGluZT8uZHVlX2RhdGUpO1xuICAgIHRoaXMuZW1haWxSZW1pbmRlciA9XG4gICAgICBkZWFkbGluZS5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlIHx8IEVNQUlMX1JFTUlOREVSUy5lbWFpbF9yZW1pbmRlcjtcbiAgICB0aGlzLmVzY2FsYXRpb25FbWFpbCA9XG4gICAgICBkZWFkbGluZS5vd25lcl9yZW1pbmRfYmVmb3JlIHx8IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIGlmICghZGVhZGxpbmU/LnN0YWdlc19hc3NpZ25lZXM/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhZ2VBc3NpZ25lZU1hcCA9IHRoaXMuY3JlYXRlU3RhZ2VBc3NpZ25lZU1hcChcbiAgICAgIGRlYWRsaW5lLnN0YWdlc19hc3NpZ25lZXNcbiAgICApO1xuICAgIHRoaXMubWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcCk7XG4gIH1cblxuICBwcml2YXRlIHNldE1pbkRhdGUoKSB7XG4gICAgaWYgKHRoaXMudGFza0NvdW50ID4gMCAmJiB0aGlzLnZhbGlkRGVhZGxpbmUpIHtcbiAgICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSBkYXlqcyh0aGlzLnZhbGlkRGVhZGxpbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVDb25maWcubWluID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZvcm1hdERhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoc3RhZ2VzQXNzaWduZWVzOiBhbnlbXSk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgTWFwKFxuICAgICAgc3RhZ2VzQXNzaWduZWVzLm1hcCgoc3RhZ2U6IGFueSkgPT4gW3N0YWdlPy5zdGFnZV9pZCwgc3RhZ2U/LmFzc2lnbmVlX2lkXSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBXb3JrZmxvd1N0YWdlcyhzdGFnZUFzc2lnbmVlTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+KSB7XG4gICAgdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXM/LmZvckVhY2goXG4gICAgICAod29ya2Zsb3dTdGFnZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlSWQgPSBzdGFnZUFzc2lnbmVlTWFwPy5nZXQod29ya2Zsb3dTdGFnZT8uc3RhZ2VfaWQpO1xuICAgICAgICBpZiAoIWFzc2lnbmVlSWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuYXNzaWduZWVMaXN0Py5maW5kKFxuICAgICAgICAgIChhc3NpZ25lZTogYW55KSA9PiBhc3NpZ25lZT8uX2lkID09PSBhc3NpZ25lZUlkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NpZ25lZSkge1xuICAgICAgICAgIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XSA9IFthc3NpZ25lZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgb3BlbkRhdGVQaWNrZXIoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjbG9zZXMgdGhlIGRhdGUgcGlja2VyIGZyb20gcG9saWN5IGZvcm1cbiAgICovXG4gIGNsb3NlRGF0ZVBpY2tlcihldnQ6IGFueSkge1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcblxuICAgIGlmICghZXZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICBsZXQgbW9udGhBcnJheSA9IFtcbiAgICAgICAgJ0phbicsXG4gICAgICAgICdGZWInLFxuICAgICAgICAnTWFyJyxcbiAgICAgICAgJ0FwcicsXG4gICAgICAgICdNYXknLFxuICAgICAgICAnSnVuJyxcbiAgICAgICAgJ0p1bCcsXG4gICAgICAgICdBdWcnLFxuICAgICAgICAnU2VwJyxcbiAgICAgICAgJ09jdCcsXG4gICAgICAgICdOb3YnLFxuICAgICAgICAnRGVjJyxcbiAgICAgIF07XG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBldnQ/LmRhdGU/LiRkPy5nZXREYXRlKCk7XG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtldnQ/LmRhdGU/LiRkPy5nZXRNb250aCgpXTtcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IGV2dD8uZGF0ZT8uJGQ/LmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICB0aGlzLmR1ZURhdGUgPSBldnQ/LmRhdGU/LiRkO1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZUR1ZURhdGUoKSB7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVFdmVudC5lbWl0KCk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbiwgc3RhZ2VJbmRleD86IG51bWJlcikge1xuICAgIHRoaXMuYXNzaWduZWVDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggPSBzdGFnZUluZGV4ID8/IC0xO1xuICAgICAgdGhpcy5hY3RpdmVBc3NpZ25lZSA9XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xXG4gICAgICAgICAgPyB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XVxuICAgICAgICAgIDogW107XG4gICAgfVxuICB9XG5cbiAgc2V0QXNzaWduZWVMaXN0KCkge1xuICAgIGNvbnN0IGRpcmVjdEFzc2lnbmVlcyA9IHRoaXMuZ2V0QXNzaWduZWVzKCk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25lZXMgPSB0aGlzLmdldEdyb3VwQXNzaWduZWVzKCk7XG4gICAgdGhpcy5hc3NpZ25lZUxpc3QgPSB0aGlzLmdldFVuaXF1ZUFzc2lnbmVlcyhcbiAgICAgIGRpcmVjdEFzc2lnbmVlcyxcbiAgICAgIGdyb3VwQXNzaWduZWVzXG4gICAgKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcyB8fCBbXTtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnVzZXJMaXN0XG4gICAgICAgID8uZmlsdGVyKCh1c2VyOiBhbnkpID0+IGFzc2lnbmVlSWRzLmluY2x1ZGVzKHVzZXI/Ll9pZCkpXG4gICAgICAgID8ubWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgYXNzb2NpYXRlZEdyb3VwczogdXNlckdyb3VwcyxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSB8fCBbXVxuICAgICk7XG4gIH1cblxuICBnZXRVc2VyR3JvdXBzKHVzZXI6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cExpc3Q/LmZpbHRlcigoZ3JvdXA6IGFueSkgPT5cbiAgICAgIHVzZXI/LnVzZXJncm91cF9pZD8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICk7XG4gIH1cblxuICBnZXRHcm91cEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVHcm91cElkcyA9IHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdz8uYXNzaWduZWVzX2dyb3VwIHx8IFtdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGFzc2lnbmVlR3JvdXBJZHMuZmxhdE1hcCgoZ3JvdXBJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5maW5kR3JvdXBCeUlkKGdyb3VwSWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBc3NpZ25lZXNGcm9tR3JvdXAoZ3JvdXApO1xuICAgICAgfSkgfHwgW11cbiAgICApO1xuICB9XG5cbiAgZmluZEdyb3VwQnlJZChncm91cElkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwTGlzdD8uZmluZCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Ll9pZCA9PT0gZ3JvdXBJZCk7XG4gIH1cblxuICBnZXRBc3NpZ25lZXNGcm9tR3JvdXAoZ3JvdXA6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgZ3JvdXA/LmFzc29jaWF0ZWRVc2Vyc1xuICAgICAgICA/Lm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXNlckZyb21MaXN0ID0gdGhpcy5maW5kVXNlckJ5SWQodXNlcj8udXNlcklkPy5faWQpO1xuICAgICAgICAgIGlmICh1c2VyRnJvbUxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJHcm91cHMgPSB0aGlzLmdldFVzZXJHcm91cHModXNlckZyb21MaXN0KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnVzZXJGcm9tTGlzdCxcbiAgICAgICAgICAgICAgYXNzb2NpYXRlZEdyb3VwczogdXNlckdyb3VwcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKCh1c2VyOiBhbnkpID0+IHVzZXIgIT09IG51bGwpIHx8IFtdXG4gICAgKTtcbiAgfVxuXG4gIGZpbmRVc2VyQnlJZCh1c2VySWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckxpc3Q/LmZpbmQoKHVzZXI6IGFueSkgPT4gdXNlcj8uX2lkID09PSB1c2VySWQpO1xuICB9XG5cbiAgZ2V0VW5pcXVlQXNzaWduZWVzKGRpcmVjdEFzc2lnbmVlczogYW55W10sIGdyb3VwQXNzaWduZWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gWy4uLmRpcmVjdEFzc2lnbmVlcywgLi4uZ3JvdXBBc3NpZ25lZXNdLnJlZHVjZShcbiAgICAgIChhY2M6IGFueVtdLCB1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFhY2Muc29tZSgodTogYW55KSA9PiB1Py5faWQgPT09IHVzZXI/Ll9pZCkpIHtcbiAgICAgICAgICBhY2MucHVzaCh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIFtdXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdGVkQXNzaWduZWUoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XSA9IGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKCkge1xuICAgIGlmICghdGhpcy5pc0R1ZURhdGVWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmVBc3NpZ25lZXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXlsb2FkKCk7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVSZXNvbHV0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIGlzRHVlRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kdWVEYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMudGFza0NvdW50ID4gMCAmJiB0aGlzLnZhbGlkRGVhZGxpbmUpIHtcbiAgICAgIGNvbnN0IHZhbGlkRGVhZGxpbmVEYXRlID0gZGF5anModGhpcy52YWxpZERlYWRsaW5lKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IGRheWpzKHRoaXMuZHVlRGF0ZSk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSAmJiBzZWxlY3RlZERhdGUuaXNBZnRlcih2YWxpZERlYWRsaW5lRGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXlqcyh0aGlzLmR1ZURhdGUpLmlzVmFsaWQoKTtcbiAgfVxuXG4gIGFyZUFzc2lnbmVlc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlcz8uZXZlcnkoXG4gICAgICAoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdICYmIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XT8ubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBmb3JtYXREdWVEYXRlKGRhdGU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgdXRjRGF0ZSA9IHRoaXMuZGF0ZVV0aWxpdHlTZXJ2aWNlLmNvbnZlcnRUb1VUQyhkYXRlKTtcbiAgICByZXR1cm4gdXRjRGF0ZS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgc2V0RGVhZGxpbmVSZW1pbmRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSA9XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXI7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSA9XG4gICAgICB0aGlzLmVzY2FsYXRpb25FbWFpbDtcbiAgfVxuXG4gIHNldFN0YWdlc0Fzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzXG4gICAgICAubWFwKChzdGFnZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlRGF0YSA9IHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XTtcbiAgICAgICAgcmV0dXJuIGFzc2lnbmVlRGF0YVxuICAgICAgICAgID8gdGhpcy5jcmVhdGVTdGFnZUFzc2lnbmVlKHN0YWdlLCBhc3NpZ25lZURhdGEpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBjcmVhdGVTdGFnZUFzc2lnbmVlKHN0YWdlOiBhbnksIGFzc2lnbmVlRGF0YTogYW55W10pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZV9pZDogc3RhZ2U/LnN0YWdlX2lkIHx8ICcnLFxuICAgICAgYXNzaWduZWVfaWQ6IGFzc2lnbmVlRGF0YVswXT8uX2lkIHx8ICcnLFxuICAgICAgZHVlX2RhdGU6IHN0YWdlPy5kdWVfZGF0ZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgc2V0UGF5bG9hZCgpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5mb3JtYXREdWVEYXRlKHRoaXMuZHVlRGF0ZSk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuZHVlX2RhdGUgPSBmb3JtYXR0ZWREYXRlO1xuICAgIHRoaXMuc2V0RGVhZGxpbmVSZW1pbmRlcnMoKTtcbiAgICBjb25zdCBzdGFnZXNBc3NpZ25lZXMgPSB0aGlzLnNldFN0YWdlc0Fzc2lnbmVlcygpO1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLnN0YWdlc19hc3NpZ25lZXMgPVxuICAgICAgc3RhZ2VzQXNzaWduZWVzO1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy53b3JrZmxvd19pZCA9IHRoaXMud29ya2Zsb3dEZXRhaWxzPy5faWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGVQaWNrZXJPYmplY3QgPSB7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBjbGFzczogJ2RlYWRsaW5lLWRhdGUnLFxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxuICAgICAgY29tcG9uZW50OiB0aGlzLmRhdGVQaWNrZXIsXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxuICAgIH07XG4gICAgdGhpcy5jb21tb25EYXRlU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5lbWFpbFJlbWluZGVyID09PSAwKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY2FsYXRpb25FbWFpbCA9PT0gMCkge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAgQ29uZmlndXJlIFJlc29sdXRpb24gRGVhZGxpbmUgJiBTdGFnZSBEZXRhaWxzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJmYWxzZVwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cblxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBTUEVDSUZZIFRIRSBERUFETElORSBUTyBDTE9TRSBUSElTIENBU0VcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWJhbm5lciAqbmdJZj1cIm1vZGUgPT09ICdFRElUJyAmJiB0YXNrQ291bnQgPiAwXCI+XG4gICAgICAgICAgPHAgYmFubmVyPlxuICAgICAgICAgICAge3sgQ2FzZURlYWRsaW5lV2FybmluZyB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9hcHAtYmFubmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS1jYWxlbmRhciB2eC1tYi0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhc2UtY2FsZW5kYXItaW5uZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAgICAgICAgIGR1ZURhdGVUZXh0cy5jYXNlX2RldGFpbHMuZHVlX2RhdGUuZGVhZGxpbmVfcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJkdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eSdcIlxuICAgICAgICAgICAgICBpZD1cImRlYWRsaW5lLWRhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAjZGVhZGxpbmVEYXRlUGlja2VyXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHVlRGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIj5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2UuZHVlRGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTFcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDT05GSUdVUkUgREVBRExJTkUgJiBBU1NJR05FRSBGT1IgRUFDSCBTVEFHRSBJTiBUSEUgV09SS0ZMT1dcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGUtYXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaD5BbGxvdyBSZW9wZW5pbmcgb2YgUHJldmlvdXMgU3RhZ2U8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMlwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIGFzc2lnbmVlIHRvIHJldmlzaXQgYW5kIHJlb3BlbiBhIHByZXZpb3VzbHkgY29tcGxldGVkIHN0YWdlLiBUaGUgc3RhZ2Ugd2lsbCBiZSByZXNldCwgYW5kIHRoZSBhc3NpZ25lZCB1c2VyIHdpbGwgbmVlZCB0byBjb21wbGV0ZSBpdCBhZ2Fpbi4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tdGFibGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhZ2UtbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTVEFHRSBOQU1FXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OIFNUQVRVU1xuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LnRyYW5zaXRpb25fc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBU1NJR05FRVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBERUFETElORVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygd29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vIHZ4LWZzLTEzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIDFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTMgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGF0dXNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8uZnJvbU5hbWUgfX08YnIgLz48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+VG88L3NwYW5cbiAgICAgICAgICAgICAgICAgID57eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8udG9OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xM1wiPlNlbGVjdCBhIFVzZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTJcIj4mI3hlOWU4OzwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtY2hpcCB2eC1mcy0xMSB2eC1wbC0yIHZ4LXByLTIgdngtbGgtNlwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGF0YVtpXVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbXItMVwiPiYjeGU5YmE7PC9pXG4gICAgICAgICAgICAgICAgICAgID5FRElUXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0zIHZ4LXBiLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdGFnZS1kZWFkbGluZS1kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAjZGF0ZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0Fzc2lnbmVlRXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2Uuc3RhZ2VBc3NpZ25lZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFTUFJTCBSRU1JTkRFUiBDT05GSUdVUkFUSU9OXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXIgdngtbWItMlwiPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFJFTUlOREVSIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCByZWd1bGFyIGVtYWlsIHJlbWluZGVycyB0byB0aGUgYXNzaWduZWVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbFJlbWluZGVyXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIHN0YWdlIGRlYWRsaW5lLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFU0NBTEFUSU9OIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCBlbWFpbCBlc2NhbGF0aW9uIHRvIHRoZSBDYXNlIE93bmVyXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXNjYWxhdGlvbkVtYWlsXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIG92ZXJhbGwgY2FzZVxuICAgICAgICAgICAgZGVhZGxpbmUsIGlmIHRoZSBjYXNlIGlzIHN0aWxsIG9wZW4uXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VEdWVEYXRlKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUoKVwiXG4gICAgPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtYXNzaWduZWVcbiAgKm5nSWY9XCJhc3NpZ25lZUNsaWNrZWRcIlxuICBbcGF5bG9hZF09XCJwYXlsb2FkXCJcbiAgW2Fzc2lnbmVlTGlzdF09XCJhc3NpZ25lZUxpc3RcIlxuICBbYWN0aXZlQXNzaWduZWVdPVwiYWN0aXZlQXNzaWduZWVcIlxuICAoc2VsZWN0ZWRBc3NpZ25lZUV2ZW50KT1cInNlbGVjdGVkQXNzaWduZWUoJGV2ZW50KVwiXG4gIChjbG9zZUV2ZW50KT1cImFjdGl2YXRlU2VsZWN0b3IoZmFsc2UpXCJcbj48L2FwcC1hc3NpZ25lZT5cbiJdfQ==
|