@alfresco/adf-core 8.1.0-15444089587 → 8.1.0-15447920937

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 (25) hide show
  1. package/bundles/assets/adf-core/i18n/de.json +1 -1
  2. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +4 -4
  3. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +3 -3
  4. package/esm2022/lib/form/components/form-renderer.component.mjs +3 -3
  5. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +3 -3
  6. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +3 -3
  7. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +3 -3
  8. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +3 -3
  9. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +3 -3
  10. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +3 -3
  11. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +3 -3
  12. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +3 -3
  13. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +12 -20
  14. package/esm2022/lib/viewer/components/viewer.component.mjs +18 -3
  15. package/fesm2022/adf-core.mjs +47 -39
  16. package/fesm2022/adf-core.mjs.map +1 -1
  17. package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
  18. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  19. package/lib/card-view/components/card-view/card-view.component.scss +1 -0
  20. package/lib/form/components/form-renderer.component.scss +9 -0
  21. package/lib/form/components/inplace-form-input/inplace-form-input.component.scss +1 -1
  22. package/lib/viewer/components/viewer-render/viewer-render.component.d.ts +5 -9
  23. package/lib/viewer/components/viewer.component.d.ts +2 -0
  24. package/lib/viewer/components/viewer.component.scss +1 -14
  25. package/package.json +4 -4
@@ -47,7 +47,7 @@ export class TextWidgetComponent extends WidgetComponent {
47
47
  }
48
48
  }
49
49
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextWidgetComponent, deps: [{ token: i1.FormService }], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextWidgetComponent, isStandalone: true, selector: "text-widget", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-textfield adf-text-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\" class=\"adf-form-field-input\" [floatLabel]=\"field.placeholder ? 'always' : 'auto'\">\n <mat-label *ngIf=\"!field.leftLabels\" class=\"adf-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"field.value\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onFieldChanged(field)\"\n [disabled]=\"field.readOnly || readOnly\"\n [textMask]=\"{mask: mask, isReversed: isMaskReversed}\"\n [placeholder]=\"placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n </div>\n </div>\n</div>\n", styles: [".adf-text-widget{width:100%}.adf-text-widget .mat-mdc-floating-label{top:20px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { 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: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "directive", type: InputMaskDirective, selector: "[adf-text-mask], [textMask]", inputs: ["textMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TextWidgetComponent, isStandalone: true, selector: "text-widget", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-textfield adf-text-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\">\n <mat-label *ngIf=\"!field.leftLabels\" class=\"adf-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"field.value\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onFieldChanged(field)\"\n [disabled]=\"field.readOnly || readOnly\"\n [textMask]=\"{mask: mask, isReversed: isMaskReversed}\"\n [placeholder]=\"placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n </div>\n </div>\n</div>\n", styles: [".adf-text-widget{width:100%}.adf-text-widget .mat-mdc-floating-label{top:20px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { 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: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "directive", type: InputMaskDirective, selector: "[adf-text-mask], [textMask]", inputs: ["textMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
51
51
  }
52
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextWidgetComponent, decorators: [{
53
53
  type: Component,
@@ -61,6 +61,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
61
61
  '(input)': 'event($event)',
62
62
  '(invalid)': 'event($event)',
63
63
  '(select)': 'event($event)'
64
- }, imports: [NgIf, TranslateModule, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent, InputMaskDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-textfield adf-text-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\" class=\"adf-form-field-input\" [floatLabel]=\"field.placeholder ? 'always' : 'auto'\">\n <mat-label *ngIf=\"!field.leftLabels\" class=\"adf-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"field.value\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onFieldChanged(field)\"\n [disabled]=\"field.readOnly || readOnly\"\n [textMask]=\"{mask: mask, isReversed: isMaskReversed}\"\n [placeholder]=\"placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n </div>\n </div>\n</div>\n", styles: [".adf-text-widget{width:100%}.adf-text-widget .mat-mdc-floating-label{top:20px}\n"] }]
64
+ }, imports: [NgIf, TranslateModule, MatFormFieldModule, MatInputModule, FormsModule, ErrorWidgetComponent, InputMaskDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-textfield adf-text-widget {{ field.className }}\"\n [class.adf-invalid]=\"!field.isValid && isTouched()\"\n [class.adf-readonly]=\"field.readOnly\"\n [class.adf-left-label-input-container]=\"field.leftLabels\">\n <div *ngIf=\"field.leftLabels\">\n <label class=\"adf-label adf-left-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </label>\n </div>\n <div>\n <mat-form-field [hideRequiredMarker]=\"true\">\n <mat-label *ngIf=\"!field.leftLabels\" class=\"adf-label\" [attr.for]=\"field.id\">\n {{ field.name | translate }}<span class=\"adf-asterisk\" [style.visibility]=\"isRequired() ? 'visible' : 'hidden'\">*</span>\n </mat-label>\n <input matInput\n class=\"adf-input\"\n type=\"text\"\n [id]=\"field.id\"\n [required]=\"isRequired()\"\n [value]=\"field.value\"\n [(ngModel)]=\"field.value\"\n (ngModelChange)=\"onFieldChanged(field)\"\n [disabled]=\"field.readOnly || readOnly\"\n [textMask]=\"{mask: mask, isReversed: isMaskReversed}\"\n [placeholder]=\"placeholder\"\n [title]=\"field.tooltip\"\n (blur)=\"markAsTouched()\">\n </mat-form-field>\n <div class=\"adf-error-messages-container\">\n <error-widget [error]=\"field.validationSummary\" />\n <error-widget *ngIf=\"isInvalidFieldRequired() && isTouched()\"\n required=\"{{ 'FORM.FIELD.REQUIRED' | translate }}\" />\n </div>\n </div>\n</div>\n", styles: [".adf-text-widget{width:100%}.adf-text-widget .mat-mdc-floating-label{top:20px}\n"] }]
65
65
  }], ctorParameters: () => [{ type: i1.FormService }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL3RleHQvdGV4dC53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL3RleHQvdGV4dC53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQXFCM0QsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFLcEQsWUFBbUIsV0FBd0I7UUFDdkMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBREosZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFFM0MsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsV0FBVztnQkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDO29CQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEgsQ0FBQztJQUNMLENBQUM7K0dBbEJRLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlXQ2pEaEMseTJEQW1DQSwwSURXYyxJQUFJLDRGQUFFLGVBQWUsMkZBQUUsa0JBQWtCLDBTQUFFLGNBQWMsMFdBQUUsV0FBVyw0MEJBQUUsb0JBQW9CLHdGQUFFLGtCQUFrQjs7NEZBR2pILG1CQUFtQjtrQkFuQi9CLFNBQVM7K0JBQ0ksYUFBYSxjQUNYLElBQUksUUFHVjt3QkFDRixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsUUFBUSxFQUFFLGVBQWU7d0JBQ3pCLFVBQVUsRUFBRSxlQUFlO3dCQUMzQixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFlBQVksRUFBRSxlQUFlO3dCQUM3QixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFVBQVUsRUFBRSxlQUFlO3FCQUM5QixXQUNRLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLGlCQUM1RyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3IvZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4uL3dpZGdldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi90ZXh0LW1hc2suY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0ZXh0LXdpZGdldCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGV4dC53aWRnZXQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGV4dC53aWRnZXQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGlucHV0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnZhbGlkKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhzZWxlY3QpJzogJ2V2ZW50KCRldmVudCknXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVHJhbnNsYXRlTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgRXJyb3JXaWRnZXRDb21wb25lbnQsIElucHV0TWFza0RpcmVjdGl2ZV0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBtYXNrOiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBpc01hc2tSZXZlcnNlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZm9ybVNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5wYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMubWFzayA9IHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2snXTtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2snXSAmJiB0aGlzLmZpZWxkLnBhcmFtc1snaW5wdXRNYXNrUGxhY2Vob2xkZXInXVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2tQbGFjZWhvbGRlciddXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5maWVsZC5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIHRoaXMuaXNNYXNrUmV2ZXJzZWQgPSB0aGlzLmZpZWxkLnBhcmFtc1snaW5wdXRNYXNrUmV2ZXJzZWQnXSA/IHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2tSZXZlcnNlZCddIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXRleHRmaWVsZCBhZGYtdGV4dC13aWRnZXQge3sgZmllbGQuY2xhc3NOYW1lIH19XCJcbiAgICAgW2NsYXNzLmFkZi1pbnZhbGlkXT1cIiFmaWVsZC5pc1ZhbGlkICYmIGlzVG91Y2hlZCgpXCJcbiAgICAgW2NsYXNzLmFkZi1yZWFkb25seV09XCJmaWVsZC5yZWFkT25seVwiXG4gICAgIFtjbGFzcy5hZGYtbGVmdC1sYWJlbC1pbnB1dC1jb250YWluZXJdPVwiZmllbGQubGVmdExhYmVsc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5sZWZ0TGFiZWxzXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImFkZi1sYWJlbCBhZGYtbGVmdC1sYWJlbFwiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPlxuICAgICAgICAgICAge3sgZmllbGQubmFtZSB8IHRyYW5zbGF0ZSB9fTxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiaXNSZXF1aXJlZCgpID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbaGlkZVJlcXVpcmVkTWFya2VyXT1cInRydWVcIiBjbGFzcz1cImFkZi1mb3JtLWZpZWxkLWlucHV0XCIgW2Zsb2F0TGFiZWxdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAnYWx3YXlzJyA6ICdhdXRvJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cIiFmaWVsZC5sZWZ0TGFiZWxzXCIgY2xhc3M9XCJhZGYtbGFiZWxcIiBbYXR0ci5mb3JdPVwiZmllbGQuaWRcIj5cbiAgICAgICAgICAgICAgICB7eyBmaWVsZC5uYW1lIHwgdHJhbnNsYXRlIH19PHNwYW4gY2xhc3M9XCJhZGYtYXN0ZXJpc2tcIiBbc3R5bGUudmlzaWJpbGl0eV09XCJpc1JlcXVpcmVkKCkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiPio8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgW2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCJcbiAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmllbGRDaGFuZ2VkKGZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRPbmx5IHx8IHJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICBbdGV4dE1hc2tdPVwie21hc2s6IG1hc2ssIGlzUmV2ZXJzZWQ6IGlzTWFza1JldmVyc2VkfVwiXG4gICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmllbGQudG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZXJyb3Itd2lkZ2V0IFtlcnJvcl09XCJmaWVsZC52YWxpZGF0aW9uU3VtbWFyeVwiIC8+XG4gICAgICAgICAgICA8ZXJyb3Itd2lkZ2V0ICpuZ0lmPVwiaXNJbnZhbGlkRmllbGRSZXF1aXJlZCgpICYmIGlzVG91Y2hlZCgpXCJcbiAgICAgICAgICAgIHJlcXVpcmVkPVwie3sgJ0ZPUk0uRklFTEQuUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL3RleHQvdGV4dC53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL3RleHQvdGV4dC53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQXFCM0QsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFLcEQsWUFBbUIsV0FBd0I7UUFDdkMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBREosZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFFM0MsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsV0FBVztnQkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDO29CQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEgsQ0FBQztJQUNMLENBQUM7K0dBbEJRLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlXQ2pEaEMsbXhEQW1DQSwwSURXYyxJQUFJLDRGQUFFLGVBQWUsMkZBQUUsa0JBQWtCLDBTQUFFLGNBQWMsMFdBQUUsV0FBVyw0MEJBQUUsb0JBQW9CLHdGQUFFLGtCQUFrQjs7NEZBR2pILG1CQUFtQjtrQkFuQi9CLFNBQVM7K0JBQ0ksYUFBYSxjQUNYLElBQUksUUFHVjt3QkFDRixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsUUFBUSxFQUFFLGVBQWU7d0JBQ3pCLFVBQVUsRUFBRSxlQUFlO3dCQUMzQixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFlBQVksRUFBRSxlQUFlO3dCQUM3QixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFVBQVUsRUFBRSxlQUFlO3FCQUM5QixXQUNRLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLGlCQUM1RyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3IvZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4uL3dpZGdldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi90ZXh0LW1hc2suY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0ZXh0LXdpZGdldCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGV4dC53aWRnZXQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGV4dC53aWRnZXQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGlucHV0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnZhbGlkKSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhzZWxlY3QpJzogJ2V2ZW50KCRldmVudCknXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVHJhbnNsYXRlTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgRXJyb3JXaWRnZXRDb21wb25lbnQsIElucHV0TWFza0RpcmVjdGl2ZV0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBtYXNrOiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBpc01hc2tSZXZlcnNlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoZm9ybVNlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5wYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMubWFzayA9IHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2snXTtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2snXSAmJiB0aGlzLmZpZWxkLnBhcmFtc1snaW5wdXRNYXNrUGxhY2Vob2xkZXInXVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2tQbGFjZWhvbGRlciddXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5maWVsZC5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIHRoaXMuaXNNYXNrUmV2ZXJzZWQgPSB0aGlzLmZpZWxkLnBhcmFtc1snaW5wdXRNYXNrUmV2ZXJzZWQnXSA/IHRoaXMuZmllbGQucGFyYW1zWydpbnB1dE1hc2tSZXZlcnNlZCddIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXRleHRmaWVsZCBhZGYtdGV4dC13aWRnZXQge3sgZmllbGQuY2xhc3NOYW1lIH19XCJcbiAgICAgW2NsYXNzLmFkZi1pbnZhbGlkXT1cIiFmaWVsZC5pc1ZhbGlkICYmIGlzVG91Y2hlZCgpXCJcbiAgICAgW2NsYXNzLmFkZi1yZWFkb25seV09XCJmaWVsZC5yZWFkT25seVwiXG4gICAgIFtjbGFzcy5hZGYtbGVmdC1sYWJlbC1pbnB1dC1jb250YWluZXJdPVwiZmllbGQubGVmdExhYmVsc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5sZWZ0TGFiZWxzXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImFkZi1sYWJlbCBhZGYtbGVmdC1sYWJlbFwiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPlxuICAgICAgICAgICAge3sgZmllbGQubmFtZSB8IHRyYW5zbGF0ZSB9fTxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiaXNSZXF1aXJlZCgpID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbaGlkZVJlcXVpcmVkTWFya2VyXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCIhZmllbGQubGVmdExhYmVsc1wiIGNsYXNzPVwiYWRmLWxhYmVsXCIgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCI+XG4gICAgICAgICAgICAgICAge3sgZmllbGQubmFtZSB8IHRyYW5zbGF0ZSB9fTxzcGFuIGNsYXNzPVwiYWRmLWFzdGVyaXNrXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiaXNSZXF1aXJlZCgpID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIj4qPC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5pZFwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkQ2hhbmdlZChmaWVsZClcIlxuICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkT25seSB8fCByZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgW3RleHRNYXNrXT1cInttYXNrOiBtYXNrLCBpc1JldmVyc2VkOiBpc01hc2tSZXZlcnNlZH1cIlxuICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImZpZWxkLnRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVycm9yLW1lc3NhZ2VzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGVycm9yLXdpZGdldCBbZXJyb3JdPVwiZmllbGQudmFsaWRhdGlvblN1bW1hcnlcIiAvPlxuICAgICAgICAgICAgPGVycm9yLXdpZGdldCAqbmdJZj1cImlzSW52YWxpZEZpZWxkUmVxdWlyZWQoKSAmJiBpc1RvdWNoZWQoKVwiXG4gICAgICAgICAgICByZXF1aXJlZD1cInt7ICdGT1JNLkZJRUxELlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { AppExtensionService, ExtensionsModule } from '@alfresco/adf-extensions';
18
- import { AsyncPipe, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';
18
+ import { NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';
19
19
  import { Component, EventEmitter, Injector, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
20
20
  import { MatDialog } from '@angular/material/dialog';
21
21
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
@@ -26,7 +26,6 @@ import { MediaPlayerComponent } from '../media-player/media-player.component';
26
26
  import { PdfViewerComponent } from '../pdf-viewer/pdf-viewer.component';
27
27
  import { TxtViewerComponent } from '../txt-viewer/txt-viewer.component';
28
28
  import { UnknownFormatComponent } from '../unknown-format/unknown-format.component';
29
- import { BehaviorSubject } from 'rxjs';
30
29
  import * as i0 from "@angular/core";
31
30
  import * as i1 from "../../services/view-util.service";
32
31
  import * as i2 from "@alfresco/adf-extensions";
@@ -72,6 +71,8 @@ export class ViewerRenderComponent {
72
71
  this.allowThumbnails = true;
73
72
  /** The template for the pdf thumbnails. */
74
73
  this.thumbnailsTemplate = null;
74
+ /** Override loading status */
75
+ this.isLoading = false;
75
76
  /** Enable when where is possible the editing functionalities */
76
77
  this.readOnly = true;
77
78
  /**
@@ -100,14 +101,15 @@ export class ViewerRenderComponent {
100
101
  this.extensionTemplates = [];
101
102
  this.extensionsSupportedByTemplates = [];
102
103
  this.viewerType = 'unknown';
103
- this.isLoading$ = new BehaviorSubject(false);
104
+ this.isContentReady = false;
104
105
  this.cacheTypeForContent = 'no-cache';
105
106
  }
106
107
  ngOnInit() {
107
108
  this.cacheTypeForContent = 'no-cache';
108
- this.setDefaultLoadingState();
109
109
  }
110
110
  ngOnChanges() {
111
+ this.isContentReady = false;
112
+ this.isLoading = !this.blobFile && !this.urlFile;
111
113
  if (this.blobFile) {
112
114
  this.setUpBlobData();
113
115
  }
@@ -115,9 +117,6 @@ export class ViewerRenderComponent {
115
117
  this.setUpUrlFile();
116
118
  }
117
119
  }
118
- markAsLoaded() {
119
- this.isLoading$.next(false);
120
- }
121
120
  setUpBlobData() {
122
121
  this.internalFileName = this.fileName;
123
122
  this.viewerType = this.viewUtilService.getViewerTypeByMimeType(this.blobFile.type);
@@ -151,16 +150,8 @@ export class ViewerRenderComponent {
151
150
  onClose() {
152
151
  this.close.next(true);
153
152
  }
154
- canBePreviewed() {
155
- return this.viewerType === 'media' || this.viewerType === 'pdf' || this.viewerType === 'image';
156
- }
157
- setDefaultLoadingState() {
158
- if (this.canBePreviewed()) {
159
- this.isLoading$.next(true);
160
- }
161
- }
162
153
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerRenderComponent, deps: [{ token: i1.ViewUtilService }, { token: i2.AppExtensionService }, { token: i3.MatDialog }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ViewerRenderComponent, isStandalone: true, selector: "adf-viewer-render", inputs: { urlFile: "urlFile", blobFile: "blobFile", allowFullScreen: "allowFullScreen", allowThumbnails: "allowThumbnails", thumbnailsTemplate: "thumbnailsTemplate", mimeType: "mimeType", fileName: "fileName", readOnly: "readOnly", allowedEditActions: "allowedEditActions", tracks: "tracks", nodeId: "nodeId", viewerTemplateExtensions: "viewerTemplateExtensions", customError: "customError" }, outputs: { extensionChange: "extensionChange", submitFile: "submitFile", close: "close", isSaving: "isSaving" }, host: { classAttribute: "adf-viewer-render" }, providers: [ViewUtilService], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"isLoading$ | async\" class=\"adf-viewer-render-main-loader\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\">\n <div class=\"adf-viewer-render__loading-screen\">\n <h2>{{ 'ADF_VIEWER.LOADING' | translate }}</h2>\n <div>\n <mat-spinner class=\"adf-viewer-render__loading-screen__spinner\" />\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"urlFile || blobFile\">\n <div [hidden]=\"isLoading$ | async\" class=\"adf-viewer-render-main\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\" [ngSwitch]=\"viewerType\">\n <ng-container *ngSwitchCase=\"'external'\">\n <adf-preview-extension\n *ngIf=\"!!externalViewer\"\n [id]=\"externalViewer.component\"\n [url]=\"urlFile\"\n [extension]=\"externalViewer.fileExtension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"externalViewer.component\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'pdf'\">\n <adf-pdf-viewer\n [thumbnailsTemplate]=\"thumbnailsTemplate\"\n [allowThumbnails]=\"allowThumbnails\"\n [blobFile]=\"blobFile\"\n [urlFile]=\"urlFile\"\n [fileName]=\"internalFileName\"\n [cacheType]=\"cacheTypeForContent\"\n (pagesLoaded)=\"markAsLoaded()\"\n (close)=\"onClose()\"\n (error)=\"onUnsupportedFile()\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'image'\">\n <adf-img-viewer\n [urlFile]=\"urlFile\"\n [readOnly]=\"readOnly\"\n [fileName]=\"internalFileName\"\n [allowedEditActions]=\"allowedEditActions\"\n [blobFile]=\"blobFile\"\n (error)=\"onUnsupportedFile()\"\n (submit)=\"onSubmitFile($event)\"\n (imageLoaded)=\"markAsLoaded()\"\n (isSaving)=\"isSaving.emit($event)\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'media'\">\n <adf-media-player\n id=\"adf-mdedia-player\"\n [urlFile]=\"urlFile\"\n [tracks]=\"tracks\"\n [mimeType]=\"mimeType\"\n [blobFile]=\"blobFile\"\n [fileName]=\"internalFileName\"\n (error)=\"onUnsupportedFile()\"\n (canPlay)=\"markAsLoaded()\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'text'\">\n <adf-txt-viewer [urlFile]=\"urlFile\" [blobFile]=\"blobFile\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <ng-container *ngFor=\"let ext of viewerExtensions\">\n <adf-preview-extension\n *ngIf=\"checkExtensions(ext.fileExtension)\"\n [id]=\"ext.component\"\n [url]=\"urlFile\"\n [extension]=\"extension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"ext.component\"\n />\n </ng-container>\n\n <ng-container *ngFor=\"let extensionTemplate of extensionTemplates\">\n <span *ngIf=\"extensionTemplate.isVisible\" class=\"adf-viewer-render-custom-content\">\n <ng-template\n [ngTemplateOutlet]=\"extensionTemplate.template\"\n [ngTemplateOutletContext]=\"{ urlFile: urlFile, extension: extension }\"\n />\n </span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <adf-viewer-unknown-format [customError]=\"customError\" />\n </ng-container>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewerTemplateExtensions\">\n <ng-template [ngTemplateOutlet]=\"viewerTemplateExtensions\" [ngTemplateOutletInjector]=\"injector\" />\n</ng-container>\n", styles: [".adf-full-screen,.adf-viewer-render-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer-render-main-loader{position:fixed;top:64px;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center}.adf-viewer-render-main{width:0;order:1;flex:1 1 auto}.adf-viewer-render-content-container{display:flex;justify-content:center}.adf-viewer-render-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-flow:row wrap;flex:1}.adf-viewer-render-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:93vh;width:100%}.adf-viewer-render-overlay-container .adf-viewer-render-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-render__loading-screen{display:flex;flex:1 1 auto;align-items:center;justify-content:center;flex-direction:column;height:85vh}.adf-viewer-render__loading-screen__spinner{margin:0 auto}.adf-viewer-render-custom-content{width:100vw}.adf-viewer-render-unknown-content{align-items:center;display:flex}.adf-viewer-render-pdf{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdfViewerComponent, selector: "adf-pdf-viewer", inputs: ["urlFile", "blobFile", "fileName", "showToolbar", "allowThumbnails", "thumbnailsTemplate", "cacheType"], outputs: ["rendered", "error", "close", "pagesLoaded"] }, { kind: "component", type: ImgViewerComponent, selector: "adf-img-viewer", inputs: ["showToolbar", "readOnly", "allowedEditActions", "urlFile", "blobFile", "fileName"], outputs: ["error", "submit", "isSaving", "imageLoaded"] }, { kind: "component", type: MediaPlayerComponent, selector: "adf-media-player", inputs: ["urlFile", "blobFile", "mimeType", "fileName", "tracks"], outputs: ["error", "canPlay"] }, { kind: "component", type: TxtViewerComponent, selector: "adf-txt-viewer", inputs: ["urlFile", "blobFile"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: UnknownFormatComponent, selector: "adf-viewer-unknown-format", inputs: ["customError"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "component", type: i2.PreviewExtensionComponent, selector: "adf-preview-extension", inputs: ["id", "nodeId", "url", "extension"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ViewerRenderComponent, isStandalone: true, selector: "adf-viewer-render", inputs: { urlFile: "urlFile", blobFile: "blobFile", allowFullScreen: "allowFullScreen", allowThumbnails: "allowThumbnails", thumbnailsTemplate: "thumbnailsTemplate", mimeType: "mimeType", fileName: "fileName", isLoading: "isLoading", readOnly: "readOnly", allowedEditActions: "allowedEditActions", tracks: "tracks", nodeId: "nodeId", viewerTemplateExtensions: "viewerTemplateExtensions", customError: "customError" }, outputs: { extensionChange: "extensionChange", submitFile: "submitFile", close: "close", isSaving: "isSaving" }, host: { classAttribute: "adf-viewer-render" }, providers: [ViewUtilService], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(viewerType === 'media' || viewerType === 'pdf' || viewerType === 'image') ? isLoading || !isContentReady : isLoading\"\n class=\"adf-viewer-render-main-loader\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\">\n <div class=\"adf-viewer-render__loading-screen \">\n <h2>{{ 'ADF_VIEWER.LOADING' | translate }}</h2>\n <div>\n <mat-spinner class=\"adf-viewer-render__loading-screen__spinner\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!isLoading\"\n class=\"adf-viewer-render-main\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\" [ngSwitch]=\"viewerType\">\n <ng-container *ngSwitchCase=\"'external'\">\n <adf-preview-extension *ngIf=\"!!externalViewer\"\n [id]=\"externalViewer.component\"\n [url]=\"urlFile\"\n [extension]=\"externalViewer.fileExtension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"externalViewer.component\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'pdf'\">\n <adf-pdf-viewer [thumbnailsTemplate]=\"thumbnailsTemplate\"\n [allowThumbnails]=\"allowThumbnails\"\n [blobFile]=\"blobFile\"\n [urlFile]=\"urlFile\"\n [fileName]=\"internalFileName\"\n [cacheType]=\"cacheTypeForContent\"\n (pagesLoaded)=\"isContentReady = true\"\n (close)=\"onClose()\"\n (error)=\"onUnsupportedFile()\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'image'\">\n <adf-img-viewer [urlFile]=\"urlFile\"\n [readOnly]=\"readOnly\"\n [fileName]=\"internalFileName\"\n [allowedEditActions]=\"allowedEditActions\"\n [blobFile]=\"blobFile\"\n (error)=\"onUnsupportedFile()\"\n (submit)=\"onSubmitFile($event)\"\n (imageLoaded)=\"isContentReady = true\"\n (isSaving)=\"isSaving.emit($event)\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'media'\">\n <adf-media-player id=\"adf-mdedia-player\"\n [urlFile]=\"urlFile\"\n [tracks]=\"tracks\"\n [mimeType]=\"mimeType\"\n [blobFile]=\"blobFile\"\n [fileName]=\"internalFileName\"\n (error)=\"onUnsupportedFile()\"\n (canPlay)=\"isContentReady = true\"/>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'text'\">\n <adf-txt-viewer [urlFile]=\"urlFile\"\n [blobFile]=\"blobFile\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <ng-container *ngFor=\"let ext of viewerExtensions\">\n <adf-preview-extension *ngIf=\"checkExtensions(ext.fileExtension)\"\n [id]=\"ext.component\"\n [url]=\"urlFile\"\n [extension]=\"extension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"ext.component\" />\n </ng-container>\n\n <ng-container *ngFor=\"let extensionTemplate of extensionTemplates\">\n <span *ngIf=\"extensionTemplate.isVisible\" class=\"adf-viewer-render-custom-content\">\n <ng-template [ngTemplateOutlet]=\"extensionTemplate.template\"\n [ngTemplateOutletContext]=\"{ urlFile: urlFile, extension: extension }\" />\n </span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <adf-viewer-unknown-format [customError]=\"customError\"/>\n </ng-container>\n </div>\n </div>\n</div>\n<ng-container *ngIf=\"viewerTemplateExtensions\">\n <ng-template [ngTemplateOutlet]=\"viewerTemplateExtensions\" [ngTemplateOutletInjector]=\"injector\" />\n</ng-container>\n", styles: [".adf-full-screen,.adf-viewer-render-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer-render-main-loader{position:fixed;top:64px;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center}.adf-viewer-render-main{width:0;order:1;flex:1 1 auto}.adf-viewer-render-content-container{display:flex;justify-content:center}.adf-viewer-render-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-flow:row wrap;flex:1}.adf-viewer-render-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:93vh;width:100%}.adf-viewer-render-overlay-container .adf-viewer-render-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-render__loading-screen{display:flex;flex:1 1 auto;align-items:center;justify-content:center;flex-direction:column;height:85vh}.adf-viewer-render__loading-screen__spinner{margin:0 auto}.adf-viewer-render-custom-content{width:100vw}.adf-viewer-render-unknown-content{align-items:center;display:flex}.adf-viewer-render-pdf{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdfViewerComponent, selector: "adf-pdf-viewer", inputs: ["urlFile", "blobFile", "fileName", "showToolbar", "allowThumbnails", "thumbnailsTemplate", "cacheType"], outputs: ["rendered", "error", "close", "pagesLoaded"] }, { kind: "component", type: ImgViewerComponent, selector: "adf-img-viewer", inputs: ["showToolbar", "readOnly", "allowedEditActions", "urlFile", "blobFile", "fileName"], outputs: ["error", "submit", "isSaving", "imageLoaded"] }, { kind: "component", type: MediaPlayerComponent, selector: "adf-media-player", inputs: ["urlFile", "blobFile", "mimeType", "fileName", "tracks"], outputs: ["error", "canPlay"] }, { kind: "component", type: TxtViewerComponent, selector: "adf-txt-viewer", inputs: ["urlFile", "blobFile"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: UnknownFormatComponent, selector: "adf-viewer-unknown-format", inputs: ["customError"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "component", type: i2.PreviewExtensionComponent, selector: "adf-preview-extension", inputs: ["id", "nodeId", "url", "extension"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }], encapsulation: i0.ViewEncapsulation.None }); }
164
155
  }
165
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerRenderComponent, decorators: [{
166
157
  type: Component,
@@ -178,9 +169,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
178
169
  UnknownFormatComponent,
179
170
  ExtensionsModule,
180
171
  NgForOf,
181
- NgSwitchDefault,
182
- AsyncPipe
183
- ], providers: [ViewUtilService], template: "<div *ngIf=\"isLoading$ | async\" class=\"adf-viewer-render-main-loader\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\">\n <div class=\"adf-viewer-render__loading-screen\">\n <h2>{{ 'ADF_VIEWER.LOADING' | translate }}</h2>\n <div>\n <mat-spinner class=\"adf-viewer-render__loading-screen__spinner\" />\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"urlFile || blobFile\">\n <div [hidden]=\"isLoading$ | async\" class=\"adf-viewer-render-main\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\" [ngSwitch]=\"viewerType\">\n <ng-container *ngSwitchCase=\"'external'\">\n <adf-preview-extension\n *ngIf=\"!!externalViewer\"\n [id]=\"externalViewer.component\"\n [url]=\"urlFile\"\n [extension]=\"externalViewer.fileExtension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"externalViewer.component\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'pdf'\">\n <adf-pdf-viewer\n [thumbnailsTemplate]=\"thumbnailsTemplate\"\n [allowThumbnails]=\"allowThumbnails\"\n [blobFile]=\"blobFile\"\n [urlFile]=\"urlFile\"\n [fileName]=\"internalFileName\"\n [cacheType]=\"cacheTypeForContent\"\n (pagesLoaded)=\"markAsLoaded()\"\n (close)=\"onClose()\"\n (error)=\"onUnsupportedFile()\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'image'\">\n <adf-img-viewer\n [urlFile]=\"urlFile\"\n [readOnly]=\"readOnly\"\n [fileName]=\"internalFileName\"\n [allowedEditActions]=\"allowedEditActions\"\n [blobFile]=\"blobFile\"\n (error)=\"onUnsupportedFile()\"\n (submit)=\"onSubmitFile($event)\"\n (imageLoaded)=\"markAsLoaded()\"\n (isSaving)=\"isSaving.emit($event)\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'media'\">\n <adf-media-player\n id=\"adf-mdedia-player\"\n [urlFile]=\"urlFile\"\n [tracks]=\"tracks\"\n [mimeType]=\"mimeType\"\n [blobFile]=\"blobFile\"\n [fileName]=\"internalFileName\"\n (error)=\"onUnsupportedFile()\"\n (canPlay)=\"markAsLoaded()\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'text'\">\n <adf-txt-viewer [urlFile]=\"urlFile\" [blobFile]=\"blobFile\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <ng-container *ngFor=\"let ext of viewerExtensions\">\n <adf-preview-extension\n *ngIf=\"checkExtensions(ext.fileExtension)\"\n [id]=\"ext.component\"\n [url]=\"urlFile\"\n [extension]=\"extension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"ext.component\"\n />\n </ng-container>\n\n <ng-container *ngFor=\"let extensionTemplate of extensionTemplates\">\n <span *ngIf=\"extensionTemplate.isVisible\" class=\"adf-viewer-render-custom-content\">\n <ng-template\n [ngTemplateOutlet]=\"extensionTemplate.template\"\n [ngTemplateOutletContext]=\"{ urlFile: urlFile, extension: extension }\"\n />\n </span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <adf-viewer-unknown-format [customError]=\"customError\" />\n </ng-container>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewerTemplateExtensions\">\n <ng-template [ngTemplateOutlet]=\"viewerTemplateExtensions\" [ngTemplateOutletInjector]=\"injector\" />\n</ng-container>\n", styles: [".adf-full-screen,.adf-viewer-render-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer-render-main-loader{position:fixed;top:64px;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center}.adf-viewer-render-main{width:0;order:1;flex:1 1 auto}.adf-viewer-render-content-container{display:flex;justify-content:center}.adf-viewer-render-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-flow:row wrap;flex:1}.adf-viewer-render-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:93vh;width:100%}.adf-viewer-render-overlay-container .adf-viewer-render-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-render__loading-screen{display:flex;flex:1 1 auto;align-items:center;justify-content:center;flex-direction:column;height:85vh}.adf-viewer-render__loading-screen__spinner{margin:0 auto}.adf-viewer-render-custom-content{width:100vw}.adf-viewer-render-unknown-content{align-items:center;display:flex}.adf-viewer-render-pdf{display:contents}\n"] }]
172
+ NgSwitchDefault
173
+ ], providers: [ViewUtilService], template: "<div *ngIf=\"(viewerType === 'media' || viewerType === 'pdf' || viewerType === 'image') ? isLoading || !isContentReady : isLoading\"\n class=\"adf-viewer-render-main-loader\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\">\n <div class=\"adf-viewer-render__loading-screen \">\n <h2>{{ 'ADF_VIEWER.LOADING' | translate }}</h2>\n <div>\n <mat-spinner class=\"adf-viewer-render__loading-screen__spinner\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!isLoading\"\n class=\"adf-viewer-render-main\">\n <div class=\"adf-viewer-render-layout-content adf-viewer__fullscreen-container\">\n <div class=\"adf-viewer-render-content-container\" [ngSwitch]=\"viewerType\">\n <ng-container *ngSwitchCase=\"'external'\">\n <adf-preview-extension *ngIf=\"!!externalViewer\"\n [id]=\"externalViewer.component\"\n [url]=\"urlFile\"\n [extension]=\"externalViewer.fileExtension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"externalViewer.component\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'pdf'\">\n <adf-pdf-viewer [thumbnailsTemplate]=\"thumbnailsTemplate\"\n [allowThumbnails]=\"allowThumbnails\"\n [blobFile]=\"blobFile\"\n [urlFile]=\"urlFile\"\n [fileName]=\"internalFileName\"\n [cacheType]=\"cacheTypeForContent\"\n (pagesLoaded)=\"isContentReady = true\"\n (close)=\"onClose()\"\n (error)=\"onUnsupportedFile()\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'image'\">\n <adf-img-viewer [urlFile]=\"urlFile\"\n [readOnly]=\"readOnly\"\n [fileName]=\"internalFileName\"\n [allowedEditActions]=\"allowedEditActions\"\n [blobFile]=\"blobFile\"\n (error)=\"onUnsupportedFile()\"\n (submit)=\"onSubmitFile($event)\"\n (imageLoaded)=\"isContentReady = true\"\n (isSaving)=\"isSaving.emit($event)\"\n />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'media'\">\n <adf-media-player id=\"adf-mdedia-player\"\n [urlFile]=\"urlFile\"\n [tracks]=\"tracks\"\n [mimeType]=\"mimeType\"\n [blobFile]=\"blobFile\"\n [fileName]=\"internalFileName\"\n (error)=\"onUnsupportedFile()\"\n (canPlay)=\"isContentReady = true\"/>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'text'\">\n <adf-txt-viewer [urlFile]=\"urlFile\"\n [blobFile]=\"blobFile\" />\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'custom'\">\n <ng-container *ngFor=\"let ext of viewerExtensions\">\n <adf-preview-extension *ngIf=\"checkExtensions(ext.fileExtension)\"\n [id]=\"ext.component\"\n [url]=\"urlFile\"\n [extension]=\"extension\"\n [nodeId]=\"nodeId\"\n [attr.data-automation-id]=\"ext.component\" />\n </ng-container>\n\n <ng-container *ngFor=\"let extensionTemplate of extensionTemplates\">\n <span *ngIf=\"extensionTemplate.isVisible\" class=\"adf-viewer-render-custom-content\">\n <ng-template [ngTemplateOutlet]=\"extensionTemplate.template\"\n [ngTemplateOutletContext]=\"{ urlFile: urlFile, extension: extension }\" />\n </span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <adf-viewer-unknown-format [customError]=\"customError\"/>\n </ng-container>\n </div>\n </div>\n</div>\n<ng-container *ngIf=\"viewerTemplateExtensions\">\n <ng-template [ngTemplateOutlet]=\"viewerTemplateExtensions\" [ngTemplateOutletInjector]=\"injector\" />\n</ng-container>\n", styles: [".adf-full-screen,.adf-viewer-render-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer-render-main-loader{position:fixed;top:64px;left:0;width:100%;height:100%;z-index:1000;display:flex;align-items:center;justify-content:center}.adf-viewer-render-main{width:0;order:1;flex:1 1 auto}.adf-viewer-render-content-container{display:flex;justify-content:center}.adf-viewer-render-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-flow:row wrap;flex:1}.adf-viewer-render-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:93vh;width:100%}.adf-viewer-render-overlay-container .adf-viewer-render-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-render__loading-screen{display:flex;flex:1 1 auto;align-items:center;justify-content:center;flex-direction:column;height:85vh}.adf-viewer-render__loading-screen__spinner{margin:0 auto}.adf-viewer-render-custom-content{width:100vw}.adf-viewer-render-unknown-content{align-items:center;display:flex}.adf-viewer-render-pdf{display:contents}\n"] }]
184
174
  }], ctorParameters: () => [{ type: i1.ViewUtilService }, { type: i2.AppExtensionService }, { type: i3.MatDialog }, { type: i0.Injector }], propDecorators: { urlFile: [{
185
175
  type: Input
186
176
  }], blobFile: [{
@@ -195,6 +185,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
195
185
  type: Input
196
186
  }], fileName: [{
197
187
  type: Input
188
+ }], isLoading: [{
189
+ type: Input
198
190
  }], readOnly: [{
199
191
  type: Input
200
192
  }], allowedEditActions: [{
@@ -216,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
216
208
  }], isSaving: [{
217
209
  type: Output
218
210
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLXJlbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3ZpZXdlci1yZW5kZXIvdmlld2VyLXJlbmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3ZpZXdlci1yZW5kZXIvdmlld2VyLXJlbmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQXNCLE1BQU0sMEJBQTBCLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0Ms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eXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBBcHBFeHRlbnNpb25TZXJ2aWNlLCBFeHRlbnNpb25zTW9kdWxlLCBWaWV3ZXJFeHRlbnNpb25SZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRyYWNrIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZpZXdlci5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3VXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3LXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBJbWdWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi9pbWctdmlld2VyL2ltZy12aWV3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1lZGlhUGxheWVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVkaWEtcGxheWVyL21lZGlhLXBsYXllci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGRmVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUeHRWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi90eHQtdmlld2VyL3R4dC12aWV3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFVua25vd25Gb3JtYXRDb21wb25lbnQgfSBmcm9tICcuLi91bmtub3duLWZvcm1hdC91bmtub3duLWZvcm1hdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgVmlld2VyVHlwZSA9ICdtZWRpYScgfCAnaW1hZ2UnIHwgJ3BkZicgfCAnZXh0ZXJuYWwnIHwgJ3RleHQnIHwgJ2N1c3RvbScgfCAndW5rbm93bic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXZpZXdlci1yZW5kZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdlci1yZW5kZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZpZXdlci1yZW5kZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXZpZXdlci1yZW5kZXInIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdTd2l0Y2hDYXNlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBQZGZWaWV3ZXJDb21wb25lbnQsXG4gICAgICAgIEltZ1ZpZXdlckNvbXBvbmVudCxcbiAgICAgICAgTWVkaWFQbGF5ZXJDb21wb25lbnQsXG4gICAgICAgIFR4dFZpZXdlckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVW5rbm93bkZvcm1hdENvbXBvbmVudCxcbiAgICAgICAgRXh0ZW5zaW9uc01vZHVsZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgICAgICBBc3luY1BpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1ZpZXdVdGlsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVmlld2VyUmVuZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGxvYWQgYW4gZXh0ZXJuYWwgZmlsZSB0aGF0IGRvZXMgbm90IGNvbWUgZnJvbSBBQ1MgeW91XG4gICAgICogY2FuIHVzZSB0aGlzIFVSTCB0byBzcGVjaWZ5IHdoZXJlIHRvIGxvYWQgdGhlIGZpbGUgZnJvbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVybEZpbGUgPSAnJztcblxuICAgIC8qKiBMb2FkcyBhIEJsb2IgRmlsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmxvYkZpbGU6IEJsb2I7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgJ0Z1bGwgU2NyZWVuJyBmZWF0dXJlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dGdWxsU2NyZWVuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIFBERiB0aHVtYm5haWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dUaHVtYm5haWxzID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBwZGYgdGh1bWJuYWlscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRodW1ibmFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogTUlNRSB0eXBlIG9mIHRoZSBmaWxlIGNvbnRlbnQgKHdoZW4gbm90IGRldGVybWluZWQgYnkgdGhlIGZpbGVuYW1lIGV4dGVuc2lvbikuICovXG4gICAgQElucHV0KClcbiAgICBtaW1lVHlwZTogc3RyaW5nO1xuXG4gICAgLyoqIE92ZXJyaWRlIENvbnRlbnQgZmlsZW5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIEVuYWJsZSB3aGVuIHdoZXJlIGlzIHBvc3NpYmxlIHRoZSBlZGl0aW5nIGZ1bmN0aW9uYWxpdGllcyAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoaWNoIGFjdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIHZpZXdlci5cbiAgICAgKiBFeGFtcGxlOlxuICAgICAqIHsgcm90YXRlOiB0cnVlLCBjcm9wOiBmYWxzZSB9IHdpbGwgZW5hYmxlIHJvdGF0aW9uIGJ1dCBkaXNhYmxlIGNyb3BwaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dlZEVkaXRBY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHtcbiAgICAgICAgcm90YXRlOiB0cnVlLFxuICAgICAgICBjcm9wOiB0cnVlXG4gICAgfTtcblxuICAgIC8qKiBtZWRpYSBzdWJ0aXRsZXMgZm9yIHRoZSBtZWRpYSBwbGF5ZXIqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG5cbiAgICAvKiogSWRlbnRpZmllciBvZiBhIG5vZGUgdGhhdCBpcyBvcGVuZWQgYnkgdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBUZW1wbGF0ZSBjb250YWluaW5nIFZpZXdlckV4dGVuc2lvbkRpcmVjdGl2ZSBpbnN0YW5jZXMgcHJvdmlkaW5nIGRpZmZlcmVudCB2aWV3ZXIgZXh0ZW5zaW9ucyBiYXNlZCBvbiBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb24uICovXG4gICAgQElucHV0KClcbiAgICB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3ZXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21FcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9uIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXh0ZW5zaW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbWcgaXMgc3VibWl0dGVkIGluIHRoZSBpbWcgdmlld2VyLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Ym1pdEZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbWcgaXMgc3VibWl0dGVkIGluIHRoZSBpbWcgdmlld2VyLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgaW1nIGlzIHNhdmluZy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpc1NhdmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIGV4dGVuc2lvblRlbXBsYXRlczogeyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgaXNWaXNpYmxlOiBib29sZWFuIH1bXSA9IFtdO1xuICAgIGV4dGVuc2lvbnNTdXBwb3J0ZWRCeVRlbXBsYXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBleHRlbnNpb246IHN0cmluZztcbiAgICBpbnRlcm5hbEZpbGVOYW1lOiBzdHJpbmc7XG4gICAgdmlld2VyVHlwZTogVmlld2VyVHlwZSA9ICd1bmtub3duJztcbiAgICByZWFkb25seSBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgYWN0aXZlIFZpZXdlciBjb250ZW50IGV4dGVuc2lvbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGV4dGVuc2lvbiByZWZlcmVuY2VzXG4gICAgICovXG4gICAgZ2V0IHZpZXdlckV4dGVuc2lvbnMoKTogVmlld2VyRXh0ZW5zaW9uUmVmW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFZpZXdlckV4dGVuc2lvbnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBhIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zIHN1cHBvcnRlZCBieSBleHRlcm5hbCBwbHVnaW5zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgbGlzdCBvZiBleHRlbnNpb25zXG4gICAgICovXG4gICAgZ2V0IGV4dGVybmFsRXh0ZW5zaW9ucygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdlckV4dGVuc2lvbnMubWFwKChleHQpID0+IGV4dC5maWxlRXh0ZW5zaW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9leHRlcm5hbFZpZXdlcjogVmlld2VyRXh0ZW5zaW9uUmVmO1xuICAgIGdldCBleHRlcm5hbFZpZXdlcigpOiBWaWV3ZXJFeHRlbnNpb25SZWYge1xuICAgICAgICBpZiAoIXRoaXMuX2V4dGVybmFsVmlld2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9leHRlcm5hbFZpZXdlciA9IHRoaXMudmlld2VyRXh0ZW5zaW9ucy5maW5kKChleHQpID0+IGV4dC5maWxlRXh0ZW5zaW9uID09PSAnKicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsVmlld2VyO1xuICAgIH1cblxuICAgIGNhY2hlVHlwZUZvckNvbnRlbnQgPSAnbm8tY2FjaGUnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdmlld1V0aWxTZXJ2aWNlOiBWaWV3VXRpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZXh0ZW5zaW9uU2VydmljZTogQXBwRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVUeXBlRm9yQ29udGVudCA9ICduby1jYWNoZSc7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdExvYWRpbmdTdGF0ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5ibG9iRmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRVcEJsb2JEYXRhKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51cmxGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFVwVXJsRmlsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbWFya0FzTG9hZGVkKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcEJsb2JEYXRhKCkge1xuICAgICAgICB0aGlzLmludGVybmFsRmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lO1xuICAgICAgICB0aGlzLnZpZXdlclR5cGUgPSB0aGlzLnZpZXdVdGlsU2VydmljZS5nZXRWaWV3ZXJUeXBlQnlNaW1lVHlwZSh0aGlzLmJsb2JGaWxlLnR5cGUpIGFzIFZpZXdlclR5cGU7XG5cbiAgICAgICAgdGhpcy5leHRlbnNpb25DaGFuZ2UuZW1pdCh0aGlzLmJsb2JGaWxlLnR5cGUpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBVcmxGaWxlKCkge1xuICAgICAgICB0aGlzLmludGVybmFsRmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lID8gdGhpcy5maWxlTmFtZSA6IHRoaXMudmlld1V0aWxTZXJ2aWNlLmdldEZpbGVuYW1lRnJvbVVybCh0aGlzLnVybEZpbGUpO1xuICAgICAgICB0aGlzLmV4dGVuc2lvbiA9IHRoaXMudmlld1V0aWxTZXJ2aWNlLmdldEZpbGVFeHRlbnNpb24odGhpcy5pbnRlcm5hbEZpbGVOYW1lKTtcbiAgICAgICAgdGhpcy52aWV3ZXJUeXBlID0gdGhpcy52aWV3VXRpbFNlcnZpY2UuZ2V0Vmlld2VyVHlwZSh0aGlzLmV4dGVuc2lvbiwgdGhpcy5taW1lVHlwZSwgdGhpcy5leHRlbnNpb25zU3VwcG9ydGVkQnlUZW1wbGF0ZXMpIGFzIFZpZXdlclR5cGU7XG5cbiAgICAgICAgdGhpcy5leHRlbnNpb25DaGFuZ2UuZW1pdCh0aGlzLmV4dGVuc2lvbik7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9wKCk7XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9wKCkge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMSk7XG4gICAgfVxuXG4gICAgY2hlY2tFeHRlbnNpb25zKGV4dGVuc2lvbkFsbG93ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHRlbnNpb25BbGxvd2VkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgPT09IGV4dGVuc2lvbkFsbG93ZWQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHRlbnNpb25BbGxvd2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBleHRlbnNpb25BbGxvd2VkLmZpbmQoKGN1cnJlbnRFeHRlbnNpb24pID0+IHRoaXMuZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgPT09IGN1cnJlbnRFeHRlbnNpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIHRoaXMuc3VibWl0RmlsZS5uZXh0KG5ld0ltYWdlQmxvYik7XG4gICAgfVxuXG4gICAgb25VbnN1cHBvcnRlZEZpbGUoKSB7XG4gICAgICAgIHRoaXMudmlld2VyVHlwZSA9ICd1bmtub3duJztcbiAgICB9XG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLmNsb3NlLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5CZVByZXZpZXdlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld2VyVHlwZSA9PT0gJ21lZGlhJyB8fCB0aGlzLnZpZXdlclR5cGUgPT09ICdwZGYnIHx8IHRoaXMudmlld2VyVHlwZSA9PT0gJ2ltYWdlJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRMb2FkaW5nU3RhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbkJlUHJldmlld2VkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImlzTG9hZGluZyQgfCBhc3luY1wiIGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXItbWFpbi1sb2FkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXItbGF5b3V0LWNvbnRlbnQgYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItcmVuZGVyLWNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXJfX2xvYWRpbmctc2NyZWVuXCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7ICdBREZfVklFV0VSLkxPQURJTkcnIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlcl9fbG9hZGluZy1zY3JlZW5fX3NwaW5uZXJcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ1cmxGaWxlIHx8IGJsb2JGaWxlXCI+XG4gICAgPGRpdiBbaGlkZGVuXT1cImlzTG9hZGluZyQgfCBhc3luY1wiIGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXItbWFpblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXItbGF5b3V0LWNvbnRlbnQgYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlci1jb250ZW50LWNvbnRhaW5lclwiIFtuZ1N3aXRjaF09XCJ2aWV3ZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2V4dGVybmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXByZXZpZXctZXh0ZW5zaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEhZXh0ZXJuYWxWaWV3ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImV4dGVybmFsVmlld2VyLmNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdXJsXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbl09XCJleHRlcm5hbFZpZXdlci5maWxlRXh0ZW5zaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJleHRlcm5hbFZpZXdlci5jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3BkZidcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFkZi1wZGYtdmlld2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGh1bWJuYWlsc1RlbXBsYXRlXT1cInRodW1ibmFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dUaHVtYm5haWxzXT1cImFsbG93VGh1bWJuYWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmxvYkZpbGVdPVwiYmxvYkZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VybEZpbGVdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiaW50ZXJuYWxGaWxlTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FjaGVUeXBlXT1cImNhY2hlVHlwZUZvckNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VzTG9hZGVkKT1cIm1hcmtBc0xvYWRlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJvbkNsb3NlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uVW5zdXBwb3J0ZWRGaWxlKClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWltZy12aWV3ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlTmFtZV09XCJpbnRlcm5hbEZpbGVOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbGxvd2VkRWRpdEFjdGlvbnNdPVwiYWxsb3dlZEVkaXRBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25VbnN1cHBvcnRlZEZpbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0KT1cIm9uU3VibWl0RmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZUxvYWRlZCk9XCJtYXJrQXNMb2FkZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNTYXZpbmcpPVwiaXNTYXZpbmcuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtZWRpYSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFkZi1tZWRpYS1wbGF5ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLW1kZWRpYS1wbGF5ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VybEZpbGVdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHJhY2tzXT1cInRyYWNrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWltZVR5cGVdPVwibWltZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Jsb2JGaWxlXT1cImJsb2JGaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlTmFtZV09XCJpbnRlcm5hbEZpbGVOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvblVuc3VwcG9ydGVkRmlsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjYW5QbGF5KT1cIm1hcmtBc0xvYWRlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXR4dC12aWV3ZXIgW3VybEZpbGVdPVwidXJsRmlsZVwiIFtibG9iRmlsZV09XCJibG9iRmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VzdG9tJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHQgb2Ygdmlld2VyRXh0ZW5zaW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1wcmV2aWV3LWV4dGVuc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tFeHRlbnNpb25zKGV4dC5maWxlRXh0ZW5zaW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImV4dC5jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbl09XCJleHRlbnNpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZXh0LmNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHRlbnNpb25UZW1wbGF0ZSBvZiBleHRlbnNpb25UZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXh0ZW5zaW9uVGVtcGxhdGUuaXNWaXNpYmxlXCIgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlci1jdXN0b20tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJleHRlbnNpb25UZW1wbGF0ZS50ZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHVybEZpbGU6IHVybEZpbGUsIGV4dGVuc2lvbjogZXh0ZW5zaW9uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXZpZXdlci11bmtub3duLWZvcm1hdCBbY3VzdG9tRXJyb3JdPVwiY3VzdG9tRXJyb3JcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidmlld2VyVGVtcGxhdGVFeHRlbnNpb25zXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInZpZXdlclRlbXBsYXRlRXh0ZW5zaW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIiAvPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLXJlbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3ZpZXdlci1yZW5kZXIvdmlld2VyLXJlbmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3ZpZXdlci1yZW5kZXIvdmlld2VyLXJlbmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQXNCLE1BQU0sMEJBQTBCLENBQUM7QUFDckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7O0FBMkJwRixNQUFNLE9BQU8scUJBQXFCO0lBMEY5Qjs7OztPQUlHO0lBQ0gsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFHRCxJQUFJLGNBQWM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFJRCxZQUNZLGVBQWdDLEVBQ2hDLGdCQUFxQyxFQUN0QyxNQUFpQixFQUNSLFFBQWtCO1FBSDFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDUixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBMUh0Qzs7O1dBR0c7UUFFSCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBTWIseUNBQXlDO1FBRXpDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRXZCLDhCQUE4QjtRQUU5QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QiwyQ0FBMkM7UUFFM0MsdUJBQWtCLEdBQXFCLElBQUksQ0FBQztRQVU1Qyw4QkFBOEI7UUFFOUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixpRUFBaUU7UUFFakUsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQjs7OztXQUlHO1FBRUgsdUJBQWtCLEdBQStCO1lBQzdDLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDO1FBRUYsMENBQTBDO1FBRTFDLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFckIseURBQXlEO1FBRXpELFdBQU0sR0FBVyxJQUFJLENBQUM7UUFNdEIsMERBQTBEO1FBRTFELGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBRWhDLG1EQUFtRDtRQUVuRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFN0MsMkRBQTJEO1FBRTNELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXRDLDJEQUEyRDtRQUUzRCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVwQyxzQ0FBc0M7UUFFdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFdkMsdUJBQWtCLEdBQXlELEVBQUUsQ0FBQztRQUM5RSxtQ0FBOEIsR0FBYSxFQUFFLENBQUM7UUFHOUMsZUFBVSxHQUFXLFNBQVMsQ0FBQztRQUMvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQTZCdkIsd0JBQW1CLEdBQUcsVUFBVSxDQUFDO0lBTzlCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUV6SCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxnQkFBZ0I7UUFDNUIsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRSxDQUFDO2FBQU0sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3hILENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQWtCO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7K0dBcExRLHFCQUFxQjttR0FBckIscUJBQXFCLGtvQkFGbkIsQ0FBQyxlQUFlLENBQUMsK0NDdERoQyxtNkpBK0ZBLDhyQ0R4RFEsZUFBZSwyRkFDZix3QkFBd0IsbU9BQ3hCLFFBQVEsNkVBQ1IsWUFBWSxxRkFDWixJQUFJLDZGQUNKLGtCQUFrQixxT0FDbEIsa0JBQWtCLGtOQUNsQixvQkFBb0IsK0pBQ3BCLGtCQUFrQiw0RkFDbEIsZ0JBQWdCLG9KQUNoQixzQkFBc0IsOEZBQ3RCLGdCQUFnQiwyS0FDaEIsT0FBTyxtSEFDUCxlQUFlOzs0RkFJVixxQkFBcUI7a0JBekJqQyxTQUFTOytCQUNJLG1CQUFtQixjQUNqQixJQUFJLFFBR1YsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsaUJBQ3JCLGlCQUFpQixDQUFDLElBQUksV0FDNUI7d0JBQ0wsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixJQUFJO3dCQUNKLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxlQUFlO3FCQUNsQixhQUNVLENBQUMsZUFBZSxDQUFDO3FLQVE1QixPQUFPO3NCQUROLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFTTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBUU4sTUFBTTtzQkFETCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQXBwRXh0ZW5zaW9uU2VydmljZSwgRXh0ZW5zaW9uc01vZHVsZSwgVmlld2VyRXh0ZW5zaW9uUmVmIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IE5nRm9yT2YsIE5nSWYsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVHJhY2sgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlld2VyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXctdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEltZ1ZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL2ltZy12aWV3ZXIvaW1nLXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVkaWFQbGF5ZXJDb21wb25lbnQgfSBmcm9tICcuLi9tZWRpYS1wbGF5ZXIvbWVkaWEtcGxheWVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZGZWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFR4dFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3R4dC12aWV3ZXIvdHh0LXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVW5rbm93bkZvcm1hdENvbXBvbmVudCB9IGZyb20gJy4uL3Vua25vd24tZm9ybWF0L3Vua25vd24tZm9ybWF0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXZpZXdlci1yZW5kZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdlci1yZW5kZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZpZXdlci1yZW5kZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXZpZXdlci1yZW5kZXInIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdTd2l0Y2hDYXNlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBQZGZWaWV3ZXJDb21wb25lbnQsXG4gICAgICAgIEltZ1ZpZXdlckNvbXBvbmVudCxcbiAgICAgICAgTWVkaWFQbGF5ZXJDb21wb25lbnQsXG4gICAgICAgIFR4dFZpZXdlckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVW5rbm93bkZvcm1hdENvbXBvbmVudCxcbiAgICAgICAgRXh0ZW5zaW9uc01vZHVsZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdTd2l0Y2hEZWZhdWx0XG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtWaWV3VXRpbFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdlclJlbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugd2FudCB0byBsb2FkIGFuIGV4dGVybmFsIGZpbGUgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gQUNTIHlvdVxuICAgICAqIGNhbiB1c2UgdGhpcyBVUkwgdG8gc3BlY2lmeSB3aGVyZSB0byBsb2FkIHRoZSBmaWxlIGZyb20uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB1cmxGaWxlID0gJyc7XG5cbiAgICAvKiogTG9hZHMgYSBCbG9iIEZpbGUgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsb2JGaWxlOiBCbG9iO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlICdGdWxsIFNjcmVlbicgZmVhdHVyZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RnVsbFNjcmVlbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyBQREYgdGh1bWJuYWlscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93VGh1bWJuYWlscyA9IHRydWU7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcGRmIHRodW1ibmFpbHMuICovXG4gICAgQElucHV0KClcbiAgICB0aHVtYm5haWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIE1JTUUgdHlwZSBvZiB0aGUgZmlsZSBjb250ZW50ICh3aGVuIG5vdCBkZXRlcm1pbmVkIGJ5IHRoZSBmaWxlbmFtZSBleHRlbnNpb24pLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWltZVR5cGU6IHN0cmluZztcblxuICAgIC8qKiBPdmVycmlkZSBDb250ZW50IGZpbGVuYW1lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsZU5hbWU6IHN0cmluZztcblxuICAgIC8qKiBPdmVycmlkZSBsb2FkaW5nIHN0YXR1cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKiogRW5hYmxlIHdoZW4gd2hlcmUgaXMgcG9zc2libGUgdGhlIGVkaXRpbmcgZnVuY3Rpb25hbGl0aWVzICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgd2hpY2ggYWN0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUgdmlld2VyLlxuICAgICAqIEV4YW1wbGU6XG4gICAgICogeyByb3RhdGU6IHRydWUsIGNyb3A6IGZhbHNlIH0gd2lsbCBlbmFibGUgcm90YXRpb24gYnV0IGRpc2FibGUgY3JvcHBpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd2VkRWRpdEFjdGlvbnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICByb3RhdGU6IHRydWUsXG4gICAgICAgIGNyb3A6IHRydWVcbiAgICB9O1xuXG4gICAgLyoqIG1lZGlhIHN1YnRpdGxlcyBmb3IgdGhlIG1lZGlhIHBsYXllciovXG4gICAgQElucHV0KClcbiAgICB0cmFja3M6IFRyYWNrW10gPSBbXTtcblxuICAgIC8qKiBJZGVudGlmaWVyIG9mIGEgbm9kZSB0aGF0IGlzIG9wZW5lZCBieSB0aGUgdmlld2VyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9kZUlkOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRhaW5pbmcgVmlld2VyRXh0ZW5zaW9uRGlyZWN0aXZlIGluc3RhbmNlcyBwcm92aWRpbmcgZGlmZmVyZW50IHZpZXdlciBleHRlbnNpb25zIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHZpZXdlclRlbXBsYXRlRXh0ZW5zaW9uczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbUVycm9yOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmaWxlbmFtZSBleHRlbnNpb24gY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleHRlbnNpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGltZyBpcyBzdWJtaXR0ZWQgaW4gdGhlIGltZyB2aWV3ZXIuICovXG4gICAgQE91dHB1dCgpXG4gICAgc3VibWl0RmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGltZyBpcyBzdWJtaXR0ZWQgaW4gdGhlIGltZyB2aWV3ZXIuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbWcgaXMgc2F2aW5nLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzU2F2aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgZXh0ZW5zaW9uVGVtcGxhdGVzOiB7IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+OyBpc1Zpc2libGU6IGJvb2xlYW4gfVtdID0gW107XG4gICAgZXh0ZW5zaW9uc1N1cHBvcnRlZEJ5VGVtcGxhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGV4dGVuc2lvbjogc3RyaW5nO1xuICAgIGludGVybmFsRmlsZU5hbWU6IHN0cmluZztcbiAgICB2aWV3ZXJUeXBlOiBzdHJpbmcgPSAndW5rbm93bic7XG4gICAgaXNDb250ZW50UmVhZHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBhY3RpdmUgVmlld2VyIGNvbnRlbnQgZXh0ZW5zaW9ucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgZXh0ZW5zaW9uIHJlZmVyZW5jZXNcbiAgICAgKi9cbiAgICBnZXQgdmlld2VyRXh0ZW5zaW9ucygpOiBWaWV3ZXJFeHRlbnNpb25SZWZbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Vmlld2VyRXh0ZW5zaW9ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGEgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgc3VwcG9ydGVkIGJ5IGV4dGVybmFsIHBsdWdpbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGV4dGVuc2lvbnNcbiAgICAgKi9cbiAgICBnZXQgZXh0ZXJuYWxFeHRlbnNpb25zKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld2VyRXh0ZW5zaW9ucy5tYXAoKGV4dCkgPT4gZXh0LmZpbGVFeHRlbnNpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2V4dGVybmFsVmlld2VyOiBWaWV3ZXJFeHRlbnNpb25SZWY7XG4gICAgZ2V0IGV4dGVybmFsVmlld2VyKCk6IFZpZXdlckV4dGVuc2lvblJlZiB7XG4gICAgICAgIGlmICghdGhpcy5fZXh0ZXJuYWxWaWV3ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4dGVybmFsVmlld2VyID0gdGhpcy52aWV3ZXJFeHRlbnNpb25zLmZpbmQoKGV4dCkgPT4gZXh0LmZpbGVFeHRlbnNpb24gPT09ICcqJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxWaWV3ZXI7XG4gICAgfVxuXG4gICAgY2FjaGVUeXBlRm9yQ29udGVudCA9ICduby1jYWNoZSc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbFNlcnZpY2U6IFZpZXdVdGlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBBcHBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jYWNoZVR5cGVGb3JDb250ZW50ID0gJ25vLWNhY2hlJztcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5pc0NvbnRlbnRSZWFkeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9ICF0aGlzLmJsb2JGaWxlICYmICF0aGlzLnVybEZpbGU7XG5cbiAgICAgICAgaWYgKHRoaXMuYmxvYkZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBCbG9iRGF0YSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXJsRmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRVcFVybEZpbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBCbG9iRGF0YSgpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbEZpbGVOYW1lID0gdGhpcy5maWxlTmFtZTtcbiAgICAgICAgdGhpcy52aWV3ZXJUeXBlID0gdGhpcy52aWV3VXRpbFNlcnZpY2UuZ2V0Vmlld2VyVHlwZUJ5TWltZVR5cGUodGhpcy5ibG9iRmlsZS50eXBlKTtcblxuICAgICAgICB0aGlzLmV4dGVuc2lvbkNoYW5nZS5lbWl0KHRoaXMuYmxvYkZpbGUudHlwZSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9wKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcFVybEZpbGUoKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWxlTmFtZSA9IHRoaXMuZmlsZU5hbWUgPyB0aGlzLmZpbGVOYW1lIDogdGhpcy52aWV3VXRpbFNlcnZpY2UuZ2V0RmlsZW5hbWVGcm9tVXJsKHRoaXMudXJsRmlsZSk7XG4gICAgICAgIHRoaXMuZXh0ZW5zaW9uID0gdGhpcy52aWV3VXRpbFNlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbih0aGlzLmludGVybmFsRmlsZU5hbWUpO1xuICAgICAgICB0aGlzLnZpZXdlclR5cGUgPSB0aGlzLnZpZXdVdGlsU2VydmljZS5nZXRWaWV3ZXJUeXBlKHRoaXMuZXh0ZW5zaW9uLCB0aGlzLm1pbWVUeXBlLCB0aGlzLmV4dGVuc2lvbnNTdXBwb3J0ZWRCeVRlbXBsYXRlcyk7XG5cbiAgICAgICAgdGhpcy5leHRlbnNpb25DaGFuZ2UuZW1pdCh0aGlzLmV4dGVuc2lvbik7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9wKCk7XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9wKCkge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMSk7XG4gICAgfVxuXG4gICAgY2hlY2tFeHRlbnNpb25zKGV4dGVuc2lvbkFsbG93ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHRlbnNpb25BbGxvd2VkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgPT09IGV4dGVuc2lvbkFsbG93ZWQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHRlbnNpb25BbGxvd2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBleHRlbnNpb25BbGxvd2VkLmZpbmQoKGN1cnJlbnRFeHRlbnNpb24pID0+IHRoaXMuZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgPT09IGN1cnJlbnRFeHRlbnNpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIHRoaXMuc3VibWl0RmlsZS5uZXh0KG5ld0ltYWdlQmxvYik7XG4gICAgfVxuXG4gICAgb25VbnN1cHBvcnRlZEZpbGUoKSB7XG4gICAgICAgIHRoaXMudmlld2VyVHlwZSA9ICd1bmtub3duJztcbiAgICB9XG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLmNsb3NlLm5leHQodHJ1ZSk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIih2aWV3ZXJUeXBlID09PSAnbWVkaWEnIHx8IHZpZXdlclR5cGUgPT09ICdwZGYnIHx8IHZpZXdlclR5cGUgPT09ICdpbWFnZScpID8gaXNMb2FkaW5nIHx8ICFpc0NvbnRlbnRSZWFkeSA6IGlzTG9hZGluZ1wiXG4gICAgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlci1tYWluLWxvYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlci1sYXlvdXQtY29udGVudCBhZGYtdmlld2VyX19mdWxsc2NyZWVuLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXItY29udGVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlcl9fbG9hZGluZy1zY3JlZW4gXCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7ICdBREZfVklFV0VSLkxPQURJTkcnIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJhZGYtdmlld2VyLXJlbmRlcl9fbG9hZGluZy1zY3JlZW5fX3NwaW5uZXJcIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmdcIlxuICAgICBjbGFzcz1cImFkZi12aWV3ZXItcmVuZGVyLW1haW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1yZW5kZXItbGF5b3V0LWNvbnRlbnQgYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItcmVuZGVyLWNvbnRlbnQtY29udGFpbmVyXCIgW25nU3dpdGNoXT1cInZpZXdlclR5cGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidleHRlcm5hbCdcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXByZXZpZXctZXh0ZW5zaW9uICpuZ0lmPVwiISFleHRlcm5hbFZpZXdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZXh0ZXJuYWxWaWV3ZXIuY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uXT1cImV4dGVybmFsVmlld2VyLmZpbGVFeHRlbnNpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImV4dGVybmFsVmlld2VyLmNvbXBvbmVudFwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3BkZidcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXBkZi12aWV3ZXIgW3RodW1ibmFpbHNUZW1wbGF0ZV09XCJ0aHVtYm5haWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dUaHVtYm5haWxzXT1cImFsbG93VGh1bWJuYWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiaW50ZXJuYWxGaWxlTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWNoZVR5cGVdPVwiY2FjaGVUeXBlRm9yQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlc0xvYWRlZCk9XCJpc0NvbnRlbnRSZWFkeSA9IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwib25DbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uVW5zdXBwb3J0ZWRGaWxlKClcIiAvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIj5cbiAgICAgICAgICAgICAgICA8YWRmLWltZy12aWV3ZXIgW3VybEZpbGVdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxlTmFtZV09XCJpbnRlcm5hbEZpbGVOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvYkZpbGVdPVwiYmxvYkZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25VbnN1cHBvcnRlZEZpbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJtaXQpPVwib25TdWJtaXRGaWxlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2VMb2FkZWQpPVwiaXNDb250ZW50UmVhZHkgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2F2aW5nKT1cImlzU2F2aW5nLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWVkaWEnXCI+XG4gICAgICAgICAgICAgICAgPGFkZi1tZWRpYS1wbGF5ZXIgaWQ9XCJhZGYtbWRlZGlhLXBsYXllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VybEZpbGVdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW1lVHlwZV09XCJtaW1lVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jsb2JGaWxlXT1cImJsb2JGaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiaW50ZXJuYWxGaWxlTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uVW5zdXBwb3J0ZWRGaWxlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5QbGF5KT1cImlzQ29udGVudFJlYWR5ID0gdHJ1ZVwiLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXR4dC12aWV3ZXIgW3VybEZpbGVdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2N1c3RvbSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHQgb2Ygdmlld2VyRXh0ZW5zaW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXByZXZpZXctZXh0ZW5zaW9uICpuZ0lmPVwiY2hlY2tFeHRlbnNpb25zKGV4dC5maWxlRXh0ZW5zaW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImV4dC5jb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxdPVwidXJsRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbl09XCJleHRlbnNpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZXh0LmNvbXBvbmVudFwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBleHRlbnNpb25UZW1wbGF0ZSBvZiBleHRlbnNpb25UZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleHRlbnNpb25UZW1wbGF0ZS5pc1Zpc2libGVcIiBjbGFzcz1cImFkZi12aWV3ZXItcmVuZGVyLWN1c3RvbS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXh0ZW5zaW9uVGVtcGxhdGUudGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHVybEZpbGU6IHVybEZpbGUsIGV4dGVuc2lvbjogZXh0ZW5zaW9uIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgIDxhZGYtdmlld2VyLXVua25vd24tZm9ybWF0IFtjdXN0b21FcnJvcl09XCJjdXN0b21FcnJvclwiLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdlclRlbXBsYXRlRXh0ZW5zaW9uc1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIiBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCIgLz5cbjwvbmctY29udGFpbmVyPlxuIl19