@esfaenza/core 15.2.180-beta4 → 15.2.181

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.
@@ -24,8 +24,9 @@ import * as i22 from "./jace-resource/jace-resource.component";
24
24
  import * as i23 from "./es-modal/es-modal.component";
25
25
  import * as i24 from "./es-modal/es-modal-head/es-modal-head.component";
26
26
  import * as i25 from "./labeled-span/labeled-span.component";
27
+ import * as i26 from "./es-image-cropper/es-image-cropper.component";
27
28
  export declare class ComponentsModule {
28
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentsModule, never>;
29
- static ɵmod: i0.ɵɵNgModuleDeclaration<ComponentsModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.FormsModule, typeof i4.DirectivesModule, typeof i5.LocalizationModule, typeof i6.ProgressbarModule, typeof i7.MatSlideToggleModule, typeof i8.BsDropdownModule, typeof i9.EsTableModule, typeof i10.ModalModule, typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.Navbar, typeof i20.RedirecterComponent, typeof i21.Sidebar, typeof i22.JaceResourceComponent, typeof i23.EsModalComponent, typeof i24.EsModalHeadComponent, typeof i25.LabeledSpanComponent], [typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.Navbar, typeof i20.RedirecterComponent, typeof i21.Sidebar, typeof i22.JaceResourceComponent, typeof i23.EsModalComponent, typeof i24.EsModalHeadComponent, typeof i25.LabeledSpanComponent]>;
30
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ComponentsModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.FormsModule, typeof i4.DirectivesModule, typeof i5.LocalizationModule, typeof i6.ProgressbarModule, typeof i7.MatSlideToggleModule, typeof i8.BsDropdownModule, typeof i9.EsTableModule, typeof i10.ModalModule, typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.Navbar, typeof i20.RedirecterComponent, typeof i21.Sidebar, typeof i22.JaceResourceComponent, typeof i23.EsModalComponent, typeof i24.EsModalHeadComponent, typeof i25.LabeledSpanComponent, typeof i26.EsImageCropperComponent], [typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.Navbar, typeof i20.RedirecterComponent, typeof i21.Sidebar, typeof i22.JaceResourceComponent, typeof i23.EsModalComponent, typeof i24.EsModalHeadComponent, typeof i25.LabeledSpanComponent, typeof i26.EsImageCropperComponent]>;
30
31
  static ɵinj: i0.ɵɵInjectorDeclaration<ComponentsModule>;
31
32
  }
@@ -0,0 +1,25 @@
1
+ import { ImageCroppedEvent, ImageTransform } from "ngx-image-cropper";
2
+ import { AppFile } from "@esfaenza/forms-and-validations";
3
+ import * as i0 from "@angular/core";
4
+ export declare class EsImageCropperComponent {
5
+ Height: number;
6
+ Width: number;
7
+ constructor();
8
+ ProfileImage: AppFile;
9
+ private _OutputImage;
10
+ get OutputImage(): any;
11
+ canvasRotation: number;
12
+ scale: number;
13
+ transform: ImageTransform;
14
+ onResetImage(): void;
15
+ onImageCropped(event: ImageCroppedEvent): void;
16
+ onRotateLeft(): void;
17
+ onRotateRight(): void;
18
+ onFlipHorizontal(): void;
19
+ onFlipVertical(): void;
20
+ private doFlipAfterRotate;
21
+ onZoomOut(): void;
22
+ onZoomIn(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsImageCropperComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<EsImageCropperComponent, "es-image-cropper", never, { "Height": "Height"; "Width": "Width"; }, {}, never, never, true, never>;
25
+ }
@@ -18,3 +18,4 @@ export * from "./es-modal/es-modal.component";
18
18
  export * from "./es-modal/es-modal-head/es-modal-head.component";
19
19
  export * from "./user_infos/user_infos.component";
20
20
  export * from "./labeled-span/labeled-span.component";
21
+ export * from "./es-image-cropper/es-image-cropper.component";
@@ -6,6 +6,7 @@ import { AppFile } from "@esfaenza/forms-and-validations";
6
6
  import { BaseComponent } from "../base/base.component";
7
7
  import { AppState, TokenService, UserPreferencesService } from "@esfaenza/core/services";
8
8
  import { EsModalComponent } from "../es-modal/es-modal.component";
9
+ import { EsImageCropperComponent } from "../public-api";
9
10
  import * as i0 from "@angular/core";
10
11
  export declare class UserInfosComponent extends BaseComponent {
11
12
  private inj;
@@ -25,6 +26,7 @@ export declare class UserInfosComponent extends BaseComponent {
25
26
  dlgShowAccountRoles: EsModalComponent;
26
27
  onShowAccountRoles(): void;
27
28
  dlgUpdateProfilePicture: EsModalComponent;
29
+ imageCropper: EsImageCropperComponent;
28
30
  UpdateProfilePictureDTO: {
29
31
  image: AppFile;
30
32
  };
@@ -27,6 +27,7 @@ import { Sidebar } from "./sidebar/sidebar.component";
27
27
  import { EsModalComponent } from "./es-modal/es-modal.component";
28
28
  import { EsModalHeadComponent } from "./es-modal/es-modal-head/es-modal-head.component";
29
29
  import { LabeledSpanComponent } from "./labeled-span/labeled-span.component";
30
+ import { EsImageCropperComponent } from "./es-image-cropper/es-image-cropper.component";
30
31
  // Core
31
32
  import { DirectivesModule } from "@esfaenza/core/directives";
32
33
  import * as i0 from "@angular/core";
@@ -45,7 +46,8 @@ const COMPONENTS = [
45
46
  JaceResourceComponent,
46
47
  EsModalComponent,
47
48
  EsModalHeadComponent,
48
- LabeledSpanComponent
49
+ LabeledSpanComponent,
50
+ EsImageCropperComponent
49
51
  ];
50
52
  export class ComponentsModule {
51
53
  }
@@ -64,7 +66,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
64
66
  JaceResourceComponent,
65
67
  EsModalComponent,
66
68
  EsModalHeadComponent,
67
- LabeledSpanComponent], exports: [BackTop,
69
+ LabeledSpanComponent,
70
+ EsImageCropperComponent], exports: [BackTop,
68
71
  Breadcrumb,
69
72
  PageNotFoundComponent,
70
73
  ServerErrorComponent,
@@ -78,7 +81,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
78
81
  JaceResourceComponent,
79
82
  EsModalComponent,
80
83
  EsModalHeadComponent,
81
- LabeledSpanComponent] });
84
+ LabeledSpanComponent,
85
+ EsImageCropperComponent] });
82
86
  ComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, MatSlideToggleModule, BsDropdownModule, EsTableModule, ModalModule, COMPONENTS] });
83
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
84
88
  type: NgModule,
@@ -87,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
87
91
  exports: [...COMPONENTS]
88
92
  }]
89
93
  }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFlBQVk7QUFDWixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxhQUFhO0FBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU3RSxPQUFPO0FBQ1AsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRTdELE1BQU0sVUFBVSxHQUFHO0lBQ2YsT0FBTztJQUNQLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sbUJBQW1CO0lBQ25CLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQixvQkFBb0I7Q0FDdkIsQ0FBQztBQU1GLE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQixZQUhmLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBbEI5SyxPQUFPO1FBQ1AsVUFBVTtRQUNWLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLGNBQWM7UUFDZCxzQkFBc0I7UUFDdEIsa0JBQWtCO1FBQ2xCLE1BQU07UUFDTixtQkFBbUI7UUFDbkIsT0FBTztRQUNQLHFCQUFxQjtRQUNyQixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLG9CQUFvQixhQWRwQixPQUFPO1FBQ1AsVUFBVTtRQUNWLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIscUJBQXFCO1FBQ3JCLGNBQWM7UUFDZCxzQkFBc0I7UUFDdEIsa0JBQWtCO1FBQ2xCLE1BQU07UUFDTixtQkFBbUI7UUFDbkIsT0FBTztRQUNQLHFCQUFxQjtRQUNyQixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLG9CQUFvQjs4R0FPWCxnQkFBZ0IsWUFIZixZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFLLFVBQVU7MkZBR3BMLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDO29CQUM5TCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gRXMgZmFlbnphXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5cclxuLy8gTGlicyBcclxuaW1wb3J0IHsgUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xyXG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcclxuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xyXG5cclxuLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBCYWNrVG9wIH0gZnJvbSBcIi4vYmFjay10b3AvYmFjay10b3AuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tIFwiLi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gXCIuL2Vycm9yLzQwNC9wYWdlbm90Zm91bmQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNlcnZlckVycm9yQ29tcG9uZW50IH0gZnJvbSBcIi4vZXJyb3IvNTAwL3NlcnZlcmVycm9yLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBbmd1bGFyRXJyb3JDb21wb25lbnQgfSBmcm9tIFwiLi9lcnJvci9Bbmd1bGFyL2FuZ3VsYXJlcnJvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGFnZXNDb21wb25lbnQgfSBmcm9tIFwiLi9wYWdlL3BhZ2VzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFeHRlcm5hbFBhZ2VzQ29tcG9uZW50IH0gZnJvbSBcIi4vZXh0ZXJuYWwtcGFnZS9leHRlcm5hbF9wYWdlcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSmFjZUxvZ2luQ29tcG9uZW50IH0gZnJvbSBcIi4vamFjZS1sb2dpbi9qYWNlLWxvZ2luLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBOYXZiYXIgfSBmcm9tIFwiLi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBKYWNlUmVzb3VyY2VDb21wb25lbnQgfSBmcm9tIFwiLi9qYWNlLXJlc291cmNlL2phY2UtcmVzb3VyY2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJlZGlyZWN0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9yZWRpcmVjdGVyL3JlZGlyZWN0ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tIFwiLi9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzTW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNNb2RhbEhlYWRDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC1oZWFkL2VzLW1vZGFsLWhlYWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExhYmVsZWRTcGFuQ29tcG9uZW50IH0gZnJvbSBcIi4vbGFiZWxlZC1zcGFuL2xhYmVsZWQtc3Bhbi5jb21wb25lbnRcIjtcclxuXHJcbi8vIENvcmVcclxuaW1wb3J0IHsgRGlyZWN0aXZlc01vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcblxyXG5jb25zdCBDT01QT05FTlRTID0gW1xyXG4gICAgQmFja1RvcCxcclxuICAgIEJyZWFkY3J1bWIsXHJcbiAgICBQYWdlTm90Rm91bmRDb21wb25lbnQsXHJcbiAgICBTZXJ2ZXJFcnJvckNvbXBvbmVudCxcclxuICAgIEFuZ3VsYXJFcnJvckNvbXBvbmVudCxcclxuICAgIFBhZ2VzQ29tcG9uZW50LFxyXG4gICAgRXh0ZXJuYWxQYWdlc0NvbXBvbmVudCxcclxuICAgIEphY2VMb2dpbkNvbXBvbmVudCxcclxuICAgIE5hdmJhcixcclxuICAgIFJlZGlyZWN0ZXJDb21wb25lbnQsXHJcbiAgICBTaWRlYmFyLFxyXG4gICAgSmFjZVJlc291cmNlQ29tcG9uZW50LFxyXG4gICAgRXNNb2RhbENvbXBvbmVudCxcclxuICAgIEVzTW9kYWxIZWFkQ29tcG9uZW50LFxyXG4gICAgTGFiZWxlZFNwYW5Db21wb25lbnRcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBEaXJlY3RpdmVzTW9kdWxlLCBMb2NhbGl6YXRpb25Nb2R1bGUsIFByb2dyZXNzYmFyTW9kdWxlLCBNYXRTbGlkZVRvZ2dsZU1vZHVsZSwgQnNEcm9wZG93bk1vZHVsZSwgRXNUYWJsZU1vZHVsZSwgTW9kYWxNb2R1bGUsIC4uLkNPTVBPTkVOVFNdLFxyXG4gICAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHsgfSJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFlBQVk7QUFDWixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxhQUFhO0FBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUV4RixPQUFPO0FBQ1AsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRTdELE1BQU0sVUFBVSxHQUFHO0lBQ2YsT0FBTztJQUNQLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sbUJBQW1CO0lBQ25CLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsdUJBQXVCO0NBQzFCLENBQUM7QUFNRixNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsWUFIZixZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQW5COUssT0FBTztRQUNQLFVBQVU7UUFDVixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQixjQUFjO1FBQ2Qsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixNQUFNO1FBQ04sbUJBQW1CO1FBQ25CLE9BQU87UUFDUCxxQkFBcUI7UUFDckIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixvQkFBb0I7UUFDcEIsdUJBQXVCLGFBZnZCLE9BQU87UUFDUCxVQUFVO1FBQ1YscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIsY0FBYztRQUNkLHNCQUFzQjtRQUN0QixrQkFBa0I7UUFDbEIsTUFBTTtRQUNOLG1CQUFtQjtRQUNuQixPQUFPO1FBQ1AscUJBQXFCO1FBQ3JCLGdCQUFnQjtRQUNoQixvQkFBb0I7UUFDcEIsb0JBQW9CO1FBQ3BCLHVCQUF1Qjs4R0FPZCxnQkFBZ0IsWUFIZixZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFLLFVBQVU7MkZBR3BMLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDO29CQUM5TCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gRXMgZmFlbnphXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5cclxuLy8gTGlicyBcclxuaW1wb3J0IHsgUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xyXG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcclxuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xyXG5cclxuLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBCYWNrVG9wIH0gZnJvbSBcIi4vYmFjay10b3AvYmFjay10b3AuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tIFwiLi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gXCIuL2Vycm9yLzQwNC9wYWdlbm90Zm91bmQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNlcnZlckVycm9yQ29tcG9uZW50IH0gZnJvbSBcIi4vZXJyb3IvNTAwL3NlcnZlcmVycm9yLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBbmd1bGFyRXJyb3JDb21wb25lbnQgfSBmcm9tIFwiLi9lcnJvci9Bbmd1bGFyL2FuZ3VsYXJlcnJvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGFnZXNDb21wb25lbnQgfSBmcm9tIFwiLi9wYWdlL3BhZ2VzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFeHRlcm5hbFBhZ2VzQ29tcG9uZW50IH0gZnJvbSBcIi4vZXh0ZXJuYWwtcGFnZS9leHRlcm5hbF9wYWdlcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSmFjZUxvZ2luQ29tcG9uZW50IH0gZnJvbSBcIi4vamFjZS1sb2dpbi9qYWNlLWxvZ2luLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBOYXZiYXIgfSBmcm9tIFwiLi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBKYWNlUmVzb3VyY2VDb21wb25lbnQgfSBmcm9tIFwiLi9qYWNlLXJlc291cmNlL2phY2UtcmVzb3VyY2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJlZGlyZWN0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9yZWRpcmVjdGVyL3JlZGlyZWN0ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tIFwiLi9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzTW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNNb2RhbEhlYWRDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC1oZWFkL2VzLW1vZGFsLWhlYWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExhYmVsZWRTcGFuQ29tcG9uZW50IH0gZnJvbSBcIi4vbGFiZWxlZC1zcGFuL2xhYmVsZWQtc3Bhbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1pbWFnZS1jcm9wcGVyL2VzLWltYWdlLWNyb3BwZXIuY29tcG9uZW50XCI7XHJcblxyXG4vLyBDb3JlXHJcbmltcG9ydCB7IERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZGlyZWN0aXZlc1wiO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UUyA9IFtcclxuICAgIEJhY2tUb3AsXHJcbiAgICBCcmVhZGNydW1iLFxyXG4gICAgUGFnZU5vdEZvdW5kQ29tcG9uZW50LFxyXG4gICAgU2VydmVyRXJyb3JDb21wb25lbnQsXHJcbiAgICBBbmd1bGFyRXJyb3JDb21wb25lbnQsXHJcbiAgICBQYWdlc0NvbXBvbmVudCxcclxuICAgIEV4dGVybmFsUGFnZXNDb21wb25lbnQsXHJcbiAgICBKYWNlTG9naW5Db21wb25lbnQsXHJcbiAgICBOYXZiYXIsXHJcbiAgICBSZWRpcmVjdGVyQ29tcG9uZW50LFxyXG4gICAgU2lkZWJhcixcclxuICAgIEphY2VSZXNvdXJjZUNvbXBvbmVudCxcclxuICAgIEVzTW9kYWxDb21wb25lbnQsXHJcbiAgICBFc01vZGFsSGVhZENvbXBvbmVudCxcclxuICAgIExhYmVsZWRTcGFuQ29tcG9uZW50LFxyXG4gICAgRXNJbWFnZUNyb3BwZXJDb21wb25lbnRcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBEaXJlY3RpdmVzTW9kdWxlLCBMb2NhbGl6YXRpb25Nb2R1bGUsIFByb2dyZXNzYmFyTW9kdWxlLCBNYXRTbGlkZVRvZ2dsZU1vZHVsZSwgQnNEcm9wZG93bk1vZHVsZSwgRXNUYWJsZU1vZHVsZSwgTW9kYWxNb2R1bGUsIC4uLkNPTVBPTkVOVFNdLFxyXG4gICAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHsgfSJdfQ==
@@ -0,0 +1,83 @@
1
+ import { NgIf } from "@angular/common";
2
+ import { ImageCropperModule } from "ngx-image-cropper";
3
+ import { Component, Input } from "@angular/core";
4
+ import { AppFile, FormsAndValidationsModule } from "@esfaenza/forms-and-validations";
5
+ import { FormsModule } from "@angular/forms";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "ngx-image-cropper";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@esfaenza/forms-and-validations";
10
+ export class EsImageCropperComponent {
11
+ constructor() {
12
+ this.canvasRotation = 0;
13
+ this.scale = 1;
14
+ this.transform = {};
15
+ }
16
+ get OutputImage() {
17
+ if (this.ProfileImage?.nativefiles)
18
+ return this._OutputImage;
19
+ else
20
+ return null;
21
+ }
22
+ onResetImage() {
23
+ this.ProfileImage = new AppFile();
24
+ this._OutputImage = null;
25
+ }
26
+ onImageCropped(event) {
27
+ this._OutputImage = event.blob;
28
+ }
29
+ onRotateLeft() {
30
+ this.canvasRotation--;
31
+ this.doFlipAfterRotate();
32
+ }
33
+ onRotateRight() {
34
+ this.canvasRotation++;
35
+ this.doFlipAfterRotate();
36
+ }
37
+ onFlipHorizontal() {
38
+ this.transform = {
39
+ ...this.transform,
40
+ flipH: !this.transform.flipH,
41
+ };
42
+ }
43
+ onFlipVertical() {
44
+ this.transform = {
45
+ ...this.transform,
46
+ flipV: !this.transform.flipV,
47
+ };
48
+ }
49
+ doFlipAfterRotate() {
50
+ const flippedH = this.transform.flipH;
51
+ const flippedV = this.transform.flipV;
52
+ this.transform = {
53
+ ...this.transform,
54
+ flipH: flippedV,
55
+ flipV: flippedH,
56
+ };
57
+ }
58
+ onZoomOut() {
59
+ this.scale -= 0.1;
60
+ this.transform = {
61
+ ...this.transform,
62
+ scale: this.scale,
63
+ };
64
+ }
65
+ onZoomIn() {
66
+ this.scale += 0.1;
67
+ this.transform = {
68
+ ...this.transform,
69
+ scale: this.scale,
70
+ };
71
+ }
72
+ }
73
+ EsImageCropperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsImageCropperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74
+ EsImageCropperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsImageCropperComponent, isStandalone: true, selector: "es-image-cropper", inputs: { Height: "Height", Width: "Width" }, ngImport: i0, template: "<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>", styles: [".btn{width:40px;margin-right:10px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ImageCropperModule }, { kind: "component", type: i1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "cropperFrameAriaLabel", "output", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i3.FormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode"] }] });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsImageCropperComponent, decorators: [{
76
+ type: Component,
77
+ args: [{ selector: "es-image-cropper", standalone: true, imports: [NgIf, ImageCropperModule, FormsModule, FormsAndValidationsModule], template: "<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>", styles: [".btn{width:40px;margin-right:10px}\n"] }]
78
+ }], ctorParameters: function () { return []; }, propDecorators: { Height: [{
79
+ type: Input
80
+ }], Width: [{
81
+ type: Input
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL2VzLWltYWdlLWNyb3BwZXIvZXMtaW1hZ2UtY3JvcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL2VzLWltYWdlLWNyb3BwZXIvZXMtaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFxQixrQkFBa0IsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVM3QyxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDO1FBWUEsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLGNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBZGYsQ0FBQztJQUtqQixJQUFJLFdBQVc7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVztZQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7O1lBRXpCLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFNTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2IsR0FBRyxJQUFJLENBQUMsU0FBUztZQUNqQixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7U0FDL0IsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1NBQy9CLENBQUM7SUFDTixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7U0FDbEIsQ0FBQztJQUNOLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNwQixDQUFDO0lBQ04sQ0FBQzs7b0hBN0VRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDBIQ2JwQyxncUVBOEJNLDhGRG5CUSxJQUFJLDRGQUFFLGtCQUFrQiw4ekJBQUUsV0FBVyw4VkFBRSx5QkFBeUI7MkZBRWpFLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDSSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQzswRUFHbEUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEltYWdlQ3JvcHBlZEV2ZW50LCBJbWFnZUNyb3BwZXJNb2R1bGUsIEltYWdlVHJhbnNmb3JtIH0gZnJvbSBcIm5neC1pbWFnZS1jcm9wcGVyXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcHBGaWxlLCBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9mb3Jtcy1hbmQtdmFsaWRhdGlvbnNcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZXMtaW1hZ2UtY3JvcHBlclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZXMtaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2VzLWltYWdlLWNyb3BwZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWYsIEltYWdlQ3JvcHBlck1vZHVsZSwgRm9ybXNNb2R1bGUsIEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc0ltYWdlQ3JvcHBlckNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBIZWlnaHQ6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIFdpZHRoOiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgUHJvZmlsZUltYWdlOiBBcHBGaWxlO1xyXG5cclxuICAgIHByaXZhdGUgX091dHB1dEltYWdlOiBhbnk7XHJcbiAgICBnZXQgT3V0cHV0SW1hZ2UoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5Qcm9maWxlSW1hZ2U/Lm5hdGl2ZWZpbGVzKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fT3V0cHV0SW1hZ2U7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjYW52YXNSb3RhdGlvbiA9IDA7XHJcbiAgICBzY2FsZSA9IDE7XHJcbiAgICB0cmFuc2Zvcm06IEltYWdlVHJhbnNmb3JtID0ge307XHJcblxyXG4gICAgcHVibGljIG9uUmVzZXRJbWFnZSgpIHtcclxuICAgICAgICB0aGlzLlByb2ZpbGVJbWFnZSA9IG5ldyBBcHBGaWxlKCk7XHJcbiAgICAgICAgdGhpcy5fT3V0cHV0SW1hZ2UgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkltYWdlQ3JvcHBlZChldmVudDogSW1hZ2VDcm9wcGVkRXZlbnQpIHtcclxuICAgICAgICB0aGlzLl9PdXRwdXRJbWFnZSA9IGV2ZW50LmJsb2I7XHJcbiAgICB9XHJcblxyXG4gICAgb25Sb3RhdGVMZWZ0KCkge1xyXG4gICAgICAgIHRoaXMuY2FudmFzUm90YXRpb24tLTtcclxuICAgICAgICB0aGlzLmRvRmxpcEFmdGVyUm90YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Sb3RhdGVSaWdodCgpIHtcclxuICAgICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uKys7XHJcbiAgICAgICAgdGhpcy5kb0ZsaXBBZnRlclJvdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRmxpcEhvcml6b250YWwoKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxyXG4gICAgICAgICAgICBmbGlwSDogIXRoaXMudHJhbnNmb3JtLmZsaXBILFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgb25GbGlwVmVydGljYWwoKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxyXG4gICAgICAgICAgICBmbGlwVjogIXRoaXMudHJhbnNmb3JtLmZsaXBWLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkb0ZsaXBBZnRlclJvdGF0ZSgpIHtcclxuICAgICAgICBjb25zdCBmbGlwcGVkSCA9IHRoaXMudHJhbnNmb3JtLmZsaXBIO1xyXG4gICAgICAgIGNvbnN0IGZsaXBwZWRWID0gdGhpcy50cmFuc2Zvcm0uZmxpcFY7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxyXG4gICAgICAgICAgICBmbGlwSDogZmxpcHBlZFYsXHJcbiAgICAgICAgICAgIGZsaXBWOiBmbGlwcGVkSCxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG9uWm9vbU91dCgpIHtcclxuICAgICAgICB0aGlzLnNjYWxlIC09IDAuMTtcclxuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXHJcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLnNjYWxlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgb25ab29tSW4oKSB7XHJcbiAgICAgICAgdGhpcy5zY2FsZSArPSAwLjE7XHJcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxyXG4gICAgICAgICAgICBzY2FsZTogdGhpcy5zY2FsZSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59IiwiPGRpdiAqbmdJZj1cIlByb2ZpbGVJbWFnZT8ubmF0aXZlZmlsZXM/Lmxlbmd0aCA+IDBcIiBbc3R5bGUud2lkdGgucHhdPVwiV2lkdGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblJvdGF0ZUxlZnQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYSBmYS11bmRvXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uUm90YXRlUmlnaHQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYSBmYS1yZXBlYXRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25GbGlwSG9yaXpvbnRhbCgpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj48aSBjbGFzcz1cImZhIGZhLWFycm93cy1oXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uRmxpcFZlcnRpY2FsKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPjxpIGNsYXNzPVwiZmEgZmEtYXJyb3dzLXZcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25ab29tSW4oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2gtcGx1c1wiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblpvb21PdXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYSBmYS1zZWFyY2gtbWludXNcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25SZXNldEltYWdlKClcIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiAwcHg7XCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImFwcC1tYXJnaW4tdG9wLTEwXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiSGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cIldpZHRoXCI+XHJcbiAgICA8Zm9ybS1maWxlICpuZ0lmPVwiIShQcm9maWxlSW1hZ2U/Lm5hdGl2ZWZpbGVzPy5sZW5ndGggPiAwKVwiIFtMYWJlbElucHV0UmF0aW9dPVwiJzAgMTInXCIgW0ZhbmN5TW9kZV09XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJQcm9maWxlSW1hZ2VcIiBuYW1lPVwiaW1hZ2VUb0Nyb3BcIj48L2Zvcm0tZmlsZT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJQcm9maWxlSW1hZ2U/Lm5hdGl2ZWZpbGVzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGltYWdlLWNyb3BwZXIgc3R5bGU9XCItLWNyb3BwZXItb3V0bGluZS1jb2xvcjogcmdiYSgwLDAsMClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyM5MWEzYjAnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VGaWxlXT1cIlByb2ZpbGVJbWFnZS5uYXRpdmVmaWxlc1swXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cIjQgLyAzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjcm9wcGVyU3RhdGljV2lkdGhdPVwiMzIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbY3JvcHBlclN0YXRpY0hlaWdodF09XCIzMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtvbmx5U2NhbGVEb3duXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NhbnZhc1JvdGF0aW9uXT1cImNhbnZhc1JvdGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dNb3ZlSW1hZ2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh0cmFuc2Zvcm0pXT1cInRyYW5zZm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJvbkltYWdlQ3JvcHBlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9pbWFnZS1jcm9wcGVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
@@ -18,4 +18,5 @@ export * from "./es-modal/es-modal.component";
18
18
  export * from "./es-modal/es-modal-head/es-modal-head.component";
19
19
  export * from "./user_infos/user_infos.component";
20
20
  export * from "./labeled-span/labeled-span.component";
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JhY2stdG9wL2JhY2stdG9wLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvNDA0L3BhZ2Vub3Rmb3VuZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLzUwMC9zZXJ2ZXJlcnJvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vycm9yL0FuZ3VsYXIvYW5ndWxhcmVycm9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS9wYWdlcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4dGVybmFsLXBhZ2UvZXh0ZXJuYWxfcGFnZXMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9qYWNlLWxvZ2luL2phY2UtbG9naW4uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVkaXJlY3Rlci9yZWRpcmVjdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS9yZWFjdGl2ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2phY2UtcmVzb3VyY2UvamFjZS1yZXNvdXJjZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlL2VtYmVkZGluZy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZXMtbW9kYWwvZXMtbW9kYWwtaGVhZC9lcy1tb2RhbC1oZWFkLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi91c2VyX2luZm9zL3VzZXJfaW5mb3MuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xhYmVsZWQtc3Bhbi9sYWJlbGVkLXNwYW4uY29tcG9uZW50XCI7Il19
21
+ export * from "./es-image-cropper/es-image-cropper.component";
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFjay10b3AvYmFjay10b3AuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci80MDQvcGFnZW5vdGZvdW5kLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvNTAwL3NlcnZlcmVycm9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvQW5ndWxhci9hbmd1bGFyZXJyb3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlL3BhZ2VzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZXJuYWwtcGFnZS9leHRlcm5hbF9wYWdlcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2phY2UtbG9naW4vamFjZS1sb2dpbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL25hdmJhci9uYXZiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9yZWRpcmVjdGVyL3JlZGlyZWN0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlL3JlYWN0aXZlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vamFjZS1yZXNvdXJjZS9qYWNlLXJlc291cmNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UvZW1iZWRkaW5nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2VzLW1vZGFsL2VzLW1vZGFsLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC1oZWFkL2VzLW1vZGFsLWhlYWQuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXJfaW5mb3MvdXNlcl9pbmZvcy5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGFiZWxlZC1zcGFuL2xhYmVsZWQtc3Bhbi5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZXMtaW1hZ2UtY3JvcHBlci9lcy1pbWFnZS1jcm9wcGVyLmNvbXBvbmVudFwiOyJdfQ==
@@ -15,6 +15,7 @@ import { MatTooltipModule } from "@angular/material/tooltip";
15
15
  import { EsModalComponent } from "../es-modal/es-modal.component";
16
16
  import { EsModalHeadComponent } from "../es-modal/es-modal-head/es-modal-head.component";
17
17
  import { LabeledSpanComponent } from "../labeled-span/labeled-span.component";
18
+ import { EsImageCropperComponent } from "../public-api";
18
19
  import * as i0 from "@angular/core";
19
20
  import * as i1 from "@esfaenza/core/services";
20
21
  import * as i2 from "@esfaenza/extensions";
@@ -59,7 +60,7 @@ export class UserInfosComponent extends BaseComponent {
59
60
  });
60
61
  }
61
62
  async doUpdateProfilePicture() {
62
- let res = await this.profile.doUpdateProfilePicture(this.UpdateProfilePictureDTO.image);
63
+ let res = await this.profile.doUpdateProfilePicture(new File([this.imageCropper.OutputImage], "profile.png"));
63
64
  this.msgExts.manageCallResultResponse(res, "Modifica eseguita con Successo", "Errori nella modifica", () => {
64
65
  this.dlgUpdateProfilePicture.hide();
65
66
  });
@@ -109,7 +110,7 @@ export class UserInfosComponent extends BaseComponent {
109
110
  }
110
111
  }
111
112
  UserInfosComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfosComponent, deps: [{ token: i0.Injector }, { token: i1.TokenService }, { token: i2.MessageService }, { token: i2.ExportService }, { token: i2.UtilityService }, { token: i3.LocalizationService }, { token: i1.AppState }, { token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component });
112
- UserInfosComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: UserInfosComponent, isStandalone: true, selector: "user-infos", viewQueries: [{ propertyName: "dlgShowAccountRoles", first: true, predicate: ["dlgShowAccountRoles"], descendants: true }, { propertyName: "dlgUpdateProfilePicture", first: true, predicate: ["dlgUpdateProfilePicture"], descendants: true }, { propertyName: "dlgUpdateRecoverySettings", first: true, predicate: ["dlgUpdateRecoverySettings"], descendants: true }, { propertyName: "dlgUpdatePassword", first: true, predicate: ["dlgUpdatePassword"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.tenantid}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}:&nbsp;</strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: [".app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i5.FormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i3.LocalizePipe, name: "localize" }, { kind: "component", type: EsModalComponent, selector: "es-modal", inputs: ["Size", "IgnoreBackdrop", "Backdrop", "HasOverlap"], outputs: ["onShow", "onHide"] }, { kind: "component", type: EsModalHeadComponent, selector: "es-modal-head", outputs: ["Close"] }, { kind: "component", type: LabeledSpanComponent, selector: "labeled-span", inputs: ["First", "Label", "Display"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i6.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }] });
113
+ UserInfosComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: UserInfosComponent, isStandalone: true, selector: "user-infos", viewQueries: [{ propertyName: "dlgShowAccountRoles", first: true, predicate: ["dlgShowAccountRoles"], descendants: true }, { propertyName: "dlgUpdateProfilePicture", first: true, predicate: ["dlgUpdateProfilePicture"], descendants: true }, { propertyName: "imageCropper", first: true, predicate: ["imageCropper"], descendants: true }, { propertyName: "dlgUpdateRecoverySettings", first: true, predicate: ["dlgUpdateRecoverySettings"], descendants: true }, { propertyName: "dlgUpdatePassword", first: true, predicate: ["dlgUpdatePassword"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.tenantid}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}:&nbsp;</strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'XL'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">Carica immagine</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body d-flex\">\r\n <div style=\"margin: auto;\">\r\n <es-image-cropper #imageCropper [Height]=\"600\" [Width]=\"800\"></es-image-cropper>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgUpdateProfilePicture.hide()\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\" (click)=\"doUpdateProfilePicture()\">Conferma</button>\r\n </div>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: [".app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i3.LocalizePipe, name: "localize" }, { kind: "component", type: EsModalComponent, selector: "es-modal", inputs: ["Size", "IgnoreBackdrop", "Backdrop", "HasOverlap"], outputs: ["onShow", "onHide"] }, { kind: "component", type: EsModalHeadComponent, selector: "es-modal-head", outputs: ["Close"] }, { kind: "component", type: EsImageCropperComponent, selector: "es-image-cropper", inputs: ["Height", "Width"] }, { kind: "component", type: LabeledSpanComponent, selector: "labeled-span", inputs: ["First", "Label", "Display"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i6.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }] });
113
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: UserInfosComponent, decorators: [{
114
115
  type: Component,
115
116
  args: [{ selector: "user-infos", viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }], standalone: true, imports: [
@@ -120,17 +121,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
120
121
  LocalizationModule,
121
122
  EsModalComponent,
122
123
  EsModalHeadComponent,
124
+ EsImageCropperComponent,
123
125
  LabeledSpanComponent,
124
126
  ExtensionsModule,
125
127
  AccessControlModule,
126
128
  MatTooltipModule
127
- ], template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.tenantid}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}:&nbsp;</strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: [".app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"] }]
129
+ ], template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.tenantid}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}:&nbsp;</strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'XL'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">Carica immagine</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body d-flex\">\r\n <div style=\"margin: auto;\">\r\n <es-image-cropper #imageCropper [Height]=\"600\" [Width]=\"800\"></es-image-cropper>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgUpdateProfilePicture.hide()\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\" (click)=\"doUpdateProfilePicture()\">Conferma</button>\r\n </div>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: [".app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"] }]
128
130
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TokenService }, { type: i2.MessageService }, { type: i2.ExportService }, { type: i2.UtilityService }, { type: i3.LocalizationService }, { type: i1.AppState }, { type: i1.UserPreferencesService }]; }, propDecorators: { dlgShowAccountRoles: [{
129
131
  type: ViewChild,
130
132
  args: ["dlgShowAccountRoles"]
131
133
  }], dlgUpdateProfilePicture: [{
132
134
  type: ViewChild,
133
135
  args: ["dlgUpdateProfilePicture"]
136
+ }], imageCropper: [{
137
+ type: ViewChild,
138
+ args: ['imageCropper']
134
139
  }], dlgUpdateRecoverySettings: [{
135
140
  type: ViewChild,
136
141
  args: ["dlgUpdateRecoverySettings"]
@@ -138,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
138
143
  type: ViewChild,
139
144
  args: ["dlgUpdatePassword"]
140
145
  }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcl9pbmZvcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3VzZXJfaW5mb3MvdXNlcl9pbmZvcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3VzZXJfaW5mb3MvdXNlcl9pbmZvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBWSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBaUIsZ0JBQWdCLEVBQWtDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEYsU0FBUztBQUNULE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBVyx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUl0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FB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QkFRTSx1QkFBdUI7c0JBQTVELFNBQVM7dUJBQUMseUJBQXlCO2dCQW1DSSx5QkFBeUI7c0JBQWhFLFNBQVM7dUJBQUMsMkJBQTJCO2dCQXFCTixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UsIEV4dGVuc2lvbnNNb2R1bGUsIE1lc3NhZ2VTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Nb2R1bGUsIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbi8vIENsYXNzaVxyXG5pbXBvcnQgeyBVcGRhdGVQYXNzd29yZER0bywgVXNlckFjY291bnQgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcbmltcG9ydCB7IEFwcEZpbGUsIEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2Zvcm1zLWFuZC12YWxpZGF0aW9uc1wiO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS5jb21wb25lbnRcIlxyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEFwcFN0YXRlLCBUb2tlblNlcnZpY2UsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuaW1wb3J0IHsgVXNlckluZm9Db21wb25lbnRMb2MgfSBmcm9tIFwiLi91c2VyX2luZm9zLmNvbXBvbmVudC5sb2NcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbE1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IEVzTW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi4vZXMtbW9kYWwvZXMtbW9kYWwuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzTW9kYWxIZWFkQ29tcG9uZW50IH0gZnJvbSBcIi4uL2VzLW1vZGFsL2VzLW1vZGFsLWhlYWQvZXMtbW9kYWwtaGVhZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTGFiZWxlZFNwYW5Db21wb25lbnQgfSBmcm9tIFwiLi4vbGFiZWxlZC1zcGFuL2xhYmVsZWQtc3Bhbi5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwidXNlci1pbmZvc1wiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwidXNlcl9pbmZvcy5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3VzZXJfaW5mb3MuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogVXNlckluZm9Db21wb25lbnRMb2MgfV0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEZvcm1zTW9kdWxlLCBcclxuICAgICAgICBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlLCBcclxuICAgICAgICBOZ0lmLFxyXG4gICAgICAgIE5nRm9yLFxyXG4gICAgICAgIExvY2FsaXphdGlvbk1vZHVsZSwgXHJcbiAgICAgICAgRXNNb2RhbENvbXBvbmVudCwgXHJcbiAgICAgICAgRXNNb2RhbEhlYWRDb21wb25lbnQsIFxyXG4gICAgICAgIExhYmVsZWRTcGFuQ29tcG9uZW50LFxyXG4gICAgICAgIEV4dGVuc2lvbnNNb2R1bGUsXHJcbiAgICAgICAgQWNjZXNzQ29udHJvbE1vZHVsZSxcclxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VySW5mb3NDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuICAgIHB1YmxpYyBBY2NvdW50RGV0YWlsczogVXNlckFjY291bnQ7XHJcbiAgICBwdWJsaWMgQWNjb3VudFJvbGVzOiBzdHJpbmdbXTtcclxuICAgIHB1YmxpYyBBY2NvdW50UGVybWlzc2lvbnM6IHN0cmluZ1tdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qOiBJbmplY3RvciwgcHJpdmF0ZSB0a3M6IFRva2VuU2VydmljZSwgcHVibGljIG1zZ0V4dHM6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgZXhwRXh0czogRXhwb3J0U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHB1YmxpYyB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSxcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBwcm9maWxlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdldEFjY291bnREZXRhaWxzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEFjY291bnREZXRhaWxzKCkge1xyXG4gICAgICAgIC8vIFJlY3VwZXJvIGxlIGluZm9ybWF6aW9uaSBBY2NvdW50IHBhcnRlbmRvIGRhbGxhIGlkZW50aXR5XHJcbiAgICAgICAgbGV0IGlkZW50aXR5ID0gdGhpcy50a3MuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgdGhpcy5BY2NvdW50Um9sZXMgPSBpZGVudGl0eS5Sb2xlcztcclxuICAgICAgICB0aGlzLkFjY291bnRQZXJtaXNzaW9ucyA9IGlkZW50aXR5LlBlcm1pc3Npb25zO1xyXG4gICAgICAgIHRoaXMuQWNjb3VudERldGFpbHMgPSBhd2FpdCB0aGlzLnByb2ZpbGUuZ2V0QWNjb3VudFByb2ZpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyNyZWdpb24gU2hvdyBSb2xlcyBhbmQgUGVybWlzc2lvbnNcclxuICAgIEBWaWV3Q2hpbGQoXCJkbGdTaG93QWNjb3VudFJvbGVzXCIpIGRsZ1Nob3dBY2NvdW50Um9sZXM6IEVzTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gICAgb25TaG93QWNjb3VudFJvbGVzKCkge1xyXG4gICAgICAgIHRoaXMuZGxnU2hvd0FjY291bnRSb2xlcy5zaG93KCk7XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gVXBkYXRlIFByb2ZpbGUgUGljdHVyZVxyXG4gICAgQFZpZXdDaGlsZChcImRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlXCIpIGRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlOiBFc01vZGFsQ29tcG9uZW50O1xyXG4gICAgcHVibGljIFVwZGF0ZVByb2ZpbGVQaWN0dXJlRFRPOiB7IGltYWdlOiBBcHBGaWxlIH0gPSBudWxsO1xyXG5cclxuICAgIHB1YmxpYyBvblVwZGF0ZVByb2ZpbGVQaWN0dXJlKCkge1xyXG4gICAgICAgIHRoaXMuVXBkYXRlUHJvZmlsZVBpY3R1cmVEVE8gPSBudWxsO1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVXBkYXRlUHJvZmlsZVBpY3R1cmVEVE8gPSB7IGltYWdlOiBudWxsIH07XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmUuc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb1VwZGF0ZVByb2ZpbGVQaWN0dXJlKCkge1xyXG4gICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnByb2ZpbGUuZG9VcGRhdGVQcm9maWxlUGljdHVyZSh0aGlzLlVwZGF0ZVByb2ZpbGVQaWN0dXJlRFRPLmltYWdlKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMubWFuYWdlQ2FsbFJlc3VsdFJlc3BvbnNlKHJlcywgXCJNb2RpZmljYSBlc2VndWl0YSBjb24gU3VjY2Vzc29cIiwgXCJFcnJvcmkgbmVsbGEgbW9kaWZpY2FcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlLmhpZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBEZWxldGUgUHJvZmlsZSBQaWN0dXJlXHJcbiAgICBwdWJsaWMgb25EZWxldGVQcm9maWxlUGljdHVyZSgpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZ1dpdGhDaG9pY2UoXCJDb25mZXJtYSBlbGltaW5hemlvbmVcIiwgXCJTaSBlJyBjZXJ0aSBkaSB2b2xlciByaW11b3ZlcmUgbCdpbW1hZ2luZSBwcm9maWxvP1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9EZWxldGVQcm9maWxlUGljdHVyZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb0RlbGV0ZVByb2ZpbGVQaWN0dXJlKCkge1xyXG4gICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnByb2ZpbGUuZG9EZWxldGVQcm9maWxlUGljdHVyZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5tYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzLCBcIkltbWFnaW5lIHByb2ZpbG8gcmltb3NzYSBjb24gc3VjY2Vzc29cIiwgXCJFcnJvcmkgbmVsbGEgcmltb3ppb25lIGRlbGxhIGltbWFnaW5lIHByb2ZpbG9cIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlLmhpZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBVcGRhdGUgUmVjb3ZlcnkgSW5mb1xyXG4gICAgQFZpZXdDaGlsZChcImRsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3NcIikgZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5nczogRXNNb2RhbENvbXBvbmVudDtcclxuICAgIHB1YmxpYyBVcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPOiB7IGVtYWlsOiBzdHJpbmcgfSA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncygpIHtcclxuICAgICAgICB0aGlzLlVwZGF0ZVJlY292ZXJ5U2V0dGluZ3NEVE8gPSBudWxsO1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVXBkYXRlUmVjb3ZlcnlTZXR0aW5nc0RUTyA9IHsgZW1haWw6IHRoaXMuQWNjb3VudERldGFpbHMucmVjb3ZlcnllbWFpbCB9O1xyXG4gICAgICAgICAgICB0aGlzLmRsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3Muc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3MoKSB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3ModGhpcy5VcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPLmVtYWlsKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMubWFuYWdlQ2FsbFJlc3VsdFJlc3BvbnNlKHJlcywgXCJNb2RpZmljYSBlc2VndWl0YSBjb24gU3VjY2Vzc29cIiwgXCJFcnJvcmkgbmVsbGEgbW9kaWZpY2FcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFjY291bnREZXRhaWxzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncy5oaWRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gVXBkYXRlIFBhc3N3b3JkXHJcbiAgICBAVmlld0NoaWxkKFwiZGxnVXBkYXRlUGFzc3dvcmRcIikgZGxnVXBkYXRlUGFzc3dvcmQ6IEVzTW9kYWxDb21wb25lbnQ7XHJcbiAgICBwdWJsaWMgVXBkYXRlUGFzc3dvcmREVE86IFVwZGF0ZVBhc3N3b3JkRHRvID0gbnVsbDtcclxuICAgIEN1c3RvbUVycm9yOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIG9uVXBkYXRlUGFzc3dvcmQoKSB7XHJcbiAgICAgICAgdGhpcy5VcGRhdGVQYXNzd29yZERUTyA9IG51bGw7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5DdXN0b21FcnJvciA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuVXBkYXRlUGFzc3dvcmREVE8gPSBuZXcgVXBkYXRlUGFzc3dvcmREdG8oKTtcclxuICAgICAgICAgICAgdGhpcy5kbGdVcGRhdGVQYXNzd29yZC5zaG93KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvVXBkYXRlUGFzc3dvcmQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuVXBkYXRlUGFzc3dvcmREVE8ubmV3cHdkICE9IHRoaXMuVXBkYXRlUGFzc3dvcmREVE8uY29uZmlybXB3ZClcclxuICAgICAgICAgICAgdGhpcy5DdXN0b21FcnJvciA9IFwiTGUgcGFzc3dvcmQgaW5zZXJpdGUgbm9uIGNvaW5jaWRvbm8uXCI7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnByb2ZpbGUuZG9VcGRhdGVQYXNzd29yZCh0aGlzLlVwZGF0ZVBhc3N3b3JkRFRPLm9sZHB3ZCwgdGhpcy5VcGRhdGVQYXNzd29yZERUTy5uZXdwd2QsIHRoaXMuVXBkYXRlUGFzc3dvcmREVE8uY29uZmlybXB3ZCk7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5tYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzLCBcIlBhc3N3b3JkIG1vZGlmaWNhdGEgY29uIFN1Y2Nlc3NvXCIsIFwiRXJyb3JpIG5lbGxhIG1vZGlmaWNhIGRlbGxhIFBhc3N3b3JkXCIsXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7IHRoaXMuZGxnVXBkYXRlUGFzc3dvcmQuaGlkZSgpOyB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcbn0iLCI8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgZGlzcGxheTogZmxleDtcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJtYXJnaW46IGF1dG87XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItaW1nLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwicHJvZmlsZS5Qcm9maWxlUGljdHVyZVwiIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJ1c2VyLWltZ1wiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlciB1c2VyLWltZy1idG5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtb3BhY2l0eSB1c2VyLWltZy1idG4tYm9keVwiIChjbGljayk9XCJvblVwZGF0ZVByb2ZpbGVQaWN0dXJlKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtcGVuXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbWFyZ2luLXRvcC0xNVwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiICpuZ0lmPVwiQWNjb3VudERldGFpbHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1ib2R5IGFwcC1uby1tYXJnaW4gYXBwLXBhZGRpbmctMTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICphYz1cIidSOkphY2UgQWRtaW4nXCIgY2xhc3M9XCJ1c2VyLXJvbGVzLWJ0blwiIFttYXRUb29sdGlwXT1cIidWaXN1YWxpenphIFJ1b2xpIGUgUGVybWVzc2knXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiAoY2xpY2spPVwib25TaG93QWNjb3VudFJvbGVzKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWJvb2stdXNlclwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj48bGFiZWxlZC1zcGFuIFtMYWJlbF09XCInVXRlbnRlJyB8IGxvY2FsaXplIDogbGNcIiBEaXNwbGF5PVwiVmVydGljYWxcIj57e0FjY291bnREZXRhaWxzLnVzZXJuYW1lfX08L2xhYmVsZWQtc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj48bGFiZWxlZC1zcGFuIFtMYWJlbF09XCInVGVuYW50JyB8IGxvY2FsaXplIDogbGNcIiBEaXNwbGF5PVwiVmVydGljYWxcIj57e0FjY291bnREZXRhaWxzLnRlbmFudGlkfX08L2xhYmVsZWQtc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgYXBwLW1hcmdpbi10b3AtMTBcIj48bGFiZWxlZC1zcGFuIFtMYWJlbF09XCInTm9tZScgfCBsb2NhbGl6ZSA6IGxjXCIgRGlzcGxheT1cIlZlcnRpY2FsXCI+e3tBY2NvdW50RGV0YWlscy5maXJzdG5hbWV9fTwvbGFiZWxlZC1zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBhcHAtbWFyZ2luLXRvcC0xMFwiPjxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidDb2dub21lJyB8IGxvY2FsaXplIDogbGNcIiBEaXNwbGF5PVwiVmVydGljYWxcIj57e0FjY291bnREZXRhaWxzLmxhc3RuYW1lfX08L2xhYmVsZWQtc3Bhbj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBhcHAtbWFyZ2luLXRvcC0xMFwiPjxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidFbWFpbCcgfCBsb2NhbGl6ZSA6IGxjXCIgRGlzcGxheT1cIlZlcnRpY2FsXCI+e3tBY2NvdW50RGV0YWlscy5yZWNvdmVyeWVtYWlsIHx8ICdOb24gZGlzcG9uaWJpbGUnfX08L2xhYmVsZWQtc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1hcmdpbi10b3AtMTAgcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvblVwZGF0ZVBhc3N3b3JkKClcIj5Nb2RpZmljYSBQYXNzd29yZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib25VcGRhdGVSZWNvdmVyeVNldHRpbmdzKClcIj5Nb2RpZmljYSBFbWFpbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS1VcGRhdGUgUGFzc3dvcmQtLT5cclxuPGVzLW1vZGFsICNkbGdVcGRhdGVQYXNzd29yZCBbU2l6ZV09XCInTCdcIj5cclxuICAgIDxlcy1tb2RhbC1oZWFkIChDbG9zZSk9XCJkbGdVcGRhdGVQYXNzd29yZC5oaWRlKCk7XCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+TW9kaWZpY2EgUGFzc3dvcmQ8L2g1PlxyXG4gICAgPC9lcy1tb2RhbC1oZWFkPlxyXG4gICAgPGZvcm0gKm5nSWY9XCJVcGRhdGVQYXNzd29yZERUT1wiICNmb3JtVXBkYXRlUGFzc3dvcmQ9XCJuZ0Zvcm1cIiAobmdTdWJtaXQpPVwiZm9ybVVwZGF0ZVBhc3N3b3JkLnZhbGlkICYmIGRvVXBkYXRlUGFzc3dvcmQoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGxhc3RmaXhcIj5cclxuICAgICAgICAgICAgPGZvcm0taW5wdXQgW1Bhc3N3b3JkXT1cInRydWVcIiBbTGFiZWxdPVwiJ1Bhc3N3b3JkJyB8IGxvY2FsaXplOiBsY1wiIFsobmdNb2RlbCldPVwiVXBkYXRlUGFzc3dvcmREVE8ub2xkcHdkXCIgbmFtZT1cIm9sZHB3XCIgcmVxdWlyZWQ+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICA8Zm9ybS1pbnB1dCBbUGFzc3dvcmRdPVwidHJ1ZVwiIFtMYWJlbF09XCInTnVvdmEgUGFzc3dvcmQnIHwgbG9jYWxpemU6IGxjXCIgWyhuZ01vZGVsKV09XCJVcGRhdGVQYXNzd29yZERUTy5uZXdwd2RcIiBuYW1lPVwibmV3cHdcIiByZXF1aXJlZD48L2Zvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgIDxmb3JtLWlucHV0IFtQYXNzd29yZF09XCJ0cnVlXCIgW0xhYmVsXT1cIidDb25mZXJtYSBQYXNzd29yZCcgfCBsb2NhbGl6ZTogbGNcIiBbKG5nTW9kZWwpXT1cIlVwZGF0ZVBhc3N3b3JkRFRPLmNvbmZpcm1wd2RcIiBuYW1lPVwiY29uZnB3XCIgcmVxdWlyZWQ+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICA8IS0tVmFsaWRhemlvbmUgQ3VzdG9tLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJDdXN0b21FcnJvclwiIGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgYXBwLW1hcmdpbi10b3AtMTUgYXBwLW1hcmdpbi1ib3R0b20tMCBjYXJkIGFwcC1wYWRkaW5nLTEwIGNhcmQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7J0Vycm9yJyB8IGxvY2FsaXplIDogbGN9fTombmJzcDs8L3N0cm9uZz57e0N1c3RvbUVycm9yfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIiAoY2xpY2spPVwiZGxnVXBkYXRlUGFzc3dvcmQuaGlkZSgpO1wiPnt7J0NhbmNlbCcgfCBsb2NhbGl6ZSA6IGxjfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5Db25mZXJtYTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG48L2VzLW1vZGFsPlxyXG5cclxuPCEtLVVwZGF0ZSBFeHRyYSBJbmZvLS0+XHJcbjxlcy1tb2RhbCAjZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncyBbU2l6ZV09XCInTCdcIj5cclxuICAgIDxlcy1tb2RhbC1oZWFkIChDbG9zZSk9XCJkbGdVcGRhdGVSZWNvdmVyeVNldHRpbmdzLmhpZGUoKTtcIj5cclxuICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj57eydNb2RpZmljYSBFbWFpbCcgfCBsb2NhbGl6ZSA6IGxjfX08L2g1PlxyXG4gICAgPC9lcy1tb2RhbC1oZWFkPlxyXG4gICAgPGZvcm0gKm5nSWY9XCJVcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPXCIgI2Zvcm1VcGRhdGVJbmZvcz1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJmb3JtVXBkYXRlSW5mb3MudmFsaWQgJiYgZG9VcGRhdGVSZWNvdmVyeVNldHRpbmdzKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBsYXN0Zml4XCI+XHJcbiAgICAgICAgICAgIDxmb3JtLWlucHV0IFtMYWJlbElucHV0UmF0aW9dPVwiJzMgOSdcIiBbTGFiZWxdPVwiJ0VtYWlsJyB8IGxvY2FsaXplOiBsY1wiIFsobmdNb2RlbCldPVwiVXBkYXRlUmVjb3ZlcnlTZXR0aW5nc0RUTy5lbWFpbFwiIG5hbWU9XCJlbWFpbFwiPjwvZm9ybS1pbnB1dD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiIChjbGljayk9XCJkbGdVcGRhdGVSZWNvdmVyeVNldHRpbmdzLmhpZGUoKTtcIj57eydDYW5jZWwnIHwgbG9jYWxpemUgOiBsY319PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+Q29uZmVybWE8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuPC9lcy1tb2RhbD5cclxuXHJcbjwhLS1VcGxvYWQgUGljdHVyZS0tPlxyXG48ZXMtbW9kYWwgI2RsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlIFtTaXplXT1cIidNJ1wiPlxyXG4gICAgPGVzLW1vZGFsLWhlYWQgKENsb3NlKT1cImRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlLmhpZGUoKTtcIj5cclxuICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj57eydDYXJpY2EgQXZhdGFyJyB8IGxvY2FsaXplIDogbGN9fTwvaDU+XHJcbiAgICA8L2VzLW1vZGFsLWhlYWQ+XHJcbiAgICA8Zm9ybSAqbmdJZj1cIlVwZGF0ZVByb2ZpbGVQaWN0dXJlRFRPXCIgI2Zvcm1VcGRhdGVQcm9maWxlUGljdHVyZT1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJmb3JtVXBkYXRlUHJvZmlsZVBpY3R1cmUgJiYgZG9VcGRhdGVQcm9maWxlUGljdHVyZSgpO1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGxhc3RmaXhcIj5cclxuICAgICAgICAgICAgPGZvcm0tZmlsZSBMYWJlbD1cIkZpbGVcIiBbRmFuY3lNb2RlXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cIlVwZGF0ZVByb2ZpbGVQaWN0dXJlRFRPLmltYWdlXCIgbmFtZT1cInVwX2ZpbGVcIj48L2Zvcm0tZmlsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogYXV0bztcIiAoY2xpY2spPVwib25EZWxldGVQcm9maWxlUGljdHVyZSgpO1wiPnt7J1JpbXVvdmknIHwgbG9jYWxpemUgOiBsY319PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiIChjbGljayk9XCJkbGdVcGRhdGVQcm9maWxlUGljdHVyZS5oaWRlKCk7XCI+e3snQ2FuY2VsJyB8IGxvY2FsaXplIDogbGN9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPnt7J1NhdmUnIHwgbG9jYWxpemUgOiBsY319PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbjwvZXMtbW9kYWw+XHJcblxyXG48IS0tUnVvbGkgZSBQZXJtZXNzaS0tPlxyXG48ZXMtbW9kYWwgI2RsZ1Nob3dBY2NvdW50Um9sZXMgW1NpemVdPVwiJ0wnXCI+XHJcbiAgICA8ZXMtbW9kYWwtaGVhZCAoQ2xvc2UpPVwiZGxnU2hvd0FjY291bnRSb2xlcy5oaWRlKCk7XCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3snUnVvbGkgZSBQZXJtZXNzaScgfCBsb2NhbGl6ZSA6IGxjfX08L2g1PlxyXG4gICAgPC9lcy1tb2RhbC1oZWFkPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDYwMHB4OyBvdmVyZmxvdy15OiBhdXRvO1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJBY2NvdW50Um9sZXNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidSdW9saSdcIiBEaXNwbGF5PVwiVmVydGljYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIEFjY291bnRSb2xlcztcIj57e3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbGVkLXNwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cIkFjY291bnRQZXJtaXNzaW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ1Blcm1lc3NpJ1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgQWNjb3VudFBlcm1pc3Npb25zO1wiPnt7cH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsZWQtc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImRsZ1Nob3dBY2NvdW50Um9sZXMuaGlkZSgpO1wiPnt7J0NoaXVkaScgfCBsb2NhbGl6ZSA6IGxjfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2VzLW1vZGFsPiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcl9pbmZvcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3VzZXJfaW5mb3MvdXNlcl9pbmZvcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3VzZXJfaW5mb3MvdXNlcl9pbmZvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBWSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBaUIsZ0JBQWdCLEVBQWtDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEYsU0FBUztBQUNULE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBVyx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUl0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQXVCeEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFLakQsWUFBb0IsR0FBYSxFQUFVLEdBQWlCLEVBQVMsT0FBdUIsRUFBUyxPQUFzQixFQUN4RyxPQUF1QixFQUFTLEVBQXVCLEVBQVMsTUFBZ0IsRUFDaEYsT0FBK0I7UUFDOUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBSEssUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDeEcsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEYsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUEyQjNDLDRCQUF1QixHQUF1QixJQUFJLENBQUM7UUFtQ25ELDhCQUF5QixHQUFzQixJQUFJLENBQUM7UUFxQnBELHNCQUFpQixHQUFzQixJQUFJLENBQUM7SUFqRm5ELENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUIsMkRBQTJEO1FBQzNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDakUsQ0FBQztJQUtELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBUU0sc0JBQXNCO1FBQ3pCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDcEMscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQjtRQUMvQixJQUFJLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1lBQ3ZHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxZQUFZO0lBRVosZ0NBQWdDO0lBQ3pCLHNCQUFzQjtRQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLHVCQUF1QixFQUFFLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtZQUNySCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCO1FBQy9CLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLHVDQUF1QyxFQUFFLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtZQUN0SSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBT00sd0JBQXdCO1FBQzNCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDdEMscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsd0JBQXdCO1FBQ2pDLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsZ0NBQWdDLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1lBQ3ZHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFRTSxnQkFBZ0I7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVU7WUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxzQ0FBc0MsQ0FBQzthQUN6RDtZQUNELElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9JLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLGtDQUFrQyxFQUFFLHNDQUFzQyxFQUNqSCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzNDLENBQUM7U0FDTDtJQUNMLENBQUM7OytHQS9HUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwrb0JDN0MvQixzNE5BK0dXLHMzQkRoRkgsV0FBVyxvL0JBQ1gseUJBQXlCLGdMQUN6QixJQUFJLDZGQUNKLEtBQUssa0hBQ0wsa0JBQWtCLDBGQUNsQixnQkFBZ0Isa0pBQ2hCLG9CQUFvQiw4RUFDcEIsdUJBQXVCLDBGQUN2QixvQkFBb0IsK0ZBQ3BCLGdCQUFnQiw4QkFDaEIsbUJBQW1CLHNJQUNuQixnQkFBZ0Isb0hBZEwsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQzsyRkFpQnhFLGtCQUFrQjtrQkFyQjlCLFNBQVM7K0JBQ0ksWUFBWSxpQkFHUCxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLGNBQ3JFLElBQUksV0FDUDt3QkFDTCxXQUFXO3dCQUNYLHlCQUF5Qjt3QkFDekIsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3FCQUNuQjs4U0EwQmlDLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBUU0sdUJBQXVCO3NCQUE1RCxTQUFTO3VCQUFDLHlCQUF5QjtnQkFDVCxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBbUNlLHlCQUF5QjtzQkFBaEUsU0FBUzt1QkFBQywyQkFBMkI7Z0JBcUJOLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSwgRXh0ZW5zaW9uc01vZHVsZSwgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSwgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gQ2xhc3NpXHJcbmltcG9ydCB7IFVwZGF0ZVBhc3N3b3JkRHRvLCBVc2VyQWNjb3VudCB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwRmlsZSwgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZm9ybXMtYW5kLXZhbGlkYXRpb25zXCI7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFzZS9iYXNlLmNvbXBvbmVudFwiXHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgQXBwU3RhdGUsIFRva2VuU2VydmljZSwgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBVc2VySW5mb0NvbXBvbmVudExvYyB9IGZyb20gXCIuL3VzZXJfaW5mb3MuY29tcG9uZW50LmxvY1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9hY2Nlc3MtY29udHJvbFwiO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHsgRXNNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuLi9lcy1tb2RhbC9lcy1tb2RhbC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNNb2RhbEhlYWRDb21wb25lbnQgfSBmcm9tIFwiLi4vZXMtbW9kYWwvZXMtbW9kYWwtaGVhZC9lcy1tb2RhbC1oZWFkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBMYWJlbGVkU3BhbkNvbXBvbmVudCB9IGZyb20gXCIuLi9sYWJlbGVkLXNwYW4vbGFiZWxlZC1zcGFuLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFc0ltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gXCIuLi9wdWJsaWMtYXBpXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInVzZXItaW5mb3NcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcInVzZXJfaW5mb3MuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi91c2VyX2luZm9zLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IFVzZXJJbmZvQ29tcG9uZW50TG9jIH1dLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBGb3Jtc01vZHVsZSwgXHJcbiAgICAgICAgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSwgXHJcbiAgICAgICAgTmdJZixcclxuICAgICAgICBOZ0ZvcixcclxuICAgICAgICBMb2NhbGl6YXRpb25Nb2R1bGUsIFxyXG4gICAgICAgIEVzTW9kYWxDb21wb25lbnQsIFxyXG4gICAgICAgIEVzTW9kYWxIZWFkQ29tcG9uZW50LFxyXG4gICAgICAgIEVzSW1hZ2VDcm9wcGVyQ29tcG9uZW50LCBcclxuICAgICAgICBMYWJlbGVkU3BhbkNvbXBvbmVudCxcclxuICAgICAgICBFeHRlbnNpb25zTW9kdWxlLFxyXG4gICAgICAgIEFjY2Vzc0NvbnRyb2xNb2R1bGUsXHJcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckluZm9zQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgQWNjb3VudERldGFpbHM6IFVzZXJBY2NvdW50O1xyXG4gICAgcHVibGljIEFjY291bnRSb2xlczogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgQWNjb3VudFBlcm1pc3Npb25zOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluajogSW5qZWN0b3IsIHByaXZhdGUgdGtzOiBUb2tlblNlcnZpY2UsIHB1YmxpYyBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGV4cEV4dHM6IEV4cG9ydFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgdXRpRXh0czogVXRpbGl0eVNlcnZpY2UsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHVibGljIF9zdGF0ZTogQXBwU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgcHJvZmlsZTogVXNlclByZWZlcmVuY2VzU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGluaik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5nZXRBY2NvdW50RGV0YWlscygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBnZXRBY2NvdW50RGV0YWlscygpIHtcclxuICAgICAgICAvLyBSZWN1cGVybyBsZSBpbmZvcm1hemlvbmkgQWNjb3VudCBwYXJ0ZW5kbyBkYWxsYSBpZGVudGl0eVxyXG4gICAgICAgIGxldCBpZGVudGl0eSA9IHRoaXMudGtzLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIHRoaXMuQWNjb3VudFJvbGVzID0gaWRlbnRpdHkuUm9sZXM7XHJcbiAgICAgICAgdGhpcy5BY2NvdW50UGVybWlzc2lvbnMgPSBpZGVudGl0eS5QZXJtaXNzaW9ucztcclxuICAgICAgICB0aGlzLkFjY291bnREZXRhaWxzID0gYXdhaXQgdGhpcy5wcm9maWxlLmdldEFjY291bnRQcm9maWxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8jcmVnaW9uIFNob3cgUm9sZXMgYW5kIFBlcm1pc3Npb25zXHJcbiAgICBAVmlld0NoaWxkKFwiZGxnU2hvd0FjY291bnRSb2xlc1wiKSBkbGdTaG93QWNjb3VudFJvbGVzOiBFc01vZGFsQ29tcG9uZW50O1xyXG5cclxuICAgIG9uU2hvd0FjY291bnRSb2xlcygpIHtcclxuICAgICAgICB0aGlzLmRsZ1Nob3dBY2NvdW50Um9sZXMuc2hvdygpO1xyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIFVwZGF0ZSBQcm9maWxlIFBpY3R1cmVcclxuICAgIEBWaWV3Q2hpbGQoXCJkbGdVcGRhdGVQcm9maWxlUGljdHVyZVwiKSBkbGdVcGRhdGVQcm9maWxlUGljdHVyZTogRXNNb2RhbENvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlQ3JvcHBlcicpIGltYWdlQ3JvcHBlcjogRXNJbWFnZUNyb3BwZXJDb21wb25lbnQ7XHJcbiAgICBwdWJsaWMgVXBkYXRlUHJvZmlsZVBpY3R1cmVEVE86IHsgaW1hZ2U6IEFwcEZpbGUgfSA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uVXBkYXRlUHJvZmlsZVBpY3R1cmUoKSB7XHJcbiAgICAgICAgdGhpcy5VcGRhdGVQcm9maWxlUGljdHVyZURUTyA9IG51bGw7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5VcGRhdGVQcm9maWxlUGljdHVyZURUTyA9IHsgaW1hZ2U6IG51bGwgfTtcclxuICAgICAgICAgICAgdGhpcy5kbGdVcGRhdGVQcm9maWxlUGljdHVyZS5zaG93KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvVXBkYXRlUHJvZmlsZVBpY3R1cmUoKSB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb1VwZGF0ZVByb2ZpbGVQaWN0dXJlKG5ldyBGaWxlKFt0aGlzLmltYWdlQ3JvcHBlci5PdXRwdXRJbWFnZV0sIFwicHJvZmlsZS5wbmdcIikpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5tYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzLCBcIk1vZGlmaWNhIGVzZWd1aXRhIGNvbiBTdWNjZXNzb1wiLCBcIkVycm9yaSBuZWxsYSBtb2RpZmljYVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmUuaGlkZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIERlbGV0ZSBQcm9maWxlIFBpY3R1cmVcclxuICAgIHB1YmxpYyBvbkRlbGV0ZVByb2ZpbGVQaWN0dXJlKCkge1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShcIkNvbmZlcm1hIGVsaW1pbmF6aW9uZVwiLCBcIlNpIGUnIGNlcnRpIGRpIHZvbGVyIHJpbXVvdmVyZSBsJ2ltbWFnaW5lIHByb2ZpbG8/XCIsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb0RlbGV0ZVByb2ZpbGVQaWN0dXJlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvRGVsZXRlUHJvZmlsZVBpY3R1cmUoKSB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb0RlbGV0ZVByb2ZpbGVQaWN0dXJlKCk7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLm1hbmFnZUNhbGxSZXN1bHRSZXNwb25zZShyZXMsIFwiSW1tYWdpbmUgcHJvZmlsbyByaW1vc3NhIGNvbiBzdWNjZXNzb1wiLCBcIkVycm9yaSBuZWxsYSByaW1vemlvbmUgZGVsbGEgaW1tYWdpbmUgcHJvZmlsb1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmUuaGlkZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIFVwZGF0ZSBSZWNvdmVyeSBJbmZvXHJcbiAgICBAVmlld0NoaWxkKFwiZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5nc1wiKSBkbGdVcGRhdGVSZWNvdmVyeVNldHRpbmdzOiBFc01vZGFsQ29tcG9uZW50O1xyXG4gICAgcHVibGljIFVwZGF0ZVJlY292ZXJ5U2V0dGluZ3NEVE86IHsgZW1haWw6IHN0cmluZyB9ID0gbnVsbDtcclxuXHJcbiAgICBwdWJsaWMgb25VcGRhdGVSZWNvdmVyeVNldHRpbmdzKCkge1xyXG4gICAgICAgIHRoaXMuVXBkYXRlUmVjb3ZlcnlTZXR0aW5nc0RUTyA9IG51bGw7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5VcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPID0geyBlbWFpbDogdGhpcy5BY2NvdW50RGV0YWlscy5yZWNvdmVyeWVtYWlsIH07XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncy5zaG93KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncygpIHtcclxuICAgICAgICBsZXQgcmVzID0gYXdhaXQgdGhpcy5wcm9maWxlLmRvVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncyh0aGlzLlVwZGF0ZVJlY292ZXJ5U2V0dGluZ3NEVE8uZW1haWwpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5tYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzLCBcIk1vZGlmaWNhIGVzZWd1aXRhIGNvbiBTdWNjZXNzb1wiLCBcIkVycm9yaSBuZWxsYSBtb2RpZmljYVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWNjb3VudERldGFpbHMoKTtcclxuICAgICAgICAgICAgdGhpcy5kbGdVcGRhdGVSZWNvdmVyeVNldHRpbmdzLmhpZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBVcGRhdGUgUGFzc3dvcmRcclxuICAgIEBWaWV3Q2hpbGQoXCJkbGdVcGRhdGVQYXNzd29yZFwiKSBkbGdVcGRhdGVQYXNzd29yZDogRXNNb2RhbENvbXBvbmVudDtcclxuICAgIHB1YmxpYyBVcGRhdGVQYXNzd29yZERUTzogVXBkYXRlUGFzc3dvcmREdG8gPSBudWxsO1xyXG4gICAgQ3VzdG9tRXJyb3I6IHN0cmluZztcclxuXHJcbiAgICBwdWJsaWMgb25VcGRhdGVQYXNzd29yZCgpIHtcclxuICAgICAgICB0aGlzLlVwZGF0ZVBhc3N3b3JkRFRPID0gbnVsbDtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLkN1c3RvbUVycm9yID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5VcGRhdGVQYXNzd29yZERUTyA9IG5ldyBVcGRhdGVQYXNzd29yZER0bygpO1xyXG4gICAgICAgICAgICB0aGlzLmRsZ1VwZGF0ZVBhc3N3b3JkLnNob3coKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZG9VcGRhdGVQYXNzd29yZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5VcGRhdGVQYXNzd29yZERUTy5uZXdwd2QgIT0gdGhpcy5VcGRhdGVQYXNzd29yZERUTy5jb25maXJtcHdkKVxyXG4gICAgICAgICAgICB0aGlzLkN1c3RvbUVycm9yID0gXCJMZSBwYXNzd29yZCBpbnNlcml0ZSBub24gY29pbmNpZG9uby5cIjtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb1VwZGF0ZVBhc3N3b3JkKHRoaXMuVXBkYXRlUGFzc3dvcmREVE8ub2xkcHdkLCB0aGlzLlVwZGF0ZVBhc3N3b3JkRFRPLm5ld3B3ZCwgdGhpcy5VcGRhdGVQYXNzd29yZERUTy5jb25maXJtcHdkKTtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLm1hbmFnZUNhbGxSZXN1bHRSZXNwb25zZShyZXMsIFwiUGFzc3dvcmQgbW9kaWZpY2F0YSBjb24gU3VjY2Vzc29cIiwgXCJFcnJvcmkgbmVsbGEgbW9kaWZpY2EgZGVsbGEgUGFzc3dvcmRcIixcclxuICAgICAgICAgICAgICAgICgpID0+IHsgdGhpcy5kbGdVcGRhdGVQYXNzd29yZC5oaWRlKCk7IH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxufSIsIjxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgPGRpdiBzdHlsZT1cIm1hcmdpbjogYXV0bztcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1pbWctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9maWxlLlByb2ZpbGVQaWN0dXJlXCIgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cInVzZXItaW1nXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1wb2ludGVyIHVzZXItaW1nLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1vcGFjaXR5IHVzZXItaW1nLWJ0bi1ib2R5XCIgKGNsaWNrKT1cIm9uVXBkYXRlUHJvZmlsZVBpY3R1cmUoKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1wZW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1tYXJnaW4tdG9wLTE1XCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgKm5nSWY9XCJBY2NvdW50RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvZHkgYXBwLW5vLW1hcmdpbiBhcHAtcGFkZGluZy0xNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKmFjPVwiJ1I6SmFjZSBBZG1pbidcIiBjbGFzcz1cInVzZXItcm9sZXMtYnRuXCIgW21hdFRvb2x0aXBdPVwiJ1Zpc3VhbGl6emEgUnVvbGkgZSBQZXJtZXNzaSdcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIChjbGljayk9XCJvblNob3dBY2NvdW50Um9sZXMoKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtYm9vay11c2VyXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPjxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidVdGVudGUnIHwgbG9jYWxpemUgOiBsY1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPnt7QWNjb3VudERldGFpbHMudXNlcm5hbWV9fTwvbGFiZWxlZC1zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPjxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidUZW5hbnQnIHwgbG9jYWxpemUgOiBsY1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPnt7QWNjb3VudERldGFpbHMudGVuYW50aWR9fTwvbGFiZWxlZC1zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBhcHAtbWFyZ2luLXRvcC0xMFwiPjxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidOb21lJyB8IGxvY2FsaXplIDogbGNcIiBEaXNwbGF5PVwiVmVydGljYWxcIj57e0FjY291bnREZXRhaWxzLmZpcnN0bmFtZX19PC9sYWJlbGVkLXNwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGFwcC1tYXJnaW4tdG9wLTEwXCI+PGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ0NvZ25vbWUnIHwgbG9jYWxpemUgOiBsY1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPnt7QWNjb3VudERldGFpbHMubGFzdG5hbWV9fTwvbGFiZWxlZC1zcGFuPiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGFwcC1tYXJnaW4tdG9wLTEwXCI+PGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ0VtYWlsJyB8IGxvY2FsaXplIDogbGNcIiBEaXNwbGF5PVwiVmVydGljYWxcIj57e0FjY291bnREZXRhaWxzLnJlY292ZXJ5ZW1haWwgfHwgJ05vbiBkaXNwb25pYmlsZSd9fTwvbGFiZWxlZC1zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbWFyZ2luLXRvcC0xMCByb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uVXBkYXRlUGFzc3dvcmQoKVwiPk1vZGlmaWNhIFBhc3N3b3JkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvblVwZGF0ZVJlY292ZXJ5U2V0dGluZ3MoKVwiPk1vZGlmaWNhIEVtYWlsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLVVwZGF0ZSBQYXNzd29yZC0tPlxyXG48ZXMtbW9kYWwgI2RsZ1VwZGF0ZVBhc3N3b3JkIFtTaXplXT1cIidMJ1wiPlxyXG4gICAgPGVzLW1vZGFsLWhlYWQgKENsb3NlKT1cImRsZ1VwZGF0ZVBhc3N3b3JkLmhpZGUoKTtcIj5cclxuICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj5Nb2RpZmljYSBQYXNzd29yZDwvaDU+XHJcbiAgICA8L2VzLW1vZGFsLWhlYWQ+XHJcbiAgICA8Zm9ybSAqbmdJZj1cIlVwZGF0ZVBhc3N3b3JkRFRPXCIgI2Zvcm1VcGRhdGVQYXNzd29yZD1cIm5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJmb3JtVXBkYXRlUGFzc3dvcmQudmFsaWQgJiYgZG9VcGRhdGVQYXNzd29yZCgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbGFzdGZpeFwiPlxyXG4gICAgICAgICAgICA8Zm9ybS1pbnB1dCBbUGFzc3dvcmRdPVwidHJ1ZVwiIFtMYWJlbF09XCInUGFzc3dvcmQnIHwgbG9jYWxpemU6IGxjXCIgWyhuZ01vZGVsKV09XCJVcGRhdGVQYXNzd29yZERUTy5vbGRwd2RcIiBuYW1lPVwib2xkcHdcIiByZXF1aXJlZD48L2Zvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgIDxmb3JtLWlucHV0IFtQYXNzd29yZF09XCJ0cnVlXCIgW0xhYmVsXT1cIidOdW92YSBQYXNzd29yZCcgfCBsb2NhbGl6ZTogbGNcIiBbKG5nTW9kZWwpXT1cIlVwZGF0ZVBhc3N3b3JkRFRPLm5ld3B3ZFwiIG5hbWU9XCJuZXdwd1wiIHJlcXVpcmVkPjwvZm9ybS1pbnB1dD5cclxuICAgICAgICAgICAgPGZvcm0taW5wdXQgW1Bhc3N3b3JkXT1cInRydWVcIiBbTGFiZWxdPVwiJ0NvbmZlcm1hIFBhc3N3b3JkJyB8IGxvY2FsaXplOiBsY1wiIFsobmdNb2RlbCldPVwiVXBkYXRlUGFzc3dvcmREVE8uY29uZmlybXB3ZFwiIG5hbWU9XCJjb25mcHdcIiByZXF1aXJlZD48L2Zvcm0taW5wdXQ+XHJcbiAgICAgICAgICAgIDwhLS1WYWxpZGF6aW9uZSBDdXN0b20tLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIkN1c3RvbUVycm9yXCIgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBhcHAtbWFyZ2luLXRvcC0xNSBhcHAtbWFyZ2luLWJvdHRvbS0wIGNhcmQgYXBwLXBhZGRpbmctMTAgY2FyZC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3snRXJyb3InIHwgbG9jYWxpemUgOiBsY319OiZuYnNwOzwvc3Ryb25nPnt7Q3VzdG9tRXJyb3J9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xMFwiIChjbGljayk9XCJkbGdVcGRhdGVQYXNzd29yZC5oaWRlKCk7XCI+e3snQ2FuY2VsJyB8IGxvY2FsaXplIDogbGN9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPkNvbmZlcm1hPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbjwvZXMtbW9kYWw+XHJcblxyXG48IS0tVXBkYXRlIEV4dHJhIEluZm8tLT5cclxuPGVzLW1vZGFsICNkbGdVcGRhdGVSZWNvdmVyeVNldHRpbmdzIFtTaXplXT1cIidMJ1wiPlxyXG4gICAgPGVzLW1vZGFsLWhlYWQgKENsb3NlKT1cImRsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3MuaGlkZSgpO1wiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPnt7J01vZGlmaWNhIEVtYWlsJyB8IGxvY2FsaXplIDogbGN9fTwvaDU+XHJcbiAgICA8L2VzLW1vZGFsLWhlYWQ+XHJcbiAgICA8Zm9ybSAqbmdJZj1cIlVwZGF0ZVJlY292ZXJ5U2V0dGluZ3NEVE9cIiAjZm9ybVVwZGF0ZUluZm9zPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cImZvcm1VcGRhdGVJbmZvcy52YWxpZCAmJiBkb1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3MoKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGxhc3RmaXhcIj5cclxuICAgICAgICAgICAgPGZvcm0taW5wdXQgW0xhYmVsSW5wdXRSYXRpb109XCInMyA5J1wiIFtMYWJlbF09XCInRW1haWwnIHwgbG9jYWxpemU6IGxjXCIgWyhuZ01vZGVsKV09XCJVcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPLmVtYWlsXCIgbmFtZT1cImVtYWlsXCI+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgKGNsaWNrKT1cImRsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3MuaGlkZSgpO1wiPnt7J0NhbmNlbCcgfCBsb2NhbGl6ZSA6IGxjfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5Db25mZXJtYTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG48L2VzLW1vZGFsPlxyXG5cclxuPCEtLVVwbG9hZCBQaWN0dXJlLS0+XHJcbjxlcy1tb2RhbCAjZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmUgW1NpemVdPVwiJ1hMJ1wiPlxyXG4gICAgPGVzLW1vZGFsLWhlYWQgKENsb3NlKT1cImRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlLmhpZGUoKTtcIj5cclxuICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj5DYXJpY2EgaW1tYWdpbmU8L2g1PlxyXG4gICAgPC9lcy1tb2RhbC1oZWFkPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4XCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbjogYXV0bztcIj5cclxuICAgICAgICAgICAgPGVzLWltYWdlLWNyb3BwZXIgI2ltYWdlQ3JvcHBlciBbSGVpZ2h0XT1cIjYwMFwiIFtXaWR0aF09XCI4MDBcIj48L2VzLWltYWdlLWNyb3BwZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlLmhpZGUoKVwiPkFubnVsbGE8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJkb1VwZGF0ZVByb2ZpbGVQaWN0dXJlKClcIj5Db25mZXJtYTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZXMtbW9kYWw+XHJcblxyXG48IS0tUnVvbGkgZSBQZXJtZXNzaS0tPlxyXG48ZXMtbW9kYWwgI2RsZ1Nob3dBY2NvdW50Um9sZXMgW1NpemVdPVwiJ0wnXCI+XHJcbiAgICA8ZXMtbW9kYWwtaGVhZCAoQ2xvc2UpPVwiZGxnU2hvd0FjY291bnRSb2xlcy5oaWRlKCk7XCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3snUnVvbGkgZSBQZXJtZXNzaScgfCBsb2NhbGl6ZSA6IGxjfX08L2g1PlxyXG4gICAgPC9lcy1tb2RhbC1oZWFkPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDYwMHB4OyBvdmVyZmxvdy15OiBhdXRvO1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJBY2NvdW50Um9sZXNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidSdW9saSdcIiBEaXNwbGF5PVwiVmVydGljYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIEFjY291bnRSb2xlcztcIj57e3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbGVkLXNwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cIkFjY291bnRQZXJtaXNzaW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ1Blcm1lc3NpJ1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgQWNjb3VudFBlcm1pc3Npb25zO1wiPnt7cH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsZWQtc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImRsZ1Nob3dBY2NvdW50Um9sZXMuaGlkZSgpO1wiPnt7J0NoaXVkaScgfCBsb2NhbGl6ZSA6IGxjfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2VzLW1vZGFsPiJdfQ==