@ieeesa-npm/groups 0.7.2 → 0.7.3
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/assets/constants.json +51 -10
- package/esm2022/lib/assets/form-validations.mjs +4 -1
- package/esm2022/lib/components/add-user-roster/add-user-roster.component.mjs +259 -22
- package/esm2022/lib/components/edit-user-roles/edit-user-roles.component.mjs +267 -33
- package/esm2022/lib/components/view-roster/view-roster.component.mjs +441 -95
- package/esm2022/lib/groups.component.mjs +3 -3
- package/esm2022/lib/models/add-or-edit-user-group.model.mjs +1 -1
- package/esm2022/lib/models/classification.model.mjs +2 -0
- package/esm2022/lib/models/filter-type.model.mjs +8 -0
- package/esm2022/lib/models/group-types.model.mjs +1 -1
- package/esm2022/lib/models/group-user-info.model.mjs +1 -1
- package/esm2022/lib/models/member-type.model.mjs +2 -0
- package/esm2022/lib/models/organization.model.mjs +2 -0
- package/esm2022/lib/models/roster-type.model.mjs +7 -0
- package/esm2022/lib/models/table-column-schema-user-group.model.mjs +12 -0
- package/esm2022/lib/models/user.model.mjs +1 -1
- package/esm2022/lib/services/groups.service.mjs +83 -14
- package/esm2022/public-api.mjs +7 -1
- package/fesm2022/ieeesa-npm-groups.mjs +1118 -169
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/assets/form-validations.d.ts +2 -0
- package/lib/components/add-user-roster/add-user-roster.component.d.ts +58 -1
- package/lib/components/edit-user-roles/edit-user-roles.component.d.ts +64 -11
- package/lib/components/view-roster/view-roster.component.d.ts +61 -8
- package/lib/models/add-or-edit-user-group.model.d.ts +24 -8
- package/lib/models/classification.model.d.ts +10 -0
- package/lib/models/filter-type.model.d.ts +5 -0
- package/lib/models/group-types.model.d.ts +1 -0
- package/lib/models/group-user-info.model.d.ts +3 -0
- package/lib/models/member-type.model.d.ts +10 -0
- package/lib/models/organization.model.d.ts +9 -0
- package/lib/models/roster-type.model.d.ts +4 -0
- package/lib/models/table-column-schema-user-group.model.d.ts +9 -0
- package/lib/models/user.model.d.ts +20 -5
- package/lib/services/groups.service.d.ts +67 -27
- package/package.json +3 -3
- package/public-api.d.ts +6 -0
|
@@ -8,6 +8,9 @@ import { AlertType, } from '@ieeesa-npm/utility';
|
|
|
8
8
|
import * as constants from '../../assets/constants.json';
|
|
9
9
|
import { GroupFunctionType } from '../../models/group-function-type.model';
|
|
10
10
|
import { RosterFunctionType } from '../../models/roster-function-type.model';
|
|
11
|
+
import { GroupRosterType } from '../../models/roster-type.model';
|
|
12
|
+
import { FilterType } from '../../models/filter-type.model';
|
|
13
|
+
import { TableColumnSchemaUserGroup } from '../../models/table-column-schema-user-group.model';
|
|
11
14
|
import { PermissionType } from '../../models/permission-type.model';
|
|
12
15
|
import * as i0 from "@angular/core";
|
|
13
16
|
import * as i1 from "@angular/material/dialog";
|
|
@@ -41,53 +44,16 @@ export class ViewRosterComponent {
|
|
|
41
44
|
this.constants = constants;
|
|
42
45
|
this.viewRosterConstants = this.constants?.viewRoster;
|
|
43
46
|
this.alignmentType = AlignType;
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
-
this.filters = [
|
|
46
|
-
{
|
|
47
|
-
id: 1,
|
|
48
|
-
name: this.viewRosterConstants?.filterByRole,
|
|
49
|
-
checked: false,
|
|
50
|
-
chipType: ChipsType.TOGGLE,
|
|
51
|
-
},
|
|
52
|
-
];
|
|
53
|
-
this.columnSchema = [
|
|
54
|
-
{
|
|
55
|
-
id: 1,
|
|
56
|
-
columnDef: TableColumnType.SELECT,
|
|
57
|
-
heading: '',
|
|
58
|
-
columnType: TableColumnType.SELECT,
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
-
cellData: (element) => `${element.select}`,
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
id: 2,
|
|
64
|
-
columnDef: 'name',
|
|
65
|
-
heading: this.viewRosterConstants?.tableColumns?.name,
|
|
66
|
-
columnType: TableColumnType.TEXT,
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
-
cellData: (element) => `${element.name}`,
|
|
69
|
-
isSortableColumn: true,
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
id: 3,
|
|
73
|
-
columnDef: 'email',
|
|
74
|
-
heading: this.viewRosterConstants?.tableColumns?.email,
|
|
75
|
-
columnType: TableColumnType.TEXT,
|
|
76
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
77
|
-
cellData: (element) => `${element.email}`,
|
|
78
|
-
isSortableColumn: true,
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
id: 4,
|
|
82
|
-
columnDef: 'role',
|
|
83
|
-
heading: this.viewRosterConstants?.tableColumns?.role,
|
|
84
|
-
columnType: TableColumnType.TEXT,
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
|
-
cellData: (element) => `${element.role}`,
|
|
87
|
-
},
|
|
88
|
-
];
|
|
89
47
|
this.selectedRoleIds = [];
|
|
48
|
+
this.selectedMemberTypeIds = [];
|
|
49
|
+
this.selectedClassificationIds = [];
|
|
50
|
+
this.selectedRoles = {};
|
|
51
|
+
this.selectedMemberTypes = {};
|
|
52
|
+
this.selectedClassifications = {};
|
|
90
53
|
this.roles = [];
|
|
54
|
+
this.filterOptions = [];
|
|
55
|
+
this.memberTypes = [];
|
|
56
|
+
this.classifications = [];
|
|
91
57
|
this.rosterActions = {
|
|
92
58
|
isSearchNeeded: true,
|
|
93
59
|
isFilterNeeded: true,
|
|
@@ -95,14 +61,29 @@ export class ViewRosterComponent {
|
|
|
95
61
|
isDeleteNeeded: false,
|
|
96
62
|
isEditNeeded: false,
|
|
97
63
|
};
|
|
98
|
-
this.
|
|
99
|
-
this.defaultColumnSortDirection =
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
64
|
+
this.hasClassification = false;
|
|
65
|
+
this.defaultColumnSortDirection = true;
|
|
66
|
+
this.tableColumnsForIndividual = this.viewRosterConstants?.tableColumnsForIndividual;
|
|
67
|
+
this.tableColumnsForSystemUsers = this.viewRosterConstants?.tableColumnsForSystemUsers;
|
|
68
|
+
this.emptyFieldValueReplacedBy = this.viewRosterConstants?.emptyFieldValueReplacedBy;
|
|
102
69
|
this.rosterActions.isAddNeeded = this.getManageRosterActionsPermission();
|
|
103
70
|
this.rosterActions.isEditNeeded = this.getManageRosterActionsPermission();
|
|
104
71
|
this.rosterActions.isDeleteNeeded = this.getManageRosterActionsPermission();
|
|
105
72
|
}
|
|
73
|
+
ngOnInit() {
|
|
74
|
+
const groupType = this.groupService.getSelectedGroupInfo()?.groupTypeInfo?.businessRule;
|
|
75
|
+
this.hasClassification = groupType?.hasClassification ?? false;
|
|
76
|
+
this.groupRosterType = groupType?.rosterType;
|
|
77
|
+
if (!this.groupRosterType)
|
|
78
|
+
this.alertService.showMessage({
|
|
79
|
+
status: 'custom',
|
|
80
|
+
message: this.constants?.errors?.ER1001,
|
|
81
|
+
alertType: AlertType.WARNING,
|
|
82
|
+
isCloseNeeded: true,
|
|
83
|
+
});
|
|
84
|
+
this.configureTableInfo();
|
|
85
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
86
|
+
}
|
|
106
87
|
/**
|
|
107
88
|
* Show add new user success message when canShowMessage is set true
|
|
108
89
|
* @memberof ViewRosterComponent
|
|
@@ -119,6 +100,8 @@ export class ViewRosterComponent {
|
|
|
119
100
|
this.showAlertMessage(this.constants?.editUserRoles?.message?.success?.submission, AlertType.SUCCESS);
|
|
120
101
|
}
|
|
121
102
|
}
|
|
103
|
+
const groupType = this.groupService.getBusinessRuleOfSelectedGroup();
|
|
104
|
+
this.groupRosterType = groupType?.rosterType;
|
|
122
105
|
}
|
|
123
106
|
/**
|
|
124
107
|
* Hides or shows roster add user, edit user and delete user actions based on user group permissions.
|
|
@@ -130,13 +113,164 @@ export class ViewRosterComponent {
|
|
|
130
113
|
this.groupService.validateAccess(PermissionType.MANAGE_GROUP_OFFICERS) ||
|
|
131
114
|
this.groupService.validateAccess(PermissionType.MANAGE_GROUP_MEMBERS));
|
|
132
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Configure Table information based on group roster type
|
|
118
|
+
* @memberof ViewRosterComponent
|
|
119
|
+
*/
|
|
120
|
+
configureTableInfo() {
|
|
121
|
+
if (this.groupRosterType === GroupRosterType.INDIVIDUAL) {
|
|
122
|
+
this.dataTableClassName = 'ieeesa-individual-roster';
|
|
123
|
+
this.searchPlaceholderText =
|
|
124
|
+
this.viewRosterConstants?.searchPlaceholderIndividual;
|
|
125
|
+
this.filters = [
|
|
126
|
+
{
|
|
127
|
+
id: FilterType.MEMBER_TYPE,
|
|
128
|
+
name: FilterType.MEMBER_TYPE,
|
|
129
|
+
checked: false,
|
|
130
|
+
chipType: ChipsType.TOGGLE,
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
this.getMemberTypes();
|
|
134
|
+
this.columnSchema = [
|
|
135
|
+
{
|
|
136
|
+
id: 1,
|
|
137
|
+
columnDef: TableColumnType.SELECT,
|
|
138
|
+
heading: '',
|
|
139
|
+
columnType: TableColumnType.SELECT,
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
+
cellData: (element) => `${element.select}`,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: 2,
|
|
145
|
+
columnDef: TableColumnSchemaUserGroup.NAME,
|
|
146
|
+
heading: this.tableColumnsForIndividual?.name,
|
|
147
|
+
columnType: TableColumnType.TEXT,
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
|
+
cellData: (element) => `${element.name}`,
|
|
150
|
+
isSortableColumn: true,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: 3,
|
|
154
|
+
columnDef: TableColumnSchemaUserGroup.EMPLOYER,
|
|
155
|
+
heading: this.tableColumnsForIndividual?.employer,
|
|
156
|
+
columnType: TableColumnType.TEXT,
|
|
157
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
158
|
+
cellData: (element) => `${element.employer ?? this.emptyFieldValueReplacedBy}`,
|
|
159
|
+
isSortableColumn: true,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: 4,
|
|
163
|
+
columnDef: TableColumnSchemaUserGroup.EMAIL,
|
|
164
|
+
heading: this.tableColumnsForIndividual?.email,
|
|
165
|
+
columnType: TableColumnType.TEXT,
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
167
|
+
cellData: (element) => `${element.email ?? this.emptyFieldValueReplacedBy}`,
|
|
168
|
+
isSortableColumn: true,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
id: 5,
|
|
172
|
+
columnDef: TableColumnSchemaUserGroup.MEMBER_TYPE,
|
|
173
|
+
heading: this.tableColumnsForIndividual?.memberType,
|
|
174
|
+
columnType: TableColumnType.TEXT,
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
176
|
+
cellData: (element) => `${element.memberType ?? this.emptyFieldValueReplacedBy}`,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
id: 6,
|
|
180
|
+
columnDef: TableColumnSchemaUserGroup.ORGANIZATION,
|
|
181
|
+
heading: this.tableColumnsForIndividual?.organizationName,
|
|
182
|
+
columnType: TableColumnType.TEXT,
|
|
183
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
184
|
+
cellData: (element) => `${element.organization ?? this.emptyFieldValueReplacedBy}`,
|
|
185
|
+
isSortableColumn: true,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
id: 8,
|
|
189
|
+
columnDef: TableColumnSchemaUserGroup.ROLE,
|
|
190
|
+
heading: this.tableColumnsForIndividual?.role,
|
|
191
|
+
columnType: TableColumnType.TEXT,
|
|
192
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
193
|
+
cellData: (element) => `${element.role ?? this.emptyFieldValueReplacedBy}`,
|
|
194
|
+
},
|
|
195
|
+
];
|
|
196
|
+
if (this.hasClassification) {
|
|
197
|
+
this.getClassifications();
|
|
198
|
+
this.columnSchema.splice(this.columnSchema.length - 1, 0, {
|
|
199
|
+
id: 7,
|
|
200
|
+
columnDef: TableColumnSchemaUserGroup.CLASSIFICATION,
|
|
201
|
+
heading: this.tableColumnsForIndividual?.classification,
|
|
202
|
+
columnType: TableColumnType.TEXT,
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
204
|
+
cellData: (element) => `${element.classification ?? this.emptyFieldValueReplacedBy}`,
|
|
205
|
+
isSortableColumn: true,
|
|
206
|
+
});
|
|
207
|
+
this.filters.push({
|
|
208
|
+
id: FilterType.CLASSIFICATION,
|
|
209
|
+
name: FilterType.CLASSIFICATION,
|
|
210
|
+
checked: false,
|
|
211
|
+
chipType: ChipsType.TOGGLE,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else if (this.groupRosterType === GroupRosterType.SYSTEM_USER) {
|
|
216
|
+
this.dataTableClassName = 'ieeesa-system-users-roster';
|
|
217
|
+
this.searchPlaceholderText =
|
|
218
|
+
this.viewRosterConstants?.searchPlaceholderSystemUsers;
|
|
219
|
+
this.filters = [
|
|
220
|
+
{
|
|
221
|
+
id: FilterType.ROLE,
|
|
222
|
+
name: FilterType.ROLE,
|
|
223
|
+
checked: false,
|
|
224
|
+
chipType: ChipsType.TOGGLE,
|
|
225
|
+
},
|
|
226
|
+
];
|
|
227
|
+
this.columnSchema = [
|
|
228
|
+
{
|
|
229
|
+
id: 1,
|
|
230
|
+
columnDef: TableColumnType.SELECT,
|
|
231
|
+
heading: '',
|
|
232
|
+
columnType: TableColumnType.SELECT,
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
|
+
cellData: (element) => `${element.select}`,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: 2,
|
|
238
|
+
columnDef: TableColumnSchemaUserGroup.NAME,
|
|
239
|
+
heading: this.tableColumnsForSystemUsers?.name,
|
|
240
|
+
columnType: TableColumnType.TEXT,
|
|
241
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
242
|
+
cellData: (element) => `${element.name}`,
|
|
243
|
+
isSortableColumn: true,
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
id: 3,
|
|
247
|
+
columnDef: TableColumnSchemaUserGroup.EMAIL,
|
|
248
|
+
heading: this.tableColumnsForSystemUsers?.email,
|
|
249
|
+
columnType: TableColumnType.TEXT,
|
|
250
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
251
|
+
cellData: (element) => `${element.email}`,
|
|
252
|
+
isSortableColumn: true,
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: 4,
|
|
256
|
+
columnDef: TableColumnSchemaUserGroup.ROLE,
|
|
257
|
+
heading: this.tableColumnsForSystemUsers?.role,
|
|
258
|
+
columnType: TableColumnType.TEXT,
|
|
259
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
260
|
+
cellData: (element) => `${element.role ?? this.emptyFieldValueReplacedBy}`,
|
|
261
|
+
},
|
|
262
|
+
];
|
|
263
|
+
this.getRoles();
|
|
264
|
+
}
|
|
265
|
+
this.defaultSortedColumn = this.columnSchema[1].columnDef;
|
|
266
|
+
}
|
|
133
267
|
/**
|
|
134
268
|
* Gets the group users by calling getGroupUsers() from groupService and sets tableData to display the users in a grid.
|
|
135
269
|
* @memberof ViewRosterComponent
|
|
136
270
|
*/
|
|
137
|
-
getGroupUsersAndInitializeTableView() {
|
|
271
|
+
getGroupUsersAndInitializeTableView(sortColumn, sortDirection) {
|
|
138
272
|
this.groupService
|
|
139
|
-
.getGroupUsers(this.groupService.getSelectedGroupInfo()?.groupId)
|
|
273
|
+
.getGroupUsers(this.groupService.getSelectedGroupInfo()?.groupId, sortColumn, sortDirection)
|
|
140
274
|
.pipe(takeUntil(this.destroy$))
|
|
141
275
|
.subscribe({
|
|
142
276
|
next: (response) => {
|
|
@@ -156,6 +290,35 @@ export class ViewRosterComponent {
|
|
|
156
290
|
},
|
|
157
291
|
});
|
|
158
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Gets the groups based on the column name and sort direction.
|
|
295
|
+
* @param {Sort} sort
|
|
296
|
+
* @memberof ViewRosterComponent
|
|
297
|
+
*/
|
|
298
|
+
onSortGroupUsers(sort) {
|
|
299
|
+
this.defaultSortedColumn = sort.active;
|
|
300
|
+
this.defaultColumnSortDirection =
|
|
301
|
+
sort.direction === TableColumnSortDirection.ASCENDING;
|
|
302
|
+
if (sort.direction === TableColumnSortDirection.NO_SORT)
|
|
303
|
+
return;
|
|
304
|
+
if (this.groupRosterType === GroupRosterType.SYSTEM_USER) {
|
|
305
|
+
if (this.selectedRoleIds.length)
|
|
306
|
+
this.onFilterGroupUsers([this.selectedRoles]);
|
|
307
|
+
else
|
|
308
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
309
|
+
}
|
|
310
|
+
else if (this.groupRosterType === GroupRosterType.INDIVIDUAL) {
|
|
311
|
+
if (this.selectedClassificationIds.length ||
|
|
312
|
+
this.selectedMemberTypeIds.length) {
|
|
313
|
+
this.onFilterGroupUsers([
|
|
314
|
+
this.selectedClassifications,
|
|
315
|
+
this.selectedMemberTypes,
|
|
316
|
+
]);
|
|
317
|
+
}
|
|
318
|
+
else
|
|
319
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
159
322
|
/**
|
|
160
323
|
* Gets the selected group type roles by calling getGroupTypeRoles() from groupService and sets assign roles.
|
|
161
324
|
* @memberof ViewRosterComponent
|
|
@@ -174,6 +337,79 @@ export class ViewRosterComponent {
|
|
|
174
337
|
},
|
|
175
338
|
});
|
|
176
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Gets the classification by calling getClassifications() from groupService and sets classifications.
|
|
342
|
+
* @memberof ViewUserRosterComponent
|
|
343
|
+
*/
|
|
344
|
+
getClassifications() {
|
|
345
|
+
this.groupService
|
|
346
|
+
.getClassifications()
|
|
347
|
+
.pipe(takeUntil(this.destroy$))
|
|
348
|
+
.subscribe({
|
|
349
|
+
next: (response) => {
|
|
350
|
+
response?.body?.forEach((option) => {
|
|
351
|
+
this.classifications?.push({
|
|
352
|
+
id: option.classificationId,
|
|
353
|
+
name: option.classificationName,
|
|
354
|
+
checked: false,
|
|
355
|
+
disabled: false,
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
},
|
|
359
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
360
|
+
error: (error) => {
|
|
361
|
+
this.handleErrors(error);
|
|
362
|
+
},
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Gets the member types by calling getMemberTypes() from groupService and sets member types.
|
|
367
|
+
* @memberof ViewUserRosterComponent
|
|
368
|
+
*/
|
|
369
|
+
getMemberTypes() {
|
|
370
|
+
this.groupService
|
|
371
|
+
.getMemberTypes()
|
|
372
|
+
.pipe(takeUntil(this.destroy$))
|
|
373
|
+
.subscribe({
|
|
374
|
+
next: (response) => {
|
|
375
|
+
response?.body?.forEach((option) => {
|
|
376
|
+
this.memberTypes?.push({
|
|
377
|
+
id: option.memberStatusId,
|
|
378
|
+
name: option.memberStatusName,
|
|
379
|
+
checked: false,
|
|
380
|
+
disabled: false,
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
},
|
|
384
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
385
|
+
error: (error) => {
|
|
386
|
+
this.handleErrors(error);
|
|
387
|
+
},
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Sets the selected filter options for Member Type or Classification filter depends on the selection.
|
|
392
|
+
* @param {ChipOption} option
|
|
393
|
+
* @memberof ViewRosterComponent
|
|
394
|
+
*/
|
|
395
|
+
setSelectedFilterOptions(option) {
|
|
396
|
+
switch (option.id) {
|
|
397
|
+
case FilterType.MEMBER_TYPE: {
|
|
398
|
+
this.filterOptions = this.memberTypes;
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
case FilterType.CLASSIFICATION: {
|
|
402
|
+
this.filterOptions = this.classifications;
|
|
403
|
+
break;
|
|
404
|
+
}
|
|
405
|
+
case FilterType.ROLE: {
|
|
406
|
+
this.filterOptions = this.roles;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
default:
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
177
413
|
/**
|
|
178
414
|
* Gets the group users by calling searchGroupUsers() from groupService and sets tableData to display the users in a grid.
|
|
179
415
|
* @param {string} searchTerm -searchTerm can be user name or email and user is searched based on the email or name.
|
|
@@ -181,25 +417,65 @@ export class ViewRosterComponent {
|
|
|
181
417
|
*/
|
|
182
418
|
onSearchGroupUsers(searchTerm) {
|
|
183
419
|
this.searchTerm = searchTerm?.trim();
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
420
|
+
let payload;
|
|
421
|
+
switch (this.groupRosterType) {
|
|
422
|
+
case GroupRosterType.SYSTEM_USER: {
|
|
423
|
+
if (!this.searchTerm) {
|
|
424
|
+
if (this.selectedRoleIds?.length === 0) {
|
|
425
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
else if (this.selectedRoleIds?.length > 0) {
|
|
429
|
+
this.onFilterGroupUsers([this.selectedRoles]);
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
payload = {
|
|
434
|
+
payload: {
|
|
435
|
+
groupId: this.groupService.getSelectedGroupInfo()
|
|
436
|
+
?.groupId,
|
|
437
|
+
searchByNameOrEmailOrRepOrg: this.searchTerm,
|
|
438
|
+
filterByRoleClassificationMemberStatusIds: this.selectedRoleIds,
|
|
439
|
+
sortColumn: this.defaultSortedColumn,
|
|
440
|
+
ascendingOrder: this.defaultColumnSortDirection,
|
|
441
|
+
},
|
|
442
|
+
};
|
|
443
|
+
break;
|
|
188
444
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
445
|
+
case GroupRosterType.INDIVIDUAL: {
|
|
446
|
+
if (!this.searchTerm) {
|
|
447
|
+
if (this.selectedMemberTypeIds?.length === 0 &&
|
|
448
|
+
this.selectedClassificationIds?.length === 0) {
|
|
449
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
else if (this.selectedClassificationIds?.length > 0 ||
|
|
453
|
+
this.selectedMemberTypeIds?.length > 0) {
|
|
454
|
+
this.onFilterGroupUsers([
|
|
455
|
+
this.selectedClassifications,
|
|
456
|
+
this.selectedMemberTypes,
|
|
457
|
+
]);
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
payload = {
|
|
462
|
+
payload: {
|
|
463
|
+
groupId: this.groupService.getSelectedGroupInfo()
|
|
464
|
+
?.groupId,
|
|
465
|
+
searchByNameOrEmailOrRepOrg: this.searchTerm,
|
|
466
|
+
filterByRoleClassificationMemberStatusIds: [
|
|
467
|
+
...this.selectedClassificationIds,
|
|
468
|
+
...this.selectedMemberTypeIds,
|
|
469
|
+
],
|
|
470
|
+
sortColumn: this.defaultSortedColumn,
|
|
471
|
+
ascendingOrder: this.defaultColumnSortDirection,
|
|
472
|
+
},
|
|
473
|
+
};
|
|
474
|
+
break;
|
|
192
475
|
}
|
|
476
|
+
default:
|
|
477
|
+
break;
|
|
193
478
|
}
|
|
194
|
-
if (!this.searchTerm)
|
|
195
|
-
return;
|
|
196
|
-
const payload = {
|
|
197
|
-
payload: {
|
|
198
|
-
groupId: this.groupService.getSelectedGroupInfo()?.groupId,
|
|
199
|
-
searchByNameOrEmail: this.searchTerm,
|
|
200
|
-
roles: this.selectedRoleIds,
|
|
201
|
-
},
|
|
202
|
-
};
|
|
203
479
|
this.groupService
|
|
204
480
|
.searchGroupUsers(payload)
|
|
205
481
|
.pipe(takeUntil(this.destroy$))
|
|
@@ -222,31 +498,90 @@ export class ViewRosterComponent {
|
|
|
222
498
|
},
|
|
223
499
|
});
|
|
224
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* Sets the selected options of filters and returns id of selected options
|
|
503
|
+
* @param {FiltersAndOptions[]} selectedOptions
|
|
504
|
+
* @param {FilterType} filterType
|
|
505
|
+
* @param {FiltersAndOptions} selectedFilterOptions
|
|
506
|
+
* @return {*}
|
|
507
|
+
* @memberof ViewRosterComponent
|
|
508
|
+
*/
|
|
509
|
+
getSelectedFilterOptionsAndIds(selectedOptions, filterType, selectedFilterOptions, selectedFilterIds) {
|
|
510
|
+
selectedOptions?.forEach((selectedOption) => {
|
|
511
|
+
for (const [key, value] of Object.entries(selectedOption)) {
|
|
512
|
+
if (key === filterType) {
|
|
513
|
+
const selectedFilterOptionsList = [];
|
|
514
|
+
value?.forEach((option) => {
|
|
515
|
+
selectedFilterIds.push(option.id);
|
|
516
|
+
selectedFilterOptionsList.push(option);
|
|
517
|
+
});
|
|
518
|
+
selectedFilterOptions[key] = selectedFilterOptionsList;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
});
|
|
522
|
+
}
|
|
225
523
|
/**
|
|
226
524
|
* Gets the group users by calling getGroupUsersByRoles() from groupService and sets tableData to display the users in a grid.
|
|
227
525
|
* @param {ChipOption[] | | CheckboxOption[]} roles
|
|
228
526
|
* @memberof ViewRosterComponent
|
|
229
527
|
*/
|
|
230
|
-
|
|
528
|
+
onFilterGroupUsers(selectedOptions) {
|
|
231
529
|
this.selectedRoleIds = [];
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
this.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
530
|
+
this.selectedMemberTypeIds = [];
|
|
531
|
+
this.selectedClassificationIds = [];
|
|
532
|
+
this.selectedClassifications = {};
|
|
533
|
+
this.selectedMemberTypes = {};
|
|
534
|
+
let payload;
|
|
535
|
+
switch (this.groupRosterType) {
|
|
536
|
+
case GroupRosterType.SYSTEM_USER: {
|
|
537
|
+
this.getSelectedFilterOptionsAndIds(selectedOptions, FilterType.ROLE, this.selectedRoles, this.selectedRoleIds);
|
|
538
|
+
if (selectedOptions?.length === 0 && !this.searchTerm) {
|
|
539
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
else if (this.searchTerm) {
|
|
543
|
+
this.onSearchGroupUsers(this.searchTerm);
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
payload = {
|
|
547
|
+
payload: {
|
|
548
|
+
groupId: this.groupService.getSelectedGroupInfo()
|
|
549
|
+
?.groupId,
|
|
550
|
+
filterByRoleClassificationMemberStatusIds: this.selectedRoleIds,
|
|
551
|
+
sortColumn: this.defaultSortedColumn,
|
|
552
|
+
ascendingOrder: this.defaultColumnSortDirection,
|
|
553
|
+
},
|
|
554
|
+
};
|
|
555
|
+
break;
|
|
556
|
+
}
|
|
557
|
+
case GroupRosterType.INDIVIDUAL: {
|
|
558
|
+
this.getSelectedFilterOptionsAndIds(selectedOptions, FilterType.MEMBER_TYPE, this.selectedMemberTypes, this.selectedMemberTypeIds);
|
|
559
|
+
this.getSelectedFilterOptionsAndIds(selectedOptions, FilterType.CLASSIFICATION, this.selectedClassifications, this.selectedClassificationIds);
|
|
560
|
+
if (selectedOptions?.length === 0 && !this.searchTerm) {
|
|
561
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
else if (this.searchTerm) {
|
|
565
|
+
this.onSearchGroupUsers(this.searchTerm);
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
payload = {
|
|
569
|
+
payload: {
|
|
570
|
+
groupId: this.groupService.getSelectedGroupInfo()
|
|
571
|
+
?.groupId,
|
|
572
|
+
filterByRoleClassificationMemberStatusIds: [
|
|
573
|
+
...this.selectedMemberTypeIds,
|
|
574
|
+
...this.selectedClassificationIds,
|
|
575
|
+
],
|
|
576
|
+
sortColumn: this.defaultSortedColumn,
|
|
577
|
+
ascendingOrder: this.defaultColumnSortDirection,
|
|
578
|
+
},
|
|
579
|
+
};
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
582
|
+
default:
|
|
583
|
+
break;
|
|
243
584
|
}
|
|
244
|
-
const payload = {
|
|
245
|
-
payload: {
|
|
246
|
-
groupId: this.groupService.getSelectedGroupInfo()?.groupId,
|
|
247
|
-
roles: this.selectedRoleIds,
|
|
248
|
-
},
|
|
249
|
-
};
|
|
250
585
|
this.groupService
|
|
251
586
|
.getGroupUsersByRoles(payload)
|
|
252
587
|
.pipe(takeUntil(this.destroy$))
|
|
@@ -333,7 +668,7 @@ export class ViewRosterComponent {
|
|
|
333
668
|
next: (res) => {
|
|
334
669
|
if (res?.status) {
|
|
335
670
|
this.showAlertMessage(`${res.body} ${deleteUsersGroupTexts?.message?.success?.removed}`, AlertType.SUCCESS);
|
|
336
|
-
this.getGroupUsersAndInitializeTableView();
|
|
671
|
+
this.getGroupUsersAndInitializeTableView(this.defaultSortedColumn, this.defaultColumnSortDirection);
|
|
337
672
|
}
|
|
338
673
|
},
|
|
339
674
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -348,12 +683,23 @@ export class ViewRosterComponent {
|
|
|
348
683
|
* @memberof ViewRosterComponent
|
|
349
684
|
*/
|
|
350
685
|
onEditUserRoles(selectedUserInfo) {
|
|
351
|
-
this.
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
686
|
+
if (this.groupRosterType === GroupRosterType.INDIVIDUAL)
|
|
687
|
+
this.groupService.setSelectedUserInfo({
|
|
688
|
+
email: selectedUserInfo[0]?.email,
|
|
689
|
+
name: selectedUserInfo[0]?.name,
|
|
690
|
+
role: selectedUserInfo[0]?.role,
|
|
691
|
+
userId: selectedUserInfo[0]?.userId,
|
|
692
|
+
classification: selectedUserInfo[0]?.classification,
|
|
693
|
+
organization: selectedUserInfo[0]?.organization,
|
|
694
|
+
memberStatus: selectedUserInfo[0]?.memberStatus,
|
|
695
|
+
});
|
|
696
|
+
else
|
|
697
|
+
this.groupService.setSelectedUserInfo({
|
|
698
|
+
email: selectedUserInfo[0]?.email,
|
|
699
|
+
name: selectedUserInfo[0]?.name,
|
|
700
|
+
role: selectedUserInfo[0]?.role,
|
|
701
|
+
userId: selectedUserInfo[0]?.userId,
|
|
702
|
+
});
|
|
357
703
|
this.groupService?.openModalNotifier?.next(GroupFunctionType.EDIT_ROSTER_USER_ROLE);
|
|
358
704
|
}
|
|
359
705
|
/**
|
|
@@ -387,10 +733,10 @@ export class ViewRosterComponent {
|
|
|
387
733
|
this.destroy$.unsubscribe();
|
|
388
734
|
}
|
|
389
735
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewRosterComponent, deps: [{ token: i1.MatDialog }, { token: i2.GroupsService }, { token: i3.AlertsService }, { token: i0.ChangeDetectorRef }, { token: i3.GlobalErrorHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
390
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewRosterComponent, isStandalone: true, selector: "ieeesa-view-roster", ngImport: i0, template: "<ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [defaultSortedColumn]=\"defaultSortedColumn\"\r\n [defaultColumnSortDirection]=\"defaultColumnSortDirection\"\r\n [searchPlaceHolderText]=\"viewRosterConstants?.searchPlaceholder\"\r\n [tableActions]=\"rosterActions\"\r\n [filters]=\"filters\"\r\n [selectedFilterOptions]=\"roles\"\r\n (removeFilteredOption)=\"onFilterUsersByRoles($event)\"\r\n (filteredOptions)=\"onFilterUsersByRoles($event)\"\r\n (searchedValue)=\"onSearchGroupUsers($event)\"\r\n (selectedRowToEdit)=\"onEditUserRoles($event)\"\r\n (selectedRowsToDelete)=\"openUserDeleteConfirmationModal($event)\"\r\n (addRow)=\"onAddNewUser()\"\r\n></ieeesa-data-table>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-view-roster{max-width:80vw!important}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:3em}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal .mat-mdc-dialog-content{padding:0;min-height:405px}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal-title{padding-bottom:1.25em}.ieeesa-data-table__content{height:500px}.ieeesa-data-table__no-table-data{height:auto}.ieeesa-data-table__filter{padding-bottom:1em}.ieeesa-data-table .cdk-column-select{width:7%}.ieeesa-data-table .cdk-column-name{width:18%}.ieeesa-data-table .cdk-column-email{width:27%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DataTableComponent, selector: "ieeesa-data-table", inputs: ["tableDataInfo", "columnSchemaInfo", "tableActions", "caption", "paginatorConfig", "searchPlaceHolderText", "rowEditButton", "rowDeleteButton", "tableEditButton", "tableDeleteButton", "addButton", "defaultColumnSortDirection", "defaultSortedColumn", "filters", "selectedFilterOptions", "appliedFilterOptions", "searchType"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
736
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewRosterComponent, isStandalone: true, selector: "ieeesa-view-roster", ngImport: i0, template: "<ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [searchPlaceHolderText]=\"searchPlaceholderText\"\r\n [tableActions]=\"rosterActions\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [filters]=\"filters\"\r\n [className]=\"dataTableClassName\"\r\n [selectedFilterOptions]=\"filterOptions\"\r\n (selectedFilter)=\"setSelectedFilterOptions($event)\"\r\n (removeFilteredOption)=\"onFilterGroupUsers($event)\"\r\n (filteredOptions)=\"onFilterGroupUsers($event)\"\r\n (searchedValue)=\"onSearchGroupUsers($event)\"\r\n (selectedRowToEdit)=\"onEditUserRoles($event)\"\r\n (selectedRowsToDelete)=\"openUserDeleteConfirmationModal($event)\"\r\n (sortChange)=\"onSortGroupUsers($event)\"\r\n (addRow)=\"onAddNewUser()\"\r\n></ieeesa-data-table>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-view-roster{max-width:90vw!important}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:3em}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal .mat-mdc-dialog-content{padding:0;min-height:405px}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal-title{padding-bottom:1.25em}.ieeesa-data-table__content{height:500px}.ieeesa-data-table__no-table-data{height:auto}.ieeesa-data-table__filter{padding-bottom:1em}.ieeesa-data-table .cdk-column-select{width:7%}.ieeesa-data-table .ieeesa-system-users-roster .cdk-column-name{width:11.25em;max-width:11.25em}.ieeesa-data-table .ieeesa-system-users-roster .cdk-column-email{width:15em;max-width:15em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-name{width:11em;max-width:11em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-email{width:13em;max-width:13em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-memberType,.ieeesa-data-table .ieeesa-individual-roster .cdk-column-role,.ieeesa-data-table .ieeesa-individual-roster .cdk-column-employer{width:8.25em;max-width:8.25em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-org_name,.ieeesa-data-table .ieeesa-individual-roster .cdk-column{width:10em;max-width:10em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-classification{width:15em;max-width:15em}@media (max-width: 576px){.ieeesa-modal-dialog.ieeesa-view-roster{max-width:95vw!important}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-data-table{padding-right:0!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DataTableComponent, selector: "ieeesa-data-table", inputs: ["tableDataInfo", "columnSchemaInfo", "tableActions", "caption", "paginatorConfig", "searchPlaceHolderText", "rowEditButton", "rowDeleteButton", "tableEditButton", "tableDeleteButton", "addButton", "defaultColumnSortDirection", "defaultSortedColumn", "filters", "selectedFilterOptions", "appliedFilterOptions", "searchType", "className", "inbuiltSortingNeeded", "isCellTextOverflowEllipsis"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
391
737
|
}
|
|
392
738
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewRosterComponent, decorators: [{
|
|
393
739
|
type: Component,
|
|
394
|
-
args: [{ selector: 'ieeesa-view-roster', standalone: true, imports: [CommonModule, DataTableComponent, MatDialogModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [defaultSortedColumn]=\"defaultSortedColumn\"\r\n [defaultColumnSortDirection]=\"defaultColumnSortDirection\"\r\n [searchPlaceHolderText]=\"viewRosterConstants?.searchPlaceholder\"\r\n [tableActions]=\"rosterActions\"\r\n [filters]=\"filters\"\r\n [selectedFilterOptions]=\"roles\"\r\n (removeFilteredOption)=\"onFilterUsersByRoles($event)\"\r\n (filteredOptions)=\"onFilterUsersByRoles($event)\"\r\n (searchedValue)=\"onSearchGroupUsers($event)\"\r\n (selectedRowToEdit)=\"onEditUserRoles($event)\"\r\n (selectedRowsToDelete)=\"openUserDeleteConfirmationModal($event)\"\r\n (addRow)=\"onAddNewUser()\"\r\n></ieeesa-data-table>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-view-roster{max-width:80vw!important}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:3em}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal .mat-mdc-dialog-content{padding:0;min-height:405px}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal-title{padding-bottom:1.25em}.ieeesa-data-table__content{height:500px}.ieeesa-data-table__no-table-data{height:auto}.ieeesa-data-table__filter{padding-bottom:1em}.ieeesa-data-table .cdk-column-select{width:7%}.ieeesa-data-table .cdk-column-name{width:18%}.ieeesa-data-table .cdk-column-email{width:27%}\n"] }]
|
|
740
|
+
args: [{ selector: 'ieeesa-view-roster', standalone: true, imports: [CommonModule, DataTableComponent, MatDialogModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [searchPlaceHolderText]=\"searchPlaceholderText\"\r\n [tableActions]=\"rosterActions\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [filters]=\"filters\"\r\n [className]=\"dataTableClassName\"\r\n [selectedFilterOptions]=\"filterOptions\"\r\n (selectedFilter)=\"setSelectedFilterOptions($event)\"\r\n (removeFilteredOption)=\"onFilterGroupUsers($event)\"\r\n (filteredOptions)=\"onFilterGroupUsers($event)\"\r\n (searchedValue)=\"onSearchGroupUsers($event)\"\r\n (selectedRowToEdit)=\"onEditUserRoles($event)\"\r\n (selectedRowsToDelete)=\"openUserDeleteConfirmationModal($event)\"\r\n (sortChange)=\"onSortGroupUsers($event)\"\r\n (addRow)=\"onAddNewUser()\"\r\n></ieeesa-data-table>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-view-roster{max-width:90vw!important}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:3em}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal .mat-mdc-dialog-content{padding:0;min-height:405px}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-modal-title{padding-bottom:1.25em}.ieeesa-data-table__content{height:500px}.ieeesa-data-table__no-table-data{height:auto}.ieeesa-data-table__filter{padding-bottom:1em}.ieeesa-data-table .cdk-column-select{width:7%}.ieeesa-data-table .ieeesa-system-users-roster .cdk-column-name{width:11.25em;max-width:11.25em}.ieeesa-data-table .ieeesa-system-users-roster .cdk-column-email{width:15em;max-width:15em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-name{width:11em;max-width:11em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-email{width:13em;max-width:13em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-memberType,.ieeesa-data-table .ieeesa-individual-roster .cdk-column-role,.ieeesa-data-table .ieeesa-individual-roster .cdk-column-employer{width:8.25em;max-width:8.25em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-org_name,.ieeesa-data-table .ieeesa-individual-roster .cdk-column{width:10em;max-width:10em}.ieeesa-data-table .ieeesa-individual-roster .cdk-column-classification{width:15em;max-width:15em}@media (max-width: 576px){.ieeesa-modal-dialog.ieeesa-view-roster{max-width:95vw!important}.ieeesa-modal-dialog.ieeesa-view-roster .ieeesa-data-table{padding-right:0!important}}\n"] }]
|
|
395
741
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.GroupsService }, { type: i3.AlertsService }, { type: i0.ChangeDetectorRef }, { type: i3.GlobalErrorHandlerService }]; } });
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1yb3N0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvY29tcG9uZW50cy92aWV3LXJvc3Rlci92aWV3LXJvc3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXctcm9zdGVyL3ZpZXctcm9zdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFFTCxlQUFlLEVBR2Ysd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsMEJBQTBCLEVBRTFCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxTQUFTLEdBR1YsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEtBQUssU0FBUyxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFcEU7Ozs7O0dBS0c7QUFVSCxNQUFNLE9BQU8sbUJBQW1CO0lBb0U5QjtJQUNF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QUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0FyWVUsbUJBQW1CO21HQUFuQixtQkFBbUIsOEVDMURoQyx3dUJBZ0JBLHcxUURvQ1ksWUFBWSwrQkFBRSxrQkFBa0IsNG5CQUFFLGVBQWU7OzRGQU1oRCxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxlQUFlLENBQUMsaUJBRzdDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblR5cGUsXHJcbiAgVGFibGVBY3Rpb25zLFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG4gIFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbixcclxuICBDaGlwc1R5cGUsXHJcbiAgQWxpZ25UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIENoaXBPcHRpb24sXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBTZWFyY2hVc2Vyc1BheWxvYWQsXHJcbiAgRmlsdGVyVXNlcnNCeVJvbGVzUGF5bG9hZCxcclxuICBVc2VyLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy91c2VyLm1vZGVsJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IERlbGV0ZVVzZXJHcm91cFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGVsZXRlLXVzZXItZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgUm9zdGVyRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jvc3Rlci1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBVc2VySW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC11c2VyLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIFZpZXdSb3N0ZXJDb21wb25lbnQgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0aWVzIHRvIGFkZCwgZWRpdCwgZGVsZXRlIHVzZXIgdG8gZ3JvdXAgcm9zdGVyLCBhc3NpZ24gYW5kIG1vZGlmeSByb2xlcyhzKSB0byB0aGUgZ3JvdXAgdXNlcnMsIGFuZCBzZWFyY2ggdXNlciBmcm9tIHJvc3Rlci5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2Etdmlldy1yb3N0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGF0YVRhYmxlQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXJvc3Rlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1yb3N0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld1Jvc3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgdmlld1Jvc3RlckNvbnN0YW50cyA9IHRoaXMuY29uc3RhbnRzPy52aWV3Um9zdGVyO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGZpbHRlcnM6IENoaXBPcHRpb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6IDEsXHJcbiAgICAgIG5hbWU6IHRoaXMudmlld1Jvc3RlckNvbnN0YW50cz8uZmlsdGVyQnlSb2xlLFxyXG4gICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5UT0dHTEUsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgY29sdW1uU2NoZW1hOiBUYWJsZUNvbHVtblNjaGVtYVtdID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogMSxcclxuICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuU0VMRUNULFxyXG4gICAgICBoZWFkaW5nOiAnJyxcclxuICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQuc2VsZWN0fWAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogMixcclxuICAgICAgY29sdW1uRGVmOiAnbmFtZScsXHJcbiAgICAgIGhlYWRpbmc6IHRoaXMudmlld1Jvc3RlckNvbnN0YW50cz8udGFibGVDb2x1bW5zPy5uYW1lLFxyXG4gICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubmFtZX1gLFxyXG4gICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IDMsXHJcbiAgICAgIGNvbHVtbkRlZjogJ2VtYWlsJyxcclxuICAgICAgaGVhZGluZzogdGhpcy52aWV3Um9zdGVyQ29uc3RhbnRzPy50YWJsZUNvbHVtbnM/LmVtYWlsLFxyXG4gICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQuZW1haWx9YCxcclxuICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiA0LFxyXG4gICAgICBjb2x1bW5EZWY6ICdyb2xlJyxcclxuICAgICAgaGVhZGluZzogdGhpcy52aWV3Um9zdGVyQ29uc3RhbnRzPy50YWJsZUNvbHVtbnM/LnJvbGUsXHJcbiAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5yb2xlfWAsXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgdGFibGVEYXRhITogVXNlcltdO1xyXG4gIHNlbGVjdGVkUm9sZUlkczogc3RyaW5nW10gPSBbXTtcclxuICBzZWxlY3RlZFJvbGVzITogQ2hpcE9wdGlvbltdIHwgQ2hlY2tib3hPcHRpb25bXTtcclxuICByb2xlczogQ2hlY2tib3hPcHRpb25bXSA9IFtdO1xyXG4gIHJvc3RlckFjdGlvbnM6IFRhYmxlQWN0aW9ucyA9IHtcclxuICAgIGlzU2VhcmNoTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IHRydWUsXHJcbiAgICBpc0FkZE5lZWRlZDogZmFsc2UsXHJcbiAgICBpc0RlbGV0ZU5lZWRlZDogZmFsc2UsXHJcbiAgICBpc0VkaXROZWVkZWQ6IGZhbHNlLFxyXG4gIH07XHJcbiAgZGVmYXVsdFNvcnRlZENvbHVtbiA9IHRoaXMuY29sdW1uU2NoZW1hWzFdLmNvbHVtbkRlZjtcclxuICBkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9XHJcbiAgICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24uQVNDRU5ESU5HO1xyXG4gIHNlYXJjaFRlcm0hOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3Vwc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgdGhpcy5nZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldygpO1xyXG4gICAgdGhpcy5yb3N0ZXJBY3Rpb25zLmlzQWRkTmVlZGVkID0gdGhpcy5nZXRNYW5hZ2VSb3N0ZXJBY3Rpb25zUGVybWlzc2lvbigpO1xyXG4gICAgdGhpcy5yb3N0ZXJBY3Rpb25zLmlzRWRpdE5lZWRlZCA9IHRoaXMuZ2V0TWFuYWdlUm9zdGVyQWN0aW9uc1Blcm1pc3Npb24oKTtcclxuICAgIHRoaXMucm9zdGVyQWN0aW9ucy5pc0RlbGV0ZU5lZWRlZCA9IHRoaXMuZ2V0TWFuYWdlUm9zdGVyQWN0aW9uc1Blcm1pc3Npb24oKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvdyBhZGQgbmV3IHVzZXIgc3VjY2VzcyBtZXNzYWdlIHdoZW4gY2FuU2hvd01lc3NhZ2UgaXMgc2V0IHRydWVcclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyb3VwU2VydmljZT8uY2FuU2hvd01lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2UuY2FuU2hvd01lc3NhZ2UgPSBmYWxzZTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlPy5yb3N0ZXJGdW5jdGlvblR5cGUgPT09XHJcbiAgICAgICAgUm9zdGVyRnVuY3Rpb25UeXBlPy5BRERfVVNFUl9UT19ST1NURVJcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb24sXHJcbiAgICAgICAgICBBbGVydFR5cGUuU1VDQ0VTU1xyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2U/LnJvc3RlckZ1bmN0aW9uVHlwZSA9PT1cclxuICAgICAgICBSb3N0ZXJGdW5jdGlvblR5cGU/LkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICB0aGlzLmNvbnN0YW50cz8uZWRpdFVzZXJSb2xlcz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvbixcclxuICAgICAgICAgIEFsZXJ0VHlwZS5TVUNDRVNTXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWRlcyBvciBzaG93cyByb3N0ZXIgYWRkIHVzZXIsIGVkaXQgdXNlciBhbmQgZGVsZXRlIHVzZXIgYWN0aW9ucyBiYXNlZCBvbiB1c2VyIGdyb3VwIHBlcm1pc3Npb25zLlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRNYW5hZ2VSb3N0ZXJBY3Rpb25zUGVybWlzc2lvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFBlcm1pc3Npb25UeXBlLk1BTkFHRV9TWVNURU1fVVNFUlMpIHx8XHJcbiAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFBlcm1pc3Npb25UeXBlLk1BTkFHRV9HUk9VUF9PRkZJQ0VSUykgfHxcclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2UudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuTUFOQUdFX0dST1VQX01FTUJFUlMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYnkgY2FsbGluZyBnZXRHcm91cFVzZXJzKCkgZnJvbSBncm91cFNlcnZpY2UgYW5kIHNldHMgdGFibGVEYXRhIHRvIGRpc3BsYXkgdGhlIHVzZXJzIGluIGEgZ3JpZC5cclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3VwVXNlcnNBbmRJbml0aWFsaXplVGFibGVWaWV3KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVXNlcnMoXHJcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBJZCBhcyBzdHJpbmdcclxuICAgICAgKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPVxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwU2VydmljZS50cmFuc2Zvcm1Vc2VyUm9sZXNOYW1lQXNTdHJpbmcocmVzcG9uc2UpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yQ29kZXMgPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICAgICAgICBpZiAoZXJyb3JDb2Rlcz8uaW5jbHVkZXMoJzEwMjYnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgZ3JvdXAgdHlwZSByb2xlcyBieSBjYWxsaW5nIGdldEdyb3VwVHlwZVJvbGVzKCkgZnJvbSBncm91cFNlcnZpY2UgYW5kIHNldHMgYXNzaWduIHJvbGVzLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Um9sZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBUeXBlUm9sZXMoXHJcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBUeXBlIGFzIHN0cmluZ1xyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJvbGVzID0gcmVzcG9uc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYnkgY2FsbGluZyBzZWFyY2hHcm91cFVzZXJzKCkgZnJvbSBncm91cFNlcnZpY2UgYW5kIHNldHMgdGFibGVEYXRhIHRvIGRpc3BsYXkgdGhlIHVzZXJzIGluIGEgZ3JpZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGVybSAtc2VhcmNoVGVybSBjYW4gYmUgdXNlciBuYW1lIG9yIGVtYWlsIGFuZCB1c2VyIGlzIHNlYXJjaGVkIGJhc2VkIG9uIHRoZSBlbWFpbCBvciBuYW1lLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25TZWFyY2hHcm91cFVzZXJzKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybT8udHJpbSgpO1xyXG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSb2xlSWRzPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmdldEdyb3VwVXNlcnNBbmRJbml0aWFsaXplVGFibGVWaWV3KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb2xlSWRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5vbkZpbHRlclVzZXJzQnlSb2xlcyh0aGlzLnNlbGVjdGVkUm9sZXMpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIGNvbnN0IHBheWxvYWQ6IFNlYXJjaFVzZXJzUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBTZXJ2aWNlLmdldFNlbGVjdGVkR3JvdXBJbmZvKCk/Lmdyb3VwSWQgYXMgc3RyaW5nLFxyXG4gICAgICAgIHNlYXJjaEJ5TmFtZU9yRW1haWw6IHRoaXMuc2VhcmNoVGVybSxcclxuICAgICAgICByb2xlczogdGhpcy5zZWxlY3RlZFJvbGVJZHMsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLnNlYXJjaEdyb3VwVXNlcnMocGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID1cclxuICAgICAgICAgICAgdGhpcy5ncm91cFNlcnZpY2UudHJhbnNmb3JtVXNlclJvbGVzTmFtZUFzU3RyaW5nKHJlc3BvbnNlKTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgICAgICAgY29uc3Qgbm9Vc2Vyc0ZvdW5kRXJyb3JDb2RlcyA9IFsnMTAyOScsICcxMDMwJywgJzEwMzEnLCAnMTAzMiddO1xyXG4gICAgICAgICAgaWYgKGVycm9yQ29kZXMgJiYgbm9Vc2Vyc0ZvdW5kRXJyb3JDb2Rlcy5pbmNsdWRlcyhlcnJvckNvZGVzWzBdKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZ3JvdXAgdXNlcnMgYnkgY2FsbGluZyBnZXRHcm91cFVzZXJzQnlSb2xlcygpIGZyb20gZ3JvdXBTZXJ2aWNlIGFuZCBzZXRzIHRhYmxlRGF0YSB0byBkaXNwbGF5IHRoZSB1c2VycyBpbiBhIGdyaWQuXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9uW10gfCB8IENoZWNrYm94T3B0aW9uW119IHJvbGVzXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZpbHRlclVzZXJzQnlSb2xlcyhyb2xlczogQ2hpcE9wdGlvbltdIHwgQ2hlY2tib3hPcHRpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvbGVJZHMgPSBbXTtcclxuICAgIHJvbGVzPy5mb3JFYWNoKChyb2xlKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlSWRzLnB1c2gocm9sZS5pZCBhcyBzdHJpbmcpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSByb2xlcztcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID09PSAwICYmICF0aGlzLnNlYXJjaFRlcm0pIHtcclxuICAgICAgdGhpcy5nZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoR3JvdXBVc2Vycyh0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXlsb2FkOiBGaWx0ZXJVc2Vyc0J5Um9sZXNQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cFNlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgcm9sZXM6IHRoaXMuc2VsZWN0ZWRSb2xlSWRzLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cFVzZXJzQnlSb2xlcyhwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPVxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwU2VydmljZS50cmFuc2Zvcm1Vc2VyUm9sZXNOYW1lQXNTdHJpbmcocmVzcG9uc2UpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yQ29kZXMgPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICAgICAgICBpZiAoZXJyb3JDb2Rlcz8uaW5jbHVkZXMoJzEwMjcnKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgY3VzdG9tIGVycm9ycyB3aGlsZSByZXRyaWV2aW5nIGdyb3VwcyB1c2Vycywgcm9sZXMsIHNlYXJjaCB1c2VycywgZmlsdGVyIHVzZXIgYnkgcm9sZXMuXHJcbiAgICogQHBhcmFtIHsqfSBlcnJvclxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXJyb3JDb2RlcyA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpICYmICFlcnJvcj8uZXJyb3I/LnN0YXR1cykge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB0aGlzLmdyb3VwU2VydmljZS5wYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzKTtcclxuICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKGVycm9yTWVzc2FnZSwgQWxlcnRUeXBlLkVSUk9SKTtcclxuICAgIH0gZWxzZSBpZiAoZXJyb3IgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgY29uZmlybWF0aW9uIG1vZGFsIHRvIGdldCB1c2VyIGNvbmZpcm1hdGlvbiB0byBkZWxldGUgdGhlIHVzZXJzIGZyb20gdGhlIHNlbGVjdGVkIGdyb3VwLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvcGVuVXNlckRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKHNlbGVjdGVkVXNlcnM6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcklkcyA9IHNlbGVjdGVkVXNlcnMubWFwKCh1c2VyOiBVc2VyKSA9PiB1c2VyPy51c2VySWQpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cEluZm8gPSB0aGlzLmdyb3VwU2VydmljZT8uZ2V0U2VsZWN0ZWRHcm91cEluZm8oKTtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSBjb25zdGFudHM/LmRlbGV0ZVVzZXJzR3JvdXA/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVVc2VyR3JvdXBNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiBgJHtjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlUGFydDF9ICR7dXNlcklkcz8ubGVuZ3RofSAke2NvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2VQYXJ0Mn0gJHtzZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBOYW1lfT9gLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogdGhpcy5hbGlnbm1lbnRUeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRlbGV0ZVVzZXJHcm91cE1vZGFsT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiAnZGlhbG9nJyxcclxuICAgICAgYXJpYUxhYmVsOiBjb25zdGFudHM/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVVc2Vyc0dyb3VwKHNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZywgdXNlcklkcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VuZCBBUEkgcmVxdWVzdCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIHVzZXIocykgZnJvbSB0aGUgc2VsZWN0ZWQgZ3JvdXAgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlVXNlcnNHcm91cChncm91cElkOiBzdHJpbmcsIHVzZXJJZHM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBkZWxldGVVc2Vyc0dyb3VwVGV4dHMgPSBjb25zdGFudHM/LmRlbGV0ZVVzZXJzR3JvdXA7XHJcbiAgICBjb25zdCBkZWxldGVVc2VyR3JvdXBQYXlsb2FkOiBEZWxldGVVc2VyR3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgW2dyb3VwSWRdOiB1c2VySWRzLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVVc2Vyc0dyb3VwKGRlbGV0ZVVzZXJHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgYCR7cmVzLmJvZHl9ICR7ZGVsZXRlVXNlcnNHcm91cFRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy5yZW1vdmVkfWAsXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlLlNVQ0NFU1NcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0ZWQgdXNlciBpbmZvIGFuZCBlbWl0cyBldmVudCBvcGVuTW9kYWxOb3RpZmllciB3aXRoIEVESVRfUk9TVEVSX1VTRVJfUk9MRSB2YWx1ZS5cclxuICAgKiBAcGFyYW0ge0dyb3VwVXNlckluZm9bXX0gc2VsZWN0ZWRVc2VySW5mb1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FZGl0VXNlclJvbGVzKHNlbGVjdGVkVXNlckluZm86IEdyb3VwVXNlckluZm9bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2Uuc2V0U2VsZWN0ZWRVc2VySW5mbyh7XHJcbiAgICAgIGVtYWlsOiBzZWxlY3RlZFVzZXJJbmZvWzBdPy5lbWFpbCxcclxuICAgICAgbmFtZTogc2VsZWN0ZWRVc2VySW5mb1swXT8ubmFtZSxcclxuICAgICAgcm9sZTogc2VsZWN0ZWRVc2VySW5mb1swXT8ucm9sZSxcclxuICAgICAgdXNlcklkOiBzZWxlY3RlZFVzZXJJbmZvWzBdPy51c2VySWQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlPy5vcGVuTW9kYWxOb3RpZmllcj8ubmV4dChcclxuICAgICAgR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgb3Blbk1vZGFsTm90aWZpZXIgZXZlbnQgd2l0aCBHcm91cEZ1bmN0aW9uVHlwZSB2YWx1ZSBhcyBBRERfVVNFUl9UT19ST1NURVJcclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQWRkTmV3VXNlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlPy5vcGVuTW9kYWxOb3RpZmllcj8ubmV4dChcclxuICAgICAgR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhbGVydHMgZm9yIHN1Y2Nlc3MsIGVycm9yLCB3YXJuaW5nLlxyXG4gICAqIEBwYXJhbSB7KHN0cmluZyB8IHN0cmluZ1tdKX0gbWVzc2FnZSAtZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHtBbGVydFR5cGV9IGFsZXJ0VHlwZVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2hvd0FsZXJ0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSwgYWxlcnRUeXBlOiBBbGVydFR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgIGFsZXJ0VHlwZTogYWxlcnRUeXBlLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgW3RhYmxlRGF0YUluZm9dPVwidGFibGVEYXRhXCJcclxuICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gIFtkZWZhdWx0U29ydGVkQ29sdW1uXT1cImRlZmF1bHRTb3J0ZWRDb2x1bW5cIlxyXG4gIFtkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbl09XCJkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvblwiXHJcbiAgW3NlYXJjaFBsYWNlSG9sZGVyVGV4dF09XCJ2aWV3Um9zdGVyQ29uc3RhbnRzPy5zZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgW3RhYmxlQWN0aW9uc109XCJyb3N0ZXJBY3Rpb25zXCJcclxuICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICBbc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXT1cInJvbGVzXCJcclxuICAocmVtb3ZlRmlsdGVyZWRPcHRpb24pPVwib25GaWx0ZXJVc2Vyc0J5Um9sZXMoJGV2ZW50KVwiXHJcbiAgKGZpbHRlcmVkT3B0aW9ucyk9XCJvbkZpbHRlclVzZXJzQnlSb2xlcygkZXZlbnQpXCJcclxuICAoc2VhcmNoZWRWYWx1ZSk9XCJvblNlYXJjaEdyb3VwVXNlcnMoJGV2ZW50KVwiXHJcbiAgKHNlbGVjdGVkUm93VG9FZGl0KT1cIm9uRWRpdFVzZXJSb2xlcygkZXZlbnQpXCJcclxuICAoc2VsZWN0ZWRSb3dzVG9EZWxldGUpPVwib3BlblVzZXJEZWxldGVDb25maXJtYXRpb25Nb2RhbCgkZXZlbnQpXCJcclxuICAoYWRkUm93KT1cIm9uQWRkTmV3VXNlcigpXCJcclxuPjwvaWVlZXNhLWRhdGEtdGFibGU+XHJcbiJdfQ==
|
|
742
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1yb3N0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvY29tcG9uZW50cy92aWV3LXJvc3Rlci92aWV3LXJvc3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXctcm9zdGVyL3ZpZXctcm9zdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUdULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFFTCxlQUFlLEVBRWYsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsMEJBQTBCLEVBRzFCLGtCQUFrQixHQUVuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxTQUFTLEdBR1YsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEtBQUssU0FBUyxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQUVwRTs7Ozs7R0FLRztBQVVILE1BQU0sT0FBTyxtQkFBbUI7SUF5QzlCO0lBQ0UsMENBQTBDO0lBQ25DLE1BQWlCO0lBQ3hCLDBDQUEwQztJQUNsQyxZQUEyQjtJQUNuQywwQ0FBMEM7SUFDbEMsWUFBMkI7SUFDbkMsMENBQTBDO0lBQ2xDLEdBQXNCO0lBQzlCLDBDQUEwQztJQUNsQyx5QkFBb0Q7UUFSckQsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUVoQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUUzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUUzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUV0Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBbEQ5RCxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDcEQsOERBQThEO1FBQzlELGNBQVMsR0FBUSxTQUFTLENBQUM7UUFDM0Isd0JBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7UUFHakQsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFJMUIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ3JDLDhCQUF5QixHQUFhLEVBQUUsQ0FBQztRQUV6QyxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsd0JBQW1CLEdBQXNCLEVBQUUsQ0FBQztRQUM1Qyw0QkFBdUIsR0FBc0IsRUFBRSxDQUFDO1FBQ2hELFVBQUssR0FBcUIsRUFBRSxDQUFDO1FBQzdCLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUNyQyxnQkFBVyxHQUFxQixFQUFFLENBQUM7UUFDbkMsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQWlCO1lBQzVCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7UUFHRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsK0JBQTBCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLDhCQUF5QixHQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUseUJBQXlCLENBQUM7UUFDdEQsK0JBQTBCLEdBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSwwQkFBMEIsQ0FBQztRQUN2RCw4QkFBeUIsR0FDdkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLHlCQUF5QixDQUFDO1FBYXBELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO0lBQzlFLENBQUM7SUFDRCxRQUFRO1FBQ04sTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7UUFDeEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsRUFBRSxpQkFBaUIsSUFBSSxLQUFLLENBQUM7UUFDL0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLEVBQUUsVUFBNkIsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7Z0JBQzVCLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTTtnQkFDdkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUM1QixhQUFhLEVBQUUsSUFBSTthQUNwQixDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsbUNBQW1DLENBQ3RDLElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLDBCQUEwQixDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUN6QyxJQUNFLElBQUksQ0FBQyxZQUFZLEVBQUUsa0JBQWtCO2dCQUNyQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFDdEM7Z0JBQ0EsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFDM0QsU0FBUyxDQUFDLE9BQU8sQ0FDbEIsQ0FBQzthQUNIO2lCQUFNLElBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0I7Z0JBQ3JDLGtCQUFrQixFQUFFLHFCQUFxQixFQUN6QztnQkFDQSxJQUFJLENBQUMsZ0JBQWdCLENBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUMzRCxTQUFTLENBQUMsT0FBTyxDQUNsQixDQUFDO2FBQ0g7U0FDRjtRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsRUFBRSxVQUE2QixDQUFDO0lBQ2xFLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsZ0NBQWdDO1FBQzlCLE9BQU8sQ0FDTCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUM7WUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDO1lBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLFVBQVUsRUFBRTtZQUN2RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsMEJBQTBCLENBQUM7WUFDckQsSUFBSSxDQUFDLHFCQUFxQjtnQkFDeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLDJCQUEyQixDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2I7b0JBQ0UsRUFBRSxFQUFFLFVBQVUsQ0FBQyxXQUFXO29CQUMxQixJQUFJLEVBQUUsVUFBVSxDQUFDLFdBQVc7b0JBQzVCLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTTtpQkFDM0I7YUFDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBTTtvQkFDakMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsVUFBVSxFQUFFLGVBQWUsQ0FBQyxNQUFNO29CQUNsQyw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFO2lCQUNoRDtnQkFDRDtvQkFDRSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxTQUFTLEVBQUUsMEJBQTBCLENBQUMsSUFBSTtvQkFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJO29CQUM3QyxVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7b0JBQ2hDLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQzdDLGdCQUFnQixFQUFFLElBQUk7aUJBQ3ZCO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO29CQUM5QyxPQUFPLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFFBQVE7b0JBQ2pELFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtvQkFDaEMsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUN6QixHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO29CQUN6RCxnQkFBZ0IsRUFBRSxJQUFJO2lCQUN2QjtnQkFDRDtvQkFDRSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxTQUFTLEVBQUUsMEJBQTBCLENBQUMsS0FBSztvQkFDM0MsT0FBTyxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxLQUFLO29CQUM5QyxVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7b0JBQ2hDLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDekIsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtvQkFDdEQsZ0JBQWdCLEVBQUUsSUFBSTtpQkFDdkI7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLENBQUM7b0JBQ0wsU0FBUyxFQUFFLDBCQUEwQixDQUFDLFdBQVc7b0JBQ2pELE9BQU8sRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsVUFBVTtvQkFDbkQsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO29CQUNoQyw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQ3pCLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7aUJBQzVEO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxZQUFZO29CQUNsRCxPQUFPLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLGdCQUFnQjtvQkFDekQsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO29CQUNoQyw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQ3pCLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQzdELGdCQUFnQixFQUFFLElBQUk7aUJBQ3ZCO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxJQUFJO29CQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLElBQUk7b0JBQzdDLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtvQkFDaEMsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUN6QixHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO2lCQUN0RDthQUNGLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ3hELEVBQUUsRUFBRSxDQUFDO29CQUNMLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxjQUFjO29CQUNwRCxPQUFPLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLGNBQWM7b0JBQ3ZELFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtvQkFDaEMsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUN6QixHQUFHLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO29CQUMvRCxnQkFBZ0IsRUFBRSxJQUFJO2lCQUN2QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsY0FBYztvQkFDN0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxjQUFjO29CQUMvQixPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU07aUJBQzNCLENBQUMsQ0FBQzthQUNKO1NBQ0Y7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLFdBQVcsRUFBRTtZQUMvRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7WUFDdkQsSUFBSSxDQUFDLHFCQUFxQjtnQkFDeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLDRCQUE0QixDQUFDO1lBQ3pELElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2I7b0JBQ0UsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJO29CQUNuQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7b0JBQ3JCLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTTtpQkFDM0I7YUFDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRztnQkFDbEI7b0JBQ0UsRUFBRSxFQUFFLENBQUM7b0JBQ0wsU0FBUyxFQUFFLGVBQWUsQ0FBQyxNQUFNO29CQUNqQyxPQUFPLEVBQUUsRUFBRTtvQkFDWCxVQUFVLEVBQUUsZUFBZSxDQUFDLE1BQU07b0JBQ2xDLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUU7aUJBQ2hEO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxJQUFJO29CQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUk7b0JBQzlDLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtvQkFDaEMsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDN0MsZ0JBQWdCLEVBQUUsSUFBSTtpQkFDdkI7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLENBQUM7b0JBQ0wsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEtBQUs7b0JBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsS0FBSztvQkFDL0MsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO29CQUNoQyw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFO29CQUM5QyxnQkFBZ0IsRUFBRSxJQUFJO2lCQUN2QjtnQkFDRDtvQkFDRSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxTQUFTLEVBQUUsMEJBQTBCLENBQUMsSUFBSTtvQkFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJO29CQUM5QyxVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7b0JBQ2hDLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDekIsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtpQkFDdEQ7YUFDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzVELENBQUM7SUFDRDs7O09BR0c7SUFDSCxtQ0FBbUMsQ0FDakMsVUFBa0IsRUFDbEIsYUFBc0I7UUFFdEIsSUFBSSxDQUFDLFlBQVk7YUFDZCxhQUFhLENBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE9BQWlCLEVBQzNELFVBQVUsRUFDVixhQUFhLENBQ2Q7YUFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFNBQVM7b0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBQ0QsOERBQThEO1lBQzlELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUM7Z0JBQ2xELElBQUksVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQzFCOztvQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLElBQVU7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkMsSUFBSSxDQUFDLDBCQUEwQjtZQUM3QixJQUFJLENBQUMsU0FBUyxLQUFLLHdCQUF3QixDQUFDLFNBQVMsQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssd0JBQXdCLENBQUMsT0FBTztZQUFFLE9BQU87UUFDaEUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxXQUFXLEVBQUU7WUFDeEQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU07Z0JBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDOztnQkFFOUMsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztTQUNMO2FBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUU7WUFDOUQsSUFDRSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTTtnQkFDckMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFDakM7Z0JBQ0EsSUFBSSxDQUFDLGtCQUFrQixDQUFDO29CQUN0QixJQUFJLENBQUMsdUJBQXVCO29CQUM1QixJQUFJLENBQUMsbUJBQW1CO2lCQUN6QixDQUFDLENBQUM7YUFDSjs7Z0JBQ0MsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWTthQUNkLGlCQUFpQixDQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBbUIsQ0FDOUQ7YUFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDeEIsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLENBQUMsWUFBWTthQUNkLGtCQUFrQixFQUFFO2FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNqQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQzt3QkFDekIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7d0JBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsa0JBQWtCO3dCQUMvQixPQUFPLEVBQUUsS0FBSzt3QkFDZCxRQUFRLEVBQUUsS0FBSztxQkFDaEIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7T0FHRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWTthQUNkLGNBQWMsRUFBRTthQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7d0JBQ3JCLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYzt3QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7d0JBQzdCLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFFBQVEsRUFBRSxLQUFLO3FCQUNoQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsOERBQThEO1lBQzlELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLE1BQWtCO1FBQ3pDLFFBQVEsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUNqQixLQUFLLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUN0QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUMxQyxNQUFNO2FBQ1A7WUFDRCxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxNQUFNO2FBQ1A7WUFDRDtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLFVBQWtCO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksT0FBNEIsQ0FBQztRQUNqQyxRQUFRLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDNUIsS0FBSyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNwQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRTt3QkFDdEMsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQzt3QkFDRixPQUFPO3FCQUNSO3lCQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsT0FBTztxQkFDUjtpQkFDRjtnQkFDRCxPQUFPLEdBQUc7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFOzRCQUMvQyxFQUFFLE9BQWlCO3dCQUNyQiwyQkFBMkIsRUFBRSxJQUFJLENBQUMsVUFBVTt3QkFDNUMseUNBQXlDLEVBQUUsSUFBSSxDQUFDLGVBQWU7d0JBQy9ELFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO3dCQUNwQyxjQUFjLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtxQkFDaEQ7aUJBQ0YsQ0FBQztnQkFDRixNQUFNO2FBQ1A7WUFDRCxLQUFLLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ3BCLElBQ0UsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sS0FBSyxDQUFDO3dCQUN4QyxJQUFJLENBQUMseUJBQXlCLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFDNUM7d0JBQ0EsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQzt3QkFDRixPQUFPO3FCQUNSO3lCQUFNLElBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLE1BQU0sR0FBRyxDQUFDO3dCQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFDdEM7d0JBQ0EsSUFBSSxDQUFDLGtCQUFrQixDQUFDOzRCQUN0QixJQUFJLENBQUMsdUJBQXVCOzRCQUM1QixJQUFJLENBQUMsbUJBQW1CO3lCQUN6QixDQUFDLENBQUM7d0JBQ0gsT0FBTztxQkFDUjtpQkFDRjtnQkFDRCxPQUFPLEdBQUc7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFOzRCQUMvQyxFQUFFLE9BQWlCO3dCQUNyQiwyQkFBMkIsRUFBRSxJQUFJLENBQUMsVUFBVTt3QkFDNUMseUNBQXlDLEVBQUU7NEJBQ3pDLEdBQUcsSUFBSSxDQUFDLHlCQUF5Qjs0QkFDakMsR0FBRyxJQUFJLENBQUMscUJBQXFCO3lCQUM5Qjt3QkFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjt3QkFDcEMsY0FBYyxFQUFFLElBQUksQ0FBQywwQkFBMEI7cUJBQ2hEO2lCQUNGLENBQUM7Z0JBQ0YsTUFBTTthQUNQO1lBQ0Q7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsSUFBSSxDQUFDLFlBQVk7YUFDZCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7YUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTO29CQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDO2dCQUNsRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2hFLElBQUksVUFBVSxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQzFCOztvQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILDhCQUE4QixDQUM1QixlQUFvQyxFQUNwQyxVQUFzQixFQUN0QixxQkFBd0MsRUFDeEMsaUJBQTJCO1FBRTNCLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUMxQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDekQsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFO29CQUN0QixNQUFNLHlCQUF5QixHQUFxQixFQUFFLENBQUM7b0JBQ3ZELEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDeEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFZLENBQUMsQ0FBQzt3QkFDNUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QyxDQUFDLENBQUMsQ0FBQztvQkFDSCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyx5QkFBeUIsQ0FBQztpQkFDeEQ7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxlQUFvQztRQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksT0FBNEIsQ0FBQztRQUNqQyxRQUFRLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDNUIsS0FBSyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyw4QkFBOEIsQ0FDakMsZUFBZSxFQUNmLFVBQVUsQ0FBQyxJQUFJLEVBQ2YsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztnQkFDRixJQUFJLGVBQWUsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDckQsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztvQkFDRixPQUFPO2lCQUNSO3FCQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDekMsT0FBTztpQkFDUjtnQkFDRCxPQUFPLEdBQUc7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFOzRCQUMvQyxFQUFFLE9BQWlCO3dCQUNyQix5Q0FBeUMsRUFBRSxJQUFJLENBQUMsZUFBZTt3QkFDL0QsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7d0JBQ3BDLGNBQWMsRUFBRSxJQUFJLENBQUMsMEJBQTBCO3FCQUNoRDtpQkFDRixDQUFDO2dCQUNGLE1BQU07YUFDUDtZQUNELEtBQUssZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsOEJBQThCLENBQ2pDLGVBQWUsRUFDZixVQUFVLENBQUMsV0FBVyxFQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FDM0IsQ0FBQztnQkFDRixJQUFJLENBQUMsOEJBQThCLENBQ2pDLGVBQWUsRUFDZixVQUFVLENBQUMsY0FBYyxFQUN6QixJQUFJLENBQUMsdUJBQXVCLEVBQzVCLElBQUksQ0FBQyx5QkFBeUIsQ0FDL0IsQ0FBQztnQkFDRixJQUFJLGVBQWUsRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDckQsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztvQkFDRixPQUFPO2lCQUNSO3FCQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDekMsT0FBTztpQkFDUjtnQkFDRCxPQUFPLEdBQUc7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFOzRCQUMvQyxFQUFFLE9BQWlCO3dCQUNyQix5Q0FBeUMsRUFBRTs0QkFDekMsR0FBRyxJQUFJLENBQUMscUJBQXFCOzRCQUM3QixHQUFHLElBQUksQ0FBQyx5QkFBeUI7eUJBQ2xDO3dCQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO3dCQUNwQyxjQUFjLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtxQkFDaEQ7aUJBQ0YsQ0FBQztnQkFDRixNQUFNO2FBQ1A7WUFDRDtnQkFDRSxNQUFNO1NBQ1Q7UUFDRCxJQUFJLENBQUMsWUFBWTthQUNkLG9CQUFvQixDQUFDLE9BQU8sQ0FBQzthQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFNBQVM7b0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBQ0QsaUhBQWlIO1lBQ2pILEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUM7Z0JBQ2xELElBQUksVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQzFCOztvQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILDhEQUE4RDtJQUM5RCxZQUFZLENBQUMsS0FBVTtRQUNyQixNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUM7UUFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0RDthQUFNLElBQUksS0FBSyxJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRTtZQUN0RCxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILDhEQUE4RDtJQUM5RCwrQkFBK0IsQ0FBQyxhQUFrQjtRQUNoRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7UUFDdkUsTUFBTSwyQkFBMkIsR0FBRztZQUNsQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZTtZQUNsRCxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDcEQsYUFBYSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsa0JBQWtCLElBQUksT0FBTyxFQUFFLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxrQkFBa0IsSUFBSSxpQkFBaUIsRUFBRSxTQUFTLEdBQUc7WUFDcEosaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNO1NBQzlDLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQzVELElBQUksRUFBRSwyQkFBMkI7WUFDakMsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLO1NBQ3ZDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLE9BQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDdEU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxPQUFlLEVBQUUsT0FBaUI7UUFDakQsTUFBTSxxQkFBcUIsR0FBRyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7UUFDMUQsTUFBTSxzQkFBc0IsR0FBMkI7WUFDckQsT0FBTyxFQUFFO2dCQUNQLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTzthQUNuQjtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWTthQUNkLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO2FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULDhEQUE4RDtZQUM5RCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFO29CQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbkIsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQ2pFLFNBQVMsQ0FBQyxPQUFPLENBQ2xCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxJQUFJLENBQUMsbUJBQW1CLEVBQ3hCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztpQkFDSDtZQUNILENBQUM7WUFDRCw4REFBOEQ7WUFDOUQsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLGdCQUFpQztRQUMvQyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLFVBQVU7WUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztnQkFDcEMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUs7Z0JBQ2pDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO2dCQUMvQixJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtnQkFDL0IsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU07Z0JBQ25DLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjO2dCQUNuRCxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTtnQkFDL0MsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7YUFDaEQsQ0FBQyxDQUFDOztZQUVILElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO2dCQUNqQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtnQkFDL0IsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7Z0JBQy9CLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNO2FBQ3BDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUN4QyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQ3hDLGlCQUFpQixDQUFDLGtCQUFrQixDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLE9BQTBCLEVBQUUsU0FBb0I7UUFDL0QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7WUFDN0IsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBMXhCVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4RUMvRGhDLG95QkFrQkEsaXZTRHVDWSxZQUFZLCtCQUFFLGtCQUFrQiw2c0JBQUUsZUFBZTs7NEZBTWhELG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxpQkFHN0MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblR5cGUsXHJcbiAgVGFibGVBY3Rpb25zLFxyXG4gIFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbixcclxuICBDaGlwc1R5cGUsXHJcbiAgQWxpZ25UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIENoaXBPcHRpb24sXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIEZpbHRlcnNBbmRPcHRpb25zLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBTZWFyY2hVc2Vyc1BheWxvYWQsXHJcbiAgRmlsdGVyVXNlcnNQYXlsb2FkLFxyXG4gIFVzZXIsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgRGVsZXRlVXNlckdyb3VwUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVscy9kZWxldGUtdXNlci1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3N0ZXJGdW5jdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm9zdGVyLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUm9zdGVyVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9yb3N0ZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVyLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblNjaGVtYVVzZXJHcm91cCB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1jb2x1bW4tc2NoZW1hLXVzZXItZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIFZpZXdSb3N0ZXJDb21wb25lbnQgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0aWVzIHRvIGFkZCwgZWRpdCwgZGVsZXRlIHVzZXIgdG8gZ3JvdXAgcm9zdGVyLCBhc3NpZ24gYW5kIG1vZGlmeSByb2xlcyhzKSB0byB0aGUgZ3JvdXAgdXNlcnMsIGFuZCBzZWFyY2ggdXNlciBmcm9tIHJvc3Rlci5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2Etdmlldy1yb3N0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGF0YVRhYmxlQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXJvc3Rlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1yb3N0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld1Jvc3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICB2aWV3Um9zdGVyQ29uc3RhbnRzID0gdGhpcy5jb25zdGFudHM/LnZpZXdSb3N0ZXI7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkaWFsb2dSZWY6IGFueTtcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIGZpbHRlcnMhOiBDaGlwT3B0aW9uW107XHJcbiAgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICB0YWJsZURhdGEhOiBVc2VyW107XHJcbiAgc2VsZWN0ZWRSb2xlSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNlbGVjdGVkTWVtYmVyVHlwZUlkczogc3RyaW5nW10gPSBbXTtcclxuICBzZWxlY3RlZENsYXNzaWZpY2F0aW9uSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyVGV4dCE6IHN0cmluZztcclxuICBzZWxlY3RlZFJvbGVzOiBGaWx0ZXJzQW5kT3B0aW9ucyA9IHt9O1xyXG4gIHNlbGVjdGVkTWVtYmVyVHlwZXM6IEZpbHRlcnNBbmRPcHRpb25zID0ge307XHJcbiAgc2VsZWN0ZWRDbGFzc2lmaWNhdGlvbnM6IEZpbHRlcnNBbmRPcHRpb25zID0ge307XHJcbiAgcm9sZXM6IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICBmaWx0ZXJPcHRpb25zOiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgbWVtYmVyVHlwZXM6IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICBjbGFzc2lmaWNhdGlvbnM6IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICByb3N0ZXJBY3Rpb25zOiBUYWJsZUFjdGlvbnMgPSB7XHJcbiAgICBpc1NlYXJjaE5lZWRlZDogdHJ1ZSxcclxuICAgIGlzRmlsdGVyTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNBZGROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIGRlZmF1bHRTb3J0ZWRDb2x1bW4hOiBzdHJpbmc7XHJcbiAgZGF0YVRhYmxlQ2xhc3NOYW1lITogc3RyaW5nO1xyXG4gIGhhc0NsYXNzaWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgc2VhcmNoVGVybSE6IHN0cmluZztcclxuICBncm91cFJvc3RlclR5cGUhOiBHcm91cFJvc3RlclR5cGU7XHJcbiAgZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24gPSB0cnVlO1xyXG4gIHRhYmxlQ29sdW1uc0ZvckluZGl2aWR1YWwgPVxyXG4gICAgdGhpcy52aWV3Um9zdGVyQ29uc3RhbnRzPy50YWJsZUNvbHVtbnNGb3JJbmRpdmlkdWFsO1xyXG4gIHRhYmxlQ29sdW1uc0ZvclN5c3RlbVVzZXJzID1cclxuICAgIHRoaXMudmlld1Jvc3RlckNvbnN0YW50cz8udGFibGVDb2x1bW5zRm9yU3lzdGVtVXNlcnM7XHJcbiAgZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeSA9XHJcbiAgICB0aGlzLnZpZXdSb3N0ZXJDb25zdGFudHM/LmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3Vwc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5yb3N0ZXJBY3Rpb25zLmlzQWRkTmVlZGVkID0gdGhpcy5nZXRNYW5hZ2VSb3N0ZXJBY3Rpb25zUGVybWlzc2lvbigpO1xyXG4gICAgdGhpcy5yb3N0ZXJBY3Rpb25zLmlzRWRpdE5lZWRlZCA9IHRoaXMuZ2V0TWFuYWdlUm9zdGVyQWN0aW9uc1Blcm1pc3Npb24oKTtcclxuICAgIHRoaXMucm9zdGVyQWN0aW9ucy5pc0RlbGV0ZU5lZWRlZCA9IHRoaXMuZ2V0TWFuYWdlUm9zdGVyQWN0aW9uc1Blcm1pc3Npb24oKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cFR5cGUgPVxyXG4gICAgICB0aGlzLmdyb3VwU2VydmljZS5nZXRTZWxlY3RlZEdyb3VwSW5mbygpPy5ncm91cFR5cGVJbmZvPy5idXNpbmVzc1J1bGU7XHJcbiAgICB0aGlzLmhhc0NsYXNzaWZpY2F0aW9uID0gZ3JvdXBUeXBlPy5oYXNDbGFzc2lmaWNhdGlvbiA/PyBmYWxzZTtcclxuICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID0gZ3JvdXBUeXBlPy5yb3N0ZXJUeXBlIGFzIEdyb3VwUm9zdGVyVHlwZTtcclxuICAgIGlmICghdGhpcy5ncm91cFJvc3RlclR5cGUpXHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKHtcclxuICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuY29uc3RhbnRzPy5lcnJvcnM/LkVSMTAwMSxcclxuICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZS5XQVJOSU5HLFxyXG4gICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jb25maWd1cmVUYWJsZUluZm8oKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBVc2Vyc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoXHJcbiAgICAgIHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvblxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvdyBhZGQgbmV3IHVzZXIgc3VjY2VzcyBtZXNzYWdlIHdoZW4gY2FuU2hvd01lc3NhZ2UgaXMgc2V0IHRydWVcclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyb3VwU2VydmljZT8uY2FuU2hvd01lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2UuY2FuU2hvd01lc3NhZ2UgPSBmYWxzZTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlPy5yb3N0ZXJGdW5jdGlvblR5cGUgPT09XHJcbiAgICAgICAgUm9zdGVyRnVuY3Rpb25UeXBlPy5BRERfVVNFUl9UT19ST1NURVJcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb24sXHJcbiAgICAgICAgICBBbGVydFR5cGUuU1VDQ0VTU1xyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2U/LnJvc3RlckZ1bmN0aW9uVHlwZSA9PT1cclxuICAgICAgICBSb3N0ZXJGdW5jdGlvblR5cGU/LkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICB0aGlzLmNvbnN0YW50cz8uZWRpdFVzZXJSb2xlcz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvbixcclxuICAgICAgICAgIEFsZXJ0VHlwZS5TVUNDRVNTXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZ3JvdXBUeXBlID0gdGhpcy5ncm91cFNlcnZpY2UuZ2V0QnVzaW5lc3NSdWxlT2ZTZWxlY3RlZEdyb3VwKCk7XHJcbiAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9IGdyb3VwVHlwZT8ucm9zdGVyVHlwZSBhcyBHcm91cFJvc3RlclR5cGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZGVzIG9yIHNob3dzIHJvc3RlciBhZGQgdXNlciwgZWRpdCB1c2VyIGFuZCBkZWxldGUgdXNlciBhY3Rpb25zIGJhc2VkIG9uIHVzZXIgZ3JvdXAgcGVybWlzc2lvbnMuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1hbmFnZVJvc3RlckFjdGlvbnNQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2UudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuTUFOQUdFX1NZU1RFTV9VU0VSUykgfHxcclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2UudmFsaWRhdGVBY2Nlc3MoUGVybWlzc2lvblR5cGUuTUFOQUdFX0dST1VQX09GRklDRVJTKSB8fFxyXG4gICAgICB0aGlzLmdyb3VwU2VydmljZS52YWxpZGF0ZUFjY2VzcyhQZXJtaXNzaW9uVHlwZS5NQU5BR0VfR1JPVVBfTUVNQkVSUylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmUgVGFibGUgaW5mb3JtYXRpb24gYmFzZWQgb24gZ3JvdXAgcm9zdGVyIHR5cGVcclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNvbmZpZ3VyZVRhYmxlSW5mbygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUwpIHtcclxuICAgICAgdGhpcy5kYXRhVGFibGVDbGFzc05hbWUgPSAnaWVlZXNhLWluZGl2aWR1YWwtcm9zdGVyJztcclxuICAgICAgdGhpcy5zZWFyY2hQbGFjZWhvbGRlclRleHQgPVxyXG4gICAgICAgIHRoaXMudmlld1Jvc3RlckNvbnN0YW50cz8uc2VhcmNoUGxhY2Vob2xkZXJJbmRpdmlkdWFsO1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IEZpbHRlclR5cGUuTUVNQkVSX1RZUEUsXHJcbiAgICAgICAgICBuYW1lOiBGaWx0ZXJUeXBlLk1FTUJFUl9UWVBFLFxyXG4gICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlRPR0dMRSxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmdldE1lbWJlclR5cGVzKCk7XHJcbiAgICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiAxLFxyXG4gICAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uU2NoZW1hVXNlckdyb3VwLk5BTUUsXHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLnRhYmxlQ29sdW1uc0ZvckluZGl2aWR1YWw/Lm5hbWUsXHJcbiAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5uYW1lfWAsXHJcbiAgICAgICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IDMsXHJcbiAgICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uU2NoZW1hVXNlckdyb3VwLkVNUExPWUVSLFxyXG4gICAgICAgICAgaGVhZGluZzogdGhpcy50YWJsZUNvbHVtbnNGb3JJbmRpdmlkdWFsPy5lbXBsb3llcixcclxuICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICBgJHtlbGVtZW50LmVtcGxveWVyID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiA0LFxyXG4gICAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblNjaGVtYVVzZXJHcm91cC5FTUFJTCxcclxuICAgICAgICAgIGhlYWRpbmc6IHRoaXMudGFibGVDb2x1bW5zRm9ySW5kaXZpZHVhbD8uZW1haWwsXHJcbiAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgYCR7ZWxlbWVudC5lbWFpbCA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogNSxcclxuICAgICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5TY2hlbWFVc2VyR3JvdXAuTUVNQkVSX1RZUEUsXHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLnRhYmxlQ29sdW1uc0ZvckluZGl2aWR1YWw/Lm1lbWJlclR5cGUsXHJcbiAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgICAgYCR7ZWxlbWVudC5tZW1iZXJUeXBlID8/IHRoaXMuZW1wdHlGaWVsZFZhbHVlUmVwbGFjZWRCeX1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IDYsXHJcbiAgICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uU2NoZW1hVXNlckdyb3VwLk9SR0FOSVpBVElPTixcclxuICAgICAgICAgIGhlYWRpbmc6IHRoaXMudGFibGVDb2x1bW5zRm9ySW5kaXZpZHVhbD8ub3JnYW5pemF0aW9uTmFtZSxcclxuICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICBgJHtlbGVtZW50Lm9yZ2FuaXphdGlvbiA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogOCxcclxuICAgICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5TY2hlbWFVc2VyR3JvdXAuUk9MRSxcclxuICAgICAgICAgIGhlYWRpbmc6IHRoaXMudGFibGVDb2x1bW5zRm9ySW5kaXZpZHVhbD8ucm9sZSxcclxuICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICBgJHtlbGVtZW50LnJvbGUgPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2xhc3NpZmljYXRpb24pIHtcclxuICAgICAgICB0aGlzLmdldENsYXNzaWZpY2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuY29sdW1uU2NoZW1hLnNwbGljZSh0aGlzLmNvbHVtblNjaGVtYS5sZW5ndGggLSAxLCAwLCB7XHJcbiAgICAgICAgICBpZDogNyxcclxuICAgICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5TY2hlbWFVc2VyR3JvdXAuQ0xBU1NJRklDQVRJT04sXHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLnRhYmxlQ29sdW1uc0ZvckluZGl2aWR1YWw/LmNsYXNzaWZpY2F0aW9uLFxyXG4gICAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgIGAke2VsZW1lbnQuY2xhc3NpZmljYXRpb24gPz8gdGhpcy5lbXB0eUZpZWxkVmFsdWVSZXBsYWNlZEJ5fWAsXHJcbiAgICAgICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVycy5wdXNoKHtcclxuICAgICAgICAgIGlkOiBGaWx0ZXJUeXBlLkNMQVNTSUZJQ0FUSU9OLFxyXG4gICAgICAgICAgbmFtZTogRmlsdGVyVHlwZS5DTEFTU0lGSUNBVElPTixcclxuICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5UT0dHTEUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5TWVNURU1fVVNFUikge1xyXG4gICAgICB0aGlzLmRhdGFUYWJsZUNsYXNzTmFtZSA9ICdpZWVlc2Etc3lzdGVtLXVzZXJzLXJvc3Rlcic7XHJcbiAgICAgIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXJUZXh0ID1cclxuICAgICAgICB0aGlzLnZpZXdSb3N0ZXJDb25zdGFudHM/LnNlYXJjaFBsYWNlaG9sZGVyU3lzdGVtVXNlcnM7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogRmlsdGVyVHlwZS5ST0xFLFxyXG4gICAgICAgICAgbmFtZTogRmlsdGVyVHlwZS5ST0xFLFxyXG4gICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlRPR0dMRSxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmNvbHVtblNjaGVtYSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogMSxcclxuICAgICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5zZWxlY3R9YCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiAyLFxyXG4gICAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblNjaGVtYVVzZXJHcm91cC5OQU1FLFxyXG4gICAgICAgICAgaGVhZGluZzogdGhpcy50YWJsZUNvbHVtbnNGb3JTeXN0ZW1Vc2Vycz8ubmFtZSxcclxuICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm5hbWV9YCxcclxuICAgICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogMyxcclxuICAgICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5TY2hlbWFVc2VyR3JvdXAuRU1BSUwsXHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLnRhYmxlQ29sdW1uc0ZvclN5c3RlbVVzZXJzPy5lbWFpbCxcclxuICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LmVtYWlsfWAsXHJcbiAgICAgICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uU2NoZW1hVXNlckdyb3VwLlJPTEUsXHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLnRhYmxlQ29sdW1uc0ZvclN5c3RlbVVzZXJzPy5yb2xlLFxyXG4gICAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgIGAke2VsZW1lbnQucm9sZSA/PyB0aGlzLmVtcHR5RmllbGRWYWx1ZVJlcGxhY2VkQnl9YCxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmdldFJvbGVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4gPSB0aGlzLmNvbHVtblNjaGVtYVsxXS5jb2x1bW5EZWY7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGdyb3VwIHVzZXJzIGJ5IGNhbGxpbmcgZ2V0R3JvdXBVc2VycygpIGZyb20gZ3JvdXBTZXJ2aWNlIGFuZCBzZXRzIHRhYmxlRGF0YSB0byBkaXNwbGF5IHRoZSB1c2VycyBpbiBhIGdyaWQuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyhcclxuICAgIHNvcnRDb2x1bW46IHN0cmluZyxcclxuICAgIHNvcnREaXJlY3Rpb246IGJvb2xlYW5cclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cFVzZXJzKFxyXG4gICAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLmdldFNlbGVjdGVkR3JvdXBJbmZvKCk/Lmdyb3VwSWQgYXMgc3RyaW5nLFxyXG4gICAgICAgIHNvcnRDb2x1bW4sXHJcbiAgICAgICAgc29ydERpcmVjdGlvblxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLnRyYW5zZm9ybVVzZXJSb2xlc05hbWVBc1N0cmluZyhyZXNwb25zZSk7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JDb2RlcyA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgICAgICAgIGlmIChlcnJvckNvZGVzPy5pbmNsdWRlcygnMTAyNicpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGdyb3VwcyBiYXNlZCBvbiB0aGUgY29sdW1uIG5hbWUgYW5kIHNvcnQgZGlyZWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7U29ydH0gc29ydFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Tb3J0R3JvdXBVc2Vycyhzb3J0OiBTb3J0KSB7XHJcbiAgICB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4gPSBzb3J0LmFjdGl2ZTtcclxuICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb24gPVxyXG4gICAgICBzb3J0LmRpcmVjdGlvbiA9PT0gVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLkFTQ0VORElORztcclxuICAgIGlmIChzb3J0LmRpcmVjdGlvbiA9PT0gVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLk5PX1NPUlQpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLlNZU1RFTV9VU0VSKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm9sZUlkcy5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5vbkZpbHRlckdyb3VwVXNlcnMoW3RoaXMuc2VsZWN0ZWRSb2xlc10pO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5nZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyhcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb25cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUwpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDbGFzc2lmaWNhdGlvbklkcy5sZW5ndGggfHxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWVtYmVyVHlwZUlkcy5sZW5ndGhcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5vbkZpbHRlckdyb3VwVXNlcnMoW1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENsYXNzaWZpY2F0aW9ucyxcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZW1iZXJUeXBlcyxcclxuICAgICAgICBdKTtcclxuICAgICAgfSBlbHNlXHJcbiAgICAgICAgdGhpcy5nZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyhcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb25cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBzZWxlY3RlZCBncm91cCB0eXBlIHJvbGVzIGJ5IGNhbGxpbmcgZ2V0R3JvdXBUeXBlUm9sZXMoKSBmcm9tIGdyb3VwU2VydmljZSBhbmQgc2V0cyBhc3NpZ24gcm9sZXMuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRSb2xlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cFR5cGVSb2xlcyhcclxuICAgICAgICB0aGlzLmdyb3VwU2VydmljZS5nZXRTZWxlY3RlZEdyb3VwSW5mbygpPy5ncm91cFR5cGUgYXMgc3RyaW5nXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMucm9sZXMgPSByZXNwb25zZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGNsYXNzaWZpY2F0aW9uIGJ5IGNhbGxpbmcgZ2V0Q2xhc3NpZmljYXRpb25zKCkgZnJvbSBncm91cFNlcnZpY2UgYW5kIHNldHMgY2xhc3NpZmljYXRpb25zLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldENsYXNzaWZpY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlXHJcbiAgICAgIC5nZXRDbGFzc2lmaWNhdGlvbnMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsYXNzaWZpY2F0aW9ucz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5jbGFzc2lmaWNhdGlvbklkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5jbGFzc2lmaWNhdGlvbk5hbWUsXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVtYmVyIHR5cGVzIGJ5IGNhbGxpbmcgZ2V0TWVtYmVyVHlwZXMoKSBmcm9tIGdyb3VwU2VydmljZSBhbmQgc2V0cyBtZW1iZXIgdHlwZXMuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0TWVtYmVyVHlwZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwU2VydmljZVxyXG4gICAgICAuZ2V0TWVtYmVyVHlwZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1lbWJlclR5cGVzPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLm1lbWJlclN0YXR1c0lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5tZW1iZXJTdGF0dXNOYW1lLFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIGZpbHRlciBvcHRpb25zIGZvciBNZW1iZXIgVHlwZSBvciBDbGFzc2lmaWNhdGlvbiBmaWx0ZXIgZGVwZW5kcyBvbiB0aGUgc2VsZWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q2hpcE9wdGlvbn0gb3B0aW9uXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZEZpbHRlck9wdGlvbnMob3B0aW9uOiBDaGlwT3B0aW9uKSB7XHJcbiAgICBzd2l0Y2ggKG9wdGlvbi5pZCkge1xyXG4gICAgICBjYXNlIEZpbHRlclR5cGUuTUVNQkVSX1RZUEU6IHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLm1lbWJlclR5cGVzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgRmlsdGVyVHlwZS5DTEFTU0lGSUNBVElPTjoge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyA9IHRoaXMuY2xhc3NpZmljYXRpb25zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgRmlsdGVyVHlwZS5ST0xFOiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5yb2xlcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBncm91cCB1c2VycyBieSBjYWxsaW5nIHNlYXJjaEdyb3VwVXNlcnMoKSBmcm9tIGdyb3VwU2VydmljZSBhbmQgc2V0cyB0YWJsZURhdGEgdG8gZGlzcGxheSB0aGUgdXNlcnMgaW4gYSBncmlkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtIC1zZWFyY2hUZXJtIGNhbiBiZSB1c2VyIG5hbWUgb3IgZW1haWwgYW5kIHVzZXIgaXMgc2VhcmNoZWQgYmFzZWQgb24gdGhlIGVtYWlsIG9yIG5hbWUuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvblNlYXJjaEdyb3VwVXNlcnMoc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtPy50cmltKCk7XHJcbiAgICBsZXQgcGF5bG9hZCE6IFNlYXJjaFVzZXJzUGF5bG9hZDtcclxuICAgIHN3aXRjaCAodGhpcy5ncm91cFJvc3RlclR5cGUpIHtcclxuICAgICAgY2FzZSBHcm91cFJvc3RlclR5cGUuU1lTVEVNX1VTRVI6IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoVGVybSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSb2xlSWRzPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcm91cFVzZXJzQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyhcclxuICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb2xlSWRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25GaWx0ZXJHcm91cFVzZXJzKFt0aGlzLnNlbGVjdGVkUm9sZXNdKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICBncm91cElkOiB0aGlzLmdyb3VwU2VydmljZS5nZXRTZWxlY3RlZEdyb3VwSW5mbygpXHJcbiAgICAgICAgICAgICAgPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgc2VhcmNoQnlOYW1lT3JFbWFpbE9yUmVwT3JnOiB0aGlzLnNlYXJjaFRlcm0sXHJcbiAgICAgICAgICAgIGZpbHRlckJ5Um9sZUNsYXNzaWZpY2F0aW9uTWVtYmVyU3RhdHVzSWRzOiB0aGlzLnNlbGVjdGVkUm9sZUlkcyxcclxuICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMOiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lbWJlclR5cGVJZHM/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NpZmljYXRpb25JZHM/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBVc2Vyc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoXHJcbiAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENsYXNzaWZpY2F0aW9uSWRzPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZW1iZXJUeXBlSWRzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5vbkZpbHRlckdyb3VwVXNlcnMoW1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDbGFzc2lmaWNhdGlvbnMsXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lbWJlclR5cGVzLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICBncm91cElkOiB0aGlzLmdyb3VwU2VydmljZS5nZXRTZWxlY3RlZEdyb3VwSW5mbygpXHJcbiAgICAgICAgICAgICAgPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgc2VhcmNoQnlOYW1lT3JFbWFpbE9yUmVwT3JnOiB0aGlzLnNlYXJjaFRlcm0sXHJcbiAgICAgICAgICAgIGZpbHRlckJ5Um9sZUNsYXNzaWZpY2F0aW9uTWVtYmVyU3RhdHVzSWRzOiBbXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5zZWxlY3RlZENsYXNzaWZpY2F0aW9uSWRzLFxyXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRNZW1iZXJUeXBlSWRzLFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgICAgIGFzY2VuZGluZ09yZGVyOiB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3VwU2VydmljZVxyXG4gICAgICAuc2VhcmNoR3JvdXBVc2VycyhwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPVxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwU2VydmljZS50cmFuc2Zvcm1Vc2VyUm9sZXNOYW1lQXNTdHJpbmcocmVzcG9uc2UpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yQ29kZXMgPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICAgICAgICBjb25zdCBub1VzZXJzRm91bmRFcnJvckNvZGVzID0gWycxMDI5JywgJzEwMzAnLCAnMTAzMScsICcxMDMyJ107XHJcbiAgICAgICAgICBpZiAoZXJyb3JDb2RlcyAmJiBub1VzZXJzRm91bmRFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yQ29kZXNbMF0pKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIG9wdGlvbnMgb2YgZmlsdGVycyBhbmQgcmV0dXJucyBpZCBvZiBzZWxlY3RlZCBvcHRpb25zXHJcbiAgICogQHBhcmFtIHtGaWx0ZXJzQW5kT3B0aW9uc1tdfSBzZWxlY3RlZE9wdGlvbnNcclxuICAgKiBAcGFyYW0ge0ZpbHRlclR5cGV9IGZpbHRlclR5cGVcclxuICAgKiBAcGFyYW0ge0ZpbHRlcnNBbmRPcHRpb25zfSBzZWxlY3RlZEZpbHRlck9wdGlvbnNcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zQW5kSWRzKFxyXG4gICAgc2VsZWN0ZWRPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdLFxyXG4gICAgZmlsdGVyVHlwZTogRmlsdGVyVHlwZSxcclxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnMsXHJcbiAgICBzZWxlY3RlZEZpbHRlcklkczogc3RyaW5nW11cclxuICApIHtcclxuICAgIHNlbGVjdGVkT3B0aW9ucz8uZm9yRWFjaCgoc2VsZWN0ZWRPcHRpb24pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0ZWRPcHRpb24pKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gZmlsdGVyVHlwZSkge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zTGlzdDogQ2hlY2tib3hPcHRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgdmFsdWU/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlcklkcy5wdXNoKG9wdGlvbi5pZCBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0LnB1c2gob3B0aW9uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zW2tleV0gPSBzZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGdyb3VwIHVzZXJzIGJ5IGNhbGxpbmcgZ2V0R3JvdXBVc2Vyc0J5Um9sZXMoKSBmcm9tIGdyb3VwU2VydmljZSBhbmQgc2V0cyB0YWJsZURhdGEgdG8gZGlzcGxheSB0aGUgdXNlcnMgaW4gYSBncmlkLlxyXG4gICAqIEBwYXJhbSB7Q2hpcE9wdGlvbltdIHwgfCBDaGVja2JveE9wdGlvbltdfSByb2xlc1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25GaWx0ZXJHcm91cFVzZXJzKHNlbGVjdGVkT3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvbGVJZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNZW1iZXJUeXBlSWRzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2xhc3NpZmljYXRpb25JZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDbGFzc2lmaWNhdGlvbnMgPSB7fTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNZW1iZXJUeXBlcyA9IHt9O1xyXG4gICAgbGV0IHBheWxvYWQhOiBGaWx0ZXJVc2Vyc1BheWxvYWQ7XHJcbiAgICBzd2l0Y2ggKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlKSB7XHJcbiAgICAgIGNhc2UgR3JvdXBSb3N0ZXJUeXBlLlNZU1RFTV9VU0VSOiB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWxlY3RlZEZpbHRlck9wdGlvbnNBbmRJZHMoXHJcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXHJcbiAgICAgICAgICBGaWx0ZXJUeXBlLlJPTEUsXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm9sZXMsXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm9sZUlkc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9ucz8ubGVuZ3RoID09PSAwICYmICF0aGlzLnNlYXJjaFRlcm0pIHtcclxuICAgICAgICAgIHRoaXMuZ2V0R3JvdXBVc2Vyc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoXHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbixcclxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoVGVybSkge1xyXG4gICAgICAgICAgdGhpcy5vblNlYXJjaEdyb3VwVXNlcnModGhpcy5zZWFyY2hUZXJtKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cFNlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKVxyXG4gICAgICAgICAgICAgID8uZ3JvdXBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIGZpbHRlckJ5Um9sZUNsYXNzaWZpY2F0aW9uTWVtYmVyU3RhdHVzSWRzOiB0aGlzLnNlbGVjdGVkUm9sZUlkcyxcclxuICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMOiB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWxlY3RlZEZpbHRlck9wdGlvbnNBbmRJZHMoXHJcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXHJcbiAgICAgICAgICBGaWx0ZXJUeXBlLk1FTUJFUl9UWVBFLFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lbWJlclR5cGVzLFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lbWJlclR5cGVJZHNcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJPcHRpb25zQW5kSWRzKFxyXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLFxyXG4gICAgICAgICAgRmlsdGVyVHlwZS5DTEFTU0lGSUNBVElPTixcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDbGFzc2lmaWNhdGlvbnMsXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2xhc3NpZmljYXRpb25JZHNcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5zZWFyY2hUZXJtKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEdyb3VwVXNlcnNBbmRJbml0aWFsaXplVGFibGVWaWV3KFxyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb25cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaFRlcm0pIHtcclxuICAgICAgICAgIHRoaXMub25TZWFyY2hHcm91cFVzZXJzKHRoaXMuc2VhcmNoVGVybSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBTZXJ2aWNlLmdldFNlbGVjdGVkR3JvdXBJbmZvKClcclxuICAgICAgICAgICAgICA/Lmdyb3VwSWQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgICBmaWx0ZXJCeVJvbGVDbGFzc2lmaWNhdGlvbk1lbWJlclN0YXR1c0lkczogW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRNZW1iZXJUeXBlSWRzLFxyXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDbGFzc2lmaWNhdGlvbklkcyxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVXNlcnNCeVJvbGVzKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLnRyYW5zZm9ybVVzZXJSb2xlc05hbWVBc1N0cmluZyhyZXNwb25zZSk7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JDb2RlcyA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgICAgICAgIGlmIChlcnJvckNvZGVzPy5pbmNsdWRlcygnMTAyNycpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGN1c3RvbSBlcnJvcnMgd2hpbGUgcmV0cmlldmluZyBncm91cHMgdXNlcnMsIHJvbGVzLCBzZWFyY2ggdXNlcnMsIGZpbHRlciB1c2VyIGJ5IHJvbGVzLlxyXG4gICAqIEBwYXJhbSB7Kn0gZXJyb3JcclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaGFuZGxlRXJyb3JzKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yQ29kZXMgPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJvckNvZGVzKSAmJiAhZXJyb3I/LmVycm9yPy5zdGF0dXMpIHtcclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy5ncm91cFNlcnZpY2UucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShlcnJvck1lc3NhZ2UsIEFsZXJ0VHlwZS5FUlJPUik7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBnZXQgdXNlciBjb25maXJtYXRpb24gdG8gZGVsZXRlIHRoZSB1c2VycyBmcm9tIHRoZSBzZWxlY3RlZCBncm91cC5cclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb3BlblVzZXJEZWxldGVDb25maXJtYXRpb25Nb2RhbChzZWxlY3RlZFVzZXJzOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJJZHMgPSBzZWxlY3RlZFVzZXJzLm1hcCgodXNlcjogVXNlcikgPT4gdXNlcj8udXNlcklkKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBJbmZvID0gdGhpcy5ncm91cFNlcnZpY2U/LmdldFNlbGVjdGVkR3JvdXBJbmZvKCk7XHJcbiAgICBjb25zdCBjb25maXJtYXRpb25JbmZvID0gY29uc3RhbnRzPy5kZWxldGVVc2Vyc0dyb3VwPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3QgZGVsZXRlVXNlckdyb3VwTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTogYCR7Y29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZVBhcnQxfSAke3VzZXJJZHM/Lmxlbmd0aH0gJHtjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlUGFydDJ9ICR7c2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwTmFtZX0/YCxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IHRoaXMuYWxpZ25tZW50VHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkZWxldGVVc2VyR3JvdXBNb2RhbE9wdGlvbnMsXHJcbiAgICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlVXNlcnNHcm91cChzZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCBhcyBzdHJpbmcsIHVzZXJJZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbmQgQVBJIHJlcXVlc3QgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCB1c2VyKHMpIGZyb20gdGhlIHNlbGVjdGVkIGdyb3VwIGFuZCBoYW5kbGVzIHRoZSBzdWNjZXNzIGFuZCBlcnJvciByZXNwb25zZS5cclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRlbGV0ZVVzZXJzR3JvdXAoZ3JvdXBJZDogc3RyaW5nLCB1c2VySWRzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgZGVsZXRlVXNlcnNHcm91cFRleHRzID0gY29uc3RhbnRzPy5kZWxldGVVc2Vyc0dyb3VwO1xyXG4gICAgY29uc3QgZGVsZXRlVXNlckdyb3VwUGF5bG9hZDogRGVsZXRlVXNlckdyb3VwUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIFtncm91cElkXTogdXNlcklkcyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3VwU2VydmljZVxyXG4gICAgICAuZGVsZXRlVXNlcnNHcm91cChkZWxldGVVc2VyR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIGAke3Jlcy5ib2R5fSAke2RlbGV0ZVVzZXJzR3JvdXBUZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8ucmVtb3ZlZH1gLFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZS5TVUNDRVNTXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBVc2Vyc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoXHJcbiAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHNlbGVjdGVkIHVzZXIgaW5mbyBhbmQgZW1pdHMgZXZlbnQgb3Blbk1vZGFsTm90aWZpZXIgd2l0aCBFRElUX1JPU1RFUl9VU0VSX1JPTEUgdmFsdWUuXHJcbiAgICogQHBhcmFtIHtHcm91cFVzZXJJbmZvW119IHNlbGVjdGVkVXNlckluZm9cclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRWRpdFVzZXJSb2xlcyhzZWxlY3RlZFVzZXJJbmZvOiBHcm91cFVzZXJJbmZvW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUwpXHJcbiAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLnNldFNlbGVjdGVkVXNlckluZm8oe1xyXG4gICAgICAgIGVtYWlsOiBzZWxlY3RlZFVzZXJJbmZvWzBdPy5lbWFpbCxcclxuICAgICAgICBuYW1lOiBzZWxlY3RlZFVzZXJJbmZvWzBdPy5uYW1lLFxyXG4gICAgICAgIHJvbGU6IHNlbGVjdGVkVXNlckluZm9bMF0/LnJvbGUsXHJcbiAgICAgICAgdXNlcklkOiBzZWxlY3RlZFVzZXJJbmZvWzBdPy51c2VySWQsXHJcbiAgICAgICAgY2xhc3NpZmljYXRpb246IHNlbGVjdGVkVXNlckluZm9bMF0/LmNsYXNzaWZpY2F0aW9uLFxyXG4gICAgICAgIG9yZ2FuaXphdGlvbjogc2VsZWN0ZWRVc2VySW5mb1swXT8ub3JnYW5pemF0aW9uLFxyXG4gICAgICAgIG1lbWJlclN0YXR1czogc2VsZWN0ZWRVc2VySW5mb1swXT8ubWVtYmVyU3RhdHVzLFxyXG4gICAgICB9KTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2Uuc2V0U2VsZWN0ZWRVc2VySW5mbyh7XHJcbiAgICAgICAgZW1haWw6IHNlbGVjdGVkVXNlckluZm9bMF0/LmVtYWlsLFxyXG4gICAgICAgIG5hbWU6IHNlbGVjdGVkVXNlckluZm9bMF0/Lm5hbWUsXHJcbiAgICAgICAgcm9sZTogc2VsZWN0ZWRVc2VySW5mb1swXT8ucm9sZSxcclxuICAgICAgICB1c2VySWQ6IHNlbGVjdGVkVXNlckluZm9bMF0/LnVzZXJJZCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5ncm91cFNlcnZpY2U/Lm9wZW5Nb2RhbE5vdGlmaWVyPy5uZXh0KFxyXG4gICAgICBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBvcGVuTW9kYWxOb3RpZmllciBldmVudCB3aXRoIEdyb3VwRnVuY3Rpb25UeXBlIHZhbHVlIGFzIEFERF9VU0VSX1RPX1JPU1RFUlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3Um9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BZGROZXdVc2VyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2U/Lm9wZW5Nb2RhbE5vdGlmaWVyPy5uZXh0KFxyXG4gICAgICBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGFsZXJ0cyBmb3Igc3VjY2VzcywgZXJyb3IsIHdhcm5pbmcuXHJcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBtZXNzYWdlIC1lcnJvciBvciB3YXJuaW5nIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0ge0FsZXJ0VHlwZX0gYWxlcnRUeXBlXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIFZpZXdSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdLCBhbGVydFR5cGU6IEFsZXJ0VHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgVmlld1Jvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8aWVlZXNhLWRhdGEtdGFibGVcclxuICBbdGFibGVEYXRhSW5mb109XCJ0YWJsZURhdGFcIlxyXG4gIFtjb2x1bW5TY2hlbWFJbmZvXT1cImNvbHVtblNjaGVtYVwiXHJcbiAgW3NlYXJjaFBsYWNlSG9sZGVyVGV4dF09XCJzZWFyY2hQbGFjZWhvbGRlclRleHRcIlxyXG4gIFt0YWJsZUFjdGlvbnNdPVwicm9zdGVyQWN0aW9uc1wiXHJcbiAgW2lzQ2VsbFRleHRPdmVyZmxvd0VsbGlwc2lzXT1cInRydWVcIlxyXG4gIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gIFtjbGFzc05hbWVdPVwiZGF0YVRhYmxlQ2xhc3NOYW1lXCJcclxuICBbc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXT1cImZpbHRlck9wdGlvbnNcIlxyXG4gIChzZWxlY3RlZEZpbHRlcik9XCJzZXRTZWxlY3RlZEZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgKHJlbW92ZUZpbHRlcmVkT3B0aW9uKT1cIm9uRmlsdGVyR3JvdXBVc2VycygkZXZlbnQpXCJcclxuICAoZmlsdGVyZWRPcHRpb25zKT1cIm9uRmlsdGVyR3JvdXBVc2VycygkZXZlbnQpXCJcclxuICAoc2VhcmNoZWRWYWx1ZSk9XCJvblNlYXJjaEdyb3VwVXNlcnMoJGV2ZW50KVwiXHJcbiAgKHNlbGVjdGVkUm93VG9FZGl0KT1cIm9uRWRpdFVzZXJSb2xlcygkZXZlbnQpXCJcclxuICAoc2VsZWN0ZWRSb3dzVG9EZWxldGUpPVwib3BlblVzZXJEZWxldGVDb25maXJtYXRpb25Nb2RhbCgkZXZlbnQpXCJcclxuICAoc29ydENoYW5nZSk9XCJvblNvcnRHcm91cFVzZXJzKCRldmVudClcIlxyXG4gIChhZGRSb3cpPVwib25BZGROZXdVc2VyKClcIlxyXG4+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuIl19
|