ngx-material-entity 16.0.7 → 16.0.9
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/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +10 -5
- package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +4 -2
- package/components/input/input.component.d.ts +28 -8
- package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +12 -2
- package/components/input/relations/references-many-input/references-many-input.component.d.ts +10 -2
- package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +4 -2
- package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +12 -2
- package/components/input/string/string-password-input/string-password-input.component.d.ts +12 -0
- package/components/table/create-dialog/create-entity-dialog.component.d.ts +1 -1
- package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +1 -1
- package/components/table/table-data.builder.d.ts +2 -1
- package/components/table/table-data.d.ts +10 -0
- package/decorators/array/array-decorator-internal.data.d.ts +2 -1
- package/decorators/array/array-decorator.data.d.ts +3 -1
- package/decorators/string/string-decorator-internal.data.d.ts +3 -1
- package/decorators/string/string-decorator.data.d.ts +7 -1
- package/directives/dynamic-style-class.directive.d.ts +25 -0
- package/directives/included-in.directive.d.ts +1 -1
- package/directives/tooltip.directive.d.ts +9 -0
- package/esm2022/classes/entity.model.mjs +1 -1
- package/esm2022/components/confirm-dialog/confirm-dialog-data.builder.mjs +1 -2
- package/esm2022/components/create-page/create-data.route.mjs +1 -1
- package/esm2022/components/create-page/create-page.component.mjs +11 -10
- package/esm2022/components/create-page/page-create-data.builder.mjs +1 -2
- package/esm2022/components/edit-page/edit-data.route.mjs +1 -1
- package/esm2022/components/edit-page/edit-page.component.mjs +11 -10
- package/esm2022/components/edit-page/page-edit-data.builder.mjs +1 -2
- package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +1 -1
- package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +1 -1
- package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +1 -1
- package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +28 -15
- package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +14 -19
- package/esm2022/components/input/base-input.component.mjs +6 -2
- package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +1 -1
- package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +1 -1
- package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +1 -1
- package/esm2022/components/input/custom/custom.component.mjs +1 -1
- package/esm2022/components/input/date/date-input/date-input.component.mjs +1 -1
- package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +1 -1
- package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +1 -1
- package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +1 -1
- package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +1 -1
- package/esm2022/components/input/file/file-input/file-input.component.mjs +1 -2
- package/esm2022/components/input/input.component.mjs +72 -40
- package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +36 -8
- package/esm2022/components/input/number/number-input/number-input.component.mjs +1 -1
- package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +1 -1
- package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +29 -5
- package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +17 -10
- package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +36 -8
- package/esm2022/components/input/string/string-input/string-input.component.mjs +1 -1
- package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +57 -3
- package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +1 -1
- package/esm2022/components/table/create-dialog/create-data.builder.mjs +1 -2
- package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +4 -4
- package/esm2022/components/table/display-column-value/display-column-value.component.mjs +1 -1
- package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +1 -2
- package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +8 -7
- package/esm2022/components/table/table-data.builder.mjs +5 -3
- package/esm2022/components/table/table-data.mjs +1 -1
- package/esm2022/components/table/table.component.mjs +6 -4
- package/esm2022/decorators/array/array-decorator-internal.data.mjs +11 -3
- package/esm2022/decorators/array/array-decorator.data.mjs +1 -1
- package/esm2022/decorators/base/base-property.decorator.mjs +1 -2
- package/esm2022/decorators/custom/custom-decorator-internal.data.mjs +2 -2
- package/esm2022/decorators/custom/custom-decorator.data.mjs +1 -1
- package/esm2022/decorators/file/file-decorator-internal.data.mjs +1 -3
- package/esm2022/decorators/has-many/has-many-decorator-internal.data.mjs +1 -2
- package/esm2022/decorators/string/string-decorator-internal.data.mjs +14 -3
- package/esm2022/decorators/string/string-decorator.data.mjs +1 -1
- package/esm2022/default-global-configuration-values.mjs +1 -2
- package/esm2022/directives/dynamic-style-class.directive.mjs +51 -0
- package/esm2022/directives/included-in.directive.mjs +2 -3
- package/esm2022/directives/tooltip.directive.mjs +36 -9
- package/esm2022/encapsulation/reflect.utilities.mjs +6 -2
- package/esm2022/functions/default-style-classes.function.mjs +7 -0
- package/esm2022/functions/get-validation-error-message.function.mjs +1 -2
- package/esm2022/global-configuration-values.mjs +1 -2
- package/esm2022/mocks/placeholder-data.png.mjs +2 -2
- package/esm2022/public-api.mjs +6 -1
- package/esm2022/services/entity.service.mjs +1 -1
- package/esm2022/utilities/date.utilities.mjs +1 -2
- package/esm2022/utilities/entity.utilities.mjs +36 -35
- package/esm2022/utilities/validation.utilities.mjs +45 -15
- package/fesm2022/ngx-material-entity.mjs +521 -214
- package/fesm2022/ngx-material-entity.mjs.map +1 -1
- package/functions/default-style-classes.function.d.ts +6 -0
- package/package.json +1 -2
- package/public-api.d.ts +4 -0
- package/utilities/entity.utilities.d.ts +4 -3
- package/utilities/validation.utilities.d.ts +7 -3
|
@@ -31,17 +31,17 @@ import * as i9 from "../../services/entity.service";
|
|
|
31
31
|
/**
|
|
32
32
|
* The entity service that needs to be provided in the providers array of the create page route.
|
|
33
33
|
*/
|
|
34
|
-
// eslint-disable-next-line
|
|
34
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
35
35
|
export const NGX_CREATE_DATA_ENTITY_SERVICE = new InjectionToken('NGX_CREATE_DATA_ENTITY_SERVICE');
|
|
36
36
|
/**
|
|
37
37
|
* The entity class that needs to be provided in the providers array of the create page route.
|
|
38
38
|
*/
|
|
39
|
-
// eslint-disable-next-line
|
|
39
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
40
40
|
export const NGX_CREATE_DATA_ENTITY = new InjectionToken('NGX_CREATE_DATA_ENTITY');
|
|
41
41
|
/**
|
|
42
42
|
* The configuration that needs to be provided in the providers array of the create page route.
|
|
43
43
|
*/
|
|
44
|
-
// eslint-disable-next-line typescript/no-explicit-any
|
|
44
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
45
45
|
export const NGX_CREATE_DATA = new InjectionToken('NGX_CREATE_DATA');
|
|
46
46
|
/**
|
|
47
47
|
* A generic page that allows you to create a specific entity.
|
|
@@ -116,13 +116,12 @@ export class NgxMatEntityCreatePageComponent {
|
|
|
116
116
|
this.data = new PageCreateDataBuilder(this.inputData, this.globalConfig).getResult();
|
|
117
117
|
if (this.data == null) {
|
|
118
118
|
this.confirmNavigateBack();
|
|
119
|
-
// eslint-disable-next-line max-len
|
|
120
119
|
throw new Error('No create data was provided for "NGX_CREATE_DATA". You need to provide a value in your routes providers array.');
|
|
121
120
|
}
|
|
122
121
|
this.entity = new this.EntityClass();
|
|
123
122
|
EntityUtilities.setDefaultValues(this.entity);
|
|
124
123
|
this.entityPriorChanges = LodashUtilities.cloneDeep(this.entity);
|
|
125
|
-
this.checkIsEntityValid();
|
|
124
|
+
void this.checkIsEntityValid();
|
|
126
125
|
this.entityTabs = EntityUtilities.getEntityTabs(this.entity, this.injector, true, false);
|
|
127
126
|
setTimeout(() => this.checkOffset(), 1);
|
|
128
127
|
// setTimeout(() => this.checkEntity(), 1);
|
|
@@ -156,11 +155,11 @@ export class NgxMatEntityCreatePageComponent {
|
|
|
156
155
|
* Checks if the entity has become invalid or dirty.
|
|
157
156
|
*/
|
|
158
157
|
async checkEntity() {
|
|
159
|
-
this.checkIsEntityValid();
|
|
158
|
+
await this.checkIsEntityValid();
|
|
160
159
|
this.isEntityDirty = await EntityUtilities.isDirty(this.entity, this.entityPriorChanges, this.http);
|
|
161
160
|
}
|
|
162
|
-
checkIsEntityValid() {
|
|
163
|
-
this.validationErrors = ValidationUtilities.getEntityValidationErrors(this.entity, 'create');
|
|
161
|
+
async checkIsEntityValid() {
|
|
162
|
+
this.validationErrors = await ValidationUtilities.getEntityValidationErrors(this.entity, this.injector, 'create');
|
|
164
163
|
this.tooltipContent = runInInjectionContext(this.injector, () => getValidationErrorsTooltipContent(this.validationErrors));
|
|
165
164
|
this.isEntityValid = this.validationErrors.length === 0;
|
|
166
165
|
}
|
|
@@ -176,7 +175,6 @@ export class NgxMatEntityCreatePageComponent {
|
|
|
176
175
|
this.confirmCreate();
|
|
177
176
|
return;
|
|
178
177
|
}
|
|
179
|
-
// eslint-disable-next-line max-len
|
|
180
178
|
const dialogData = new ConfirmDialogDataBuilder(this.globalConfig, this.data.createData.confirmCreateDialogData)
|
|
181
179
|
.withDefault('text', this.globalConfig.confirmCreateText)
|
|
182
180
|
.withDefault('confirmButtonLabel', this.globalConfig.createLabel)
|
|
@@ -235,6 +233,9 @@ export class NgxMatEntityCreatePageComponent {
|
|
|
235
233
|
isReadOnly(key) {
|
|
236
234
|
return runInInjectionContext(this.injector, () => {
|
|
237
235
|
const metadata = EntityUtilities.getPropertyMetadata(this.entity, key);
|
|
236
|
+
if (!metadata) {
|
|
237
|
+
throw new Error(`No metadata was found for the key "${String(key)}"`);
|
|
238
|
+
}
|
|
238
239
|
return metadata.isReadOnly(this.entity);
|
|
239
240
|
});
|
|
240
241
|
}
|
|
@@ -272,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
272
273
|
type: HostListener,
|
|
273
274
|
args: ['window:scroll']
|
|
274
275
|
}] } });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jcmVhdGUtcGFnZS9jcmVhdGUtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NyZWF0ZS1wYWdlL2NyZWF0ZS1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0osT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQWMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5QyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFF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QUN2Qix3QkFBd0Isa09BQ3hCLGNBQWMsNFBBQ2QsZ0JBQWdCOzsyRkFHWCwrQkFBK0I7a0JBaEIzQyxTQUFTOytCQUNJLDRCQUE0QixjQUcxQixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ25COzswQkF5REksTUFBTTsyQkFBQyw4QkFBOEI7OzBCQUVyQyxNQUFNOzJCQUFDLHNCQUFzQjs7MEJBRTdCLE1BQU07MkJBQUMsZUFBZTs7MEJBS3RCLE1BQU07MkJBQUMsa0NBQWtDOzRDQTJCOUMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQjtnQkFTbkMsV0FBVztzQkFEVixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRW52aXJvbm1lbnRJbmplY3RvciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdGlvblRva2VuLCBPbkluaXQsIFJlbmRlcmVyMiwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9iYXNlL3Byb3BlcnR5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdGlvbkVycm9yc1Rvb2x0aXBDb250ZW50IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2dldC12YWxpZGF0aW9uLWVycm9ycy10b29sdGlwLWNvbnRlbnQuZnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5VGFiLCBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25VdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdmFsaWRhdGlvbi51dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE5neE1hdEVudGl0eUlucHV0TW9kdWxlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURhdGEgfSBmcm9tICcuLi90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ3JlYXRlRGF0YSB9IGZyb20gJy4uL3RhYmxlL3RhYmxlLWRhdGEnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnZUNyZWF0ZURhdGFCdWlsZGVyLCBQYWdlQ3JlYXRlRGF0YUludGVybmFsIH0gZnJvbSAnLi9wYWdlLWNyZWF0ZS1kYXRhLmJ1aWxkZXInO1xuXG4vKipcbiAqIFRoZSBkYXRhIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgZm9yIGEgcm91dGUgdG8gYmUgYWJsZSB0byBjcmVhdGUgYSBlbnRpdHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5leHBvcnQgdHlwZSBQYWdlQ3JlYXRlRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+ID0gT21pdDxDcmVhdGVFbnRpdHlEYXRhPEVudGl0eVR5cGU+LCAnZW50aXR5JyB8ICdFbnRpdHlTZXJ2aWNlQ2xhc3MnPiAmIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IGEgbG9hZGluZyBzcGlubmVyIHdoaWxlIHRoZSBkYXRhIGZvciB0aGUgcGFnZSBpcyBsb2FkZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgY3JlYXRlIHBhZ2UuXG4gICAgICovXG4gICAgY3JlYXRlRGF0YT86IENyZWF0ZURhdGEgJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRpYWxvZyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGxlYXZlIHRoZSBzaXRlIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgbGVhdmluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nPzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGVudGl0eSBzZXJ2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgY3JlYXRlIHBhZ2Ugcm91dGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuLCB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueSwgY29uc3RDYXNlL3VwcGVyY2FzZVxuZXhwb3J0IGNvbnN0IE5HWF9DUkVBVEVfREFUQV9FTlRJVFlfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48RW50aXR5U2VydmljZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlTZXJ2aWNlPGFueT4+KCdOR1hfQ1JFQVRFX0RBVEFfRU5USVRZX1NFUlZJQ0UnKTtcbi8qKlxuICogVGhlIGVudGl0eSBjbGFzcyB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgb2YgdGhlIGNyZWF0ZSBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnksIGNvbnN0Q2FzZS91cHBlcmNhc2VcbmV4cG9ydCBjb25zdCBOR1hfQ1JFQVRFX0RBVEFfRU5USVRZOiBJbmplY3Rpb25Ub2tlbjxFbnRpdHlDbGFzc05ld2FibGU8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5Q2xhc3NOZXdhYmxlPGFueT4+KCdOR1hfQ1JFQVRFX0RBVEFfRU5USVRZJyk7XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgY3JlYXRlIHBhZ2Ugcm91dGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueSwgY29uc3RDYXNlL3VwcGVyY2FzZVxuZXhwb3J0IGNvbnN0IE5HWF9DUkVBVEVfREFUQTogSW5qZWN0aW9uVG9rZW48UGFnZUNyZWF0ZURhdGE8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFnZUNyZWF0ZURhdGE8YW55Pj4oJ05HWF9DUkVBVEVfREFUQScpO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBwYWdlIHRoYXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBzcGVjaWZpYyBlbnRpdHkuXG4gKiBGb3IgdGhpcyB0byB3b3JrIHlvdSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktY3JlYXRlLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNyZWF0ZVBhZ2VDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWlucyBIZWxwZXJNZXRob2RzIGFyb3VuZCBoYW5kbGluZyBFbnRpdGllcyBhbmQgdGhlaXIgcHJvcGVydHktbWV0YWRhdGEuXG4gICAgICovXG4gICAgRW50aXR5VXRpbGl0aWVzOiB0eXBlb2YgRW50aXR5VXRpbGl0aWVzID0gRW50aXR5VXRpbGl0aWVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRhYnMgdG8gZGlzcGxheS5cbiAgICAgKi9cbiAgICBlbnRpdHlUYWJzITogRW50aXR5VGFiPEVudGl0eVR5cGU+W107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5IHRvIGNyZWF0ZS5cbiAgICAgKi9cbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdHkgYmVmb3JlIGFueSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlLlxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgbGVhdmluZyB0aGUgcGFnZSBpcyBwb3NzaWJsZSB3aXRob3V0IGludGVycnVwdGlvbi5cbiAgICAgKi9cbiAgICBlbnRpdHlQcmlvckNoYW5nZXMhOiBFbnRpdHlUeXBlO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBkYXRhIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBkYXRhITogUGFnZUNyZWF0ZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIEFsbCB2YWxpZGF0aW9uIGVycm9ycyBvZiB0aGUgZW50aXR5LlxuICAgICAqL1xuICAgIHZhbGlkYXRpb25FcnJvcnMhOiBWYWxpZGF0aW9uRXJyb3JbXTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW50aXR5IGlzIHZhbGlkLlxuICAgICAqL1xuICAgIGlzRW50aXR5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW50aXR5IGlzIGRpcnR5LlxuICAgICAqL1xuICAgIGlzRW50aXR5RGlydHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSB0b29sdGlwLlxuICAgICAqL1xuICAgIHRvb2x0aXBDb250ZW50OiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgaW5Db25maXJtTmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBnZXQgaGFzVW5zYXZlZENoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRW50aXR5RGlydHkgJiYgdGhpcy5kYXRhLmNyZWF0ZURhdGEudW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoTkdYX0NSRUFURV9EQVRBX0VOVElUWV9TRVJWSUNFKVxuICAgICAgICByZWFkb25seSBlbnRpdHlTZXJ2aWNlOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgICAgICBASW5qZWN0KE5HWF9DUkVBVEVfREFUQV9FTlRJVFkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfQ1JFQVRFX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBQYWdlQ3JlYXRlRGF0YTxFbnRpdHlUeXBlPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoTkdYX0lOVEVSTkFMX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBhZ2VDcmVhdGVEYXRhQnVpbGRlcih0aGlzLmlucHV0RGF0YSwgdGhpcy5nbG9iYWxDb25maWcpLmdldFJlc3VsdCgpO1xuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY3JlYXRlIGRhdGEgd2FzIHByb3ZpZGVkIGZvciBcIk5HWF9DUkVBVEVfREFUQVwiLiBZb3UgbmVlZCB0byBwcm92aWRlIGEgdmFsdWUgaW4geW91ciByb3V0ZXMgcHJvdmlkZXJzIGFycmF5LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbnRpdHkgPSBuZXcgdGhpcy5FbnRpdHlDbGFzcygpO1xuICAgICAgICBFbnRpdHlVdGlsaXRpZXMuc2V0RGVmYXVsdFZhbHVlcyh0aGlzLmVudGl0eSk7XG4gICAgICAgIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzID0gTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLmVudGl0eSk7XG4gICAgICAgIHRoaXMuY2hlY2tJc0VudGl0eVZhbGlkKCk7XG5cbiAgICAgICAgdGhpcy5lbnRpdHlUYWJzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVRhYnModGhpcy5lbnRpdHksIHRoaXMuaW5qZWN0b3IsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrT2Zmc2V0KCksIDEpO1xuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tFbnRpdHkoKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbiAob2YgdW5zYXZlZCBjaGFuZ2VzKS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMgfHwgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgYm90dG9tIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGZpeGVkLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIGNoZWNrT2Zmc2V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JvbGxZOiBudW1iZXIgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgY29uc3QgYm90dG9tUm93OiBIVE1MRWxlbWVudCB8IG51bGwgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuYm90dG9tLXJvdycpO1xuICAgICAgICBjb25zdCBib3R0b21Sb3dDb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9ICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJy5ib3R0b20tcm93LWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChib3R0b21Sb3cgJiYgYm90dG9tUm93Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBib3R0b21Sb3dDb250YWluZXJPZmZzZXQ6IG51bWJlciA9IGJvdHRvbVJvd0NvbnRhaW5lci5vZmZzZXRUb3A7XG4gICAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQ6IG51bWJlciA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICAgICAgaWYgKHNjcm9sbFkgKyB3aW5kb3dIZWlnaHQgPj0gYm90dG9tUm93Q29udGFpbmVyT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhib3R0b21Sb3csICdmaXhlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhib3R0b21Sb3csICdmaXhlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBlbnRpdHkgaGFzIGJlY29tZSBpbnZhbGlkIG9yIGRpcnR5LlxuICAgICAqL1xuICAgIGFzeW5jIGNoZWNrRW50aXR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmNoZWNrSXNFbnRpdHlWYWxpZCgpO1xuICAgICAgICB0aGlzLmlzRW50aXR5RGlydHkgPSBhd2FpdCBFbnRpdHlVdGlsaXRpZXMuaXNEaXJ0eSh0aGlzLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMsIHRoaXMuaHR0cCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lzRW50aXR5VmFsaWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IFZhbGlkYXRpb25VdGlsaXRpZXMuZ2V0RW50aXR5VmFsaWRhdGlvbkVycm9ycyh0aGlzLmVudGl0eSwgJ2NyZWF0ZScpO1xuICAgICAgICB0aGlzLnRvb2x0aXBDb250ZW50ID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IGdldFZhbGlkYXRpb25FcnJvcnNUb29sdGlwQ29udGVudCh0aGlzLnZhbGlkYXRpb25FcnJvcnMpKTtcbiAgICAgICAgdGhpcy5pc0VudGl0eVZhbGlkID0gdGhpcy52YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyBjcmVhdGUgdGhlIGVudGl0eSBhbmQgbmF2aWdhdGUgYmFjayBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRW50aXR5VmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5jcmVhdGVEYXRhLmNyZWF0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtQ3JlYXRlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIHRoaXMuZGF0YS5jcmVhdGVEYXRhLmNvbmZpcm1DcmVhdGVEaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgdGhpcy5nbG9iYWxDb25maWcuY29uZmlybUNyZWF0ZVRleHQpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmNyZWF0ZUxhYmVsKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuZ2xvYmFsQ29uZmlnLmNyZWF0ZUxhYmVsKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybUNyZWF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1DcmVhdGUoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLmNyZWF0ZSh0aGlzLmVudGl0eSkudGhlbigoKSA9PiB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gbmF2aWdhdGUgYmFjay5cbiAgICAgKi9cbiAgICBuYXZpZ2F0ZUJhY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW5Db25maXJtTmF2aWdhdGlvbkRpYWxvZygpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyB0aGUgY29uZmlybSBkaWFsb2cgZm9yIG5hdmlnYXRpbmcgd2l0aCB1bnNhdmVkIGNoYW5nZXMuXG4gICAgICogVGhpcyBpcyBleHBvc2VkIGJlY2F1c2UgdGhlIFVuc2F2ZWRDaGFuZ2VzR3VhcmQgbmVlZHMgdG8gYWNjZXNzIHRoaXMuXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IG9ic2VydmFibGUgcmVzdWx0IG9mIHRoZSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBvcGVuQ29uZmlybU5hdmlnYXRpb25EaWFsb2coKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEuY3JlYXRlRGF0YS5jb25maXJtVW5zYXZlZENoYW5nZXNEaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5waXBlKGZpcnN0KCksIG1hcChwID0+IChwID8/IGZhbHNlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybU5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBpbnB1dCB3aXRoIHRoZSBnaXZlbiBrZXkgaXMgcmVhZG9ubHkuXG4gICAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgZm9yIHRoZSBpbnB1dCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZm9yIHRoZSBrZXkgaXMgcmVhZCBvbmx5LlxuICAgICAqL1xuICAgIGlzUmVhZE9ubHkoa2V5OiBrZXlvZiBFbnRpdHlUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGE6IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8dW5rbm93bj4gPSBFbnRpdHlVdGlsaXRpZXMuZ2V0UHJvcGVydHlNZXRhZGF0YSh0aGlzLmVudGl0eSwga2V5KTtcbiAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YS5pc1JlYWRPbmx5KHRoaXMuZW50aXR5KTtcbiAgICAgICAgfSk7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48IS0tIGVzbGludC1kaXNhYmxlIGFuZ3VsYXIvY3ljbG9tYXRpYy1jb21wbGV4aXR5IC0tPlxuPGRpdiAqbmdJZj1cIiFlbnRpdHlUYWJzICYmIGRhdGEuZGlzcGxheUxvYWRpbmdTcGlubmVyXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8YnI+XG4gICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XG4gICAgPGJyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJlbnRpdHlUYWJzXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8YnI+XG5cbiAgICA8IS0tLS0tLS0tLS0tLT5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8IS0tLS0tLS0tLS0tLT5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYW5jZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImJhY2stYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIFtjbGFzcy51bnNhdmVkQ2hhbmdlc109XCJoYXNVbnNhdmVkQ2hhbmdlc1wiIChjbGljayk9XCJuYXZpZ2F0ZUJhY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICB7e2RhdGEuY3JlYXRlRGF0YS5jYW5jZWxCdXR0b25MYWJlbH19XG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoYXNVbnNhdmVkQ2hhbmdlc1wiIGNsYXNzPVwiZmFzIGZhLXdhcm5pbmdcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8aDE+e3tkYXRhLmNyZWF0ZURhdGEudGl0bGV9fTwvaDE+XG5cbiAgICA8IS0tLS0tLS0tLS0tPlxuICAgIDwhLS0gSW5wdXQgLS0+XG4gICAgPCEtLS0tLS0tLS0tLT5cbiAgICA8Zm9ybT5cbiAgICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJlbnRpdHlUYWJzLmxlbmd0aCA+IDFcIiBwcmVzZXJ2ZUNvbnRlbnQgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cImNoZWNrT2Zmc2V0KClcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgZW50aXR5VGFic1wiIFtsYWJlbF09XCJ0YWIudGFiTmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWIucm93c1wiIGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiByb3cua2V5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiRW50aXR5VXRpbGl0aWVzLmdldFdpZHRoQ2xhc3NlcyhlbnRpdHksIGtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrRW50aXR5KClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICBcbiAgICAgICAgPGRpdiAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoIDw9IDFcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWVudGl0eVRhYnMubGVuZ3RoXCIgY2xhc3M9XCJuby1lbnRpdHktdGFic1wiPlxuICAgICAgICAgICAgICAgIEVSUk9SOiBObyBJbnB1dHMuIERpZCB5b3UgY29ycmVjdGx5IGFzc2lnbiBhbGwgdmFsdWVzIGluIHRoZSBtb2RlbCBjb25zdHJ1Y3Rvcj9cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBlbnRpdHlUYWJzWzBdPy5yb3dzXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiByb3cua2V5c1wiXG4gICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgICAgW3Byb3BlcnR5S2V5XT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGhDbGFzc2VzKGVudGl0eSwga2V5KVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHkoa2V5KVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrRW50aXR5KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L25neC1tYXQtZW50aXR5LWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tcm93LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1yb3cgY29udGFpbmVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VudGl0eVZhbGlkIHx8ICFpc0VudGl0eURpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiF2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7e2RhdGEuY3JlYXRlRGF0YS5jcmVhdGVCdXR0b25MYWJlbH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LXRvb2x0aXAgKm5nSWY9XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aFwiIFt0b29sdGlwQ29udGVudF09XCJ0b29sdGlwQ29udGVudFwiPjwvbmd4LW1hdC1lbnRpdHktdG9vbHRpcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8YnI+XG48L2Rpdj4iXX0=
|
|
276
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jcmVhdGUtcGFnZS9jcmVhdGUtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NyZWF0ZS1wYWdlL2NyZWF0ZS1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0osT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQWMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5QyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFF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c0IsYUFFdEIsZUFBZSwwRkFLZixrQ0FBa0M7MkZBaEVyQywrQkFBK0IsMkxDeEY1QyxvMEdBaUZNLHV3QkRIRSxJQUFJLDZGQUNKLEtBQUssa0hBQ0wsZUFBZSwyUUFDZixhQUFhLHdUQUNiLHVCQUF1QiwrUkFDdkIsd0JBQXdCLGtPQUN4QixjQUFjLDRQQUNkLGdCQUFnQjs7MkZBR1gsK0JBQStCO2tCQWhCM0MsU0FBUzsrQkFDSSw0QkFBNEIsY0FHMUIsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNuQjs7MEJBeURJLE1BQU07MkJBQUMsOEJBQThCOzswQkFFckMsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUU3QixNQUFNOzJCQUFDLGVBQWU7OzBCQUt0QixNQUFNOzJCQUFDLGtDQUFrQzs0Q0EyQjlDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxxQkFBcUI7Z0JBU25DLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24sIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT25Jbml0LCBSZW5kZXJlcjIsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5Q2xhc3NOZXdhYmxlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvYmFzZS9wcm9wZXJ0eS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IGdldFZhbGlkYXRpb25FcnJvcnNUb29sdGlwQ29udGVudCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9nZXQtdmFsaWRhdGlvbi1lcnJvcnMtdG9vbHRpcC1jb250ZW50LmZ1bmN0aW9uLnRzJztcbmltcG9ydCB7IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVRhYiwgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3ZhbGlkYXRpb24udXRpbGl0aWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlJbnB1dE1vZHVsZSB9IGZyb20gJy4uL2lucHV0L2lucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBDcmVhdGVFbnRpdHlEYXRhIH0gZnJvbSAnLi4vdGFibGUvY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENyZWF0ZURhdGEgfSBmcm9tICcuLi90YWJsZS90YWJsZS1kYXRhJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VDcmVhdGVEYXRhQnVpbGRlciwgUGFnZUNyZWF0ZURhdGFJbnRlcm5hbCB9IGZyb20gJy4vcGFnZS1jcmVhdGUtZGF0YS5idWlsZGVyJztcblxuLyoqXG4gKiBUaGUgZGF0YSB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGZvciBhIHJvdXRlIHRvIGJlIGFibGUgdG8gY3JlYXRlIGEgZW50aXR5LlxuICovXG5leHBvcnQgdHlwZSBQYWdlQ3JlYXRlRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+ID0gT21pdDxDcmVhdGVFbnRpdHlEYXRhPEVudGl0eVR5cGU+LCAnZW50aXR5JyB8ICdFbnRpdHlTZXJ2aWNlQ2xhc3MnPiAmIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkaXNwbGF5IGEgbG9hZGluZyBzcGlubmVyIHdoaWxlIHRoZSBkYXRhIGZvciB0aGUgcGFnZSBpcyBsb2FkZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgY3JlYXRlIHBhZ2UuXG4gICAgICovXG4gICAgY3JlYXRlRGF0YT86IENyZWF0ZURhdGEgJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRpYWxvZyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGxlYXZlIHRoZSBzaXRlIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgbGVhdmluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nPzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGVudGl0eSBzZXJ2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgY3JlYXRlIHBhZ2Ugcm91dGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IE5HWF9DUkVBVEVfREFUQV9FTlRJVFlfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48RW50aXR5U2VydmljZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlTZXJ2aWNlPGFueT4+KCdOR1hfQ1JFQVRFX0RBVEFfRU5USVRZX1NFUlZJQ0UnKTtcbi8qKlxuICogVGhlIGVudGl0eSBjbGFzcyB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgb2YgdGhlIGNyZWF0ZSBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjb25zdCBOR1hfQ1JFQVRFX0RBVEFfRU5USVRZOiBJbmplY3Rpb25Ub2tlbjxFbnRpdHlDbGFzc05ld2FibGU8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5Q2xhc3NOZXdhYmxlPGFueT4+KCdOR1hfQ1JFQVRFX0RBVEFfRU5USVRZJyk7XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgY3JlYXRlIHBhZ2Ugcm91dGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IE5HWF9DUkVBVEVfREFUQTogSW5qZWN0aW9uVG9rZW48UGFnZUNyZWF0ZURhdGE8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFnZUNyZWF0ZURhdGE8YW55Pj4oJ05HWF9DUkVBVEVfREFUQScpO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBwYWdlIHRoYXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBzcGVjaWZpYyBlbnRpdHkuXG4gKiBGb3IgdGhpcyB0byB3b3JrIHlvdSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktY3JlYXRlLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNyZWF0ZVBhZ2VDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWlucyBIZWxwZXJNZXRob2RzIGFyb3VuZCBoYW5kbGluZyBFbnRpdGllcyBhbmQgdGhlaXIgcHJvcGVydHktbWV0YWRhdGEuXG4gICAgICovXG4gICAgRW50aXR5VXRpbGl0aWVzOiB0eXBlb2YgRW50aXR5VXRpbGl0aWVzID0gRW50aXR5VXRpbGl0aWVzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRhYnMgdG8gZGlzcGxheS5cbiAgICAgKi9cbiAgICBlbnRpdHlUYWJzITogRW50aXR5VGFiPEVudGl0eVR5cGU+W107XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5IHRvIGNyZWF0ZS5cbiAgICAgKi9cbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdHkgYmVmb3JlIGFueSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlLlxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgbGVhdmluZyB0aGUgcGFnZSBpcyBwb3NzaWJsZSB3aXRob3V0IGludGVycnVwdGlvbi5cbiAgICAgKi9cbiAgICBlbnRpdHlQcmlvckNoYW5nZXMhOiBFbnRpdHlUeXBlO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBkYXRhIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBkYXRhITogUGFnZUNyZWF0ZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIC8qKlxuICAgICAqIEFsbCB2YWxpZGF0aW9uIGVycm9ycyBvZiB0aGUgZW50aXR5LlxuICAgICAqL1xuICAgIHZhbGlkYXRpb25FcnJvcnMhOiBWYWxpZGF0aW9uRXJyb3JbXTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW50aXR5IGlzIHZhbGlkLlxuICAgICAqL1xuICAgIGlzRW50aXR5VmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW50aXR5IGlzIGRpcnR5LlxuICAgICAqL1xuICAgIGlzRW50aXR5RGlydHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSB0b29sdGlwLlxuICAgICAqL1xuICAgIHRvb2x0aXBDb250ZW50OiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgaW5Db25maXJtTmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBnZXQgaGFzVW5zYXZlZENoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRW50aXR5RGlydHkgJiYgdGhpcy5kYXRhLmNyZWF0ZURhdGEudW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoTkdYX0NSRUFURV9EQVRBX0VOVElUWV9TRVJWSUNFKVxuICAgICAgICByZWFkb25seSBlbnRpdHlTZXJ2aWNlOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgICAgICBASW5qZWN0KE5HWF9DUkVBVEVfREFUQV9FTlRJVFkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfQ1JFQVRFX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBQYWdlQ3JlYXRlRGF0YTxFbnRpdHlUeXBlPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBJbmplY3QoTkdYX0lOVEVSTkFMX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBhZ2VDcmVhdGVEYXRhQnVpbGRlcih0aGlzLmlucHV0RGF0YSwgdGhpcy5nbG9iYWxDb25maWcpLmdldFJlc3VsdCgpO1xuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNyZWF0ZSBkYXRhIHdhcyBwcm92aWRlZCBmb3IgXCJOR1hfQ1JFQVRFX0RBVEFcIi4gWW91IG5lZWQgdG8gcHJvdmlkZSBhIHZhbHVlIGluIHlvdXIgcm91dGVzIHByb3ZpZGVycyBhcnJheS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW50aXR5ID0gbmV3IHRoaXMuRW50aXR5Q2xhc3MoKTtcbiAgICAgICAgRW50aXR5VXRpbGl0aWVzLnNldERlZmF1bHRWYWx1ZXModGhpcy5lbnRpdHkpO1xuICAgICAgICB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5lbnRpdHkpO1xuICAgICAgICB2b2lkIHRoaXMuY2hlY2tJc0VudGl0eVZhbGlkKCk7XG5cbiAgICAgICAgdGhpcy5lbnRpdHlUYWJzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVRhYnModGhpcy5lbnRpdHksIHRoaXMuaW5qZWN0b3IsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrT2Zmc2V0KCksIDEpO1xuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tFbnRpdHkoKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbiAob2YgdW5zYXZlZCBjaGFuZ2VzKS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMgfHwgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgYm90dG9tIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGZpeGVkLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIGNoZWNrT2Zmc2V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JvbGxZOiBudW1iZXIgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgY29uc3QgYm90dG9tUm93OiBIVE1MRWxlbWVudCB8IG51bGwgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuYm90dG9tLXJvdycpO1xuICAgICAgICBjb25zdCBib3R0b21Sb3dDb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9ICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJy5ib3R0b20tcm93LWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChib3R0b21Sb3cgJiYgYm90dG9tUm93Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBib3R0b21Sb3dDb250YWluZXJPZmZzZXQ6IG51bWJlciA9IGJvdHRvbVJvd0NvbnRhaW5lci5vZmZzZXRUb3A7XG4gICAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQ6IG51bWJlciA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICAgICAgaWYgKHNjcm9sbFkgKyB3aW5kb3dIZWlnaHQgPj0gYm90dG9tUm93Q29udGFpbmVyT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhib3R0b21Sb3csICdmaXhlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhib3R0b21Sb3csICdmaXhlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBlbnRpdHkgaGFzIGJlY29tZSBpbnZhbGlkIG9yIGRpcnR5LlxuICAgICAqL1xuICAgIGFzeW5jIGNoZWNrRW50aXR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSXNFbnRpdHlWYWxpZCgpO1xuICAgICAgICB0aGlzLmlzRW50aXR5RGlydHkgPSBhd2FpdCBFbnRpdHlVdGlsaXRpZXMuaXNEaXJ0eSh0aGlzLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMsIHRoaXMuaHR0cCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja0lzRW50aXR5VmFsaWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IGF3YWl0IFZhbGlkYXRpb25VdGlsaXRpZXMuZ2V0RW50aXR5VmFsaWRhdGlvbkVycm9ycyh0aGlzLmVudGl0eSwgdGhpcy5pbmplY3RvciwgJ2NyZWF0ZScpO1xuICAgICAgICB0aGlzLnRvb2x0aXBDb250ZW50ID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IGdldFZhbGlkYXRpb25FcnJvcnNUb29sdGlwQ29udGVudCh0aGlzLnZhbGlkYXRpb25FcnJvcnMpKTtcbiAgICAgICAgdGhpcy5pc0VudGl0eVZhbGlkID0gdGhpcy52YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyBjcmVhdGUgdGhlIGVudGl0eSBhbmQgbmF2aWdhdGUgYmFjayBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRW50aXR5VmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZGF0YS5jcmVhdGVEYXRhLmNyZWF0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtQ3JlYXRlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgdGhpcy5kYXRhLmNyZWF0ZURhdGEuY29uZmlybUNyZWF0ZURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCB0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtQ3JlYXRlVGV4dClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgnY29uZmlybUJ1dHRvbkxhYmVsJywgdGhpcy5nbG9iYWxDb25maWcuY3JlYXRlTGFiZWwpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgdGhpcy5nbG9iYWxDb25maWcuY3JlYXRlTGFiZWwpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtQ3JlYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybUNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UuY3JlYXRlKHRoaXMuZW50aXR5KS50aGVuKCgpID0+IHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBuYXZpZ2F0ZSBiYWNrLlxuICAgICAqL1xuICAgIG5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbkNvbmZpcm1OYXZpZ2F0aW9uRGlhbG9nKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBjb25maXJtIGRpYWxvZyBmb3IgbmF2aWdhdGluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcy5cbiAgICAgKiBUaGlzIGlzIGV4cG9zZWQgYmVjYXVzZSB0aGUgVW5zYXZlZENoYW5nZXNHdWFyZCBuZWVkcyB0byBhY2Nlc3MgdGhpcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgZmlyc3Qgb2JzZXJ2YWJsZSByZXN1bHQgb2YgdGhlIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIG9wZW5Db25maXJtTmF2aWdhdGlvbkRpYWxvZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YS5jcmVhdGVEYXRhLmNvbmZpcm1VbnNhdmVkQ2hhbmdlc0RpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnBpcGUoZmlyc3QoKSwgbWFwKHAgPT4gKHAgPz8gZmFsc2UpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtTmF2aWdhdGVCYWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluQ29uZmlybU5hdmlnYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGtleSBpcyByZWFkb25seS5cbiAgICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBmb3IgdGhlIGlucHV0IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCBmb3IgdGhlIGtleSBpcyByZWFkIG9ubHkuXG4gICAgICovXG4gICAgaXNSZWFkT25seShrZXk6IGtleW9mIEVudGl0eVR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YTogUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDx1bmtub3duPiB8IHVuZGVmaW5lZCA9IEVudGl0eVV0aWxpdGllcy5nZXRQcm9wZXJ0eU1ldGFkYXRhKHRoaXMuZW50aXR5LCBrZXkpO1xuICAgICAgICAgICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbWV0YWRhdGEgd2FzIGZvdW5kIGZvciB0aGUga2V5IFwiJHtTdHJpbmcoa2V5KX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhLmlzUmVhZE9ubHkodGhpcy5lbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG59IiwiPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL25vLWNhbGwtZXhwcmVzc2lvbiAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9jeWNsb21hdGljLWNvbXBsZXhpdHkgLS0+XG48ZGl2ICpuZ0lmPVwiIWVudGl0eVRhYnMgJiYgZGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXJcIiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxicj5cbiAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8YnI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVudGl0eVRhYnNcIiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxicj5cblxuICAgIDwhLS0tLS0tLS0tLS0tPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDwhLS0tLS0tLS0tLS0tPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbmNlbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiYmFjay1idXR0b25cIiB0YWJpbmRleD1cIi0xXCIgW2NsYXNzLnVuc2F2ZWRDaGFuZ2VzXT1cImhhc1Vuc2F2ZWRDaGFuZ2VzXCIgKGNsaWNrKT1cIm5hdmlnYXRlQmFjaygpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5jcmVhdGVEYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhhc1Vuc2F2ZWRDaGFuZ2VzXCIgY2xhc3M9XCJmYXMgZmEtd2FybmluZ1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxoMT57e2RhdGEuY3JlYXRlRGF0YS50aXRsZX19PC9oMT5cblxuICAgIDwhLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8IS0tLS0tLS0tLS0tPlxuICAgIDxmb3JtPlxuICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoID4gMVwiIHByZXNlcnZlQ29udGVudCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwiY2hlY2tPZmZzZXQoKVwiPlxuICAgICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBlbnRpdHlUYWJzXCIgW2xhYmVsXT1cInRhYi50YWJOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYi5yb3dzXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGhDbGFzc2VzKGVudGl0eSwga2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5KGtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgIFxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50aXR5VGFicy5sZW5ndGggPD0gMVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZW50aXR5VGFicy5sZW5ndGhcIiBjbGFzcz1cIm5vLWVudGl0eS10YWJzXCI+XG4gICAgICAgICAgICAgICAgRVJST1I6IE5vIElucHV0cy4gRGlkIHlvdSBjb3JyZWN0bHkgYXNzaWduIGFsbCB2YWx1ZXMgaW4gdGhlIG1vZGVsIGNvbnN0cnVjdG9yP1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGVudGl0eVRhYnNbMF0/LnJvd3NcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIkVudGl0eVV0aWxpdGllcy5nZXRXaWR0aENsYXNzZXMoZW50aXR5LCBrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1yb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXJvdyBjb250YWluZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRW50aXR5VmFsaWQgfHwgIWlzRW50aXR5RGlydHlcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiIXZhbGlkYXRpb25FcnJvcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5jcmVhdGVEYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktdG9vbHRpcCAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoXCIgW3Rvb2x0aXBDb250ZW50XT1cInRvb2x0aXBDb250ZW50XCI+PC9uZ3gtbWF0LWVudGl0eS10b29sdGlwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cblxuICAgIDxicj5cbjwvZGl2PiJdfQ==
|
|
@@ -11,7 +11,6 @@ export class PageCreateDataBuilder extends BaseBuilder {
|
|
|
11
11
|
const createData = new CreateDataBuilder(this.globalConfig, data.createData)
|
|
12
12
|
.withDefault('cancelButtonLabel', this.globalConfig.backLabel)
|
|
13
13
|
.getResult();
|
|
14
|
-
// eslint-disable-next-line max-len
|
|
15
14
|
const confirmUnsavedChangesDialogData = new ConfirmDialogDataBuilder(this.globalConfig, data.createData?.confirmUnsavedChangesDialogData)
|
|
16
15
|
.withDefault('title', this.globalConfig.confirmUnsavedChangesTitle)
|
|
17
16
|
.withDefault('text', this.globalConfig.confirmUnsavedChangesText)
|
|
@@ -27,4 +26,4 @@ export class PageCreateDataBuilder extends BaseBuilder {
|
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jcmVhdGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jcmVhdGUtcGFnZS9wYWdlLWNyZWF0ZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNENBQTRDLENBQUM7QUFpQm5HLCtDQUErQztBQUMvQyxNQUFNLE9BQU8scUJBQ1QsU0FBUSxXQUEyRTtJQUVuRixZQUFZLElBQWdDLEVBQUUsWUFBb0M7UUFDOUUsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsK0NBQStDO0lBQ3JDLGdCQUFnQixDQUFDLElBQWdDO1FBQ3ZELE1BQU0sVUFBVSxHQUF1QixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUMzRixXQUFXLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7YUFDN0QsU0FBUyxFQUFFLENBQUM7UUFFakIsTUFBTSwrQkFBK0IsR0FBOEIsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsK0JBQStCLENBQUM7YUFDL0osV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDO2FBQ2xFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQzthQUNoRSxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQzthQUMvRSxTQUFTLEVBQUUsQ0FBQztRQUVqQixPQUFPO1lBQ0gsVUFBVSxFQUFFO2dCQUNSLEdBQUcsVUFBVTtnQkFDYiwrQkFBK0IsRUFBRSwrQkFBK0I7Z0JBQ2hFLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsa0NBQWtDLElBQUksSUFBSTthQUNsRztZQUNELHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJO1NBQzVELENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQ3JlYXRlRGF0YUJ1aWxkZXIsIENyZWF0ZURhdGFJbnRlcm5hbCB9IGZyb20gJy4uL3RhYmxlL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBDcmVhdGVFbnRpdHlEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBQYWdlQ3JlYXRlRGF0YSB9IGZyb20gJy4vY3JlYXRlLXBhZ2UuY29tcG9uZW50JztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCB0eXBlIFBhZ2VDcmVhdGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IE9taXQ8Q3JlYXRlRW50aXR5RGF0YUludGVybmFsPEVudGl0eVR5cGU+LCAnZW50aXR5JyB8ICdFbnRpdHlTZXJ2aWNlQ2xhc3MnPiAmIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcjogYm9vbGVhbixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURhdGE6IENyZWF0ZURhdGFJbnRlcm5hbCAmIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICAgICAgdW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgUGFnZUNyZWF0ZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPFBhZ2VDcmVhdGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sIFBhZ2VDcmVhdGVEYXRhPEVudGl0eVR5cGU+PiB7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBQYWdlQ3JlYXRlRGF0YTxFbnRpdHlUeXBlPiwgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIHN1cGVyKGdsb2JhbENvbmZpZywgZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVCYXNlRGF0YShkYXRhOiBQYWdlQ3JlYXRlRGF0YTxFbnRpdHlUeXBlPik6IFBhZ2VDcmVhdGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBjcmVhdGVEYXRhOiBDcmVhdGVEYXRhSW50ZXJuYWwgPSBuZXcgQ3JlYXRlRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuY3JlYXRlRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgnY2FuY2VsQnV0dG9uTGFiZWwnLCB0aGlzLmdsb2JhbENvbmZpZy5iYWNrTGFiZWwpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuY3JlYXRlRGF0YT8uY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCB0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtVW5zYXZlZENoYW5nZXNUaXRsZSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmNvbmZpcm1VbnNhdmVkQ2hhbmdlc1RleHQpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmNvbmZpcm1VbnNhdmVkQ2hhbmdlc0xhYmVsKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjcmVhdGVEYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4uY3JlYXRlRGF0YSxcbiAgICAgICAgICAgICAgICBjb25maXJtVW5zYXZlZENoYW5nZXNEaWFsb2dEYXRhOiBjb25maXJtVW5zYXZlZENoYW5nZXNEaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIHVuc2F2ZWRDaGFuZ2VzUmVxdWlyZUNvbmZpcm1EaWFsb2c6IGRhdGEuY3JlYXRlRGF0YT8udW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZyA/PyB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzcGxheUxvYWRpbmdTcGlubmVyOiBkYXRhLmRpc3BsYXlMb2FkaW5nU3Bpbm5lciA/PyB0cnVlXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==
|
|
@@ -8,4 +8,4 @@ export const defaultEditDataRoute = {
|
|
|
8
8
|
path: 'entities:id',
|
|
9
9
|
canDeactivate: [UnsavedChangesGuard]
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1kYXRhLnJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9lZGl0LXBhZ2UvZWRpdC1kYXRhLnJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBZ0IzRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFxQztJQUNsRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO0lBQy9GLEtBQUssRUFBRSxNQUFNO0lBQ2IsSUFBSSxFQUFFLGFBQWE7SUFDbkIsYUFBYSxFQUFFLENBQUMsbUJBQW1CLENBQUM7Q0FDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVmYXVsdEV4cG9ydCwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW5zYXZlZENoYW5nZXNHdWFyZCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Vuc2F2ZWQtY2hhbmdlcy5ndWFyZCc7XG5cbi8qKlxuICogVGhlIGRlZmluaXRpb24gZm9yIGEgcm91dGUgdG8gdXNlIHdpdGggdGhlIFwiTmd4TWF0RW50aXR5RWRpdFBhZ2VDb21wb25lbnRcIi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0RGF0YVJvdXRlIGV4dGVuZHMgUm91dGUge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbG9hZENvbXBvbmVudDogKCkgPT4gVHlwZTx1bmtub3duPiB8IE9ic2VydmFibGU8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+IHwgUHJvbWlzZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHBhdGg6IHN0cmluZ1xufVxuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGRhdGEgZm9yIGEgZWRpdCByb3V0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRFZGl0RGF0YVJvdXRlOiBPbWl0PEVkaXREYXRhUm91dGUsICdwcm92aWRlcnMnPiA9IHtcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vZWRpdC1wYWdlLmNvbXBvbmVudCcpLnRoZW4obSA9PiBtLk5neE1hdEVudGl0eUVkaXRQYWdlQ29tcG9uZW50KSxcbiAgICB0aXRsZTogJ0VkaXQnLFxuICAgIHBhdGg6ICdlbnRpdGllczppZCcsXG4gICAgY2FuRGVhY3RpdmF0ZTogW1Vuc2F2ZWRDaGFuZ2VzR3VhcmRdXG59OyJdfQ==
|
|
@@ -35,17 +35,17 @@ import * as i11 from "../../services/entity.service";
|
|
|
35
35
|
/**
|
|
36
36
|
* The entity service that needs to be provided in the providers array of the edit page route.
|
|
37
37
|
*/
|
|
38
|
-
// eslint-disable-next-line
|
|
38
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
39
39
|
export const NGX_EDIT_DATA_ENTITY_SERVICE = new InjectionToken('NGX_EDIT_DATA_ENTITY_SERVICE');
|
|
40
40
|
/**
|
|
41
41
|
* The entity class that needs to be provided in the providers array of the edit page route.
|
|
42
42
|
*/
|
|
43
|
-
// eslint-disable-next-line
|
|
43
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
44
44
|
export const NGX_EDIT_DATA_ENTITY = new InjectionToken('NGX_EDIT_DATA_ENTITY');
|
|
45
45
|
/**
|
|
46
46
|
* The configuration that needs to be provided in the providers array of the edit page route.
|
|
47
47
|
*/
|
|
48
|
-
// eslint-disable-next-line typescript/no-explicit-any
|
|
48
|
+
// eslint-disable-next-line typescript/no-explicit-any
|
|
49
49
|
export const NGX_EDIT_DATA = new InjectionToken('NGX_EDIT_DATA');
|
|
50
50
|
/**
|
|
51
51
|
* A generic page that allows you to edit a specific entity.
|
|
@@ -133,6 +133,9 @@ export class NgxMatEntityEditPageComponent {
|
|
|
133
133
|
isReadOnly(key) {
|
|
134
134
|
return runInInjectionContext(this.injector, () => {
|
|
135
135
|
const metadata = EntityUtilities.getPropertyMetadata(this.entity, key);
|
|
136
|
+
if (!metadata) {
|
|
137
|
+
throw new Error(`No metadata was found for the key "${String(key)}"`);
|
|
138
|
+
}
|
|
136
139
|
return this.isEntityReadOnly || metadata.isReadOnly(this.entity);
|
|
137
140
|
});
|
|
138
141
|
}
|
|
@@ -156,7 +159,7 @@ export class NgxMatEntityEditPageComponent {
|
|
|
156
159
|
});
|
|
157
160
|
this.entityTabs = EntityUtilities.getEntityTabs(this.entity, this.injector, false, true);
|
|
158
161
|
setTimeout(() => this.checkOffset(), 1);
|
|
159
|
-
setTimeout(() => this.checkIsEntityValid(), 1);
|
|
162
|
+
setTimeout(() => void this.checkIsEntityValid(), 1);
|
|
160
163
|
}
|
|
161
164
|
/**
|
|
162
165
|
* Checks if the bottom row should be displayed as fixed.
|
|
@@ -187,11 +190,11 @@ export class NgxMatEntityEditPageComponent {
|
|
|
187
190
|
* Checks if the entity has become invalid or dirty.
|
|
188
191
|
*/
|
|
189
192
|
async checkEntity() {
|
|
190
|
-
this.checkIsEntityValid();
|
|
193
|
+
await this.checkIsEntityValid();
|
|
191
194
|
this.isEntityDirty = await EntityUtilities.isDirty(this.entity, this.entityPriorChanges, this.http);
|
|
192
195
|
}
|
|
193
|
-
checkIsEntityValid() {
|
|
194
|
-
this.validationErrors = ValidationUtilities.getEntityValidationErrors(this.entity, 'update');
|
|
196
|
+
async checkIsEntityValid() {
|
|
197
|
+
this.validationErrors = await ValidationUtilities.getEntityValidationErrors(this.entity, this.injector, 'update');
|
|
195
198
|
this.tooltipContent = runInInjectionContext(this.injector, () => getValidationErrorsTooltipContent(this.validationErrors));
|
|
196
199
|
this.isEntityValid = this.validationErrors.length === 0;
|
|
197
200
|
}
|
|
@@ -207,7 +210,6 @@ export class NgxMatEntityEditPageComponent {
|
|
|
207
210
|
this.confirmEdit();
|
|
208
211
|
return;
|
|
209
212
|
}
|
|
210
|
-
// eslint-disable-next-line max-len
|
|
211
213
|
const dialogData = new ConfirmDialogDataBuilder(this.globalConfig, this.data.editData.confirmEditDialogData)
|
|
212
214
|
.withDefault('text', this.globalConfig.confirmSaveText)
|
|
213
215
|
.withDefault('confirmButtonLabel', this.globalConfig.saveLabel)
|
|
@@ -236,7 +238,6 @@ export class NgxMatEntityEditPageComponent {
|
|
|
236
238
|
this.confirmDelete();
|
|
237
239
|
return;
|
|
238
240
|
}
|
|
239
|
-
// eslint-disable-next-line max-len
|
|
240
241
|
const dialogData = new ConfirmDialogDataBuilder(this.globalConfig, this.data.editData.confirmDeleteDialogData)
|
|
241
242
|
.withDefault('text', this.globalConfig.confirmDeleteText)
|
|
242
243
|
.withDefault('type', 'delete')
|
|
@@ -363,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
363
364
|
type: HostListener,
|
|
364
365
|
args: ['window:beforeunload']
|
|
365
366
|
}] } });
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvZWRpdC1wYWdlL2VkaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2VkaXQtcGFnZS9lZGl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBRXRILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUloRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQXdCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUE0QnJGOztHQUVHO0FBQ0gsb0ZBQW9GO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUF1QyxJQUFJLGNBQWMsQ0FBcUIsOEJBQThCLENBQUMsQ0FBQztBQUN2Sjs7R0FFRztBQUNILG9GQUFvRjtBQUNwRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBNEMsSUFBSSxjQUFjLENBQTBCLHNCQUFzQixDQUFDLENBQUM7QUFDako7O0dBRUc7QUFDSCwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFzQyxJQUFJLGNBQWMsQ0FBb0IsZUFBZSxDQUFDLENBQUM7QUFFdkg7OztHQUdHO0FBa0JILE1BQU0sT0FBTyw2QkFBNkI7SUE0RGpCO0lBQ0E7SUFDQTtJQUNBO0lBRVI7SUFFUTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBRUU7SUF4RXZCOztPQUVHO0lBQ0gsZUFBZSxHQUEyQixlQUFlLENBQUM7SUFFMUQ7O09BRUc7SUFDSCxVQUFVLENBQTJCO0lBRXJDOztPQUVHO0lBQ0gsTUFBTSxDQUFjO0lBQ3BCOztPQUVHO0lBQ0gsa0JBQWtCLENBQWM7SUFFaEM7O09BRUc7SUFDSCxJQUFJLENBQW9DO0lBRXhDOztPQUVHO0lBQ0gsZ0JBQWdCLEdBQXNCLEVBQUUsQ0FBQztJQUN6Qzs7T0FFRztJQUNILGFBQWEsR0FBWSxJQUFJLENBQUM7SUFDOUI7O09BRUc7SUFDSCxhQUFhLEdBQVksS0FBSyxDQUFDO0lBQy9COztPQUVHO0lBQ0gsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUU1Qjs7T0FFRztJQUNILGdCQUFnQixDQUFXO0lBQzNCOztPQUVHO0lBQ0gsV0FBVyxDQUFXO0lBRWQsbUJBQW1CLEdBQVksS0FBSyxDQUFDO0lBRTdDLCtDQUErQztJQUMvQyxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsa0NBQWtDLENBQUM7SUFDdkYsQ0FBQztJQUVELFlBQ3FCLE1BQWlCLEVBQ2pCLFFBQWtCLEVBQ2xCLEtBQXFCLEVBQ3JCLFFBQTZCLEVBRXJDLGFBQXdDLEVBRWhDLFdBQTJDLEVBRTNDLFNBQW1DLEVBQ25DLElBQWdCLEVBQ2hCLEVBQWMsRUFDZCxRQUFtQixFQUVqQixZQUFvQztRQWR0QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFFckMsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBRWhDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQztRQUUzQyxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUNuQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRWpCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtJQUN2RCxDQUFDO0lBRUw7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFxQjtRQUM1QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQzdDLE1BQU0sUUFBUSxHQUE2QyxlQUFlLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNqSCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuRixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEdBQTRHLENBQUMsQ0FBQztTQUNqSTtRQUVELE1BQU0sRUFBRSxHQUFpQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBaUMsQ0FBQztRQUNoSCxNQUFNLFdBQVcsR0FBMkIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRixJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekYsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBRUgsV0FBVztRQUNQLE1BQU0sT0FBTyxHQUFXLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDdkMsTUFBTSxTQUFTLEdBQXdCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBNkIsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUcsTUFBTSxrQkFBa0IsR0FBd0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUE2QixDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTdILElBQUksU0FBUyxJQUFJLGtCQUFrQixFQUFFO1lBQ2pDLE1BQU0sd0JBQXdCLEdBQVcsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1lBQ3RFLE1BQU0sWUFBWSxHQUFXLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFFaEQsSUFBSSxPQUFPLEdBQUcsWUFBWSxJQUFJLHdCQUF3QixFQUFFO2dCQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDakQ7aUJBQ0k7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzlDO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBRUgsYUFBYTtRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDM0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSTtRQUNBLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckUsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFO1lBQy9DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixPQUFPO1NBQ1Y7UUFDRCxtQ0FBbUM7UUFDbkMsTUFBTSxVQUFVLEdBQThCLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQzthQUNsSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO2FBQ3RELFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQzthQUM5RCxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO2FBQ2pELFNBQVMsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUE4RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtZQUM5SCxJQUFJLEVBQUUsVUFBVTtZQUNoQixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdEI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXO1FBQ2YsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDJCQUEyQixFQUFFO1lBQ2pELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1Y7UUFDRCxtQ0FBbUM7UUFDbkMsTUFBTSxVQUFVLEdBQThCLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQzthQUNwSSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7YUFDeEQsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7YUFDN0IsV0FBVyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO2FBQ2hFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7YUFDbkQsU0FBUyxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQThELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQzlILElBQUksRUFBRSxVQUFVO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFlBQVksRUFBRSxLQUFLO1NBQ3RCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWE7UUFDakIsS0FBSyxJQUFJLENBQUMsYUFBYTthQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2FBQy9CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQyxJQUFJLEdBQUcsRUFBRTtnQkFDTCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwyQkFBMkI7UUFDdkIsTUFBTSxTQUFTLEdBQThELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQzlILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQywrQkFBK0I7WUFDeEQsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE1BQXNDO1FBQ2hELE1BQU0sb0JBQW9CLEdBQVkscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDNUUsT0FBTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLE9BQU87U0FDVjtRQUNELE1BQU0sU0FBUyxHQUE4RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtZQUM5SCxJQUFJLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtZQUM5QixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDckM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxNQUFzQztRQUMvRCxLQUFLLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakQsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDMUQsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLE1BQXNDO1FBQ3JELE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO3VHQWhUUSw2QkFBNkIsb0lBZ0UxQiw0QkFBNEIsYUFFNUIsb0JBQW9CLGFBRXBCLGFBQWEsMEZBS2Isa0NBQWtDOzJGQXpFckMsNkJBQTZCLHlMQzdGMUMsbXBJQWdHTSx3NEJEZEUsSUFBSSw2RkFDSixLQUFLLGtIQUNMLGVBQWUsMlFBQ2YsYUFBYSx3VEFDYix1QkFBdUIsK1JBQ3ZCLHdCQUF3QixrT0FDeEIsYUFBYSwrWUFDYixjQUFjLDZQQUNkLGdCQUFnQjs7MkZBR1gsNkJBQTZCO2tCQWpCekMsU0FBUzsrQkFDSSwwQkFBMEIsY0FHeEIsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ25COzswQkFrRUksTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUVuQyxNQUFNOzJCQUFDLG9CQUFvQjs7MEJBRTNCLE1BQU07MkJBQUMsYUFBYTs7MEJBS3BCLE1BQU07MkJBQUMsa0NBQWtDOzRDQStDOUMsV0FBVztzQkFEVixZQUFZO3VCQUFDLGVBQWU7Z0JBd0I3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24sIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT25Jbml0LCBSZW5kZXJlcjIsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5Q2xhc3NOZXdhYmxlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvYmFzZS9wcm9wZXJ0eS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IGdldFZhbGlkYXRpb25FcnJvcnNUb29sdGlwQ29udGVudCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9nZXQtdmFsaWRhdGlvbi1lcnJvcnMtdG9vbHRpcC1jb250ZW50LmZ1bmN0aW9uLnRzJztcbmltcG9ydCB7IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVRhYiwgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3ZhbGlkYXRpb24udXRpbGl0aWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlJbnB1dE1vZHVsZSB9IGZyb20gJy4uL2lucHV0L2lucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBFZGl0QWN0aW9uSW50ZXJuYWwgfSBmcm9tICcuLi90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YSB9IGZyb20gJy4uL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRhdGEnO1xuaW1wb3J0IHsgRWRpdERhdGEgfSBmcm9tICcuLi90YWJsZS90YWJsZS1kYXRhJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VFZGl0RGF0YUJ1aWxkZXIsIFBhZ2VFZGl0RGF0YUludGVybmFsIH0gZnJvbSAnLi9wYWdlLWVkaXQtZGF0YS5idWlsZGVyJztcblxuLyoqXG4gKiBUaGUgZGF0YSB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGZvciBhIHJvdXRlIHRvIGJlIGFibGUgdG8gZWRpdCBhIGVudGl0eS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCB0eXBlIFBhZ2VFZGl0RGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+ID0gT21pdDxFZGl0RW50aXR5RGF0YTxFbnRpdHlUeXBlPiwgJ2VudGl0eScgfCAnRW50aXR5U2VydmljZUNsYXNzJz4gJiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gZGlzcGxheSBhIGxvYWRpbmcgc3Bpbm5lciB3aGlsZSB0aGUgZW50aXR5IGZvciB0aGUgcGFnZSBpcyBsb2FkZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdCBwYWdlLlxuICAgICAqL1xuICAgIGVkaXREYXRhPzogRWRpdERhdGE8RW50aXR5VHlwZT4gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRpYWxvZyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGxlYXZlIHRoZSBzaXRlIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgbGVhdmluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nPzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGVudGl0eSBzZXJ2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnksIGNvbnN0Q2FzZS91cHBlcmNhc2VcbmV4cG9ydCBjb25zdCBOR1hfRURJVF9EQVRBX0VOVElUWV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxFbnRpdHlTZXJ2aWNlPGFueT4+ID0gbmV3IEluamVjdGlvblRva2VuPEVudGl0eVNlcnZpY2U8YW55Pj4oJ05HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0UnKTtcbi8qKlxuICogVGhlIGVudGl0eSBjbGFzcyB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgb2YgdGhlIGVkaXQgcGFnZSByb3V0ZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4sIHR5cGVzY3JpcHQvbm8tZXhwbGljaXQtYW55LCBjb25zdENhc2UvdXBwZXJjYXNlXG5leHBvcnQgY29uc3QgTkdYX0VESVRfREFUQV9FTlRJVFk6IEluamVjdGlvblRva2VuPEVudGl0eUNsYXNzTmV3YWJsZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlDbGFzc05ld2FibGU8YW55Pj4oJ05HWF9FRElUX0RBVEFfRU5USVRZJyk7XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnksIGNvbnN0Q2FzZS91cHBlcmNhc2VcbmV4cG9ydCBjb25zdCBOR1hfRURJVF9EQVRBOiBJbmplY3Rpb25Ub2tlbjxQYWdlRWRpdERhdGE8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFnZUVkaXREYXRhPGFueT4+KCdOR1hfRURJVF9EQVRBJyk7XG5cbi8qKlxuICogQSBnZW5lcmljIHBhZ2UgdGhhdCBhbGxvd3MgeW91IHRvIGVkaXQgYSBzcGVjaWZpYyBlbnRpdHkuXG4gKiBGb3IgdGhpcyB0byB3b3JrIHlvdSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktZWRpdC1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0LXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUVkaXRQYWdlQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbnMgSGVscGVyTWV0aG9kcyBhcm91bmQgaGFuZGxpbmcgRW50aXRpZXMgYW5kIHRoZWlyIHByb3BlcnR5LW1ldGFkYXRhLlxuICAgICAqL1xuICAgIEVudGl0eVV0aWxpdGllczogdHlwZW9mIEVudGl0eVV0aWxpdGllcyA9IEVudGl0eVV0aWxpdGllcztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0YWJzIHRvIGRpc3BsYXkuXG4gICAgICovXG4gICAgZW50aXR5VGFicyE6IEVudGl0eVRhYjxFbnRpdHlUeXBlPltdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGVudGl0eSB0aGF0IGlzIGJlaW5nIGVkaXRlZC5cbiAgICAgKi9cbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdHkgYmVmb3JlIGFueSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlLlxuICAgICAqL1xuICAgIGVudGl0eVByaW9yQ2hhbmdlcyE6IEVudGl0eVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGRhdGEgZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgZGF0YSE6IFBhZ2VFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgLyoqXG4gICAgICogQWxsIHZhbGlkYXRpb24gZXJyb3JzIG9mIHRoZSBlbnRpdHkuXG4gICAgICovXG4gICAgdmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW50aXR5IGlzIHZhbGlkLlxuICAgICAqL1xuICAgIGlzRW50aXR5VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBlbnRpdHkgaXMgZGlydHkuXG4gICAgICovXG4gICAgaXNFbnRpdHlEaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoYXQgdG8gZGlzcGxheSBpbnNpZGUgdGhlIHRvb2x0aXAuXG4gICAgICovXG4gICAgdG9vbHRpcENvbnRlbnQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGVudGl0eSBpcyByZWFkb25seS5cbiAgICAgKi9cbiAgICBpc0VudGl0eVJlYWRPbmx5ITogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gZGVsZXRlIHRoZSBlbnRpdHkuXG4gICAgICovXG4gICAgYWxsb3dEZWxldGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpbkNvbmZpcm1OYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbnRpdHlEaXJ0eSAmJiB0aGlzLmRhdGEuZWRpdERhdGEudW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KE5HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0UpXG4gICAgICAgIHJlYWRvbmx5IGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4sXG4gICAgICAgIEBJbmplY3QoTkdYX0VESVRfREFUQV9FTlRJVFkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfRURJVF9EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogUGFnZUVkaXREYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7IH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGlzIHJlYWRvbmx5LlxuICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZvciB0aGUgaW5wdXQgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIGlucHV0IGZvciB0aGUga2V5IGlzIHJlYWQgb25seS5cbiAgICAgKi9cbiAgICBpc1JlYWRPbmx5KGtleToga2V5b2YgRW50aXR5VHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhOiBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPHVua25vd24+ID0gRW50aXR5VXRpbGl0aWVzLmdldFByb3BlcnR5TWV0YWRhdGEodGhpcy5lbnRpdHksIGtleSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VudGl0eVJlYWRPbmx5IHx8IG1ldGFkYXRhLmlzUmVhZE9ubHkodGhpcy5lbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBhZ2VFZGl0RGF0YUJ1aWxkZXIodGhpcy5pbnB1dERhdGEsIHRoaXMuZ2xvYmFsQ29uZmlnKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZWRpdCBkYXRhIHdhcyBwcm92aWRlZCBmb3IgXCJOR1hfRURJVF9EQVRBXCIuIFlvdSBuZWVkIHRvIHByb3ZpZGUgYSB2YWx1ZSBpbiB5b3VyIHJvdXRlcyBwcm92aWRlcnMgYXJyYXkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpIGFzIEVudGl0eVR5cGVba2V5b2YgRW50aXR5VHlwZV07XG4gICAgICAgIGNvbnN0IGZvdW5kRW50aXR5OiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy5lbnRpdHlTZXJ2aWNlLmZpbmRCeUlkKGlkKTtcblxuICAgICAgICBpZiAoZm91bmRFbnRpdHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGVudGl0eSB3aXRoIGlkICR7aWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVudGl0eSA9IG5ldyB0aGlzLkVudGl0eUNsYXNzKGZvdW5kRW50aXR5KTtcbiAgICAgICAgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZW50aXR5KTtcblxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0VudGl0eVJlYWRPbmx5ID0gIXRoaXMuZGF0YS5hbGxvd1VwZGF0ZSh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgICAgICB0aGlzLmFsbG93RGVsZXRlID0gdGhpcy5kYXRhLmFsbG93RGVsZXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW50aXR5VGFicyA9IEVudGl0eVV0aWxpdGllcy5nZXRFbnRpdHlUYWJzKHRoaXMuZW50aXR5LCB0aGlzLmluamVjdG9yLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja09mZnNldCgpLCAxKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrSXNFbnRpdHlWYWxpZCgpLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGJvdHRvbSByb3cgc2hvdWxkIGJlIGRpc3BsYXllZCBhcyBmaXhlZC5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJylcbiAgICBjaGVja09mZnNldCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWTogbnVtYmVyID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIGNvbnN0IGJvdHRvbVJvdzogSFRNTEVsZW1lbnQgfCBudWxsID0gKHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignLmJvdHRvbS1yb3cnKTtcbiAgICAgICAgY29uc3QgYm90dG9tUm93Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuYm90dG9tLXJvdy1jb250YWluZXInKTtcblxuICAgICAgICBpZiAoYm90dG9tUm93ICYmIGJvdHRvbVJvd0NvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgYm90dG9tUm93Q29udGFpbmVyT2Zmc2V0OiBudW1iZXIgPSBib3R0b21Sb3dDb250YWluZXIub2Zmc2V0VG9wO1xuICAgICAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0OiBudW1iZXIgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChzY3JvbGxZICsgd2luZG93SGVpZ2h0ID49IGJvdHRvbVJvd0NvbnRhaW5lck9mZnNldCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYm90dG9tUm93LCAnZml4ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYm90dG9tUm93LCAnZml4ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHBhZ2UgY2FuIGJlIGxlZnQgd2l0aG91dCBjb25maXJtYXRpb24gKG9mIHVuc2F2ZWQgY2hhbmdlcykuXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIHBhZ2UgY2FuIGJlIGxlZnQgd2l0aG91dCBjb25maXJtYXRpb24uXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcpXG4gICAgY2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzIHx8IHRoaXMuaW5Db25maXJtTmF2aWdhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGVudGl0eSBoYXMgYmVjb21lIGludmFsaWQgb3IgZGlydHkuXG4gICAgICovXG4gICAgYXN5bmMgY2hlY2tFbnRpdHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuY2hlY2tJc0VudGl0eVZhbGlkKCk7XG4gICAgICAgIHRoaXMuaXNFbnRpdHlEaXJ0eSA9IGF3YWl0IEVudGl0eVV0aWxpdGllcy5pc0RpcnR5KHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcywgdGhpcy5odHRwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSXNFbnRpdHlWYWxpZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gVmFsaWRhdGlvblV0aWxpdGllcy5nZXRFbnRpdHlWYWxpZGF0aW9uRXJyb3JzKHRoaXMuZW50aXR5LCAndXBkYXRlJyk7XG4gICAgICAgIHRoaXMudG9vbHRpcENvbnRlbnQgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gZ2V0VmFsaWRhdGlvbkVycm9yc1Rvb2x0aXBDb250ZW50KHRoaXMudmFsaWRhdGlvbkVycm9ycykpO1xuICAgICAgICB0aGlzLmlzRW50aXR5VmFsaWQgPSB0aGlzLnZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIHNhdmUgdGhlIGNoYW5nZXMgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBlZGl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0VudGl0eVJlYWRPbmx5IHx8ICF0aGlzLmlzRW50aXR5VmFsaWQgfHwgIXRoaXMuaXNFbnRpdHlEaXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmVkaXREYXRhLmVkaXRSZXF1aXJlc0NvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybUVkaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmdsb2JhbENvbmZpZywgdGhpcy5kYXRhLmVkaXREYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmNvbmZpcm1TYXZlVGV4dClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgnY29uZmlybUJ1dHRvbkxhYmVsJywgdGhpcy5nbG9iYWxDb25maWcuc2F2ZUxhYmVsKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuZ2xvYmFsQ29uZmlnLmVkaXRMYWJlbClcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1FZGl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybUVkaXQoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLnVwZGF0ZSh0aGlzLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpLnRoZW4oKCkgPT4gdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIGRlbGV0ZSB0aGUgZW50aXR5IGFuZCBjbG9zZSB0aGUgZGlhbG9nIGFmdGVyd2FyZHMuXG4gICAgICogQWxzbyBoYW5kbGVzIHRoZSBjb25maXJtYXRpb24gaWYgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5lZGl0RGF0YS5kZWxldGVSZXF1aXJlc0NvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmRhdGEuZWRpdERhdGEuY29uZmlybURlbGV0ZURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCB0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtRGVsZXRlVGV4dClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndHlwZScsICdkZWxldGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCB0aGlzLmdsb2JhbENvbmZpZy5kZWxldGVMYWJlbClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCB0aGlzLmdsb2JhbENvbmZpZy5kZWxldGVMYWJlbClcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZVxuICAgICAgICAgICAgLmRlbGV0ZSh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBuYXZpZ2F0ZSBiYWNrLlxuICAgICAqL1xuICAgIG5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbkNvbmZpcm1OYXZpZ2F0aW9uRGlhbG9nKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBjb25maXJtIGRpYWxvZyBmb3IgbmF2aWdhdGluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcy5cbiAgICAgKiBUaGlzIGlzIGV4cG9zZWQgYmVjYXVzZSB0aGUgVW5zYXZlZENoYW5nZXNHdWFyZCBuZWVkcyB0byBhY2Nlc3MgdGhpcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgZmlyc3Qgb2JzZXJ2YWJsZSByZXN1bHQgb2YgdGhlIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIG9wZW5Db25maXJtTmF2aWdhdGlvbkRpYWxvZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YS5lZGl0RGF0YS5jb25maXJtVW5zYXZlZENoYW5nZXNEaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5waXBlKGZpcnN0KCksIG1hcChwID0+IChwID8/IGZhbHNlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybU5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICAgICAgRW50aXR5VXRpbGl0aWVzLnJlc2V0Q2hhbmdlc09uRW50aXR5KHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJ1bnMgdGhlIGVkaXQgYWN0aW9uIG9uIHRoZSBlbnRpdHkuXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gcnVuLlxuICAgICAqL1xuICAgIHJ1bkVkaXRBY3Rpb24oYWN0aW9uOiBFZGl0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVxdWlyZUNvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bkVkaXRBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogYWN0aW9uLmNvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuRWRpdEFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1SdW5FZGl0QWN0aW9uKGFjdGlvbjogRWRpdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogdm9pZCB7XG4gICAgICAgIHZvaWQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbi5hY3Rpb24odGhpcy5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tFbnRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIEVkaXRBY3Rpb24gaXMgZGlzYWJsZWQgKGUuZy4gQmVjYXVzZSB0aGUgY3VycmVudCBlbnRyeSBkb2Vzbid0IGZ1bGxmaWwgdGhlIHJlcXVpcmVtZW50cykuXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBFZGl0QWN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBBY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgZWRpdEFjdGlvbkRpc2FibGVkKGFjdGlvbjogRWRpdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gIWFjdGlvbi5lbmFibGVkKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKSk7XG4gICAgfVxufSIsIiBcbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48IS0tIGVzbGludC1kaXNhYmxlIGFuZ3VsYXIvY3ljbG9tYXRpYy1jb21wbGV4aXR5IC0tPlxuPGRpdiAqbmdJZj1cIiFlbnRpdHlUYWJzICYmIGRhdGEuZGlzcGxheUxvYWRpbmdTcGlubmVyXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8YnI+XG4gICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XG4gICAgPGJyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJlbnRpdHlUYWJzXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8YnI+XG5cbiAgICA8IS0tLS0tLS0tLS0tLT5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8IS0tLS0tLS0tLS0tLT5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYW5jZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImJhY2stYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIFtjbGFzcy51bnNhdmVkQ2hhbmdlc109XCJoYXNVbnNhdmVkQ2hhbmdlc1wiIChjbGljayk9XCJuYXZpZ2F0ZUJhY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICB7e2RhdGEuZWRpdERhdGEuY2FuY2VsQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGFzVW5zYXZlZENoYW5nZXNcIiBjbGFzcz1cImZhcyBmYS13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmVkaXREYXRhLmFjdGlvbnMubGVuZ3RoXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmFjdGlvbnNMYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZGF0YS5lZGl0RGF0YS5hY3Rpb25zXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cImVkaXRBY3Rpb25EaXNhYmxlZChhY3Rpb24pXCIgKGNsaWNrKT1cInJ1bkVkaXRBY3Rpb24oYWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICBcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0RlbGV0ZVwiIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCIgKGNsaWNrKT1cImRlbGV0ZSgpXCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmRlbGV0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxoMT57e2RhdGEuZWRpdERhdGEudGl0bGUoZW50aXR5UHJpb3JDaGFuZ2VzKX19PC9oMT5cblxuICAgIDwhLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8IS0tLS0tLS0tLS0tPlxuICAgIDxmb3JtPlxuICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoID4gMVwiIHByZXNlcnZlQ29udGVudCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwiY2hlY2tPZmZzZXQoKVwiPlxuICAgICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBlbnRpdHlUYWJzXCIgW2xhYmVsXT1cInRhYi50YWJOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYi5yb3dzXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGhDbGFzc2VzKGVudGl0eSwga2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5KGtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgIFxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50aXR5VGFicy5sZW5ndGggPD0gMVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZW50aXR5VGFicy5sZW5ndGhcIiBjbGFzcz1cIm5vLWVudGl0eS10YWJzXCI+XG4gICAgICAgICAgICAgICAgRVJST1I6IE5vIElucHV0cy4gRGlkIHlvdSBjb3JyZWN0bHkgYXNzaWduIGFsbCB2YWx1ZXMgaW4gdGhlIG1vZGVsIGNvbnN0cnVjdG9yP1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGVudGl0eVRhYnNbMF0/LnJvd3NcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIkVudGl0eVV0aWxpdGllcy5nZXRXaWR0aENsYXNzZXMoZW50aXR5LCBrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1yb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXJvdyBjb250YWluZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFbnRpdHlSZWFkT25seSB8fCAhaXNFbnRpdHlWYWxpZCB8fCAhaXNFbnRpdHlEaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhdmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZGl0RGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS10b29sdGlwICpuZ0lmPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIiBbdG9vbHRpcENvbnRlbnRdPVwidG9vbHRpcENvbnRlbnRcIj48L25neC1tYXQtZW50aXR5LXRvb2x0aXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGJyPlxuPC9kaXY+Il19
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvZWRpdC1wYWdlL2VkaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2VkaXQtcGFnZS9lZGl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMkNBQTJD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VFEsNkJBQTZCLG9JQWdFMUIsNEJBQTRCLGFBRTVCLG9CQUFvQixhQUVwQixhQUFhLDBGQUtiLGtDQUFrQzsyRkF6RXJDLDZCQUE2Qix5TEM1RjFDLG1wSUFnR00sdzRCRGZFLElBQUksNkZBQ0osS0FBSyxrSEFDTCxlQUFlLDJRQUNmLGFBQWEsd1RBQ2IsdUJBQXVCLCtSQUN2Qix3QkFBd0Isa09BQ3hCLGFBQWEsK1lBQ2IsY0FBYyw2UEFDZCxnQkFBZ0I7OzJGQUdYLDZCQUE2QjtrQkFqQnpDLFNBQVM7K0JBQ0ksMEJBQTBCLGNBR3hCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNuQjs7MEJBa0VJLE1BQU07MkJBQUMsNEJBQTRCOzswQkFFbkMsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUUzQixNQUFNOzJCQUFDLGFBQWE7OzBCQUtwQixNQUFNOzJCQUFDLGtDQUFrQzs0Q0FrRDlDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxlQUFlO2dCQXdCN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uSW5pdCwgUmVuZGVyZXIyLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgTkdYX0lOVEVSTkFMX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUyB9IGZyb20gJy4uLy4uL2RlZmF1bHQtZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uLy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0aW9uRXJyb3JzVG9vbHRpcENvbnRlbnQgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZ2V0LXZhbGlkYXRpb24tZXJyb3JzLXRvb2x0aXAtY29udGVudC5mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHlUYWIsIEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvblV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy92YWxpZGF0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC5tb2R1bGUnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbkludGVybmFsIH0gZnJvbSAnLi4vdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuLi90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kYXRhJztcbmltcG9ydCB7IEVkaXREYXRhIH0gZnJvbSAnLi4vdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlRWRpdERhdGFCdWlsZGVyLCBQYWdlRWRpdERhdGFJbnRlcm5hbCB9IGZyb20gJy4vcGFnZS1lZGl0LWRhdGEuYnVpbGRlcic7XG5cbi8qKlxuICogVGhlIGRhdGEgdGhhdCBuZWVkcyB0byBiZSBwcm92aWRlZCBmb3IgYSByb3V0ZSB0byBiZSBhYmxlIHRvIGVkaXQgYSBlbnRpdHkuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VFZGl0RGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+ID0gT21pdDxFZGl0RW50aXR5RGF0YTxFbnRpdHlUeXBlPiwgJ2VudGl0eScgfCAnRW50aXR5U2VydmljZUNsYXNzJz4gJiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gZGlzcGxheSBhIGxvYWRpbmcgc3Bpbm5lciB3aGlsZSB0aGUgZW50aXR5IGZvciB0aGUgcGFnZSBpcyBsb2FkZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdCBwYWdlLlxuICAgICAqL1xuICAgIGVkaXREYXRhPzogRWRpdERhdGE8RW50aXR5VHlwZT4gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRpYWxvZyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGxlYXZlIHRoZSBzaXRlIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgbGVhdmluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nPzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGVudGl0eSBzZXJ2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjb25zdCBOR1hfRURJVF9EQVRBX0VOVElUWV9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxFbnRpdHlTZXJ2aWNlPGFueT4+ID0gbmV3IEluamVjdGlvblRva2VuPEVudGl0eVNlcnZpY2U8YW55Pj4oJ05HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0UnKTtcbi8qKlxuICogVGhlIGVudGl0eSBjbGFzcyB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgb2YgdGhlIGVkaXQgcGFnZSByb3V0ZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY29uc3QgTkdYX0VESVRfREFUQV9FTlRJVFk6IEluamVjdGlvblRva2VuPEVudGl0eUNsYXNzTmV3YWJsZTxhbnk+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlDbGFzc05ld2FibGU8YW55Pj4oJ05HWF9FRElUX0RBVEFfRU5USVRZJyk7XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjb25zdCBOR1hfRURJVF9EQVRBOiBJbmplY3Rpb25Ub2tlbjxQYWdlRWRpdERhdGE8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFnZUVkaXREYXRhPGFueT4+KCdOR1hfRURJVF9EQVRBJyk7XG5cbi8qKlxuICogQSBnZW5lcmljIHBhZ2UgdGhhdCBhbGxvd3MgeW91IHRvIGVkaXQgYSBzcGVjaWZpYyBlbnRpdHkuXG4gKiBGb3IgdGhpcyB0byB3b3JrIHlvdSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktZWRpdC1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0LXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUVkaXRQYWdlQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbnMgSGVscGVyTWV0aG9kcyBhcm91bmQgaGFuZGxpbmcgRW50aXRpZXMgYW5kIHRoZWlyIHByb3BlcnR5LW1ldGFkYXRhLlxuICAgICAqL1xuICAgIEVudGl0eVV0aWxpdGllczogdHlwZW9mIEVudGl0eVV0aWxpdGllcyA9IEVudGl0eVV0aWxpdGllcztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0YWJzIHRvIGRpc3BsYXkuXG4gICAgICovXG4gICAgZW50aXR5VGFicyE6IEVudGl0eVRhYjxFbnRpdHlUeXBlPltdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGVudGl0eSB0aGF0IGlzIGJlaW5nIGVkaXRlZC5cbiAgICAgKi9cbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdHkgYmVmb3JlIGFueSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlLlxuICAgICAqL1xuICAgIGVudGl0eVByaW9yQ2hhbmdlcyE6IEVudGl0eVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGRhdGEgZm9yIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgZGF0YSE6IFBhZ2VFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgLyoqXG4gICAgICogQWxsIHZhbGlkYXRpb24gZXJyb3JzIG9mIHRoZSBlbnRpdHkuXG4gICAgICovXG4gICAgdmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZW50aXR5IGlzIHZhbGlkLlxuICAgICAqL1xuICAgIGlzRW50aXR5VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBlbnRpdHkgaXMgZGlydHkuXG4gICAgICovXG4gICAgaXNFbnRpdHlEaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoYXQgdG8gZGlzcGxheSBpbnNpZGUgdGhlIHRvb2x0aXAuXG4gICAgICovXG4gICAgdG9vbHRpcENvbnRlbnQ6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGVudGl0eSBpcyByZWFkb25seS5cbiAgICAgKi9cbiAgICBpc0VudGl0eVJlYWRPbmx5ITogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gZGVsZXRlIHRoZSBlbnRpdHkuXG4gICAgICovXG4gICAgYWxsb3dEZWxldGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpbkNvbmZpcm1OYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbnRpdHlEaXJ0eSAmJiB0aGlzLmRhdGEuZWRpdERhdGEudW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KE5HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0UpXG4gICAgICAgIHJlYWRvbmx5IGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4sXG4gICAgICAgIEBJbmplY3QoTkdYX0VESVRfREFUQV9FTlRJVFkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfRURJVF9EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogUGFnZUVkaXREYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7IH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGlzIHJlYWRvbmx5LlxuICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZvciB0aGUgaW5wdXQgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIGlucHV0IGZvciB0aGUga2V5IGlzIHJlYWQgb25seS5cbiAgICAgKi9cbiAgICBpc1JlYWRPbmx5KGtleToga2V5b2YgRW50aXR5VHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhOiBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPHVua25vd24+IHwgdW5kZWZpbmVkID0gRW50aXR5VXRpbGl0aWVzLmdldFByb3BlcnR5TWV0YWRhdGEodGhpcy5lbnRpdHksIGtleSk7XG4gICAgICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtZXRhZGF0YSB3YXMgZm91bmQgZm9yIHRoZSBrZXkgXCIke1N0cmluZyhrZXkpfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VudGl0eVJlYWRPbmx5IHx8IG1ldGFkYXRhLmlzUmVhZE9ubHkodGhpcy5lbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBhZ2VFZGl0RGF0YUJ1aWxkZXIodGhpcy5pbnB1dERhdGEsIHRoaXMuZ2xvYmFsQ29uZmlnKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZWRpdCBkYXRhIHdhcyBwcm92aWRlZCBmb3IgXCJOR1hfRURJVF9EQVRBXCIuIFlvdSBuZWVkIHRvIHByb3ZpZGUgYSB2YWx1ZSBpbiB5b3VyIHJvdXRlcyBwcm92aWRlcnMgYXJyYXkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZDogRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpIGFzIEVudGl0eVR5cGVba2V5b2YgRW50aXR5VHlwZV07XG4gICAgICAgIGNvbnN0IGZvdW5kRW50aXR5OiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy5lbnRpdHlTZXJ2aWNlLmZpbmRCeUlkKGlkKTtcblxuICAgICAgICBpZiAoZm91bmRFbnRpdHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGVudGl0eSB3aXRoIGlkICR7aWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVudGl0eSA9IG5ldyB0aGlzLkVudGl0eUNsYXNzKGZvdW5kRW50aXR5KTtcbiAgICAgICAgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZW50aXR5KTtcblxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0VudGl0eVJlYWRPbmx5ID0gIXRoaXMuZGF0YS5hbGxvd1VwZGF0ZSh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgICAgICB0aGlzLmFsbG93RGVsZXRlID0gdGhpcy5kYXRhLmFsbG93RGVsZXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW50aXR5VGFicyA9IEVudGl0eVV0aWxpdGllcy5nZXRFbnRpdHlUYWJzKHRoaXMuZW50aXR5LCB0aGlzLmluamVjdG9yLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja09mZnNldCgpLCAxKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuY2hlY2tJc0VudGl0eVZhbGlkKCksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgYm90dG9tIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGZpeGVkLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIGNoZWNrT2Zmc2V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzY3JvbGxZOiBudW1iZXIgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgY29uc3QgYm90dG9tUm93OiBIVE1MRWxlbWVudCB8IG51bGwgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuYm90dG9tLXJvdycpO1xuICAgICAgICBjb25zdCBib3R0b21Sb3dDb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9ICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJy5ib3R0b20tcm93LWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChib3R0b21Sb3cgJiYgYm90dG9tUm93Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCBib3R0b21Sb3dDb250YWluZXJPZmZzZXQ6IG51bWJlciA9IGJvdHRvbVJvd0NvbnRhaW5lci5vZmZzZXRUb3A7XG4gICAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQ6IG51bWJlciA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgICAgICAgICAgaWYgKHNjcm9sbFkgKyB3aW5kb3dIZWlnaHQgPj0gYm90dG9tUm93Q29udGFpbmVyT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhib3R0b21Sb3csICdmaXhlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhib3R0b21Sb3csICdmaXhlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbiAob2YgdW5zYXZlZCBjaGFuZ2VzKS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMgfHwgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZW50aXR5IGhhcyBiZWNvbWUgaW52YWxpZCBvciBkaXJ0eS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGVja0VudGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lzRW50aXR5VmFsaWQoKTtcbiAgICAgICAgdGhpcy5pc0VudGl0eURpcnR5ID0gYXdhaXQgRW50aXR5VXRpbGl0aWVzLmlzRGlydHkodGhpcy5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzLCB0aGlzLmh0dHApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tJc0VudGl0eVZhbGlkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBhd2FpdCBWYWxpZGF0aW9uVXRpbGl0aWVzLmdldEVudGl0eVZhbGlkYXRpb25FcnJvcnModGhpcy5lbnRpdHksIHRoaXMuaW5qZWN0b3IsICd1cGRhdGUnKTtcbiAgICAgICAgdGhpcy50b29sdGlwQ29udGVudCA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBnZXRWYWxpZGF0aW9uRXJyb3JzVG9vbHRpcENvbnRlbnQodGhpcy52YWxpZGF0aW9uRXJyb3JzKSk7XG4gICAgICAgIHRoaXMuaXNFbnRpdHlWYWxpZCA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gc2F2ZSB0aGUgY2hhbmdlcyBhbmQgY2xvc2UgdGhlIGRpYWxvZyBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGVkaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRW50aXR5UmVhZE9ubHkgfHwgIXRoaXMuaXNFbnRpdHlWYWxpZCB8fCAhdGhpcy5pc0VudGl0eURpcnR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuZWRpdERhdGEuZWRpdFJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtRWRpdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIHRoaXMuZGF0YS5lZGl0RGF0YS5jb25maXJtRWRpdERpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCB0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtU2F2ZVRleHQpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsIHRoaXMuZ2xvYmFsQ29uZmlnLnNhdmVMYWJlbClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCB0aGlzLmdsb2JhbENvbmZpZy5lZGl0TGFiZWwpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtRWRpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1FZGl0KCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS51cGRhdGUodGhpcy5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKS50aGVuKCgpID0+IHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBkZWxldGUgdGhlIGVudGl0eSBhbmQgY2xvc2UgdGhlIGRpYWxvZyBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuZWRpdERhdGEuZGVsZXRlUmVxdWlyZXNDb25maXJtRGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmRhdGEuZWRpdERhdGEuY29uZmlybURlbGV0ZURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCB0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtRGVsZXRlVGV4dClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndHlwZScsICdkZWxldGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCB0aGlzLmdsb2JhbENvbmZpZy5kZWxldGVMYWJlbClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCB0aGlzLmdsb2JhbENvbmZpZy5kZWxldGVMYWJlbClcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZVxuICAgICAgICAgICAgLmRlbGV0ZSh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBuYXZpZ2F0ZSBiYWNrLlxuICAgICAqL1xuICAgIG5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbkNvbmZpcm1OYXZpZ2F0aW9uRGlhbG9nKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBjb25maXJtIGRpYWxvZyBmb3IgbmF2aWdhdGluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcy5cbiAgICAgKiBUaGlzIGlzIGV4cG9zZWQgYmVjYXVzZSB0aGUgVW5zYXZlZENoYW5nZXNHdWFyZCBuZWVkcyB0byBhY2Nlc3MgdGhpcy5cbiAgICAgKiBAcmV0dXJucyBUaGUgZmlyc3Qgb2JzZXJ2YWJsZSByZXN1bHQgb2YgdGhlIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIG9wZW5Db25maXJtTmF2aWdhdGlvbkRpYWxvZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwgYm9vbGVhbj4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YS5lZGl0RGF0YS5jb25maXJtVW5zYXZlZENoYW5nZXNEaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5waXBlKGZpcnN0KCksIG1hcChwID0+IChwID8/IGZhbHNlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybU5hdmlnYXRlQmFjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICAgICAgRW50aXR5VXRpbGl0aWVzLnJlc2V0Q2hhbmdlc09uRW50aXR5KHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJ1bnMgdGhlIGVkaXQgYWN0aW9uIG9uIHRoZSBlbnRpdHkuXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gcnVuLlxuICAgICAqL1xuICAgIHJ1bkVkaXRBY3Rpb24oYWN0aW9uOiBFZGl0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVxdWlyZUNvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bkVkaXRBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogYWN0aW9uLmNvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuRWRpdEFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1SdW5FZGl0QWN0aW9uKGFjdGlvbjogRWRpdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogdm9pZCB7XG4gICAgICAgIHZvaWQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbi5hY3Rpb24odGhpcy5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tFbnRpdHkoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIEVkaXRBY3Rpb24gaXMgZGlzYWJsZWQgKGUuZy4gQmVjYXVzZSB0aGUgY3VycmVudCBlbnRyeSBkb2Vzbid0IGZ1bGxmaWwgdGhlIHJlcXVpcmVtZW50cykuXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBFZGl0QWN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBBY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgZWRpdEFjdGlvbkRpc2FibGVkKGFjdGlvbjogRWRpdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gIWFjdGlvbi5lbmFibGVkKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKSk7XG4gICAgfVxufSIsIiBcbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48IS0tIGVzbGludC1kaXNhYmxlIGFuZ3VsYXIvY3ljbG9tYXRpYy1jb21wbGV4aXR5IC0tPlxuPGRpdiAqbmdJZj1cIiFlbnRpdHlUYWJzICYmIGRhdGEuZGlzcGxheUxvYWRpbmdTcGlubmVyXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8YnI+XG4gICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XG4gICAgPGJyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJlbnRpdHlUYWJzXCIgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8YnI+XG5cbiAgICA8IS0tLS0tLS0tLS0tLT5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8IS0tLS0tLS0tLS0tLT5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYW5jZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImJhY2stYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIFtjbGFzcy51bnNhdmVkQ2hhbmdlc109XCJoYXNVbnNhdmVkQ2hhbmdlc1wiIChjbGljayk9XCJuYXZpZ2F0ZUJhY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICB7e2RhdGEuZWRpdERhdGEuY2FuY2VsQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGFzVW5zYXZlZENoYW5nZXNcIiBjbGFzcz1cImZhcyBmYS13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmVkaXREYXRhLmFjdGlvbnMubGVuZ3RoXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmFjdGlvbnNMYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZGF0YS5lZGl0RGF0YS5hY3Rpb25zXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cImVkaXRBY3Rpb25EaXNhYmxlZChhY3Rpb24pXCIgKGNsaWNrKT1cInJ1bkVkaXRBY3Rpb24oYWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICBcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0RlbGV0ZVwiIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCIgKGNsaWNrKT1cImRlbGV0ZSgpXCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmRlbGV0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxoMT57e2RhdGEuZWRpdERhdGEudGl0bGUoZW50aXR5UHJpb3JDaGFuZ2VzKX19PC9oMT5cblxuICAgIDwhLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8IS0tLS0tLS0tLS0tPlxuICAgIDxmb3JtPlxuICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoID4gMVwiIHByZXNlcnZlQ29udGVudCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwiY2hlY2tPZmZzZXQoKVwiPlxuICAgICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBlbnRpdHlUYWJzXCIgW2xhYmVsXT1cInRhYi50YWJOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYi5yb3dzXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGhDbGFzc2VzKGVudGl0eSwga2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5KGtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgIFxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50aXR5VGFicy5sZW5ndGggPD0gMVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZW50aXR5VGFicy5sZW5ndGhcIiBjbGFzcz1cIm5vLWVudGl0eS10YWJzXCI+XG4gICAgICAgICAgICAgICAgRVJST1I6IE5vIElucHV0cy4gRGlkIHlvdSBjb3JyZWN0bHkgYXNzaWduIGFsbCB2YWx1ZXMgaW4gdGhlIG1vZGVsIGNvbnN0cnVjdG9yP1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGVudGl0eVRhYnNbMF0/LnJvd3NcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIkVudGl0eVV0aWxpdGllcy5nZXRXaWR0aENsYXNzZXMoZW50aXR5LCBrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1yb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXJvdyBjb250YWluZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNFbnRpdHlSZWFkT25seSB8fCAhaXNFbnRpdHlWYWxpZCB8fCAhaXNFbnRpdHlEaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhdmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZGl0RGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS10b29sdGlwICpuZ0lmPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIiBbdG9vbHRpcENvbnRlbnRdPVwidG9vbHRpcENvbnRlbnRcIj48L25neC1tYXQtZW50aXR5LXRvb2x0aXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGJyPlxuPC9kaXY+Il19
|
|
@@ -12,7 +12,6 @@ export class PageEditDataBuilder extends BaseBuilder {
|
|
|
12
12
|
const editData = new EditDataBuilder(this.globalConfig, data.editData)
|
|
13
13
|
.withDefault('cancelButtonLabel', this.globalConfig.backLabel)
|
|
14
14
|
.getResult();
|
|
15
|
-
// eslint-disable-next-line max-len
|
|
16
15
|
const confirmUnsavedChangesDialogData = new ConfirmDialogDataBuilder(this.globalConfig, data.editData?.confirmUnsavedChangesDialogData)
|
|
17
16
|
.withDefault('title', this.globalConfig.confirmUnsavedChangesTitle)
|
|
18
17
|
.withDefault('text', this.globalConfig.confirmUnsavedChangesText)
|
|
@@ -30,4 +29,4 @@ export class PageEditDataBuilder extends BaseBuilder {
|
|
|
30
29
|
};
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1lZGl0LWRhdGEuYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvZWRpdC1wYWdlL3BhZ2UtZWRpdC1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0NBQStDLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSx3Q0FBd0MsQ0FBQztBQWlCM0YsK0NBQStDO0FBQy9DLE1BQU0sT0FBTyxtQkFDVCxTQUFRLFdBQXVFO0lBRS9FLFlBQVksSUFBOEIsRUFBRSxZQUFvQztRQUM1RSxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBOEI7UUFDckQsTUFBTSxRQUFRLEdBQWlDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUMvRixXQUFXLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7YUFDN0QsU0FBUyxFQUFFLENBQUM7UUFFakIsTUFBTSwrQkFBK0IsR0FBOEIsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsK0JBQStCLENBQUM7YUFDN0osV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDO2FBQ2xFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQzthQUNoRSxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQzthQUMvRSxTQUFTLEVBQUUsQ0FBQztRQUVqQixPQUFPO1lBQ0gsUUFBUSxFQUFFO2dCQUNOLEdBQUcsUUFBUTtnQkFDWCwrQkFBK0IsRUFBRSwrQkFBK0I7Z0JBQ2hFLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsa0NBQWtDLElBQUksSUFBSTthQUNoRztZQUNELFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVc7WUFDNUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVztZQUM1QyxxQkFBcUIsRUFBRSxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSTtTQUM1RCxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IGRlZmF1bHRUcnVlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2RlZmF1bHQtdHJ1ZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RGF0YUJ1aWxkZXIsIEVkaXREYXRhSW50ZXJuYWwgfSBmcm9tICcuLi90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YUludGVybmFsIH0gZnJvbSAnLi4vdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHkuYnVpbGRlcic7XG5pbXBvcnQgeyBQYWdlRWRpdERhdGEgfSBmcm9tICcuL2VkaXQtcGFnZS5jb21wb25lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IHR5cGUgUGFnZUVkaXREYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IE9taXQ8RWRpdEVudGl0eURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiwgJ2VudGl0eScgfCAnRW50aXR5U2VydmljZUNsYXNzJz4gJiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5TG9hZGluZ1NwaW5uZXI6IGJvb2xlYW4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0RGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiAmIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICAgICAgdW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgUGFnZUVkaXREYXRhQnVpbGRlcjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBCYXNlQnVpbGRlcjxQYWdlRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiwgUGFnZUVkaXREYXRhPEVudGl0eVR5cGU+PiB7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBQYWdlRWRpdERhdGE8RW50aXR5VHlwZT4sIGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcykge1xuICAgICAgICBzdXBlcihnbG9iYWxDb25maWcsIGRhdGEpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlQmFzZURhdGEoZGF0YTogUGFnZUVkaXREYXRhPEVudGl0eVR5cGU+KTogUGFnZUVkaXREYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBlZGl0RGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBFZGl0RGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIGRhdGEuZWRpdERhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NhbmNlbEJ1dHRvbkxhYmVsJywgdGhpcy5nbG9iYWxDb25maWcuYmFja0xhYmVsKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpcm1VbnNhdmVkQ2hhbmdlc0RpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCBkYXRhLmVkaXREYXRhPy5jb25maXJtVW5zYXZlZENoYW5nZXNEaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuZ2xvYmFsQ29uZmlnLmNvbmZpcm1VbnNhdmVkQ2hhbmdlc1RpdGxlKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgdGhpcy5nbG9iYWxDb25maWcuY29uZmlybVVuc2F2ZWRDaGFuZ2VzVGV4dClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgnY29uZmlybUJ1dHRvbkxhYmVsJywgdGhpcy5nbG9iYWxDb25maWcuY29uZmlybVVuc2F2ZWRDaGFuZ2VzTGFiZWwpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVkaXREYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4uZWRpdERhdGEsXG4gICAgICAgICAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YTogY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nOiBkYXRhLmVkaXREYXRhPy51bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nID8/IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbGxvd1VwZGF0ZTogZGF0YS5hbGxvd1VwZGF0ZSA/PyBkZWZhdWx0VHJ1ZSxcbiAgICAgICAgICAgIGFsbG93RGVsZXRlOiBkYXRhLmFsbG93RGVsZXRlID8/IGRlZmF1bHRUcnVlLFxuICAgICAgICAgICAgZGlzcGxheUxvYWRpbmdTcGlubmVyOiBkYXRhLmRpc3BsYXlMb2FkaW5nU3Bpbm5lciA/PyB0cnVlXG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==
|