@eqproject/eqp-dynamic-module 2.11.5 → 2.11.7

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.
Files changed (37) hide show
  1. package/README.md +4 -0
  2. package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +3 -3
  3. package/esm2020/lib/components/private/dynamic-module-field-extra-fix/dynamic-module-field-extra-fix.component.mjs +3 -3
  4. package/esm2020/lib/components/private/field-graphics-editor/field-graphics-editor.component.mjs +115 -27
  5. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +28 -6
  6. package/esm2020/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.mjs +25 -5
  7. package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +12 -3
  8. package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +26 -4
  9. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +28 -6
  10. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +27 -5
  11. package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +1 -1
  12. package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +1 -1
  13. package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +1 -1
  14. package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +3 -3
  15. package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +3 -3
  16. package/esm2020/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +3 -3
  17. package/esm2020/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +3 -3
  18. package/esm2020/lib/directives/speech-to-text/speech-to-text.directive.mjs +7 -2
  19. package/esm2020/lib/utils/css-property-catalog.mjs +45 -2
  20. package/esm2020/lib/utils/field-style-catalog.mjs +45 -19
  21. package/esm2020/lib/utils/floating-label-styles.mjs +155 -0
  22. package/esm2020/lib/utils/refresh-outline-notch.mjs +38 -0
  23. package/fesm2015/eqproject-eqp-dynamic-module.mjs +799 -339
  24. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  25. package/fesm2020/eqproject-eqp-dynamic-module.mjs +779 -325
  26. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  27. package/lib/components/private/field-graphics-editor/field-graphics-editor.component.d.ts +19 -1
  28. package/lib/components/private/field-templates/image-field-selector-template/image-field-selector-template.component.d.ts +6 -2
  29. package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +6 -2
  30. package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +6 -2
  31. package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +6 -2
  32. package/lib/directives/speech-to-text/speech-to-text.directive.d.ts +3 -1
  33. package/lib/utils/css-property-catalog.d.ts +25 -0
  34. package/lib/utils/field-style-catalog.d.ts +5 -0
  35. package/lib/utils/floating-label-styles.d.ts +73 -0
  36. package/lib/utils/refresh-outline-notch.d.ts +15 -0
  37. package/package.json +1 -1
@@ -44,10 +44,10 @@ export class DynamicModuleFieldExtraFixComponent {
44
44
  }
45
45
  }
46
46
  DynamicModuleFieldExtraFixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldExtraFixComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
47
- DynamicModuleFieldExtraFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldExtraFixComponent, selector: "dynamic-module-field-extra-fix", inputs: { fieldExtraConfig: "fieldExtraConfig", form: "form", field: "field", endPointConfiguration: "endPointConfiguration" }, outputs: { configValueChange: "configValueChange" }, ngImport: i0, template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i7.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }] });
47
+ DynamicModuleFieldExtraFixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldExtraFixComponent, selector: "dynamic-module-field-extra-fix", inputs: { fieldExtraConfig: "fieldExtraConfig", form: "form", field: "field", endPointConfiguration: "endPointConfiguration" }, outputs: { configValueChange: "configValueChange" }, ngImport: i0, template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i7.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"], exportAs: ["speechToText"] }] });
48
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldExtraFixComponent, decorators: [{
49
49
  type: Component,
50
- args: [{ selector: 'dynamic-module-field-extra-fix', template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>" }]
50
+ args: [{ selector: 'dynamic-module-field-extra-fix', template: "\r\n\r\n<div [formGroup]=\"formExtraGroup\">\r\n\r\n <mat-form-field appearance=\"outline\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Campo di testo'] && loaded\">\r\n <mat-label class=\"pt-1\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-label>\r\n <input\r\n matInput\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\"\r\n />\r\n\r\n <tmw-icon class=\"mat-icon\"\r\n matSuffix\r\n SpeechToText\r\n #micSpeech=\"speechToText\"\r\n [(bindedText)]=\"FieldExtraValues.FieldConfigValue\"\r\n [variant]=\"micSpeech.isListening ? 'filled' : 'outline'\"\r\n style=\"cursor: pointer\" name=\"microphone\"></tmw-icon>\r\n </mat-form-field>\r\n\r\n <mat-slide-toggle color=\"primary\" *ngIf=\"fieldExtraConfig.FieldConfigType == FieldTypeEnum['Booleano'] && loaded\"\r\n [formControlName]=\"'element'\"\r\n [(ngModel)]=\"FieldExtraValues.FieldConfigValue\">\r\n {{ fieldExtraConfig.FieldConfigLabel }}\r\n </mat-slide-toggle>\r\n\r\n</div>" }]
51
51
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }]; }, propDecorators: { fieldExtraConfig: [{
52
52
  type: Input
53
53
  }], form: [{
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
59
59
  }], configValueChange: [{
60
60
  type: Output
61
61
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzVGLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxtQ0FBbUM7SUFjOUMsWUFDVSxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFSL0Isc0JBQWlCLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRW5HLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLHFCQUFnQixHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDNUQsV0FBTSxHQUFZLEtBQUssQ0FBQztJQUtyQixDQUFDO0lBRUosUUFBUTtRQUVOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQywwQkFBMEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXhPLHlGQUF5RjtRQUN6RixvRkFBb0Y7UUFDcEYsNEZBQTRGO1FBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7WUFDOUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEtBQUssRUFBb0IsQ0FBQzthQUFFO1lBQy9HLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBQztZQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdEo7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNsRCxDQUFDLENBQUM7SUFDUCxDQUFDOztpSUE3Q1UsbUNBQW1DO3FIQUFuQyxtQ0FBbUMsMlBDWmhELCs5QkEyQk07NEZEZk8sbUNBQW1DO2tCQUwvQyxTQUFTOytCQUNFLGdDQUFnQzt5R0FNakMsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkRXh0cmFDb25maWcsIEZpZWxkRXh0cmFWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmllbGRFeHRyYUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQsIEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkeW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWV4dHJhLWZpeC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljTW9kdWxlRmllbGRFeHRyYUZpeENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkRXh0cmFDb25maWc6IEZpZWxkRXh0cmFDb25maWc7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkO1xyXG4gIEBJbnB1dCgpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG5cclxuICBAT3V0cHV0KCkgY29uZmlnVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGaWVsZEV4dHJhVmFsdWVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmllbGRFeHRyYVZhbHVlcz4oKTtcclxuXHJcbiAgRmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcbiAgRmllbGRFeHRyYVZhbHVlczogRmllbGRFeHRyYVZhbHVlcyA9IG5ldyBGaWVsZEV4dHJhVmFsdWVzKCk7XHJcbiAgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUV4dHJhR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyXHJcbiAgKSB7fSAgXHJcblxyXG4gIG5nT25Jbml0KCl7XHJcblxyXG4gICAgdGhpcy5GaWVsZEV4dHJhVmFsdWVzID0gKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA/PyBbXSkuZmluZCh4ID0+IHguRmllbGRDb25maWdDb2RlID09IHRoaXMuZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ0NvZGUgJiYgKHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT0gdGhpcy5maWVsZC5OYW1lIHx8IHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT09IHVuZGVmaW5lZCkpO1xyXG5cclxuICAgIC8vIFN1IHVuIGNhbXBvIGFwcGVuYSBhZ2dpdW50byBsYSB2b2NlIHB1w7Igbm9uIGVzaXN0ZXJlIGFuY29yYSAoY29uZmlndXJlRmllbGRzRXh0cmEgZ2lyYVxyXG4gICAgLy8gaW4gbmdPbkluaXQgZGVsbGEgZGlhbG9nLCBxdWFuZG8gaWwgdGlwbyBub24gw6ggYW5jb3JhIHN0YXRvIHNjZWx0byk6IHNlbnphIHF1ZXN0YVxyXG4gICAgLy8gY3JlYXppb25lIGxlIHJpZ2hlIHNvdHRvIGFuZGF2YW5vIGluIGVycm9yZSBlIGlsIHJlc3RvIGRlbGxhIGRpYWxvZyBub24gdmVuaXZhIGRpc2VnbmF0by5cclxuICAgIGlmICghdGhpcy5GaWVsZEV4dHJhVmFsdWVzKSB7XHJcbiAgICAgIHRoaXMuRmllbGRFeHRyYVZhbHVlcyA9IG5ldyBGaWVsZEV4dHJhVmFsdWVzKCk7XHJcbiAgICAgIHRoaXMuRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ0NvZGUgPSB0aGlzLmZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdDb2RlO1xyXG4gICAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPSB0aGlzLmZpZWxkPy5OYW1lO1xyXG4gICAgICBpZiAodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwpIHsgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID0gbmV3IEFycmF5PEZpZWxkRXh0cmFWYWx1ZXM+KCk7IH1cclxuICAgICAgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2godGhpcy5GaWVsZEV4dHJhVmFsdWVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydCb29sZWFubyddKXtcclxuICAgICAgdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWUgPSB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZSA9PSBcImZhbHNlXCIgfHwgIXRoaXMuRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uZmlndXJlRm9ybSgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlRm9ybSgpe1xyXG4gICAgICB0aGlzLmZvcm1FeHRyYUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgZWxlbWVudDogW3RoaXMuRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlXVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIlxyXG5cclxuPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1FeHRyYUdyb3VwXCI+XHJcblxyXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ1R5cGUgPT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gZGkgdGVzdG8nXSAmJiBsb2FkZWRcIj5cclxuICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInB0LTFcIj5cclxuICAgICAgICB7eyBmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnTGFiZWwgfX1cclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInZWxlbWVudCdcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlXCJcclxuICAgICAgLz5cclxuXHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCJcclxuICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICBTcGVlY2hUb1RleHRcclxuICAgICAgICBbKGJpbmRlZFRleHQpXT1cIkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiBuYW1lPVwibWljcm9waG9uZVwiPjwvdG13LWljb24+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgPG1hdC1zbGlkZS10b2dnbGUgY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCJmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydCb29sZWFubyddICYmIGxvYWRlZFwiXHJcbiAgW2Zvcm1Db250cm9sTmFtZV09XCInZWxlbWVudCdcIlxyXG4gIFsobmdNb2RlbCldPVwiRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlXCI+XHJcbiAge3sgZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ0xhYmVsIH19XHJcbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cclxuPC9kaXY+Il19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXgvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzVGLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBUTNFLE1BQU0sT0FBTyxtQ0FBbUM7SUFjOUMsWUFDVSxXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFSL0Isc0JBQWlCLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRW5HLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLHFCQUFnQixHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDNUQsV0FBTSxHQUFZLEtBQUssQ0FBQztJQUtyQixDQUFDO0lBRUosUUFBUTtRQUVOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQywwQkFBMEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXhPLHlGQUF5RjtRQUN6RixvRkFBb0Y7UUFDcEYsNEZBQTRGO1FBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7WUFDOUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLEtBQUssRUFBb0IsQ0FBQzthQUFFO1lBQy9HLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBQztZQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdEo7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNsRCxDQUFDLENBQUM7SUFDUCxDQUFDOztpSUE3Q1UsbUNBQW1DO3FIQUFuQyxtQ0FBbUMsMlBDWmhELDRrQ0E2Qk07NEZEakJPLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxnQ0FBZ0M7eUdBTWpDLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnLCBGaWVsZEV4dHJhVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkRXh0cmFDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXguY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY01vZHVsZUZpZWxkRXh0cmFGaXhDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZEV4dHJhQ29uZmlnOiBGaWVsZEV4dHJhQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgZmllbGQ6IEJhc2VGaWVsZDtcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpIGNvbmZpZ1ZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmllbGRFeHRyYVZhbHVlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkRXh0cmFWYWx1ZXM+KCk7XHJcblxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIEZpZWxkRXh0cmFWYWx1ZXM6IEZpZWxkRXh0cmFWYWx1ZXMgPSBuZXcgRmllbGRFeHRyYVZhbHVlcygpO1xyXG4gIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1FeHRyYUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxyXG4gICkge30gIFxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG5cclxuICAgIHRoaXMuRmllbGRFeHRyYVZhbHVlcyA9ICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPz8gW10pLmZpbmQoeCA9PiB4LkZpZWxkQ29uZmlnQ29kZSA9PSB0aGlzLmZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdDb2RlICYmICh4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09IHRoaXMuZmllbGQuTmFtZSB8fCB4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09PSB1bmRlZmluZWQpKTtcclxuXHJcbiAgICAvLyBTdSB1biBjYW1wbyBhcHBlbmEgYWdnaXVudG8gbGEgdm9jZSBwdcOyIG5vbiBlc2lzdGVyZSBhbmNvcmEgKGNvbmZpZ3VyZUZpZWxkc0V4dHJhIGdpcmFcclxuICAgIC8vIGluIG5nT25Jbml0IGRlbGxhIGRpYWxvZywgcXVhbmRvIGlsIHRpcG8gbm9uIMOoIGFuY29yYSBzdGF0byBzY2VsdG8pOiBzZW56YSBxdWVzdGFcclxuICAgIC8vIGNyZWF6aW9uZSBsZSByaWdoZSBzb3R0byBhbmRhdmFubyBpbiBlcnJvcmUgZSBpbCByZXN0byBkZWxsYSBkaWFsb2cgbm9uIHZlbml2YSBkaXNlZ25hdG8uXHJcbiAgICBpZiAoIXRoaXMuRmllbGRFeHRyYVZhbHVlcykge1xyXG4gICAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMgPSBuZXcgRmllbGRFeHRyYVZhbHVlcygpO1xyXG4gICAgICB0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdDb2RlID0gdGhpcy5maWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnQ29kZTtcclxuICAgICAgdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID0gdGhpcy5maWVsZD8uTmFtZTtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsKSB7IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IG5ldyBBcnJheTxGaWVsZEV4dHJhVmFsdWVzPigpOyB9XHJcbiAgICAgIHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5wdXNoKHRoaXMuRmllbGRFeHRyYVZhbHVlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ1R5cGUgPT0gRmllbGRUeXBlRW51bVsnQm9vbGVhbm8nXSl7XHJcbiAgICAgIHRoaXMuRmllbGRFeHRyYVZhbHVlcy5GaWVsZENvbmZpZ1ZhbHVlID0gdGhpcy5GaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWUgPT0gXCJmYWxzZVwiIHx8ICF0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbmZpZ3VyZUZvcm0oKTtcclxuICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZUZvcm0oKXtcclxuICAgICAgdGhpcy5mb3JtRXh0cmFHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGVsZW1lbnQ6IFt0aGlzLkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZV1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuXHJcbjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtRXh0cmFHcm91cFwiPlxyXG5cclxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAqbmdJZj1cImZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ10gJiYgbG9hZGVkXCI+XHJcbiAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJwdC0xXCI+XHJcbiAgICAgICAge3sgZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ0xhYmVsIH19XHJcbiAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2VsZW1lbnQnXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cIkZpZWxkRXh0cmFWYWx1ZXMuRmllbGRDb25maWdWYWx1ZVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiXHJcbiAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgU3BlZWNoVG9UZXh0XHJcbiAgICAgICAgI21pY1NwZWVjaD1cInNwZWVjaFRvVGV4dFwiXHJcbiAgICAgICAgWyhiaW5kZWRUZXh0KV09XCJGaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVcIlxyXG4gICAgICAgIFt2YXJpYW50XT1cIm1pY1NwZWVjaC5pc0xpc3RlbmluZyA/ICdmaWxsZWQnIDogJ291dGxpbmUnXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIG5hbWU9XCJtaWNyb3Bob25lXCI+PC90bXctaWNvbj5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cImZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ10gJiYgbG9hZGVkXCJcclxuICBbZm9ybUNvbnRyb2xOYW1lXT1cIidlbGVtZW50J1wiXHJcbiAgWyhuZ01vZGVsKV09XCJGaWVsZEV4dHJhVmFsdWVzLkZpZWxkQ29uZmlnVmFsdWVcIj5cclxuICB7eyBmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnTGFiZWwgfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG48L2Rpdj4iXX0=