@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
package/esm2022/lib/components/create-tenant-application/create-tenant-application.component.mjs
DELETED
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
|
-
import { AlignType, FormControlType, AllowedFileTypes, DynamicFormComponent, } from '@ieeesa-npm/presentation';
|
|
3
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
4
|
-
import * as screenTexts from '../../assets/constants.json';
|
|
5
|
-
import { Validators } from '@angular/forms';
|
|
6
|
-
import { TenantsValidationPatterns } from '../../assets/tenant-validations';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
import { FormStatus } from '../../models/form-status.model';
|
|
9
|
-
import { validColorValidator } from 'ngx-colors';
|
|
10
|
-
import { TenantFunctionType } from '../../models/tenant-function-type.model';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@ieeesa-npm/presentation";
|
|
13
|
-
import * as i2 from "../../services/tenant-applications.service";
|
|
14
|
-
import * as i3 from "@ieeesa-npm/shared";
|
|
15
|
-
import * as i4 from "@angular/common";
|
|
16
|
-
export class CreateTenantApplicationComponent {
|
|
17
|
-
constructor(
|
|
18
|
-
// eslint-disable-next-line no-unused-vars
|
|
19
|
-
fileUploadService,
|
|
20
|
-
// eslint-disable-next-line no-unused-vars
|
|
21
|
-
tenantAppService,
|
|
22
|
-
// eslint-disable-next-line no-unused-vars
|
|
23
|
-
sharedService // eslint-disable-next-line no-empty-function
|
|
24
|
-
) {
|
|
25
|
-
this.fileUploadService = fileUploadService;
|
|
26
|
-
this.tenantAppService = tenantAppService;
|
|
27
|
-
this.sharedService = sharedService;
|
|
28
|
-
this.destroy$ = new Subject();
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
-
this.constants = screenTexts;
|
|
31
|
-
this.createTenantTexts = this.constants?.createTenant;
|
|
32
|
-
this.leftButtonLabel = this.createTenantTexts?.label?.leftButtonLabel;
|
|
33
|
-
this.rightButtonLabel = this.createTenantTexts?.label?.rightButtonLabel;
|
|
34
|
-
this.colWidth = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };
|
|
35
|
-
this.actionButtonAlign = AlignType.LEFT;
|
|
36
|
-
this.submitFormResponse = new EventEmitter();
|
|
37
|
-
this.formCancel = new EventEmitter();
|
|
38
|
-
this.allowedFileTypes = [
|
|
39
|
-
AllowedFileTypes.JPG,
|
|
40
|
-
AllowedFileTypes.PNG,
|
|
41
|
-
AllowedFileTypes.SVG,
|
|
42
|
-
];
|
|
43
|
-
this.isAppLogoModified = false;
|
|
44
|
-
}
|
|
45
|
-
ngOnInit() {
|
|
46
|
-
this.tenantFunctionType = this.tenantAppService?.getTenantFunctionType();
|
|
47
|
-
this.selectedTenantInfo =
|
|
48
|
-
this.tenantAppService?.getSelectedTenantInformation();
|
|
49
|
-
this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);
|
|
50
|
-
this.getFeatures();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Gets the list of features and updates the form control.
|
|
54
|
-
* @memberof CreateTenantApplicationComponent
|
|
55
|
-
*/
|
|
56
|
-
getFeatures() {
|
|
57
|
-
this.tenantAppService
|
|
58
|
-
.getFeatures()
|
|
59
|
-
.pipe(takeUntil(this.destroy$))
|
|
60
|
-
.subscribe({
|
|
61
|
-
next: (response) => {
|
|
62
|
-
if (response?.status) {
|
|
63
|
-
this.featuresOptions = this.tenantAppService.getFeatureOptions(response?.body);
|
|
64
|
-
if (this.tenantFunctionType === TenantFunctionType.EDIT)
|
|
65
|
-
this.featuresOptions?.forEach((option) => {
|
|
66
|
-
if (this.selectedTenantInfo?.features?.some((feature) => feature?.featureId === option?.id)) {
|
|
67
|
-
option.checked = true;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
this.getApplicationTypes();
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
|
-
error: (error) => {
|
|
75
|
-
this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Gets the application/tenant types and updates the form control.
|
|
81
|
-
* @memberof CreateTenantApplicationComponent
|
|
82
|
-
*/
|
|
83
|
-
getApplicationTypes() {
|
|
84
|
-
this.tenantAppService
|
|
85
|
-
.getApplicationTypes()
|
|
86
|
-
.pipe(takeUntil(this.destroy$))
|
|
87
|
-
.subscribe({
|
|
88
|
-
next: (response) => {
|
|
89
|
-
if (response?.status) {
|
|
90
|
-
this.appTypeOptions =
|
|
91
|
-
this.tenantAppService.getApplicationTypeOptions(response?.body);
|
|
92
|
-
if (this.tenantFunctionType === TenantFunctionType.EDIT) {
|
|
93
|
-
this.appTypeOptions?.forEach((radioOption) => {
|
|
94
|
-
if (radioOption?.id === this.selectedTenantInfo?.appType) {
|
|
95
|
-
radioOption.checked = true;
|
|
96
|
-
this.selectedAppTypeOption = radioOption;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
radioOption.checked = false;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
this.initializeCreateTenantFormGroup();
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
107
|
-
error: (error) => {
|
|
108
|
-
this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Initialize the create tenant form group array.
|
|
114
|
-
* @memberof CreateTenantApplicationComponent
|
|
115
|
-
*/
|
|
116
|
-
initializeCreateTenantFormGroup() {
|
|
117
|
-
this.createTenantFormGroup = {
|
|
118
|
-
formGroup: [
|
|
119
|
-
{
|
|
120
|
-
legend: '',
|
|
121
|
-
controls: [
|
|
122
|
-
{
|
|
123
|
-
type: FormControlType.INPUT,
|
|
124
|
-
label: this.createTenantTexts?.label?.appTitle + '*',
|
|
125
|
-
controlName: 'appTitle',
|
|
126
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
127
|
-
? this.selectedTenantInfo?.appTitle
|
|
128
|
-
: '',
|
|
129
|
-
validation: [
|
|
130
|
-
Validators.required,
|
|
131
|
-
Validators.maxLength(TenantsValidationPatterns.appTitleMaxLength),
|
|
132
|
-
],
|
|
133
|
-
supportMessage: this.createTenantTexts?.supportText?.appTitle,
|
|
134
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
135
|
-
maxErrorMessage: this.createTenantTexts?.message?.error?.limit?.appTitleMaxChars,
|
|
136
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appTitle,
|
|
137
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appTitle,
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
type: FormControlType.INPUT,
|
|
141
|
-
label: `${this.createTenantTexts?.label?.appId}${this.tenantFunctionType === TenantFunctionType.EDIT ? '' : '*'}`,
|
|
142
|
-
controlName: 'appId',
|
|
143
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
144
|
-
? this.selectedTenantInfo?.appId
|
|
145
|
-
: '',
|
|
146
|
-
validation: [
|
|
147
|
-
Validators.required,
|
|
148
|
-
Validators.maxLength(TenantsValidationPatterns.appIdMaxLength),
|
|
149
|
-
Validators.pattern(TenantsValidationPatterns.alphaNumeric),
|
|
150
|
-
],
|
|
151
|
-
disabled: this.tenantFunctionType === TenantFunctionType.EDIT,
|
|
152
|
-
supportMessage: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
153
|
-
? ''
|
|
154
|
-
: this.createTenantTexts?.supportText?.appId,
|
|
155
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
156
|
-
maxErrorMessage: this.createTenantTexts?.message?.error?.limit?.appIdMaxChars,
|
|
157
|
-
patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.appId,
|
|
158
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appId,
|
|
159
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appId,
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
type: FormControlType?.FILE_UPLOAD,
|
|
163
|
-
label: this.createTenantTexts?.label?.appLogo + '*',
|
|
164
|
-
controlName: 'appLogo',
|
|
165
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
166
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
167
|
-
? this.selectedTenantInfo?.appLogo
|
|
168
|
-
: '',
|
|
169
|
-
placeholder: '',
|
|
170
|
-
isFileSelected: this.tenantFunctionType === TenantFunctionType.EDIT,
|
|
171
|
-
supportMessage: this.createTenantTexts?.supportText?.appLogo,
|
|
172
|
-
validation: [Validators.required],
|
|
173
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appLogo,
|
|
174
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appLogo,
|
|
175
|
-
isMultiFileUpload: false,
|
|
176
|
-
maxUploadFileSize: 2,
|
|
177
|
-
maxFileSizeErrorMessage: this.createTenantTexts?.message?.error?.limit?.appLogoMaxSize,
|
|
178
|
-
allowedFileTypeErrorMessage: this.createTenantTexts?.message?.error?.invalidFile,
|
|
179
|
-
allowedFileTypes: this.allowedFileTypes,
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
type: FormControlType.INPUT,
|
|
183
|
-
label: this.createTenantTexts?.label?.appHeading + '*',
|
|
184
|
-
controlName: 'appHeading',
|
|
185
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
186
|
-
? this.selectedTenantInfo?.appHeading
|
|
187
|
-
: '',
|
|
188
|
-
validation: [
|
|
189
|
-
Validators.required,
|
|
190
|
-
Validators.maxLength(TenantsValidationPatterns.appHeadingMaxLength),
|
|
191
|
-
],
|
|
192
|
-
supportMessage: this.createTenantTexts?.supportText?.appHeading,
|
|
193
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
194
|
-
maxErrorMessage: this.createTenantTexts?.message?.error?.limit
|
|
195
|
-
?.appHeadingMaxChars,
|
|
196
|
-
patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.email,
|
|
197
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHeading,
|
|
198
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appHeading,
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
type: FormControlType.TEXT_AREA,
|
|
202
|
-
label: this.createTenantTexts?.label?.appDescription + '*',
|
|
203
|
-
controlName: 'appDescription',
|
|
204
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
205
|
-
? this.selectedTenantInfo?.appDescription
|
|
206
|
-
: '',
|
|
207
|
-
validation: [
|
|
208
|
-
Validators.required,
|
|
209
|
-
Validators.maxLength(TenantsValidationPatterns.appDescriptionMaxLength),
|
|
210
|
-
],
|
|
211
|
-
supportMessage: this.createTenantTexts?.supportText?.appDescription,
|
|
212
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
213
|
-
maxErrorMessage: this.createTenantTexts?.message?.error?.limit
|
|
214
|
-
?.appDescriptionMaxChars,
|
|
215
|
-
maxCharCount: TenantsValidationPatterns.appDescriptionMaxLength,
|
|
216
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appDescription,
|
|
217
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById
|
|
218
|
-
?.appDescription,
|
|
219
|
-
ariaMultiline: true,
|
|
220
|
-
isResize: true,
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
type: FormControlType.COLOR_PICKER,
|
|
224
|
-
label: this.createTenantTexts?.label?.appBgColor + '*',
|
|
225
|
-
controlName: 'backgroundColor',
|
|
226
|
-
value: '',
|
|
227
|
-
defaultColor: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
228
|
-
? this.selectedTenantInfo?.backgroundColor
|
|
229
|
-
: '',
|
|
230
|
-
placeholder: '',
|
|
231
|
-
supportMessage: this.createTenantTexts?.supportText?.appBgColor,
|
|
232
|
-
validation: [Validators.required, validColorValidator()],
|
|
233
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
234
|
-
invalidColorErrorMessage: this.createTenantTexts?.message?.error?.invalidColor,
|
|
235
|
-
ariaLabel: this.createTenantTexts?.supportText?.appBgColor,
|
|
236
|
-
ariaDescribedById: this.createTenantTexts?.supportText?.appBgColor,
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
type: FormControlType.INPUT,
|
|
240
|
-
label: this.createTenantTexts?.label?.appHelpLink + '*',
|
|
241
|
-
controlName: 'appHelpLink',
|
|
242
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
243
|
-
? this.selectedTenantInfo?.appHelpLink
|
|
244
|
-
: '',
|
|
245
|
-
validation: [
|
|
246
|
-
Validators.required,
|
|
247
|
-
Validators.pattern(TenantsValidationPatterns.url),
|
|
248
|
-
],
|
|
249
|
-
supportMessage: this.createTenantTexts?.supportText?.appHelpLink,
|
|
250
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
251
|
-
patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.appHelpLink,
|
|
252
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHelpLink,
|
|
253
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appHelpLink,
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
type: FormControlType.CHECKBOX,
|
|
257
|
-
label: this.createTenantTexts?.label?.featuresList + '*',
|
|
258
|
-
controlName: 'features',
|
|
259
|
-
checkboxOptions: this.featuresOptions,
|
|
260
|
-
minSelectionRequired: 1,
|
|
261
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.featuresList,
|
|
262
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.featuresList,
|
|
263
|
-
supportMessage: this.createTenantTexts?.supportText?.featuresList,
|
|
264
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
265
|
-
validation: [Validators.required],
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
type: FormControlType.INPUT,
|
|
269
|
-
label: this.createTenantTexts?.label?.domainURL + '*',
|
|
270
|
-
controlName: 'appDomainUrl',
|
|
271
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
272
|
-
? this.selectedTenantInfo?.appDomainUrl
|
|
273
|
-
: '',
|
|
274
|
-
validation: [
|
|
275
|
-
Validators.required,
|
|
276
|
-
Validators.pattern(TenantsValidationPatterns.url),
|
|
277
|
-
],
|
|
278
|
-
supportMessage: this.createTenantTexts?.supportText?.domainURL,
|
|
279
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
280
|
-
patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.appDomainUrl,
|
|
281
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.domainURL,
|
|
282
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.domainURL,
|
|
283
|
-
},
|
|
284
|
-
{
|
|
285
|
-
type: FormControlType.RADIO,
|
|
286
|
-
label: `${this.createTenantTexts?.label?.appType}${this.tenantFunctionType === TenantFunctionType.EDIT ? '' : '*'}`,
|
|
287
|
-
controlName: 'appType',
|
|
288
|
-
value: this.tenantFunctionType === TenantFunctionType.EDIT
|
|
289
|
-
? this.selectedTenantInfo?.appType
|
|
290
|
-
: '',
|
|
291
|
-
disabled: this.tenantFunctionType === TenantFunctionType.EDIT,
|
|
292
|
-
radioOptions: this.appTypeOptions,
|
|
293
|
-
validation: [Validators.required],
|
|
294
|
-
requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
|
|
295
|
-
ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appType,
|
|
296
|
-
ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appType,
|
|
297
|
-
},
|
|
298
|
-
],
|
|
299
|
-
},
|
|
300
|
-
],
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Creates Payload and gets presigned url for file upload on form submission.
|
|
305
|
-
* @param {FormGroup[]} form
|
|
306
|
-
* @memberof CreateTenantApplicationComponent
|
|
307
|
-
*/
|
|
308
|
-
onCreateTenantFormSubmit(form) {
|
|
309
|
-
form[0]?.markAllAsTouched();
|
|
310
|
-
if (form[0].status === FormStatus.VALID) {
|
|
311
|
-
this.createTenantPayload = this.getCreateTenantPayload(form[0].getRawValue());
|
|
312
|
-
if (this.tenantFunctionType === TenantFunctionType.EDIT &&
|
|
313
|
-
(!this.isAppLogoModified || !this.file)) {
|
|
314
|
-
this.editTenant();
|
|
315
|
-
}
|
|
316
|
-
else if (this.file) {
|
|
317
|
-
this.getFileUploadPresignedUrl(this.file, form[0]?.controls['appId']?.value);
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
this.createTenant();
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Creates a new tenant on form submission.
|
|
326
|
-
* @memberof CreateTenantApplicationComponent
|
|
327
|
-
*/
|
|
328
|
-
createTenant() {
|
|
329
|
-
this.tenantAppService
|
|
330
|
-
.createTenant(this.createTenantPayload)
|
|
331
|
-
.pipe(takeUntil(this.destroy$))
|
|
332
|
-
.subscribe({
|
|
333
|
-
next: (response) => {
|
|
334
|
-
if (response.status) {
|
|
335
|
-
this.tenantAppService.setNewTenantInfo(this.createTenantPayload?.payload);
|
|
336
|
-
this.submitFormResponse.emit(response);
|
|
337
|
-
}
|
|
338
|
-
},
|
|
339
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
340
|
-
error: (error) => {
|
|
341
|
-
this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
|
|
342
|
-
},
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* Updates the modified tenant information on form submission.
|
|
347
|
-
* @memberof CreateTenantApplicationComponent
|
|
348
|
-
*/
|
|
349
|
-
editTenant() {
|
|
350
|
-
this.tenantAppService
|
|
351
|
-
.editTenant(this.createTenantPayload)
|
|
352
|
-
.pipe(takeUntil(this.destroy$))
|
|
353
|
-
.subscribe({
|
|
354
|
-
next: (response) => {
|
|
355
|
-
if (response?.status) {
|
|
356
|
-
this.updatedTenantBasicInfo = this.createTenantPayload?.payload;
|
|
357
|
-
this.updatedTenantBasicInfo.features =
|
|
358
|
-
this.tenantAppService.getFeaturesList(this.featuresOptions);
|
|
359
|
-
this.tenantAppService.setSelectedTenantInformation(this.updatedTenantBasicInfo);
|
|
360
|
-
this.submitFormResponse.emit(response);
|
|
361
|
-
}
|
|
362
|
-
},
|
|
363
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
364
|
-
error: (error) => {
|
|
365
|
-
this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
|
|
366
|
-
},
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Constructs create tenant payload from the form data and returns.
|
|
371
|
-
* @param {*} formData
|
|
372
|
-
* @return {CreateTenantRequestPayload}
|
|
373
|
-
* @memberof CreateTenantApplicationComponent
|
|
374
|
-
*/
|
|
375
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
376
|
-
getCreateTenantPayload(formData) {
|
|
377
|
-
const payload = {
|
|
378
|
-
payload: {
|
|
379
|
-
appTitle: formData?.appTitle,
|
|
380
|
-
appId: formData?.appId,
|
|
381
|
-
appHeading: formData?.appHeading,
|
|
382
|
-
appDescription: formData?.appDescription,
|
|
383
|
-
backgroundColor: formData?.backgroundColor,
|
|
384
|
-
appLogo: formData?.appLogo,
|
|
385
|
-
appDomainUrl: formData?.appDomainUrl,
|
|
386
|
-
appHelpLink: formData?.appHelpLink,
|
|
387
|
-
appType: this.selectedAppTypeOption?.id,
|
|
388
|
-
features: this.tenantAppService.getFeatureIds(this.featuresOptions),
|
|
389
|
-
},
|
|
390
|
-
};
|
|
391
|
-
return payload;
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Gets create tenant form group reference and disables default features.
|
|
395
|
-
* @param {FormGroup[]} form
|
|
396
|
-
* @memberof CreateTenantApplicationComponent
|
|
397
|
-
*/
|
|
398
|
-
getCreateTenantFormGroupRef(form) {
|
|
399
|
-
this.createTenantFormGroupRef = form[0];
|
|
400
|
-
const featuresFormArray = this.createTenantFormGroupRef?.controls['features'];
|
|
401
|
-
this.featuresOptions?.forEach((option, index) => {
|
|
402
|
-
if (option?.disabled) {
|
|
403
|
-
featuresFormArray?.at(index).disable();
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* Updates createTenantFormGroupRef on add or edit tenant form change event.
|
|
409
|
-
* @param {FormGroup[]} form
|
|
410
|
-
* @memberof CreateTenantApplicationComponent
|
|
411
|
-
*/
|
|
412
|
-
onCreateTenantFormChange(form) {
|
|
413
|
-
this.createTenantFormGroupRef = form[0];
|
|
414
|
-
this.isAppLogoModified =
|
|
415
|
-
this.createTenantFormGroupRef?.controls['appLogo']?.dirty &&
|
|
416
|
-
this.tenantFunctionType === TenantFunctionType.EDIT;
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Emits form cancel event.
|
|
420
|
-
* @memberof CreateTenantApplicationComponent
|
|
421
|
-
*/
|
|
422
|
-
onFormCancel() {
|
|
423
|
-
this.formCancel.emit();
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Gets the selected file when the file is browsed and on formFileUpload event is triggered.
|
|
427
|
-
* @param {File | FileList} file
|
|
428
|
-
*/
|
|
429
|
-
onFormFileUpload(file) {
|
|
430
|
-
this.file = file;
|
|
431
|
-
}
|
|
432
|
-
/**
|
|
433
|
-
* Gets pre-signed URL to upload the selected file to AWS S3 bucket.
|
|
434
|
-
* @param {File | FileList} file
|
|
435
|
-
*/
|
|
436
|
-
getFileUploadPresignedUrl(file, appId) {
|
|
437
|
-
this.fileUploadService
|
|
438
|
-
.getFileUploadPresignedUrl(file, appId)
|
|
439
|
-
.pipe(takeUntil(this.destroy$))
|
|
440
|
-
.subscribe({
|
|
441
|
-
next: (response) => {
|
|
442
|
-
this.fileUploadPresignedUrl = response?.body;
|
|
443
|
-
if (this.fileUploadPresignedUrl)
|
|
444
|
-
this.uploadFileToS3(file);
|
|
445
|
-
},
|
|
446
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any, no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-empty-function
|
|
447
|
-
error: (error) => {
|
|
448
|
-
this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
|
|
449
|
-
},
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
/**
|
|
453
|
-
* Uploads the file to AWS S3 bucket and submit the form data to API to create new tenant.
|
|
454
|
-
* @param {File | FileList} file
|
|
455
|
-
*/
|
|
456
|
-
uploadFileToS3(file) {
|
|
457
|
-
this.fileUploadService
|
|
458
|
-
.uploadFileToS3(this.fileUploadPresignedUrl, file)
|
|
459
|
-
.pipe(takeUntil(this.destroy$))
|
|
460
|
-
.subscribe({
|
|
461
|
-
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
|
462
|
-
next: (response) => {
|
|
463
|
-
this.fileUploadService.setFileUploadStatus(true);
|
|
464
|
-
// eslint-disable-next-line no-unused-expressions
|
|
465
|
-
this.tenantFunctionType === TenantFunctionType.EDIT
|
|
466
|
-
? this.editTenant()
|
|
467
|
-
: this.createTenant();
|
|
468
|
-
},
|
|
469
|
-
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
|
470
|
-
error: (error) => {
|
|
471
|
-
this.fileUploadService.setFileUploadStatus(false);
|
|
472
|
-
this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
|
|
473
|
-
},
|
|
474
|
-
});
|
|
475
|
-
}
|
|
476
|
-
/**
|
|
477
|
-
* Triggers when the color picker values has been changed.
|
|
478
|
-
* @param {string} color
|
|
479
|
-
*/
|
|
480
|
-
onColorPickerChange(color) {
|
|
481
|
-
this.selectedColor = color;
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Triggers when the radio option has been changed.
|
|
485
|
-
* @param {RadioOption} radioOption
|
|
486
|
-
*/
|
|
487
|
-
onRadioOptionSelected(radioOption) {
|
|
488
|
-
this.selectedAppTypeOption = radioOption;
|
|
489
|
-
}
|
|
490
|
-
/**
|
|
491
|
-
* Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.
|
|
492
|
-
* @memberof CreateTenantApplicationComponent
|
|
493
|
-
*/
|
|
494
|
-
ngOnDestroy() {
|
|
495
|
-
this.destroy$.next(true);
|
|
496
|
-
this.destroy$.unsubscribe();
|
|
497
|
-
}
|
|
498
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateTenantApplicationComponent, deps: [{ token: i1.FileUploadService }, { token: i2.TenantApplicationsService }, { token: i3.SharedService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
499
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateTenantApplicationComponent, isStandalone: true, selector: "ieeesa-create-tenant-application", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, viewQueries: [{ propertyName: "dynamicFormComponent", first: true, predicate: DynamicFormComponent, descendants: true }], ngImport: i0, template: "<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($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-tenant,.ieeesa-modal-dialog.ieeesa-edit-tenant{max-width:60vw!important}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-container,.ieeesa-modal-dialog.ieeesa-edit-tenant .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-surface,.ieeesa-modal-dialog.ieeesa-edit-tenant .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-dialog-content,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal-title,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal-title{margin-left:15px!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__actions,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:.5em;padding:2em 1em .75em;margin-top:2em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding-top:0!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__content,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__content,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label{padding-left:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__resize,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__resize{resize:vertical}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field__content,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field__content{color:#1c1b1f}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo),.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:90%}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-flex,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .mat-mdc-form-field-flex{width:62.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-subscript-wrapper,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .mat-mdc-form-field-subscript-wrapper{display:none}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo),.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:100%}}\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 }); }
|
|
500
|
-
}
|
|
501
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateTenantApplicationComponent, decorators: [{
|
|
502
|
-
type: Component,
|
|
503
|
-
args: [{ selector: 'ieeesa-create-tenant-application', standalone: true, imports: [CommonModule, DynamicFormComponent], encapsulation: ViewEncapsulation.None, template: "<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($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-tenant,.ieeesa-modal-dialog.ieeesa-edit-tenant{max-width:60vw!important}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-container,.ieeesa-modal-dialog.ieeesa-edit-tenant .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-surface,.ieeesa-modal-dialog.ieeesa-edit-tenant .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-dialog-content,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal-title,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal-title{margin-left:15px!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__actions,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:.5em;padding:2em 1em .75em;margin-top:2em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding-top:0!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__content,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__content,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label{padding-left:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__resize,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__resize{resize:vertical}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field__content,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field__content{color:#1c1b1f}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-input-field:has(.mdc-text-field--disabled) .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo),.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:90%}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-flex,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .mat-mdc-form-field-flex{width:62.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-subscript-wrapper,.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .mat-mdc-form-field-subscript-wrapper{display:none}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo),.ieeesa-modal-dialog.ieeesa-edit-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:100%}}\n"] }]
|
|
504
|
-
}], ctorParameters: function () { return [{ type: i1.FileUploadService }, { type: i2.TenantApplicationsService }, { type: i3.SharedService }]; }, propDecorators: { dynamicFormComponent: [{
|
|
505
|
-
type: ViewChild,
|
|
506
|
-
args: [DynamicFormComponent]
|
|
507
|
-
}], submitFormResponse: [{
|
|
508
|
-
type: Output
|
|
509
|
-
}], formCancel: [{
|
|
510
|
-
type: Output
|
|
511
|
-
}] } });
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBR1QsZUFBZSxFQUNmLGdCQUFnQixFQUdoQixvQkFBb0IsR0FHckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBd0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFjakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7OztBQVU3RSxNQUFNLE9BQU8sZ0NBQWdDO0lBZ0MzQztJQUNFLDBDQUEwQztJQUNuQyxpQkFBb0M7SUFDM0MsMENBQTBDO0lBQ2xDLGdCQUEyQztJQUNuRCwwQ0FBMEM7SUFDbEMsYUFBNEIsQ0FBQyw2Q0FBNkM7O1FBSjNFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtRQUUzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJDdEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDbEMsOERBQThEO1FBQzlELGNBQVMsR0FBUSxXQUFXLENBQUM7UUFDN0Isc0JBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7UUFDakQsb0JBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDO1FBQ25FLGFBQVEsR0FBYSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRWhFLHNCQUFpQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFJekIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU8xQyxxQkFBZ0IsR0FBRztZQUNqQixnQkFBZ0IsQ0FBQyxHQUFHO1lBQ3BCLGdCQUFnQixDQUFDLEdBQUc7WUFDcEIsZ0JBQWdCLENBQUMsR0FBRztTQUNyQixDQUFDO1FBS0Ysc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBU3ZCLENBQUM7SUFDSixRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0I7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDRCQUE0QixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUE2QixFQUFFLEVBQUU7Z0JBQ3RDLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQzVELFFBQVEsRUFBRSxJQUFrQixDQUM3QixDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7d0JBQ3JELElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFOzRCQUN2RCxJQUNFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUNyQyxDQUFDLE9BQWlCLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssTUFBTSxFQUFFLEVBQUUsQ0FDekQsRUFDRDtnQ0FDQSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzs2QkFDdkI7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7aUJBQzVCO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUMvQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixtQkFBbUIsRUFBRTthQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUE2QixFQUFFLEVBQUU7Z0JBQ3RDLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDcEIsSUFBSSxDQUFDLGNBQWM7d0JBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FDN0MsUUFBUSxFQUFFLElBQXVCLENBQ2xDLENBQUM7b0JBQ0osSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxFQUFFO3dCQUN2RCxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTs0QkFDeEQsSUFBSSxXQUFXLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUU7Z0NBQ3hELFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dDQUMzQixJQUFJLENBQUMscUJBQXFCLEdBQUcsV0FBVyxDQUFDOzZCQUMxQztpQ0FBTTtnQ0FDTCxXQUFXLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzs2QkFDN0I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7b0JBQ0QsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7aUJBQ3hDO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUMvQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCwrQkFBK0I7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHO1lBQzNCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxNQUFNLEVBQUUsRUFBRTtvQkFDVixRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLOzRCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEdBQUcsR0FBRzs0QkFDcEQsV0FBVyxFQUFFLFVBQVU7NEJBQ3ZCLEtBQUssRUFDSCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtnQ0FDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRO2dDQUNuQyxDQUFDLENBQUMsRUFBRTs0QkFDUixVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLFFBQVE7Z0NBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQ2xCLHlCQUF5QixDQUFDLGlCQUFpQixDQUM1Qzs2QkFDRjs0QkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxRQUFROzRCQUM3RCxvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDbEQsZUFBZSxFQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0I7NEJBQ2pFLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFROzRCQUM3RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFFBQVE7eUJBQzdEO3dCQUNEOzRCQUNFLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSzs0QkFDM0IsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxLQUFLLEdBQzVDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FDN0QsRUFBRTs0QkFDRixXQUFXLEVBQUUsT0FBTzs0QkFDcEIsS0FBSyxFQUNILElBQUksQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJO2dDQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUs7Z0NBQ2hDLENBQUMsQ0FBQyxFQUFFOzRCQUNSLFVBQVUsRUFBRTtnQ0FDVixVQUFVLENBQUMsUUFBUTtnQ0FDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUM7Z0NBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDOzZCQUMzRDs0QkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7NEJBQzdELGNBQWMsRUFDWixJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtnQ0FDakQsQ0FBQyxDQUFDLEVBQUU7Z0NBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsS0FBSzs0QkFDaEQsb0JBQW9CLEVBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2xELGVBQWUsRUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYTs0QkFDOUQsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLOzRCQUN4RCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSzs0QkFDMUQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLO3lCQUMxRDt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFdBQVc7NEJBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE9BQU8sR0FBRyxHQUFHOzRCQUNuRCxXQUFXLEVBQUUsU0FBUzs0QkFDdEIsb0JBQW9CLEVBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2xELEtBQUssRUFDSCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtnQ0FDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPO2dDQUNsQyxDQUFDLENBQUMsRUFBRTs0QkFDUixXQUFXLEVBQUUsRUFBRTs0QkFDZixjQUFjLEVBQ1osSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7NEJBQ3JELGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE9BQU87NEJBQzVELFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPOzRCQUM1RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE9BQU87NEJBQzNELGlCQUFpQixFQUFFLEtBQUs7NEJBQ3hCLGlCQUFpQixFQUFFLENBQUM7NEJBQ3BCLHVCQUF1QixFQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYzs0QkFDL0QsMkJBQTJCLEVBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVc7NEJBQ3JELGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7eUJBQ3hDO3dCQUNEOzRCQUNFLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSzs0QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxHQUFHLEdBQUc7NEJBQ3RELFdBQVcsRUFBRSxZQUFZOzRCQUN6QixLQUFLLEVBQ0gsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7Z0NBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsVUFBVTtnQ0FDckMsQ0FBQyxDQUFDLEVBQUU7NEJBQ1IsVUFBVSxFQUFFO2dDQUNWLFVBQVUsQ0FBQyxRQUFRO2dDQUNuQixVQUFVLENBQUMsU0FBUyxDQUNsQix5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FDOUM7NkJBQ0Y7NEJBQ0QsY0FBYyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVTs0QkFDL0Qsb0JBQW9CLEVBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2xELGVBQWUsRUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLO2dDQUMzQyxFQUFFLGtCQUFrQjs0QkFDeEIsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLOzRCQUN4RCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVTs0QkFDL0QsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxVQUFVO3lCQUMvRDt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLFNBQVM7NEJBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGNBQWMsR0FBRyxHQUFHOzRCQUMxRCxXQUFXLEVBQUUsZ0JBQWdCOzRCQUM3QixLQUFLLEVBQ0gsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7Z0NBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYztnQ0FDekMsQ0FBQyxDQUFDLEVBQUU7NEJBQ1IsVUFBVSxFQUFFO2dDQUNWLFVBQVUsQ0FBQyxRQUFRO2dDQUNuQixVQUFVLENBQUMsU0FBUyxDQUNsQix5QkFBeUIsQ0FBQyx1QkFBdUIsQ0FDbEQ7NkJBQ0Y7NEJBQ0QsY0FBYyxFQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYzs0QkFDckQsb0JBQW9CLEVBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2xELGVBQWUsRUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLO2dDQUMzQyxFQUFFLHNCQUFzQjs0QkFDNUIsWUFBWSxFQUFFLHlCQUF5QixDQUFDLHVCQUF1Qjs0QkFDL0QsU0FBUyxFQUNQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWM7NEJBQzFELGlCQUFpQixFQUNmLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCO2dDQUM5QyxFQUFFLGNBQWM7NEJBQ3BCLGFBQWEsRUFBRSxJQUFJOzRCQUNuQixRQUFRLEVBQUUsSUFBSTt5QkFDZjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLFlBQVk7NEJBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFVBQVUsR0FBRyxHQUFHOzRCQUN0RCxXQUFXLEVBQUUsaUJBQWlCOzRCQUM5QixLQUFLLEVBQUUsRUFBRTs0QkFDVCxZQUFZLEVBQ1YsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7Z0NBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsZUFBZTtnQ0FDMUMsQ0FBQyxDQUFDLEVBQUU7NEJBQ1IsV0FBVyxFQUFFLEVBQUU7NEJBQ2YsY0FBYyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVTs0QkFDL0QsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDOzRCQUN4RCxvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDbEQsd0JBQXdCLEVBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVk7NEJBQ3RELFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVU7NEJBQzFELGlCQUFpQixFQUNmLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVTt5QkFDbEQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLOzRCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxXQUFXLEdBQUcsR0FBRzs0QkFDdkQsV0FBVyxFQUFFLGFBQWE7NEJBQzFCLEtBQUssRUFDSCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtnQ0FDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXO2dDQUN0QyxDQUFDLENBQUMsRUFBRTs0QkFDUixVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLFFBQVE7Z0NBQ25CLFVBQVUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDOzZCQUNsRDs0QkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxXQUFXOzRCQUNoRSxvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDbEQsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXOzRCQUM5RCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVzs0QkFDaEUsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxXQUFXO3lCQUNoRTt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLFFBQVE7NEJBQzlCLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxHQUFHOzRCQUN4RCxXQUFXLEVBQUUsVUFBVTs0QkFDdkIsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlOzRCQUNyQyxvQkFBb0IsRUFBRSxDQUFDOzRCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWTs0QkFDakUsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxZQUFZOzRCQUNoRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxZQUFZOzRCQUNqRSxvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDbEQsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzt5QkFDbEM7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLOzRCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsR0FBRzs0QkFDckQsV0FBVyxFQUFFLGNBQWM7NEJBQzNCLEtBQUssRUFDSCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtnQ0FDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZO2dDQUN2QyxDQUFDLENBQUMsRUFBRTs0QkFDUixVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLFFBQVE7Z0NBQ25CLFVBQVUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDOzZCQUNsRDs0QkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxTQUFTOzRCQUM5RCxvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDbEQsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZOzRCQUMvRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUzs0QkFDOUQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxTQUFTO3lCQUM5RDt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUs7NEJBQzNCLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxHQUM5QyxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQzdELEVBQUU7NEJBQ0YsV0FBVyxFQUFFLFNBQVM7NEJBQ3RCLEtBQUssRUFDSCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtnQ0FDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPO2dDQUNsQyxDQUFDLENBQUMsRUFBRTs0QkFDUixRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixLQUFLLGtCQUFrQixDQUFDLElBQUk7NEJBQzdELFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYzs0QkFDakMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDakMsb0JBQW9CLEVBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2xELFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPOzRCQUM1RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE9BQU87eUJBQzVEO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxJQUFpQjtRQUN4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLEtBQUssRUFBRTtZQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQ3RCLENBQUM7WUFDRixJQUNFLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJO2dCQUNuRCxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUN2QztnQkFDQSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNwQixJQUFJLENBQUMseUJBQXlCLENBQzVCLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQ2xDLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7U0FDRjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLFFBQThCLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQ3BDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQ2xDLENBQUM7b0JBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDeEM7WUFDSCxDQUFDO1lBQ0QsOERBQThEO1lBQzlELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQy9CLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7T0FHRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7YUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBOEIsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDO29CQUNoRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUTt3QkFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FDaEQsSUFBSSxDQUFDLHNCQUF5QyxDQUMvQyxDQUFDO29CQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3hDO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUMvQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILDhEQUE4RDtJQUM5RCxzQkFBc0IsQ0FBQyxRQUFhO1FBQ2xDLE1BQU0sT0FBTyxHQUErQjtZQUMxQyxPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRO2dCQUM1QixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7Z0JBQ3RCLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVTtnQkFDaEMsY0FBYyxFQUFFLFFBQVEsRUFBRSxjQUFjO2dCQUN4QyxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWU7Z0JBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTztnQkFDMUIsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZO2dCQUNwQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFdBQVc7Z0JBQ2xDLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBWTtnQkFDakQsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNwRTtTQUNGLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDJCQUEyQixDQUFDLElBQWlCO1FBQzNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUMvRCxVQUFVLENBQ0UsQ0FBQztRQUNmLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBc0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUN0RSxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUU7Z0JBQ3BCLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN4QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxJQUFpQjtRQUN4QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO2dCQUN6RCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFDRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsSUFBcUI7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLElBQXFCLEVBQUUsS0FBYTtRQUM1RCxJQUFJLENBQUMsaUJBQWlCO2FBQ25CLHlCQUF5QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7YUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBZ0MsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztnQkFDN0MsSUFBSSxJQUFJLENBQUMsc0JBQXNCO29CQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELDBLQUEwSztZQUMxSyxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUMvQixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsSUFBcUI7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQjthQUNuQixjQUFjLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQzthQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxpSEFBaUg7WUFDakgsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakQsaURBQWlEO2dCQUNqRCxJQUFJLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsSUFBSTtvQkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELGlIQUFpSDtZQUNqSCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQy9CLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUNEOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLFdBQXdCO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUM7SUFDM0MsQ0FBQztJQUNEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBemtCVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxtT0FXaEMsb0JBQW9CLGdEQzlEakMseXlCQWtCQSwrd2FENEJZLFlBQVksbUlBQUUsb0JBQW9COzs0RkFLakMsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUNFLGtDQUFrQyxjQUNoQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsaUJBRzlCLGlCQUFpQixDQUFDLElBQUk7NEtBY3JDLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRXJCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBbGlnblR5cGUsXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbiAgRm9ybUdyaWQsXHJcbiAgRm9ybUNvbnRyb2xUeXBlLFxyXG4gIEFsbG93ZWRGaWxlVHlwZXMsXHJcbiAgRmlsZVVwbG9hZFByZXNpZ25lZFVybCxcclxuICBSYWRpb09wdGlvbixcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICBGb3JtTW9kZWwsXHJcbiAgRmlsZVVwbG9hZFNlcnZpY2UsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL3RlbmFudC12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1TdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQgeyB2YWxpZENvbG9yVmFsaWRhdG9yIH0gZnJvbSAnbmd4LWNvbG9ycyc7XHJcbmltcG9ydCB7IEZlYXR1cmVzLCBHZXRGZWF0dXJlc1Jlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZlYXR1cmVzLm1vZGVsJztcclxuaW1wb3J0IHsgVGVuYW50QXBwbGljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbmFudC1hcHBsaWNhdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQXBwVHlwZUNvbmZpZyxcclxuICBHZXRBcHBUeXBlc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9hcHAtdHlwZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIENyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkLFxyXG4gIENyZWF0ZVRlbmFudFJlc3BvbnNlLFxyXG4gIE5ld1RlbmFudEluZm8sXHJcbiAgVGVuYW50QmFzaWNJbmZvLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy90ZW5hbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vc2hhcmVkJztcclxuaW1wb3J0IHsgVGVuYW50RnVuY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWNyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgY3JlYXRlVGVuYW50VGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uY3JlYXRlVGVuYW50O1xyXG4gIGxlZnRCdXR0b25MYWJlbCA9IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5yaWdodEJ1dHRvbkxhYmVsO1xyXG4gIGNvbFdpZHRoOiBGb3JtR3JpZCA9IHsgeHM6IDEyLCB4bDogMTIsIHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIgfTtcclxuICBjcmVhdGVUZW5hbnRGb3JtR3JvdXAhOiBGb3JtTW9kZWw7XHJcbiAgYWN0aW9uQnV0dG9uQWxpZ24gPSBBbGlnblR5cGUuTEVGVDtcclxuICBjcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWYhOiBGb3JtR3JvdXA7XHJcbiAgQFZpZXdDaGlsZChEeW5hbWljRm9ybUNvbXBvbmVudClcclxuICBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZmVhdHVyZXNPcHRpb25zITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBhcHBUeXBlT3B0aW9ucyE6IFJhZGlvT3B0aW9uW107XHJcbiAgY3JlYXRlVGVuYW50UGF5bG9hZCE6IENyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkO1xyXG4gIGZpbGVVcGxvYWRQcmVzaWduZWRVcmwhOiBzdHJpbmc7XHJcbiAgZmlsZURvd25sb2FkUHJlc2lnbmVkVXJsITogc3RyaW5nO1xyXG4gIGZpbGUhOiBGaWxlIHwgRmlsZUxpc3Q7XHJcbiAgYWxsb3dlZEZpbGVUeXBlcyA9IFtcclxuICAgIEFsbG93ZWRGaWxlVHlwZXMuSlBHLFxyXG4gICAgQWxsb3dlZEZpbGVUeXBlcy5QTkcsXHJcbiAgICBBbGxvd2VkRmlsZVR5cGVzLlNWRyxcclxuICBdO1xyXG4gIHNlbGVjdGVkQ29sb3IhOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRBcHBUeXBlT3B0aW9uITogUmFkaW9PcHRpb247XHJcbiAgdGVuYW50RnVuY3Rpb25UeXBlITogVGVuYW50RnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkVGVuYW50SW5mbyE6IFRlbmFudEJhc2ljSW5mbyB8IHVuZGVmaW5lZDtcclxuICBpc0FwcExvZ29Nb2RpZmllZCA9IGZhbHNlO1xyXG4gIHVwZGF0ZWRUZW5hbnRCYXNpY0luZm8hOiBOZXdUZW5hbnRJbmZvO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRlbmFudEFwcFNlcnZpY2U6IFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZSA9IHRoaXMudGVuYW50QXBwU2VydmljZT8uZ2V0VGVuYW50RnVuY3Rpb25UeXBlKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGVuYW50SW5mbyA9XHJcbiAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpO1xyXG4gICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5zZXRBcGlCYXNlVXJsKHRoaXMudGVuYW50QXBwU2VydmljZT8uYXBpQmFzZVVybCk7XHJcbiAgICB0aGlzLmdldEZlYXR1cmVzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgZmVhdHVyZXMgYW5kIHVwZGF0ZXMgdGhlIGZvcm0gY29udHJvbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBnZXRGZWF0dXJlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0RmVhdHVyZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0RmVhdHVyZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlc09wdGlvbnMgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0RmVhdHVyZU9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHkgYXMgRmVhdHVyZXNbXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUKVxyXG4gICAgICAgICAgICAgIHRoaXMuZmVhdHVyZXNPcHRpb25zPy5mb3JFYWNoKChvcHRpb246IENoZWNrYm94T3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvPy5mZWF0dXJlcz8uc29tZShcclxuICAgICAgICAgICAgICAgICAgICAoZmVhdHVyZTogRmVhdHVyZXMpID0+IGZlYXR1cmU/LmZlYXR1cmVJZCA9PT0gb3B0aW9uPy5pZFxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmdldEFwcGxpY2F0aW9uVHlwZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhcHBsaWNhdGlvbi90ZW5hbnQgdHlwZXMgYW5kIHVwZGF0ZXMgdGhlIGZvcm0gY29udHJvbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBnZXRBcHBsaWNhdGlvblR5cGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRBcHBsaWNhdGlvblR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEdldEFwcFR5cGVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwVHlwZU9wdGlvbnMgPVxyXG4gICAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5nZXRBcHBsaWNhdGlvblR5cGVPcHRpb25zKFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHkgYXMgQXBwVHlwZUNvbmZpZ1tdXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwVHlwZU9wdGlvbnM/LmZvckVhY2goKHJhZGlvT3B0aW9uOiBSYWRpb09wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhZGlvT3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZFRlbmFudEluZm8/LmFwcFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgcmFkaW9PcHRpb24uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBcHBUeXBlT3B0aW9uID0gcmFkaW9PcHRpb247XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByYWRpb09wdGlvbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ3JlYXRlVGVuYW50Rm9ybUdyb3VwKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgY3JlYXRlIHRlbmFudCBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGluaXRpYWxpemVDcmVhdGVUZW5hbnRGb3JtR3JvdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm1Hcm91cCA9IHtcclxuICAgICAgZm9ybUdyb3VwOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiAnJyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcHBUaXRsZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcFRpdGxlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvPy5hcHBUaXRsZVxyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy5hcHBUaXRsZU1heExlbmd0aFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwVGl0bGUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5hcHBUaXRsZU1heENoYXJzLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXBwVGl0bGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcFRpdGxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLklOUFVULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBgJHt0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwSWR9JHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVCA/ICcnIDogJyonXHJcbiAgICAgICAgICAgICAgfWAsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBJZCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZSA9PT0gVGVuYW50RnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkVGVuYW50SW5mbz8uYXBwSWRcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy5hcHBJZE1heExlbmd0aCksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oVGVuYW50c1ZhbGlkYXRpb25QYXR0ZXJucy5hbHBoYU51bWVyaWMpLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVCxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcElkLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uYXBwSWRNYXhDaGFycyxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmFwcElkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXBwSWQsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmFwcElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5GSUxFX1VQTE9BRCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcExvZ28gKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBMb2dvJyxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvPy5hcHBMb2dvXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIGlzRmlsZVNlbGVjdGVkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElULFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwTG9nbyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBMb2dvLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hcHBMb2dvLFxyXG4gICAgICAgICAgICAgIGlzTXVsdGlGaWxlVXBsb2FkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBtYXhVcGxvYWRGaWxlU2l6ZTogMixcclxuICAgICAgICAgICAgICBtYXhGaWxlU2l6ZUVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uYXBwTG9nb01heFNpemUsXHJcbiAgICAgICAgICAgICAgYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWRGaWxlLFxyXG4gICAgICAgICAgICAgIGFsbG93ZWRGaWxlVHlwZXM6IHRoaXMuYWxsb3dlZEZpbGVUeXBlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcEhlYWRpbmcgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhcHBIZWFkaW5nJyxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRUZW5hbnRJbmZvPy5hcHBIZWFkaW5nXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFwcEhlYWRpbmdNYXhMZW5ndGhcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEhlYWRpbmcsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0XHJcbiAgICAgICAgICAgICAgICAgID8uYXBwSGVhZGluZ01heENoYXJzLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZW1haWwsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBIZWFkaW5nLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hcHBIZWFkaW5nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcERlc2NyaXB0aW9uICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYXBwRGVzY3JpcHRpb24nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZFRlbmFudEluZm8/LmFwcERlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLmFwcERlc2NyaXB0aW9uTWF4TGVuZ3RoXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0XHJcbiAgICAgICAgICAgICAgICAgID8uYXBwRGVzY3JpcHRpb25NYXhDaGFycyxcclxuICAgICAgICAgICAgICBtYXhDaGFyQ291bnQ6IFRlbmFudHNWYWxpZGF0aW9uUGF0dGVybnMuYXBwRGVzY3JpcHRpb25NYXhMZW5ndGgsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXBwRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWRcclxuICAgICAgICAgICAgICAgICAgPy5hcHBEZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNPTE9SX1BJQ0tFUixcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcEJnQ29sb3IgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdiYWNrZ3JvdW5kQ29sb3InLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICBkZWZhdWx0Q29sb3I6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZSA9PT0gVGVuYW50RnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkVGVuYW50SW5mbz8uYmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwQmdDb2xvcixcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdmFsaWRDb2xvclZhbGlkYXRvcigpXSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBpbnZhbGlkQ29sb3JFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZENvbG9yLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEJnQ29sb3IsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uYXBwQmdDb2xvcixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFwcEhlbHBMaW5rICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYXBwSGVscExpbmsnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZFRlbmFudEluZm8/LmFwcEhlbHBMaW5rXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLnVybCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmFwcEhlbHBMaW5rLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uYXBwSGVscExpbmssXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBIZWxwTGluayxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYXBwSGVscExpbmssXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5mZWF0dXJlc0xpc3QgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdmZWF0dXJlcycsXHJcbiAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLmZlYXR1cmVzT3B0aW9ucyxcclxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25SZXF1aXJlZDogMSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmZlYXR1cmVzTGlzdCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZmVhdHVyZXNMaXN0LFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5zdXBwb3J0VGV4dD8uZmVhdHVyZXNMaXN0LFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmRvbWFpblVSTCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcERvbWFpblVybCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZSA9PT0gVGVuYW50RnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkVGVuYW50SW5mbz8uYXBwRG9tYWluVXJsXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihUZW5hbnRzVmFsaWRhdGlvblBhdHRlcm5zLnVybCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8uc3VwcG9ydFRleHQ/LmRvbWFpblVSTCxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmFwcERvbWFpblVybCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmRvbWFpblVSTCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZG9tYWluVVJMLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlJBRElPLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBgJHt0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXBwVHlwZX0ke1xyXG4gICAgICAgICAgICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUID8gJycgOiAnKidcclxuICAgICAgICAgICAgICB9YCxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FwcFR5cGUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZFRlbmFudEluZm8/LmFwcFR5cGVcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElULFxyXG4gICAgICAgICAgICAgIHJhZGlvT3B0aW9uczogdGhpcy5hcHBUeXBlT3B0aW9ucyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hcHBUeXBlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW5hbnRUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hcHBUeXBlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgUGF5bG9hZCBhbmQgZ2V0cyBwcmVzaWduZWQgdXJsIGZvciBmaWxlIHVwbG9hZCBvbiBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlVGVuYW50Rm9ybVN1Ym1pdChmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgZm9ybVswXT8ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKGZvcm1bMF0uc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlVGVuYW50UGF5bG9hZCA9IHRoaXMuZ2V0Q3JlYXRlVGVuYW50UGF5bG9hZChcclxuICAgICAgICBmb3JtWzBdLmdldFJhd1ZhbHVlKClcclxuICAgICAgKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMudGVuYW50RnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVCAmJlxyXG4gICAgICAgICghdGhpcy5pc0FwcExvZ29Nb2RpZmllZCB8fCAhdGhpcy5maWxlKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnQoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGUpIHtcclxuICAgICAgICB0aGlzLmdldEZpbGVVcGxvYWRQcmVzaWduZWRVcmwoXHJcbiAgICAgICAgICB0aGlzLmZpbGUsXHJcbiAgICAgICAgICBmb3JtWzBdPy5jb250cm9sc1snYXBwSWQnXT8udmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlVGVuYW50KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgdGVuYW50IG9uIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVUZW5hbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmNyZWF0ZVRlbmFudCh0aGlzLmNyZWF0ZVRlbmFudFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBDcmVhdGVUZW5hbnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2Uuc2V0TmV3VGVuYW50SW5mbyhcclxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFBheWxvYWQ/LnBheWxvYWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtUmVzcG9uc2UuZW1pdChyZXNwb25zZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgbW9kaWZpZWQgdGVuYW50IGluZm9ybWF0aW9uIG9uIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBlZGl0VGVuYW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5lZGl0VGVuYW50KHRoaXMuY3JlYXRlVGVuYW50UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IENyZWF0ZVRlbmFudFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRUZW5hbnRCYXNpY0luZm8gPSB0aGlzLmNyZWF0ZVRlbmFudFBheWxvYWQ/LnBheWxvYWQ7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFRlbmFudEJhc2ljSW5mby5mZWF0dXJlcyA9XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldEZlYXR1cmVzTGlzdCh0aGlzLmZlYXR1cmVzT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5zZXRTZWxlY3RlZFRlbmFudEluZm9ybWF0aW9uKFxyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlZFRlbmFudEJhc2ljSW5mbyBhcyBUZW5hbnRCYXNpY0luZm9cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtUmVzcG9uc2UuZW1pdChyZXNwb25zZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBjcmVhdGUgdGVuYW50IHBheWxvYWQgZnJvbSB0aGUgZm9ybSBkYXRhIGFuZCByZXR1cm5zLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIHtDcmVhdGVUZW5hbnRSZXF1ZXN0UGF5bG9hZH1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldENyZWF0ZVRlbmFudFBheWxvYWQoZm9ybURhdGE6IGFueSk6IENyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IENyZWF0ZVRlbmFudFJlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwVGl0bGU6IGZvcm1EYXRhPy5hcHBUaXRsZSxcclxuICAgICAgICBhcHBJZDogZm9ybURhdGE/LmFwcElkLFxyXG4gICAgICAgIGFwcEhlYWRpbmc6IGZvcm1EYXRhPy5hcHBIZWFkaW5nLFxyXG4gICAgICAgIGFwcERlc2NyaXB0aW9uOiBmb3JtRGF0YT8uYXBwRGVzY3JpcHRpb24sXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBmb3JtRGF0YT8uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgIGFwcExvZ286IGZvcm1EYXRhPy5hcHBMb2dvLFxyXG4gICAgICAgIGFwcERvbWFpblVybDogZm9ybURhdGE/LmFwcERvbWFpblVybCxcclxuICAgICAgICBhcHBIZWxwTGluazogZm9ybURhdGE/LmFwcEhlbHBMaW5rLFxyXG4gICAgICAgIGFwcFR5cGU6IHRoaXMuc2VsZWN0ZWRBcHBUeXBlT3B0aW9uPy5pZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgZmVhdHVyZXM6IHRoaXMudGVuYW50QXBwU2VydmljZS5nZXRGZWF0dXJlSWRzKHRoaXMuZmVhdHVyZXNPcHRpb25zKSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gcGF5bG9hZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgY3JlYXRlIHRlbmFudCBmb3JtIGdyb3VwIHJlZmVyZW5jZSBhbmQgZGlzYWJsZXMgZGVmYXVsdCBmZWF0dXJlcy5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmKGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgICBjb25zdCBmZWF0dXJlc0Zvcm1BcnJheSA9IHRoaXMuY3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmPy5jb250cm9sc1tcclxuICAgICAgJ2ZlYXR1cmVzJ1xyXG4gICAgXSBhcyBGb3JtQXJyYXk7XHJcbiAgICB0aGlzLmZlYXR1cmVzT3B0aW9ucz8uZm9yRWFjaCgob3B0aW9uOiBDaGVja2JveE9wdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAob3B0aW9uPy5kaXNhYmxlZCkge1xyXG4gICAgICAgIGZlYXR1cmVzRm9ybUFycmF5Py5hdChpbmRleCkuZGlzYWJsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBjcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWYgb24gYWRkIG9yIGVkaXQgdGVuYW50IGZvcm0gY2hhbmdlIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBvbkNyZWF0ZVRlbmFudEZvcm1DaGFuZ2UoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlVGVuYW50Rm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICAgIHRoaXMuaXNBcHBMb2dvTW9kaWZpZWQgPVxyXG4gICAgICB0aGlzLmNyZWF0ZVRlbmFudEZvcm1Hcm91cFJlZj8uY29udHJvbHNbJ2FwcExvZ28nXT8uZGlydHkgJiZcclxuICAgICAgdGhpcy50ZW5hbnRGdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyBmb3JtIGNhbmNlbCBldmVudC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgZmlsZSB3aGVuIHRoZSBmaWxlIGlzIGJyb3dzZWQgYW5kIG9uIGZvcm1GaWxlVXBsb2FkIGV2ZW50IGlzIHRyaWdnZXJlZC5cclxuICAgKiBAcGFyYW0ge0ZpbGUgfCBGaWxlTGlzdH0gZmlsZVxyXG4gICAqL1xyXG4gIG9uRm9ybUZpbGVVcGxvYWQoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHByZS1zaWduZWQgVVJMIHRvIHVwbG9hZCB0aGUgc2VsZWN0ZWQgZmlsZSB0byBBV1MgUzMgYnVja2V0LlxyXG4gICAqIEBwYXJhbSB7RmlsZSB8IEZpbGVMaXN0fSBmaWxlXHJcbiAgICovXHJcbiAgZ2V0RmlsZVVwbG9hZFByZXNpZ25lZFVybChmaWxlOiBGaWxlIHwgRmlsZUxpc3QsIGFwcElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2VcclxuICAgICAgLmdldEZpbGVVcGxvYWRQcmVzaWduZWRVcmwoZmlsZSwgYXBwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBGaWxlVXBsb2FkUHJlc2lnbmVkVXJsKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRQcmVzaWduZWRVcmwgPSByZXNwb25zZT8uYm9keTtcclxuICAgICAgICAgIGlmICh0aGlzLmZpbGVVcGxvYWRQcmVzaWduZWRVcmwpIHRoaXMudXBsb2FkRmlsZVRvUzMoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVuYW50VGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyB0aGUgZmlsZSB0byBBV1MgUzMgYnVja2V0IGFuZCBzdWJtaXQgdGhlIGZvcm0gZGF0YSB0byBBUEkgdG8gY3JlYXRlIG5ldyB0ZW5hbnQuXHJcbiAgICogQHBhcmFtIHtGaWxlIHwgRmlsZUxpc3R9IGZpbGVcclxuICAgKi9cclxuICB1cGxvYWRGaWxlVG9TMyhmaWxlOiBGaWxlIHwgRmlsZUxpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2VcclxuICAgICAgLnVwbG9hZEZpbGVUb1MzKHRoaXMuZmlsZVVwbG9hZFByZXNpZ25lZFVybCwgZmlsZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnNldEZpbGVVcGxvYWRTdGF0dXModHJ1ZSk7XHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXHJcbiAgICAgICAgICB0aGlzLnRlbmFudEZ1bmN0aW9uVHlwZSA9PT0gVGVuYW50RnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgPyB0aGlzLmVkaXRUZW5hbnQoKVxyXG4gICAgICAgICAgICA6IHRoaXMuY3JlYXRlVGVuYW50KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5zZXRGaWxlVXBsb2FkU3RhdHVzKGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRlbmFudFRleHRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIHdoZW4gdGhlIGNvbG9yIHBpY2tlciB2YWx1ZXMgaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcclxuICAgKi9cclxuICBvbkNvbG9yUGlja2VyQ2hhbmdlKGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IGNvbG9yO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB3aGVuIHRoZSByYWRpbyBvcHRpb24gaGFzIGJlZW4gY2hhbmdlZC5cclxuICAgKiBAcGFyYW0ge1JhZGlvT3B0aW9ufSByYWRpb09wdGlvblxyXG4gICAqL1xyXG4gIG9uUmFkaW9PcHRpb25TZWxlY3RlZChyYWRpb09wdGlvbjogUmFkaW9PcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRBcHBUeXBlT3B0aW9uID0gcmFkaW9PcHRpb247XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF0aW9uIG9mIG5nT25EZXN0cm95IGxpZmVjeWNsZSBob29rIG1ldGhvZCB0byB1bnN1YnNjcmliZSB0aGUgb3BlbiBvYnNlcnZhYmxlIHN1YnNjcmlwdGlvbnMuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJjcmVhdGVUZW5hbnRGb3JtR3JvdXBcIlxyXG4gIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS10ZW5hbnQtZm9ybVwiXHJcbiAgW2xlZnRCdXR0b25MYWJlbF09XCJsZWZ0QnV0dG9uTGFiZWxcIlxyXG4gIFtyaWdodEJ1dHRvbkxhYmVsXT1cInJpZ2h0QnV0dG9uTGFiZWxcIlxyXG4gIFtpc0xlZ2VuZFZpc2libGVdPVwiZmFsc2VcIlxyXG4gIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgW2FjdGlvbkJ1dHRvbkFsaWduXT1cImFjdGlvbkJ1dHRvbkFsaWduXCJcclxuICBbZm9ybUdyb3Vwc109XCJjcmVhdGVUZW5hbnRGb3JtR3JvdXBcIlxyXG4gIFtpc0xlZnRCdXR0b25OZWVkZWRdPVwidHJ1ZVwiXHJcbiAgKGZvcm1TdWJtaXQpPVwib25DcmVhdGVUZW5hbnRGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtQ2hhbmdlKT1cIm9uQ3JlYXRlVGVuYW50Rm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cIm9uRm9ybUNhbmNlbCgpXCJcclxuICAoZm9ybUdyb3Vwc1JlZmVyZW5jZSk9XCJnZXRDcmVhdGVUZW5hbnRGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgKGZvcm1GaWxlVXBsb2FkKT1cIm9uRm9ybUZpbGVVcGxvYWQoJGV2ZW50KVwiXHJcbiAgKGZvcm1Db2xvclBpY2tlckNoYW5nZSk9XCJvbkNvbG9yUGlja2VyQ2hhbmdlKCRldmVudClcIlxyXG4gIChmb3JtUmFkaW9PcHRpb25TZWxlY3RlZCk9XCJvblJhZGlvT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbj48L2llZWVzYS1keW5hbWljLWZvcm0+XHJcbiJdfQ==
|