@ieeesa-npm/tenants 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +31 -0
- package/ng-package.json +8 -0
- package/package.json +12 -25
- package/src/lib/assets/constants.json +454 -0
- package/src/lib/assets/tenant-validations.ts +18 -0
- package/src/lib/assets/tenants-mock.ts +1240 -0
- package/src/lib/components/create-modify-group-type/create-modify-group-type.component.html +15 -0
- package/src/lib/components/create-modify-group-type/create-modify-group-type.component.scss +44 -0
- package/src/lib/components/create-modify-group-type/create-modify-group-type.component.spec.ts +574 -0
- package/src/lib/components/create-modify-group-type/create-modify-group-type.component.ts +602 -0
- package/src/lib/components/create-modify-role/create-modify-role.component.html +15 -0
- package/src/lib/components/create-modify-role/create-modify-role.component.scss +83 -0
- package/src/lib/components/create-modify-role/create-modify-role.component.spec.ts +346 -0
- package/src/lib/components/create-modify-role/create-modify-role.component.ts +321 -0
- package/src/lib/components/create-tenant-application/create-tenant-application.component.html +18 -0
- package/src/lib/components/create-tenant-application/create-tenant-application.component.scss +73 -0
- package/src/lib/components/create-tenant-application/create-tenant-application.component.spec.ts +775 -0
- package/src/lib/components/create-tenant-application/create-tenant-application.component.ts +638 -0
- package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.html +22 -0
- package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.scss +79 -0
- package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.spec.ts +716 -0
- package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.ts +504 -0
- package/src/lib/components/tenant-basic-details/tenant-basic-details.component.html +44 -0
- package/src/lib/components/tenant-basic-details/tenant-basic-details.component.scss +16 -0
- package/src/lib/components/tenant-basic-details/tenant-basic-details.component.spec.ts +115 -0
- package/src/lib/components/tenant-basic-details/tenant-basic-details.component.ts +109 -0
- package/src/lib/components/view-tenant-details/view-tenant-details.component.html +195 -0
- package/src/lib/components/view-tenant-details/view-tenant-details.component.scss +163 -0
- package/src/lib/components/view-tenant-details/view-tenant-details.component.spec.ts +1221 -0
- package/src/lib/components/view-tenant-details/view-tenant-details.component.ts +876 -0
- package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.html +10 -0
- package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.scss +44 -0
- package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.spec.ts +410 -0
- package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.ts +219 -0
- package/src/lib/components/view-tenants-list/view-tenants-list.component.html +32 -0
- package/src/lib/components/view-tenants-list/view-tenants-list.component.scss +35 -0
- package/src/lib/components/view-tenants-list/view-tenants-list.component.spec.ts +464 -0
- package/src/lib/components/view-tenants-list/view-tenants-list.component.ts +388 -0
- package/src/lib/models/app-type-config.model.ts +14 -0
- package/src/lib/models/app-type.model.ts +5 -0
- package/src/lib/models/create-group-type-config.model.ts +18 -0
- package/src/lib/models/create-group-type.model.ts +46 -0
- package/src/lib/models/feature-permission-id.model.ts +6 -0
- package/src/lib/models/features.model.ts +15 -0
- package/src/lib/models/form-status.model.ts +5 -0
- package/src/lib/models/permission-type.model.ts +9 -0
- package/src/lib/models/role-menu-action.model.ts +5 -0
- package/src/lib/models/role-type.model.ts +34 -0
- package/src/lib/models/roles-and-permissions-table-type.model.ts +5 -0
- package/src/lib/models/roles-and-permissions.model.ts +113 -0
- package/src/lib/models/route-config.model.ts +4 -0
- package/src/lib/models/table-column-schema-view-tenant-list.model.ts +21 -0
- package/src/lib/models/tenant-function-type.model.ts +10 -0
- package/src/lib/models/tenant.model.ts +47 -0
- package/src/lib/models/tenants-permission.model.ts +9 -0
- package/src/lib/models/update-tenant-status.model.ts +12 -0
- package/src/lib/models/view-tenant-group-types.model.ts +34 -0
- package/src/lib/services/tenant-applications.service.spec.ts +1245 -0
- package/src/lib/services/tenant-applications.service.ts +798 -0
- package/src/lib/services/tenant-permissions-map.service.spec.ts +25 -0
- package/src/lib/services/tenant-permissions-map.service.ts +28 -0
- package/src/lib/services/tenant-permissions.service.spec.ts +62 -0
- package/src/lib/services/tenant-permissions.service.ts +49 -0
- package/src/lib/tenant-applications.component.html +0 -0
- package/src/lib/tenant-applications.component.scss +0 -0
- package/src/lib/tenant-applications.component.spec.ts +28 -0
- package/src/lib/tenant-applications.component.ts +12 -0
- package/src/lib/tenant-applications.module.ts +8 -0
- package/{public-api.d.ts → src/public-api.ts} +40 -30
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/ieeesa-npm-tenants.mjs +0 -5
- package/esm2022/lib/assets/constants.json +0 -390
- package/esm2022/lib/assets/tenant-validations.mjs +0 -13
- package/esm2022/lib/components/create-modify-role/create-modify-role.component.mjs +0 -280
- package/esm2022/lib/components/create-tenant-application/create-tenant-application.component.mjs +0 -512
- package/esm2022/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.mjs +0 -391
- package/esm2022/lib/components/tenant-basic-details/tenant-basic-details.component.mjs +0 -95
- package/esm2022/lib/components/view-tenant-details/view-tenant-details.component.mjs +0 -708
- package/esm2022/lib/components/view-tenant-group-types/view-tenant-group-types.component.mjs +0 -174
- package/esm2022/lib/components/view-tenants-list/view-tenants-list.component.mjs +0 -334
- package/esm2022/lib/models/app-type-config.model.mjs +0 -2
- package/esm2022/lib/models/app-type.model.mjs +0 -7
- package/esm2022/lib/models/feature-permission-id.model.mjs +0 -8
- package/esm2022/lib/models/features.model.mjs +0 -2
- package/esm2022/lib/models/form-status.model.mjs +0 -7
- package/esm2022/lib/models/permission-type.model.mjs +0 -12
- package/esm2022/lib/models/role-menu-action.model.mjs +0 -7
- package/esm2022/lib/models/role-type.model.mjs +0 -2
- package/esm2022/lib/models/roles-and-permissions-table-type.model.mjs +0 -7
- package/esm2022/lib/models/roles-and-permissions.model.mjs +0 -2
- package/esm2022/lib/models/route-config.model.mjs +0 -2
- package/esm2022/lib/models/table-column-schema-view-tenant-list.model.mjs +0 -16
- package/esm2022/lib/models/tenant-function-type.model.mjs +0 -10
- package/esm2022/lib/models/tenant.model.mjs +0 -2
- package/esm2022/lib/models/tenants-permission.model.mjs +0 -2
- package/esm2022/lib/models/update-tenant-status.model.mjs +0 -2
- package/esm2022/lib/models/view-tenant-group-types.model.mjs +0 -9
- package/esm2022/lib/services/tenant-applications.service.mjs +0 -542
- package/esm2022/lib/services/tenant-permissions-map.service.mjs +0 -36
- package/esm2022/lib/services/tenant-permissions.service.mjs +0 -38
- package/esm2022/lib/tenant-applications.component.mjs +0 -14
- package/esm2022/lib/tenant-applications.module.mjs +0 -16
- package/esm2022/public-api.mjs +0 -34
- package/fesm2022/ieeesa-npm-tenants.mjs +0 -3565
- package/fesm2022/ieeesa-npm-tenants.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/assets/tenant-validations.d.ts +0 -11
- package/lib/components/create-modify-role/create-modify-role.component.d.ts +0 -103
- package/lib/components/create-tenant-application/create-tenant-application.component.d.ts +0 -128
- package/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.d.ts +0 -106
- package/lib/components/tenant-basic-details/tenant-basic-details.component.d.ts +0 -408
- package/lib/components/view-tenant-details/view-tenant-details.component.d.ts +0 -216
- package/lib/components/view-tenant-group-types/view-tenant-group-types.component.d.ts +0 -58
- package/lib/components/view-tenants-list/view-tenants-list.component.d.ts +0 -134
- package/lib/models/app-type-config.model.d.ts +0 -14
- package/lib/models/app-type.model.d.ts +0 -4
- package/lib/models/feature-permission-id.model.d.ts +0 -4
- package/lib/models/features.model.d.ts +0 -15
- package/lib/models/form-status.model.d.ts +0 -4
- package/lib/models/permission-type.model.d.ts +0 -8
- package/lib/models/role-menu-action.model.d.ts +0 -4
- package/lib/models/role-type.model.d.ts +0 -27
- package/lib/models/roles-and-permissions-table-type.model.d.ts +0 -4
- package/lib/models/roles-and-permissions.model.d.ts +0 -119
- package/lib/models/route-config.model.d.ts +0 -4
- package/lib/models/table-column-schema-view-tenant-list.model.d.ts +0 -20
- package/lib/models/tenant-function-type.model.d.ts +0 -7
- package/lib/models/tenant.model.d.ts +0 -51
- package/lib/models/tenants-permission.model.d.ts +0 -9
- package/lib/models/update-tenant-status.model.d.ts +0 -14
- package/lib/models/view-tenant-group-types.model.d.ts +0 -27
- package/lib/services/tenant-applications.service.d.ts +0 -357
- package/lib/services/tenant-permissions-map.service.d.ts +0 -13
- package/lib/services/tenant-permissions.service.d.ts +0 -22
- package/lib/tenant-applications.component.d.ts +0 -5
- package/lib/tenant-applications.module.d.ts +0 -6
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
4
|
-
import * as screenTexts from '../../assets/constants.json';
|
|
5
|
-
import { Validators } from '@angular/forms';
|
|
6
|
-
import { AlignType, DynamicFormComponent, FormControlType, } from '@ieeesa-npm/presentation';
|
|
7
|
-
import { FormStatus } from '@ieeesa-npm/shared';
|
|
8
|
-
import { TenantFunctionType } from '../../models/tenant-function-type.model';
|
|
9
|
-
import { RolesValidation } from '../../assets/tenant-validations';
|
|
10
|
-
import { AlertType } from '@ieeesa-npm/utility';
|
|
11
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../../services/tenant-applications.service";
|
|
14
|
-
import * as i2 from "@ieeesa-npm/shared";
|
|
15
|
-
import * as i3 from "@ieeesa-npm/utility";
|
|
16
|
-
import * as i4 from "@angular/common";
|
|
17
|
-
export class CreateModifyRoleComponent {
|
|
18
|
-
constructor(
|
|
19
|
-
// eslint-disable-next-line no-unused-vars
|
|
20
|
-
tenantAppService,
|
|
21
|
-
// eslint-disable-next-line no-unused-vars
|
|
22
|
-
sharedService,
|
|
23
|
-
// eslint-disable-next-line no-unused-vars
|
|
24
|
-
globalErrorHandlerService // eslint-disable-next-line no-empty-function
|
|
25
|
-
) {
|
|
26
|
-
this.tenantAppService = tenantAppService;
|
|
27
|
-
this.sharedService = sharedService;
|
|
28
|
-
this.globalErrorHandlerService = globalErrorHandlerService;
|
|
29
|
-
this.destroy$ = new Subject();
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
-
this.constants = screenTexts;
|
|
32
|
-
this.createRoleTexts = this.constants?.createRole;
|
|
33
|
-
this.leftButtonLabel = this.createRoleTexts?.label?.leftButtonLabel;
|
|
34
|
-
this.rightButtonLabel = this.createRoleTexts?.label?.rightButtonLabel;
|
|
35
|
-
this.colWidth = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };
|
|
36
|
-
this.actionButtonAlign = AlignType.LEFT;
|
|
37
|
-
this.submitFormResponse = new EventEmitter();
|
|
38
|
-
this.formCancel = new EventEmitter();
|
|
39
|
-
}
|
|
40
|
-
ngOnInit() {
|
|
41
|
-
this.tenantFunctionType = this.tenantAppService?.getTenantFunctionType();
|
|
42
|
-
this.selectedTenantInfo =
|
|
43
|
-
this.tenantAppService?.getSelectedTenantInformation();
|
|
44
|
-
this.roleTypeOptions =
|
|
45
|
-
this.tenantAppService?.getRoleTypeOption();
|
|
46
|
-
this.selectedRoleDetails =
|
|
47
|
-
this.tenantAppService?.getSelectedRoleInformation();
|
|
48
|
-
if (this.selectedRoleDetails) {
|
|
49
|
-
this.selectedRole = this.tenantAppService?.roles?.find(({ roleId }) => roleId === this.selectedRoleDetails?.roleId);
|
|
50
|
-
}
|
|
51
|
-
this.initializeCreateRoleFormGroup();
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Constructs and returns the role type form field based on credit or edit role.
|
|
55
|
-
* @return {FieldConfig} -role type form field.
|
|
56
|
-
* @memberof CreateModifyRoleComponent
|
|
57
|
-
*/
|
|
58
|
-
getRoleTypeField() {
|
|
59
|
-
let roleTypeField;
|
|
60
|
-
if (this.tenantFunctionType === TenantFunctionType.EDIT_ROLE) {
|
|
61
|
-
roleTypeField = {
|
|
62
|
-
type: FormControlType?.TEXT_AREA,
|
|
63
|
-
label: this.createRoleTexts?.label?.roleType,
|
|
64
|
-
controlName: 'roleType',
|
|
65
|
-
isReadonly: true,
|
|
66
|
-
value: this.selectedRole?.roleTypeName,
|
|
67
|
-
ariaMultiline: false,
|
|
68
|
-
ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleType,
|
|
69
|
-
ariaDescribedById: this.createRoleTexts?.label?.ariaDescribedById?.roleType,
|
|
70
|
-
isResize: true,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
roleTypeField = {
|
|
75
|
-
type: FormControlType?.SELECT,
|
|
76
|
-
label: this.createRoleTexts?.label?.roleType + '*',
|
|
77
|
-
controlName: 'roleType',
|
|
78
|
-
isSortNeeded: false,
|
|
79
|
-
value: '',
|
|
80
|
-
validation: [Validators.required],
|
|
81
|
-
dropdownOptions: this.roleTypeOptions,
|
|
82
|
-
supportMessage: this.createRoleTexts?.supportText?.roleType,
|
|
83
|
-
requiredErrorMessage: this.createRoleTexts?.message?.error?.required,
|
|
84
|
-
ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleType,
|
|
85
|
-
ariaDescribedById: this.createRoleTexts?.label?.ariaDescribedById?.roleType,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
return roleTypeField;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Initialize the create/edit role form group array.
|
|
92
|
-
* @memberof CreateModifyRoleComponent
|
|
93
|
-
*/
|
|
94
|
-
initializeCreateRoleFormGroup() {
|
|
95
|
-
this.createRoleFormGroup = {
|
|
96
|
-
formGroup: [
|
|
97
|
-
{
|
|
98
|
-
legend: '',
|
|
99
|
-
controls: [
|
|
100
|
-
{
|
|
101
|
-
type: FormControlType.TEXT_AREA,
|
|
102
|
-
label: this.createRoleTexts?.label?.appTitle,
|
|
103
|
-
controlName: 'appTitle',
|
|
104
|
-
value: this.selectedTenantInfo?.appTitle,
|
|
105
|
-
ariaLabel: this.createRoleTexts?.label?.ariaLabel?.appTitle,
|
|
106
|
-
ariaDescribedById: this.createRoleTexts?.label?.ariaDescribedById?.appTitle,
|
|
107
|
-
isReadonly: true,
|
|
108
|
-
ariaMultiline: false,
|
|
109
|
-
isResize: true,
|
|
110
|
-
},
|
|
111
|
-
this.getRoleTypeField(),
|
|
112
|
-
{
|
|
113
|
-
type: FormControlType.INPUT,
|
|
114
|
-
label: this.createRoleTexts?.label?.roleName + '*',
|
|
115
|
-
controlName: 'roleName',
|
|
116
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT_ROLE
|
|
117
|
-
? this.selectedRole?.roleName
|
|
118
|
-
: '',
|
|
119
|
-
validation: [
|
|
120
|
-
Validators.required,
|
|
121
|
-
Validators.maxLength(RolesValidation.roleNameMaxLength),
|
|
122
|
-
],
|
|
123
|
-
supportMessage: this.createRoleTexts?.supportText?.roleName,
|
|
124
|
-
requiredErrorMessage: this.createRoleTexts?.message?.error?.required,
|
|
125
|
-
maxErrorMessage: this.createRoleTexts?.message?.error?.limit?.roleNameMaxChars,
|
|
126
|
-
ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleName,
|
|
127
|
-
ariaDescribedById: this.createRoleTexts?.label?.ariaDescribedById?.roleName,
|
|
128
|
-
},
|
|
129
|
-
],
|
|
130
|
-
},
|
|
131
|
-
],
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Gets create/edit role form group reference.
|
|
136
|
-
* @param {FormGroup[]} form
|
|
137
|
-
* @memberof CreateModifyRoleComponent
|
|
138
|
-
*/
|
|
139
|
-
getCreateModifyRoleFormGroupRef(form) {
|
|
140
|
-
this.createModifyRoleFormGroupRef = form[0];
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Updates createModifyRoleFormGroupRef on add role form change event.
|
|
144
|
-
* @param {FormGroup[]} form
|
|
145
|
-
* @memberof CreateModifyRoleComponent
|
|
146
|
-
*/
|
|
147
|
-
onCreateModifyRoleFormChange(form) {
|
|
148
|
-
this.createModifyRoleFormGroupRef = form[0];
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Creates a new role on form submission and the form is valid.
|
|
152
|
-
* @param {FormGroup[]} form
|
|
153
|
-
* @memberof CreateModifyRoleComponent
|
|
154
|
-
*/
|
|
155
|
-
onCreateModifyRoleFormSubmit(form) {
|
|
156
|
-
form[0]?.markAllAsTouched();
|
|
157
|
-
if (form[0].status === FormStatus.VALID) {
|
|
158
|
-
this.createModifyRolePayload = this.getCreateModifyRolePayload(form[0].getRawValue());
|
|
159
|
-
// eslint-disable-next-line no-unused-expressions
|
|
160
|
-
this.tenantFunctionType === TenantFunctionType.EDIT_ROLE
|
|
161
|
-
? this.editRole()
|
|
162
|
-
: this.createRole();
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Constructs create/edit role payload from the form data and returns.
|
|
167
|
-
* @param {*} formData
|
|
168
|
-
* @return {CreateModifyRoleRequestPayload}
|
|
169
|
-
* @memberof CreateModifyRoleComponent
|
|
170
|
-
*/
|
|
171
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
172
|
-
getCreateModifyRolePayload(formData) {
|
|
173
|
-
const payload = {
|
|
174
|
-
payload: {
|
|
175
|
-
appId: this.selectedTenantInfo?.appId,
|
|
176
|
-
roleName: formData?.roleName,
|
|
177
|
-
},
|
|
178
|
-
};
|
|
179
|
-
if (this.tenantFunctionType === TenantFunctionType.EDIT_ROLE) {
|
|
180
|
-
payload.payload.roleId = this.selectedRole?.roleId;
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
payload.payload.roleType = formData?.roleType?.id;
|
|
184
|
-
}
|
|
185
|
-
return payload;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Post the creates new role form data to the server on form submission to create a new role.
|
|
189
|
-
* @param {CreateRoleRequestPayload} createModifyRolePayload
|
|
190
|
-
* @memberof CreateModifyRoleComponent
|
|
191
|
-
*/
|
|
192
|
-
createRole() {
|
|
193
|
-
this.tenantAppService
|
|
194
|
-
.createRole(this.createModifyRolePayload)
|
|
195
|
-
.pipe(takeUntil(this.destroy$))
|
|
196
|
-
.subscribe({
|
|
197
|
-
next: (response) => {
|
|
198
|
-
if (response.status) {
|
|
199
|
-
this.tenantAppService.setNewlyCreatedRoleInfo(this.createModifyRolePayload?.payload);
|
|
200
|
-
this.submitFormResponse.emit(response);
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
204
|
-
error: (error) => {
|
|
205
|
-
this.handleErrors(error);
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Post the edited role form data to server on form submission to update the selected role information.
|
|
211
|
-
* @param {CreateModifyRoleRequestPayload} createModifyRolePayload
|
|
212
|
-
* @memberof CreateModifyRoleComponent
|
|
213
|
-
*/
|
|
214
|
-
editRole() {
|
|
215
|
-
this.tenantAppService
|
|
216
|
-
.editRole(this.createModifyRolePayload)
|
|
217
|
-
.pipe(takeUntil(this.destroy$))
|
|
218
|
-
.subscribe({
|
|
219
|
-
next: (response) => {
|
|
220
|
-
if (response.status) {
|
|
221
|
-
this.tenantAppService.setNewlyCreatedRoleInfo(this.createModifyRolePayload?.payload);
|
|
222
|
-
this.submitFormResponse.emit(response);
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
226
|
-
error: (error) => {
|
|
227
|
-
this.handleErrors(error);
|
|
228
|
-
},
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Captures the server side errors and handles it based on the custom or Http errors.
|
|
233
|
-
* @param {HttpErrorResponse} error
|
|
234
|
-
* @return -returns nothing
|
|
235
|
-
* @memberof CreateModifyRoleComponent
|
|
236
|
-
*/
|
|
237
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
238
|
-
handleErrors(error) {
|
|
239
|
-
const errorCodes = error?.error?.body?.errorCodes;
|
|
240
|
-
if (Array.isArray(errorCodes) && !error?.error?.status) {
|
|
241
|
-
if (errorCodes[0] === '3012') {
|
|
242
|
-
const roleName = this.createModifyRolePayload?.payload?.roleName;
|
|
243
|
-
const errorMessage = this.sharedService?.parseErrorMessage(errorCodes, this.createRoleTexts?.errors);
|
|
244
|
-
this.sharedService.showAlertMessage(AlertType.ERROR, `${roleName} ${errorMessage}`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
else if (error && error instanceof HttpErrorResponse) {
|
|
248
|
-
this.globalErrorHandlerService?.handleError(error);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Emits form cancel event.
|
|
253
|
-
* @memberof CreateModifyRoleComponent
|
|
254
|
-
*/
|
|
255
|
-
onFormCancel() {
|
|
256
|
-
this.formCancel.emit();
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.
|
|
260
|
-
* @memberof CreateModifyRoleComponent
|
|
261
|
-
*/
|
|
262
|
-
ngOnDestroy() {
|
|
263
|
-
this.destroy$.next(true);
|
|
264
|
-
this.destroy$.unsubscribe();
|
|
265
|
-
}
|
|
266
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateModifyRoleComponent, deps: [{ token: i1.TenantApplicationsService }, { token: i2.SharedService }, { token: i3.GlobalErrorHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
267
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateModifyRoleComponent, isStandalone: true, selector: "ieeesa-create-modify-role", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, viewQueries: [{ propertyName: "dynamicFormComponent", first: true, predicate: DynamicFormComponent, descendants: true }], ngImport: i0, template: "<ieeesa-dynamic-form\r\n *ngIf=\"createRoleFormGroup\"\r\n class=\"ieeesa-create-role-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateModifyRoleFormSubmit($event)\"\r\n (formChange)=\"onCreateModifyRoleFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateModifyRoleFormGroupRef($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;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.813rem;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.9375rem;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.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;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.125rem;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.875rem;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.5rem;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.625rem;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.5rem;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.5rem;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.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;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:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;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:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;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:1rem;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.125rem;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.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;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:.875rem;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:.875rem;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.5rem;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:1rem;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:focus{background:#1f75a7}.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:focus{background:#f0f5f9}.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:focus{background-color:#f0f5f9}.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:1rem;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:1rem;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:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-modal-dialog.ieeesa-create-modify-role{width:40vw!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-create-modify-role .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .mat-mdc-dialog-content{padding:.5em 1em .75em!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:.5em;padding:2em 1em .75em}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding-top:0!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field__label-top{min-height:6.25em!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field{width:70%}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]),.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]){padding-top:0;margin-bottom:0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-input-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-input-field .mat-mdc-form-field-subscript-wrapper{display:none!important}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form__form-field{width:100%}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form .ieeesa-select-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form .ieeesa-input-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form .mat-mdc-form-field-flex{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicFormComponent, selector: "ieeesa-dynamic-form", inputs: ["formGroups", "submitResponse", "searchResponse", "colWidth", "isLegendVisible", "rightButtonLabel", "leftButtonLabel", "isSubmitButtonDisabled", "isLeftButtonDisabled", "isLeftButtonNeeded", "actionButtonAlign"], outputs: ["formSubmit", "formChange", "formInput", "formLeftButtonClicked", "formSearchApply", "formGroupsReference", "dropdownChange", "formCheckboxSelection", "formDateSelected", "formSelectSearch", "formControlChange", "formAutoCompleteSearch", "formAutoCompleteClearSearchValue", "autoCompleteOptionSelected", "formAfterContentInit", "formSelectedDateRange", "addFormGroup", "formTimeSelected", "supportTextLinkClick", "formSlideToggleChange", "formFileUpload", "dropdownOpenedChange", "formColorPickerChange", "formRadioOptionSelected", "ctaButtonClick", "formMultiSelectAutoCompleteSearch", "formMultiSelectAutoCompleteClearSearchValue", "multiSelectAutoCompleteOptionsSelected", "formRichTextEditorContentChange"], exportAs: ["dynamicForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
268
|
-
}
|
|
269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateModifyRoleComponent, decorators: [{
|
|
270
|
-
type: Component,
|
|
271
|
-
args: [{ selector: 'ieeesa-create-modify-role', standalone: true, imports: [CommonModule, DynamicFormComponent], encapsulation: ViewEncapsulation.None, template: "<ieeesa-dynamic-form\r\n *ngIf=\"createRoleFormGroup\"\r\n class=\"ieeesa-create-role-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateModifyRoleFormSubmit($event)\"\r\n (formChange)=\"onCreateModifyRoleFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateModifyRoleFormGroupRef($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;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.813rem;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.9375rem;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.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;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.125rem;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.875rem;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.5rem;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.625rem;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.5rem;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.5rem;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.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;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:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;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:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;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:1rem;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.125rem;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.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;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:.875rem;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:.875rem;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.5rem;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:1rem;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:focus{background:#1f75a7}.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:focus{background:#f0f5f9}.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:focus{background-color:#f0f5f9}.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:1rem;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:1rem;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:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-modal-dialog.ieeesa-create-modify-role{width:40vw!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-create-modify-role .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .mat-mdc-dialog-content{padding:.5em 1em .75em!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:.5em;padding:2em 1em .75em}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding-top:0!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field__label-top{min-height:6.25em!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field{width:70%}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-subscript-wrapper{display:none!important}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]),.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]){padding-top:0;margin-bottom:0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .app-title.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-modal .ieeesa-dynamic-form .role-type.ieeesa-dynamic-form__form-field:has(.mat-mdc-input-element[readonly=true]) .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-input-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-input-field .mat-mdc-form-field-subscript-wrapper{display:none!important}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form__form-field{width:100%}.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form .ieeesa-select-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form .ieeesa-input-field,.ieeesa-modal-dialog.ieeesa-create-modify-role .ieeesa-dynamic-form .mat-mdc-form-field-flex{width:100%!important}}\n"] }]
|
|
272
|
-
}], ctorParameters: function () { return [{ type: i1.TenantApplicationsService }, { type: i2.SharedService }, { type: i3.GlobalErrorHandlerService }]; }, propDecorators: { dynamicFormComponent: [{
|
|
273
|
-
type: ViewChild,
|
|
274
|
-
args: [DynamicFormComponent]
|
|
275
|
-
}], submitFormResponse: [{
|
|
276
|
-
type: Output
|
|
277
|
-
}], formCancel: [{
|
|
278
|
-
type: Output
|
|
279
|
-
}] } });
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGlmeS1yb2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbmFudHMvc3JjL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1tb2RpZnktcm9sZS9jcmVhdGUtbW9kaWZ5LXJvbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1yb2xlL2NyZWF0ZS1tb2RpZnktcm9sZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxvQkFBb0IsRUFFcEIsZUFBZSxHQUloQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxVQUFVLEVBQWlCLE1BQU0sb0JBQW9CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFTN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQTZCLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVN6RCxNQUFNLE9BQU8seUJBQXlCO0lBcUJw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QkFSckMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLGlCQUc5QixpQkFBaUIsQ0FBQyxJQUFJO29MQWNyQyxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUVyQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQWxpZ25UeXBlLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gIEZpZWxkQ29uZmlnLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGb3JtR3JpZCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW5hbnQtYXBwbGljYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdHVzLCBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vc2hhcmVkJztcclxuaW1wb3J0IHsgVGVuYW50RnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgVGVuYW50QmFzaWNJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgUm9sZURldGFpbHMsXHJcbiAgUm9sZSxcclxuICBDcmVhdGVNb2RpZnlSb2xlUmVxdWVzdFBheWxvYWQsXHJcbiAgQ3JlYXRlTW9kaWZ5Um9sZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9yb2xlcy1hbmQtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBSb2xlVHlwZU9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9yb2xlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb2xlc1ZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9hc3NldHMvdGVuYW50LXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgQWxlcnRUeXBlLCBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1jcmVhdGUtbW9kaWZ5LXJvbGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtbW9kaWZ5LXJvbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1tb2RpZnktcm9sZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgY3JlYXRlUm9sZVRleHRzID0gdGhpcy5jb25zdGFudHM/LmNyZWF0ZVJvbGU7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVSb2xlVGV4dHM/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8ucmlnaHRCdXR0b25MYWJlbDtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgY3JlYXRlUm9sZUZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBjcmVhdGVNb2RpZnlSb2xlRm9ybUdyb3VwUmVmITogRm9ybUdyb3VwO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgQFZpZXdDaGlsZChEeW5hbWljRm9ybUNvbXBvbmVudClcclxuICBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgdGVuYW50RnVuY3Rpb25UeXBlITogVGVuYW50RnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkVGVuYW50SW5mbyE6IFRlbmFudEJhc2ljSW5mbyB8IHVuZGVmaW5lZDtcclxuICBjcmVhdGVNb2RpZnlSb2xlUGF5bG9hZCE6IENyZWF0ZU1vZGlmeVJvbGVSZXF1ZXN0UGF5bG9hZDtcclxuICByb2xlVHlwZU9wdGlvbnMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBzZWxlY3RlZFJvbGVEZXRhaWxzITogUm9sZURldGFpbHM7XHJcbiAgc2VsZWN0ZWRSb2xlITogUm9sZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB0ZW5hbnRBcHBTZXJ2aWNlOiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LmdldFRlbmFudEZ1bmN0aW9uVHlwZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRlbmFudEluZm8gPVxyXG4gICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LmdldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oKTtcclxuICAgIHRoaXMucm9sZVR5cGVPcHRpb25zID1cclxuICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5nZXRSb2xlVHlwZU9wdGlvbigpIGFzIFJvbGVUeXBlT3B0aW9uW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZURldGFpbHMgPVxyXG4gICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LmdldFNlbGVjdGVkUm9sZUluZm9ybWF0aW9uKCkgYXMgUm9sZTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUm9sZURldGFpbHMpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvbGUgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LnJvbGVzPy5maW5kKFxyXG4gICAgICAgICh7IHJvbGVJZCB9KSA9PiByb2xlSWQgPT09IHRoaXMuc2VsZWN0ZWRSb2xlRGV0YWlscz8ucm9sZUlkXHJcbiAgICAgICkgYXMgUm9sZTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNyZWF0ZVJvbGVGb3JtR3JvdXAoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIHJvbGUgdHlwZSBmb3JtIGZpZWxkIGJhc2VkIG9uIGNyZWRpdCBvciBlZGl0IHJvbGUuXHJcbiAgICogQHJldHVybiB7RmllbGRDb25maWd9IC1yb2xlIHR5cGUgZm9ybSBmaWVsZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJvbGVUeXBlRmllbGQoKTogRmllbGRDb25maWcge1xyXG4gICAgbGV0IHJvbGVUeXBlRmllbGQ6IEZpZWxkQ29uZmlnO1xyXG4gICAgaWYgKHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVF9ST0xFKSB7XHJcbiAgICAgIHJvbGVUeXBlRmllbGQgPSB7XHJcbiAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5URVhUX0FSRUEsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8ucm9sZVR5cGUsXHJcbiAgICAgICAgY29udHJvbE5hbWU6ICdyb2xlVHlwZScsXHJcbiAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFJvbGU/LnJvbGVUeXBlTmFtZSxcclxuICAgICAgICBhcmlhTXVsdGlsaW5lOiBmYWxzZSxcclxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yb2xlVHlwZSxcclxuICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgIHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnJvbGVUeXBlLFxyXG4gICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm9sZVR5cGVGaWVsZCA9IHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNFTEVDVCxcclxuICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVSb2xlVGV4dHM/LmxhYmVsPy5yb2xlVHlwZSArICcqJyxcclxuICAgICAgICBjb250cm9sTmFtZTogJ3JvbGVUeXBlJyxcclxuICAgICAgICBpc1NvcnROZWVkZWQ6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLnJvbGVUeXBlT3B0aW9ucyxcclxuICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVSb2xlVGV4dHM/LnN1cHBvcnRUZXh0Py5yb2xlVHlwZSxcclxuICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5jcmVhdGVSb2xlVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yb2xlVHlwZSxcclxuICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgIHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnJvbGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvbGVUeXBlRmllbGQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNyZWF0ZS9lZGl0IHJvbGUgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVDcmVhdGVSb2xlRm9ybUdyb3VwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVSb2xlRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXBwVGl0bGUsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBUaXRsZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvPy5hcHBUaXRsZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBUaXRsZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUm9sZVRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcFRpdGxlLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um9sZVR5cGVGaWVsZCgpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZVJvbGVUZXh0cz8ubGFiZWw/LnJvbGVOYW1lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAncm9sZU5hbWUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUX1JPTEVcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkUm9sZT8ucm9sZU5hbWVcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoUm9sZXNWYWxpZGF0aW9uLnJvbGVOYW1lTWF4TGVuZ3RoKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVJvbGVUZXh0cz8uc3VwcG9ydFRleHQ/LnJvbGVOYW1lLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVSb2xlVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVJvbGVUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5yb2xlTmFtZU1heENoYXJzLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVSb2xlVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnJvbGVOYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVSb2xlVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ucm9sZU5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIGNyZWF0ZS9lZGl0IHJvbGUgZm9ybSBncm91cCByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q3JlYXRlTW9kaWZ5Um9sZUZvcm1Hcm91cFJlZihmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVNb2RpZnlSb2xlRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBjcmVhdGVNb2RpZnlSb2xlRm9ybUdyb3VwUmVmIG9uIGFkZCByb2xlIGZvcm0gY2hhbmdlIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlTW9kaWZ5Um9sZUZvcm1DaGFuZ2UoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlTW9kaWZ5Um9sZUZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBvbiBmb3JtIHN1Ym1pc3Npb24gYW5kIHRoZSBmb3JtIGlzIHZhbGlkLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlTW9kaWZ5Um9sZUZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGZvcm1bMF0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmIChmb3JtWzBdLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5WQUxJRCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkID0gdGhpcy5nZXRDcmVhdGVNb2RpZnlSb2xlUGF5bG9hZChcclxuICAgICAgICBmb3JtWzBdLmdldFJhd1ZhbHVlKClcclxuICAgICAgKTtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xyXG4gICAgICB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZSA9PT0gVGVuYW50RnVuY3Rpb25UeXBlLkVESVRfUk9MRVxyXG4gICAgICAgID8gdGhpcy5lZGl0Um9sZSgpXHJcbiAgICAgICAgOiB0aGlzLmNyZWF0ZVJvbGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBjcmVhdGUvZWRpdCByb2xlIHBheWxvYWQgZnJvbSB0aGUgZm9ybSBkYXRhIGFuZCByZXR1cm5zLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIHtDcmVhdGVNb2RpZnlSb2xlUmVxdWVzdFBheWxvYWR9XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeVJvbGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldENyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkKGZvcm1EYXRhOiBhbnkpOiBDcmVhdGVNb2RpZnlSb2xlUmVxdWVzdFBheWxvYWQge1xyXG4gICAgY29uc3QgcGF5bG9hZDogQ3JlYXRlTW9kaWZ5Um9sZVJlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwSWQ6IHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvPy5hcHBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgcm9sZU5hbWU6IGZvcm1EYXRhPy5yb2xlTmFtZSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUX1JPTEUpIHtcclxuICAgICAgcGF5bG9hZC5wYXlsb2FkLnJvbGVJZCA9IHRoaXMuc2VsZWN0ZWRSb2xlPy5yb2xlSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXlsb2FkLnBheWxvYWQucm9sZVR5cGUgPSBmb3JtRGF0YT8ucm9sZVR5cGU/LmlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFBvc3QgdGhlIGNyZWF0ZXMgbmV3IHJvbGUgZm9ybSBkYXRhIHRvIHRoZSBzZXJ2ZXIgb24gZm9ybSBzdWJtaXNzaW9uIHRvIGNyZWF0ZSBhIG5ldyByb2xlLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlUm9sZVJlcXVlc3RQYXlsb2FkfSBjcmVhdGVNb2RpZnlSb2xlUGF5bG9hZFxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY3JlYXRlUm9sZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuY3JlYXRlUm9sZSh0aGlzLmNyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogQ3JlYXRlTW9kaWZ5Um9sZVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5zZXROZXdseUNyZWF0ZWRSb2xlSW5mbyhcclxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU1vZGlmeVJvbGVQYXlsb2FkPy5wYXlsb2FkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc3VibWl0Rm9ybVJlc3BvbnNlLmVtaXQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUG9zdCB0aGUgZWRpdGVkIHJvbGUgZm9ybSBkYXRhIHRvIHNlcnZlciBvbiBmb3JtIHN1Ym1pc3Npb24gdG8gdXBkYXRlIHRoZSBzZWxlY3RlZCByb2xlIGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q3JlYXRlTW9kaWZ5Um9sZVJlcXVlc3RQYXlsb2FkfSBjcmVhdGVNb2RpZnlSb2xlUGF5bG9hZFxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZWRpdFJvbGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmVkaXRSb2xlKHRoaXMuY3JlYXRlTW9kaWZ5Um9sZVBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBDcmVhdGVNb2RpZnlSb2xlUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLnNldE5ld2x5Q3JlYXRlZFJvbGVJbmZvKFxyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9kaWZ5Um9sZVBheWxvYWQ/LnBheWxvYWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtUmVzcG9uc2UuZW1pdChyZXNwb25zZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDYXB0dXJlcyB0aGUgc2VydmVyIHNpZGUgZXJyb3JzIGFuZCBoYW5kbGVzIGl0IGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaGFuZGxlRXJyb3JzKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yQ29kZXMgPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJvckNvZGVzKSAmJiAhZXJyb3I/LmVycm9yPy5zdGF0dXMpIHtcclxuICAgICAgaWYgKGVycm9yQ29kZXNbMF0gPT09ICczMDEyJykge1xyXG4gICAgICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5jcmVhdGVNb2RpZnlSb2xlUGF5bG9hZD8ucGF5bG9hZD8ucm9sZU5hbWU7XHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5wYXJzZUVycm9yTWVzc2FnZShcclxuICAgICAgICAgIGVycm9yQ29kZXMsXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVJvbGVUZXh0cz8uZXJyb3JzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgIEFsZXJ0VHlwZS5FUlJPUixcclxuICAgICAgICAgIGAke3JvbGVOYW1lfSAke2Vycm9yTWVzc2FnZX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChlcnJvciAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZT8uaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyBmb3JtIGNhbmNlbCBldmVudC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybUNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNhbmNlbC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ09uRGVzdHJveSBsaWZlY3ljbGUgaG9vayBtZXRob2QgdG8gdW5zdWJzY3JpYmUgdGhlIG9wZW4gb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb25zLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJjcmVhdGVSb2xlRm9ybUdyb3VwXCJcclxuICBjbGFzcz1cImllZWVzYS1jcmVhdGUtcm9sZS1mb3JtXCJcclxuICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgW3JpZ2h0QnV0dG9uTGFiZWxdPVwicmlnaHRCdXR0b25MYWJlbFwiXHJcbiAgW2lzTGVnZW5kVmlzaWJsZV09XCJmYWxzZVwiXHJcbiAgW2NvbFdpZHRoXT1cImNvbFdpZHRoXCJcclxuICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gIFtmb3JtR3JvdXBzXT1cImNyZWF0ZVJvbGVGb3JtR3JvdXBcIlxyXG4gIFtpc0xlZnRCdXR0b25OZWVkZWRdPVwidHJ1ZVwiXHJcbiAgKGZvcm1TdWJtaXQpPVwib25DcmVhdGVNb2RpZnlSb2xlRm9ybVN1Ym1pdCgkZXZlbnQpXCJcclxuICAoZm9ybUNoYW5nZSk9XCJvbkNyZWF0ZU1vZGlmeVJvbGVGb3JtQ2hhbmdlKCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwib25Gb3JtQ2FuY2VsKClcIlxyXG4gIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldENyZWF0ZU1vZGlmeVJvbGVGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbj48L2llZWVzYS1keW5hbWljLWZvcm0+XHJcbiJdfQ==
|