@alfresco/adf-core 8.1.0-15902121227 → 8.1.0-15928551305

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +5 -6
  2. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +4 -5
  3. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +4 -5
  4. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +5 -6
  5. package/esm2022/lib/about/about-module-list/module-list.component.mjs +5 -6
  6. package/esm2022/lib/about/about-package/package-list.component.mjs +5 -6
  7. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +4 -5
  8. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +5 -6
  9. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +5 -6
  10. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +8 -9
  11. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +4 -5
  12. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +9 -10
  13. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +9 -10
  14. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +4 -5
  15. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +10 -11
  16. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +6 -7
  17. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +10 -11
  18. package/esm2022/lib/clipboard/clipboard.directive.mjs +4 -5
  19. package/esm2022/lib/clipboard/clipboard.module.mjs +2 -2
  20. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +4 -5
  21. package/esm2022/lib/comments/comments.component.mjs +8 -9
  22. package/esm2022/lib/context-menu/context-menu-list.component.mjs +6 -7
  23. package/esm2022/lib/core.module.mjs +3 -3
  24. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +9 -10
  25. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +7 -8
  26. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +6 -7
  27. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +9 -8
  28. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +6 -10
  29. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +8 -9
  30. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +6 -7
  31. package/esm2022/lib/form/components/form-renderer.component.mjs +4 -5
  32. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +4 -5
  33. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +4 -5
  34. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +4 -5
  35. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +7 -8
  36. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +8 -9
  37. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +7 -8
  38. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +4 -5
  39. package/esm2022/lib/form/components/widgets/error/error.component.mjs +4 -5
  40. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +5 -6
  41. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +4 -6
  42. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +5 -6
  43. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +7 -8
  44. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +7 -8
  45. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +7 -8
  46. package/esm2022/lib/form/form-base.module.mjs +2 -2
  47. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +4 -5
  48. package/esm2022/lib/info-drawer/info-drawer.component.mjs +6 -7
  49. package/esm2022/lib/language-menu/language-picker.component.mjs +5 -6
  50. package/esm2022/lib/layout/components/header/header.component.mjs +4 -5
  51. package/esm2022/lib/login/components/login/login.component.mjs +10 -11
  52. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +5 -6
  53. package/esm2022/lib/notifications/components/notification-history.component.mjs +7 -8
  54. package/esm2022/lib/notifications/services/notification.service.mjs +1 -1
  55. package/esm2022/lib/pagination/infinite-pagination.component.mjs +4 -5
  56. package/esm2022/lib/pagination/pagination.component.mjs +4 -4
  57. package/esm2022/lib/search-text/search-text-input.component.mjs +7 -18
  58. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +9 -8
  59. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +5 -10
  60. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +9 -10
  61. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +4 -5
  62. package/esm2022/lib/templates/error-content/error-content.component.mjs +4 -5
  63. package/esm2022/lib/toolbar/toolbar.component.mjs +4 -5
  64. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +5 -6
  65. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +6 -7
  66. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +5 -6
  67. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +5 -6
  68. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +4 -5
  69. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +4 -5
  70. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +5 -6
  71. package/esm2022/lib/viewer/components/viewer.component.mjs +6 -7
  72. package/esm2022/lib/viewer/viewer.module.mjs +1 -3
  73. package/fesm2022/adf-core.mjs +272 -283
  74. package/fesm2022/adf-core.mjs.map +1 -1
  75. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +4 -5
  76. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  77. package/fesm2022/alfresco-adf-core-feature-flags.mjs +3 -4
  78. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  79. package/lib/dialogs/edit-json/edit-json.dialog.d.ts +1 -1
  80. package/lib/dialogs/edit-json/edit-json.dialog.module.d.ts +1 -6
  81. package/lib/form/components/widgets/hyperlink/hyperlink.widget.d.ts +16 -0
  82. package/lib/notifications/services/notification.service.d.ts +1 -1
  83. package/lib/snackbar-content/snackbar-content.component.d.ts +1 -1
  84. package/lib/snackbar-content/snackbar-content.module.d.ts +2 -6
  85. package/package.json +4 -4
@@ -21,7 +21,7 @@ import { MatToolbarModule } from '@angular/material/toolbar';
21
21
  import { MatButtonModule } from '@angular/material/button';
22
22
  import { MatIconModule } from '@angular/material/icon';
23
23
  import { RouterModule } from '@angular/router';
24
- import { TranslateModule } from '@ngx-translate/core';
24
+ import { TranslatePipe } from '@ngx-translate/core';
25
25
  import * as i0 from "@angular/core";
26
26
  import * as i1 from "../../../app-config/app-config.service";
27
27
  import * as i2 from "@angular/common";
@@ -29,7 +29,6 @@ import * as i3 from "@angular/material/toolbar";
29
29
  import * as i4 from "@angular/material/button";
30
30
  import * as i5 from "@angular/material/icon";
31
31
  import * as i6 from "@angular/router";
32
- import * as i7 from "@ngx-translate/core";
33
32
  export class HeaderLayoutComponent {
34
33
  constructor(appConfigService) {
35
34
  this.appConfigService = appConfigService;
@@ -67,11 +66,11 @@ export class HeaderLayoutComponent {
67
66
  }
68
67
  }
69
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderLayoutComponent, deps: [{ token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeaderLayoutComponent, isStandalone: true, selector: "adf-layout-header", inputs: { title: "title", logo: "logo", showLogo: "showLogo", redirectUrl: "redirectUrl", tooltip: "tooltip", color: "color", backgroundImage: "backgroundImage", showSidenavToggle: "showSidenavToggle", toggleIcon: "toggleIcon", expandedSidenav: "expandedSidenav", position: "position" }, outputs: { clicked: "clicked" }, host: { classAttribute: "adf-layout-header" }, ngImport: i0, template: "<mat-toolbar\n class=\"adf-toolbar-container-row\"\n [color]=\"color\"\n [style.background-color]=\"color\"\n [style.background-image]=\"backgroundImage ? 'url(' + backgroundImage + ')' : 'none'\">\n <button\n *ngIf=\"showSidenavToggle && position === 'start'\"\n id=\"adf-sidebar-toggle-start\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n\n <a *ngIf=\"showLogo\" [routerLink]=\"redirectUrl\" title=\"{{ tooltip }}\">\n <img\n src=\"{{ logo }}\"\n class=\"adf-app-logo\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\"\n />\n </a>\n\n <h1\n role=\"link\"\n [attr.aria-label]=\"title | translate\"\n [routerLink]=\"redirectUrl\"\n class=\"adf-app-title\"\n >\n {{ title }}\n </h1>\n\n <ng-content />\n\n <button\n *ngIf=\"showSidenavToggle && position === 'end'\"\n id=\"adf-sidebar-toggle-end\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n</mat-toolbar>\n", styles: ["adf-layout-header .adf-toolbar-container-row{color:var(--theme-header-text-color);position:relative;padding:0 24px}adf-layout-header .adf-toolbar-container-row .adf-menu-icon{position:relative;margin-right:0}adf-layout-header .adf-toolbar-container-row .adf-menu-icon .adf-menu-icon-header{font-size:29px;padding:0 5px 0 0}adf-layout-header .adf-toolbar-container-row .adf-app-logo{position:relative;height:28px;vertical-align:middle;margin-top:-3px}adf-layout-header .adf-toolbar-container-row .adf-app-title{cursor:pointer;letter-spacing:-.3px;font-weight:100}adf-layout-header .adf-toolbar-container-row .adf-toolbar--spacer{flex:1 1 auto}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider{margin:0 5px}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider>div{background-color:var(--adf-theme-background-card-color)}adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{height:24px;width:2px;background-color:var(--theme-primary-color-default-contrast)}adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{flex-direction:row;padding:0}@media (max-width: 599.9px){adf-layout-header .adf-toolbar-container-row .adf-app-logo,adf-layout-header .adf-toolbar-container-row .adf-app-title{display:none}}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button{color:inherit;border-radius:50%}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:hover{color:inherit}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:active{color:inherit}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-right:-11px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-left:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-left:-11px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-right:16px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-right:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeaderLayoutComponent, isStandalone: true, selector: "adf-layout-header", inputs: { title: "title", logo: "logo", showLogo: "showLogo", redirectUrl: "redirectUrl", tooltip: "tooltip", color: "color", backgroundImage: "backgroundImage", showSidenavToggle: "showSidenavToggle", toggleIcon: "toggleIcon", expandedSidenav: "expandedSidenav", position: "position" }, outputs: { clicked: "clicked" }, host: { classAttribute: "adf-layout-header" }, ngImport: i0, template: "<mat-toolbar\n class=\"adf-toolbar-container-row\"\n [color]=\"color\"\n [style.background-color]=\"color\"\n [style.background-image]=\"backgroundImage ? 'url(' + backgroundImage + ')' : 'none'\">\n <button\n *ngIf=\"showSidenavToggle && position === 'start'\"\n id=\"adf-sidebar-toggle-start\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n\n <a *ngIf=\"showLogo\" [routerLink]=\"redirectUrl\" title=\"{{ tooltip }}\">\n <img\n src=\"{{ logo }}\"\n class=\"adf-app-logo\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\"\n />\n </a>\n\n <h1\n role=\"link\"\n [attr.aria-label]=\"title | translate\"\n [routerLink]=\"redirectUrl\"\n class=\"adf-app-title\"\n >\n {{ title }}\n </h1>\n\n <ng-content />\n\n <button\n *ngIf=\"showSidenavToggle && position === 'end'\"\n id=\"adf-sidebar-toggle-end\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n</mat-toolbar>\n", styles: ["adf-layout-header .adf-toolbar-container-row{color:var(--theme-header-text-color);position:relative;padding:0 24px}adf-layout-header .adf-toolbar-container-row .adf-menu-icon{position:relative;margin-right:0}adf-layout-header .adf-toolbar-container-row .adf-menu-icon .adf-menu-icon-header{font-size:29px;padding:0 5px 0 0}adf-layout-header .adf-toolbar-container-row .adf-app-logo{position:relative;height:28px;vertical-align:middle;margin-top:-3px}adf-layout-header .adf-toolbar-container-row .adf-app-title{cursor:pointer;letter-spacing:-.3px;font-weight:100}adf-layout-header .adf-toolbar-container-row .adf-toolbar--spacer{flex:1 1 auto}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider{margin:0 5px}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider>div{background-color:var(--adf-theme-background-card-color)}adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{height:24px;width:2px;background-color:var(--theme-primary-color-default-contrast)}adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{flex-direction:row;padding:0}@media (max-width: 599.9px){adf-layout-header .adf-toolbar-container-row .adf-app-logo,adf-layout-header .adf-toolbar-container-row .adf-app-title{display:none}}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button{color:inherit;border-radius:50%}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:hover{color:inherit}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:active{color:inherit}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-right:-11px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-left:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-left:-11px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-right:16px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-right:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
71
70
  }
72
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderLayoutComponent, decorators: [{
73
72
  type: Component,
74
- args: [{ selector: 'adf-layout-header', standalone: true, imports: [CommonModule, MatToolbarModule, MatButtonModule, MatIconModule, RouterModule, TranslateModule], encapsulation: ViewEncapsulation.None, host: { class: 'adf-layout-header' }, template: "<mat-toolbar\n class=\"adf-toolbar-container-row\"\n [color]=\"color\"\n [style.background-color]=\"color\"\n [style.background-image]=\"backgroundImage ? 'url(' + backgroundImage + ')' : 'none'\">\n <button\n *ngIf=\"showSidenavToggle && position === 'start'\"\n id=\"adf-sidebar-toggle-start\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n\n <a *ngIf=\"showLogo\" [routerLink]=\"redirectUrl\" title=\"{{ tooltip }}\">\n <img\n src=\"{{ logo }}\"\n class=\"adf-app-logo\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\"\n />\n </a>\n\n <h1\n role=\"link\"\n [attr.aria-label]=\"title | translate\"\n [routerLink]=\"redirectUrl\"\n class=\"adf-app-title\"\n >\n {{ title }}\n </h1>\n\n <ng-content />\n\n <button\n *ngIf=\"showSidenavToggle && position === 'end'\"\n id=\"adf-sidebar-toggle-end\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n</mat-toolbar>\n", styles: ["adf-layout-header .adf-toolbar-container-row{color:var(--theme-header-text-color);position:relative;padding:0 24px}adf-layout-header .adf-toolbar-container-row .adf-menu-icon{position:relative;margin-right:0}adf-layout-header .adf-toolbar-container-row .adf-menu-icon .adf-menu-icon-header{font-size:29px;padding:0 5px 0 0}adf-layout-header .adf-toolbar-container-row .adf-app-logo{position:relative;height:28px;vertical-align:middle;margin-top:-3px}adf-layout-header .adf-toolbar-container-row .adf-app-title{cursor:pointer;letter-spacing:-.3px;font-weight:100}adf-layout-header .adf-toolbar-container-row .adf-toolbar--spacer{flex:1 1 auto}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider{margin:0 5px}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider>div{background-color:var(--adf-theme-background-card-color)}adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{height:24px;width:2px;background-color:var(--theme-primary-color-default-contrast)}adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{flex-direction:row;padding:0}@media (max-width: 599.9px){adf-layout-header .adf-toolbar-container-row .adf-app-logo,adf-layout-header .adf-toolbar-container-row .adf-app-title{display:none}}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button{color:inherit;border-radius:50%}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:hover{color:inherit}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:active{color:inherit}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-right:-11px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-left:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-left:-11px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-right:16px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-right:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-right:8px}\n"] }]
73
+ args: [{ selector: 'adf-layout-header', standalone: true, imports: [CommonModule, MatToolbarModule, MatButtonModule, MatIconModule, RouterModule, TranslatePipe], encapsulation: ViewEncapsulation.None, host: { class: 'adf-layout-header' }, template: "<mat-toolbar\n class=\"adf-toolbar-container-row\"\n [color]=\"color\"\n [style.background-color]=\"color\"\n [style.background-image]=\"backgroundImage ? 'url(' + backgroundImage + ')' : 'none'\">\n <button\n *ngIf=\"showSidenavToggle && position === 'start'\"\n id=\"adf-sidebar-toggle-start\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n\n <a *ngIf=\"showLogo\" [routerLink]=\"redirectUrl\" title=\"{{ tooltip }}\">\n <img\n src=\"{{ logo }}\"\n class=\"adf-app-logo\"\n alt=\"{{ 'CORE.HEADER.LOGO_ARIA' | translate }}\"\n />\n </a>\n\n <h1\n role=\"link\"\n [attr.aria-label]=\"title | translate\"\n [routerLink]=\"redirectUrl\"\n class=\"adf-app-title\"\n >\n {{ title }}\n </h1>\n\n <ng-content />\n\n <button\n *ngIf=\"showSidenavToggle && position === 'end'\"\n id=\"adf-sidebar-toggle-end\"\n data-automation-id=\"adf-menu-icon\"\n class=\"adf-menu-icon adf-header-icon-button\"\n mat-icon-button\n (click)=\"toggleMenu()\"\n [attr.aria-expanded]=\"expandedSidenav\"\n [attr.aria-label]=\"'CORE.HEADER.ACCESSIBILITY.SIDEBAR_TOGGLE_BUTTON_ARIA_LABEL' | translate\">\n <mat-icon\n class=\"adf-menu-icon-header\"\n role=\"img\"\n aria-hidden=\"true\">{{ toggleIcon }}\n </mat-icon>\n </button>\n</mat-toolbar>\n", styles: ["adf-layout-header .adf-toolbar-container-row{color:var(--theme-header-text-color);position:relative;padding:0 24px}adf-layout-header .adf-toolbar-container-row .adf-menu-icon{position:relative;margin-right:0}adf-layout-header .adf-toolbar-container-row .adf-menu-icon .adf-menu-icon-header{font-size:29px;padding:0 5px 0 0}adf-layout-header .adf-toolbar-container-row .adf-app-logo{position:relative;height:28px;vertical-align:middle;margin-top:-3px}adf-layout-header .adf-toolbar-container-row .adf-app-title{cursor:pointer;letter-spacing:-.3px;font-weight:100}adf-layout-header .adf-toolbar-container-row .adf-toolbar--spacer{flex:1 1 auto}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider{margin:0 5px}adf-layout-header .adf-toolbar-container-row .adf-toolbar-divider>div{background-color:var(--adf-theme-background-card-color)}adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{height:24px;width:2px;background-color:var(--theme-primary-color-default-contrast)}adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{flex-direction:row;padding:0}@media (max-width: 599.9px){adf-layout-header .adf-toolbar-container-row .adf-app-logo,adf-layout-header .adf-toolbar-container-row .adf-app-title{display:none}}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button{color:inherit;border-radius:50%}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:hover{color:inherit}adf-layout-header .adf-toolbar-container-row .adf-header-icon-button:active{color:inherit}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-right:-11px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-right:6px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-left:16px}[dir=rtl] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-left:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-menu-icon{margin-left:-11px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-logo{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-app-title{margin-left:6px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-header-delimiter{margin-right:16px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-container{margin-right:8px}[dir=ltr] adf-layout-header .adf-toolbar-container-row .adf-userinfo-name{padding-right:8px}\n"] }]
75
74
  }], ctorParameters: () => [{ type: i1.AppConfigService }], propDecorators: { title: [{
76
75
  type: Input
77
76
  }], logo: [{
@@ -97,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
97
96
  }], position: [{
98
97
  type: Input
99
98
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvbGF5b3V0L2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2xheW91dC9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFXdEQsTUFBTSxPQUFPLHFCQUFxQjtJQTJDOUIsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQ3RELDJFQUEyRTtRQUNsRSxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWxDLDhEQUE4RDtRQUNyRCxnQkFBVyxHQUFtQixHQUFHLENBQUM7UUFXM0MsaURBQWlEO1FBQ3hDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTlCOzs7V0FHRztRQUNNLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUUzQyx1REFBdUQ7UUFDOUMsZUFBVSxHQUFHLE1BQU0sQ0FBQztRQUU3QixrREFBa0Q7UUFDeEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFaEQsb0VBQW9FO1FBQzNELG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBRXpDLG9GQUFvRjtRQUMzRSxhQUFRLEdBQUcsT0FBTyxDQUFDO0lBRTZCLENBQUM7SUFFMUQsVUFBVTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2pELENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBcUIsaUJBQWlCLENBQUMsQ0FBQztRQUNuRixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLDJCQUEyQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQztRQUMzQyxDQUFDO0lBQ0wsQ0FBQzsrR0EzRFEscUJBQXFCO21HQUFyQixxQkFBcUIsNmJDcENsQyxzM0RBd0RBLHduRkQxQmMsWUFBWSxrSUFBRSxnQkFBZ0IsZ0pBQUUsZUFBZSwySUFBRSxhQUFhLG1MQUFFLFlBQVksK1FBQUUsZUFBZTs7NEZBTTlGLHFCQUFxQjtrQkFUakMsU0FBUzsrQkFDSSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxpQkFHekYsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtxRkFJM0IsS0FBSztzQkFBYixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdJLE9BQU87c0JBQWhCLE1BQU07Z0JBR0UsZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24sIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWxheW91dC1oZWFkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0VG9vbGJhck1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLWxheW91dC1oZWFkZXInIH1cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKiogVGl0bGUgb2YgdGhlIGFwcGxpY2F0aW9uLiAqL1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogUGF0aCB0byBhbiBpbWFnZSBmaWxlIGZvciB0aGUgYXBwbGljYXRpb24gbG9nby4gKi9cbiAgICBASW5wdXQoKSBsb2dvOiBzdHJpbmc7XG5cbiAgICAvKiogVG9nZ2xlcyB3aGV0aGVyIHRoZSBsb2dvIHdpbGwgYmUgZGlzcGxheWVkIGluc2lkZSB0aGUgaGVhZGVyIG9yIG5vdC4gKi9cbiAgICBASW5wdXQoKSBzaG93TG9nbzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVGhlIHJvdXRlciBsaW5rIGZvciB0aGUgYXBwbGljYXRpb24gbG9nbywgd2hlbiBjbGlja2VkLiAqL1xuICAgIEBJbnB1dCgpIHJlZGlyZWN0VXJsOiBzdHJpbmcgfCBhbnlbXSA9ICcvJztcblxuICAgIC8qKiBUaGUgdG9vbHRpcCB0ZXh0IGZvciB0aGUgYXBwbGljYXRpb24gbG9nby4gKi9cbiAgICBASW5wdXQoKSB0b29sdGlwOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgaGVhZGVyLiBJdCBjYW4gYmUgYW55IGhleCBjb2xvciBjb2RlIG9yIG9uZVxuICAgICAqIG9mIHRoZSBNYXRlcmlhbCB0aGVtZSBjb2xvcnM6ICdwcmltYXJ5JywgJ2FjY2VudCcgb3IgJ3dhcm4nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgfCBzdHJpbmc7XG5cbiAgICAvKiogUGF0aCB0byBhIGJhY2tncm91bmQgaW1hZ2UgZm9yIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KCkgYmFja2dyb3VuZEltYWdlID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHdoZXRoZXIgdGhlIHNpZGVuYXYgYnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcbiAgICAgKiBvciBub3QuXG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd1NpZGVuYXZUb2dnbGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRoZSB0b2dnbGUgaWNvbiB0aGF0IHdpbGwgYmUgdXNlZCBpbnNpZGUgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpIHRvZ2dsZUljb24gPSAnbWVudSc7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBzaWRlbmF2IGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKSBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIGV4cGFuZGVkU2lkZW5hdjogVG9nZ2xlcyB0aGUgZXhwYW5kZWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSBleHBhbmRlZFNpZGVuYXY6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRoZSBzaWRlIG9mIHRoZSBwYWdlIHRoYXQgdGhlIGRyYXdlciBpcyBhdHRhY2hlZCB0byAoY2FuIGJlICdzdGFydCcgb3IgJ2VuZCcpICovXG4gICAgQElucHV0KCkgcG9zaXRpb24gPSAnc3RhcnQnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlKSB7fVxuXG4gICAgdG9nZ2xlTWVudSgpIHtcbiAgICAgICAgdGhpcy5jbGlja2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRTaWRlbmF2ID0gIXRoaXMuZXhwYW5kZWRTaWRlbmF2O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCB0ZXh0Q29sb3IgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZyB8IHVuZGVmaW5lZD4oJ2hlYWRlclRleHRDb2xvcicpO1xuICAgICAgICBpZiAodGV4dENvbG9yKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGhlbWUtaGVhZGVyLXRleHQtY29sb3InLCB0ZXh0Q29sb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmxvZ28pIHtcbiAgICAgICAgICAgIHRoaXMubG9nbyA9ICcuL2Fzc2V0cy9pbWFnZXMvbG9nby5wbmcnO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG1hdC10b29sYmFyXG4gICAgY2xhc3M9XCJhZGYtdG9vbGJhci1jb250YWluZXItcm93XCJcbiAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbG9yXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJiYWNrZ3JvdW5kSW1hZ2UgPyAndXJsKCcgKyBiYWNrZ3JvdW5kSW1hZ2UgKyAnKScgOiAnbm9uZSdcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd1NpZGVuYXZUb2dnbGUgJiYgcG9zaXRpb24gPT09ICdzdGFydCdcIlxuICAgICAgICBpZD1cImFkZi1zaWRlYmFyLXRvZ2dsZS1zdGFydFwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1tZW51LWljb25cIlxuICAgICAgICBjbGFzcz1cImFkZi1tZW51LWljb24gYWRmLWhlYWRlci1pY29uLWJ1dHRvblwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFNpZGVuYXZcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLkhFQURFUi5BQ0NFU1NJQklMSVRZLlNJREVCQVJfVE9HR0xFX0JVVFRPTl9BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1lbnUtaWNvbi1oZWFkZXJcIlxuICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj57eyB0b2dnbGVJY29uIH19XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YSAqbmdJZj1cInNob3dMb2dvXCIgW3JvdXRlckxpbmtdPVwicmVkaXJlY3RVcmxcIiB0aXRsZT1cInt7IHRvb2x0aXAgfX1cIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPVwie3sgbG9nbyB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1hcHAtbG9nb1wiXG4gICAgICAgICAgICBhbHQ9XCJ7eyAnQ09SRS5IRUFERVIuTE9HT19BUklBJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIC8+XG4gICAgPC9hPlxuXG4gICAgPGgxXG4gICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cInJlZGlyZWN0VXJsXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtYXBwLXRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgIDwvaDE+XG5cbiAgICA8bmctY29udGVudCAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dTaWRlbmF2VG9nZ2xlICYmIHBvc2l0aW9uID09PSAnZW5kJ1wiXG4gICAgICAgIGlkPVwiYWRmLXNpZGViYXItdG9nZ2xlLWVuZFwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1tZW51LWljb25cIlxuICAgICAgICBjbGFzcz1cImFkZi1tZW51LWljb24gYWRmLWhlYWRlci1pY29uLWJ1dHRvblwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFNpZGVuYXZcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDT1JFLkhFQURFUi5BQ0NFU1NJQklMSVRZLlNJREVCQVJfVE9HR0xFX0JVVFRPTl9BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLW1lbnUtaWNvbi1oZWFkZXJcIlxuICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj57eyB0b2dnbGVJY29uIH19XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG48L21hdC10b29sYmFyPlxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvbGF5b3V0L2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2xheW91dC9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQVdwRCxNQUFNLE9BQU8scUJBQXFCO0lBMkM5QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXBDdEQsMkVBQTJFO1FBQ2xFLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFbEMsOERBQThEO1FBQ3JELGdCQUFXLEdBQW1CLEdBQUcsQ0FBQztRQVczQyxpREFBaUQ7UUFDeEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFOUI7OztXQUdHO1FBQ00sc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBRTNDLHVEQUF1RDtRQUM5QyxlQUFVLEdBQUcsTUFBTSxDQUFDO1FBRTdCLGtEQUFrRDtRQUN4QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVoRCxvRUFBb0U7UUFDM0Qsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFekMsb0ZBQW9GO1FBQzNFLGFBQVEsR0FBRyxPQUFPLENBQUM7SUFFNkIsQ0FBQztJQUUxRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFxQixpQkFBaUIsQ0FBQyxDQUFDO1FBQ25GLElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsMkJBQTJCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLDBCQUEwQixDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDOytHQTNEUSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw2YkNwQ2xDLHMzREF3REEsd25GRDFCYyxZQUFZLGtJQUFFLGdCQUFnQixnSkFBRSxlQUFlLDJJQUFFLGFBQWEsbUxBQUUsWUFBWSwyUUFBRSxhQUFhOzs0RkFNNUYscUJBQXFCO2tCQVRqQyxTQUFTOytCQUNJLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLGlCQUd2RixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFO3FGQUkzQixLQUFLO3NCQUFiLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTTtnQkFHRSxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWxheW91dC1oZWFkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0VG9vbGJhck1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFRyYW5zbGF0ZVBpcGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1sYXlvdXQtaGVhZGVyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBhcHBsaWNhdGlvbi4gKi9cbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIFBhdGggdG8gYW4gaW1hZ2UgZmlsZSBmb3IgdGhlIGFwcGxpY2F0aW9uIGxvZ28uICovXG4gICAgQElucHV0KCkgbG9nbzogc3RyaW5nO1xuXG4gICAgLyoqIFRvZ2dsZXMgd2hldGhlciB0aGUgbG9nbyB3aWxsIGJlIGRpc3BsYXllZCBpbnNpZGUgdGhlIGhlYWRlciBvciBub3QuICovXG4gICAgQElucHV0KCkgc2hvd0xvZ286IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRoZSByb3V0ZXIgbGluayBmb3IgdGhlIGFwcGxpY2F0aW9uIGxvZ28sIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBASW5wdXQoKSByZWRpcmVjdFVybDogc3RyaW5nIHwgYW55W10gPSAnLyc7XG5cbiAgICAvKiogVGhlIHRvb2x0aXAgdGV4dCBmb3IgdGhlIGFwcGxpY2F0aW9uIGxvZ28uICovXG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGhlYWRlci4gSXQgY2FuIGJlIGFueSBoZXggY29sb3IgY29kZSBvciBvbmVcbiAgICAgKiBvZiB0aGUgTWF0ZXJpYWwgdGhlbWUgY29sb3JzOiAncHJpbWFyeScsICdhY2NlbnQnIG9yICd3YXJuJy5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlIHwgc3RyaW5nO1xuXG4gICAgLyoqIFBhdGggdG8gYSBiYWNrZ3JvdW5kIGltYWdlIGZvciB0aGUgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpIGJhY2tncm91bmRJbWFnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB3aGV0aGVyIHRoZSBzaWRlbmF2IGJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXG4gICAgICogb3Igbm90LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dTaWRlbmF2VG9nZ2xlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgdG9nZ2xlIGljb24gdGhhdCB3aWxsIGJlIHVzZWQgaW5zaWRlIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKSB0b2dnbGVJY29uID0gJ21lbnUnO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgc2lkZW5hdiBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KCkgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBleHBhbmRlZFNpZGVuYXY6IFRvZ2dsZXMgdGhlIGV4cGFuZGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KCkgZXhwYW5kZWRTaWRlbmF2OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgc2lkZSBvZiB0aGUgcGFnZSB0aGF0IHRoZSBkcmF3ZXIgaXMgYXR0YWNoZWQgdG8gKGNhbiBiZSAnc3RhcnQnIG9yICdlbmQnKSAqL1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uID0gJ3N0YXJ0JztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge31cblxuICAgIHRvZ2dsZU1lbnUoKSB7XG4gICAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmV4cGFuZGVkU2lkZW5hdiA9ICF0aGlzLmV4cGFuZGVkU2lkZW5hdjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgdGV4dENvbG9yID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxzdHJpbmcgfCB1bmRlZmluZWQ+KCdoZWFkZXJUZXh0Q29sb3InKTtcbiAgICAgICAgaWYgKHRleHRDb2xvcikge1xuICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXRoZW1lLWhlYWRlci10ZXh0LWNvbG9yJywgdGV4dENvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5sb2dvKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ28gPSAnLi9hc3NldHMvaW1hZ2VzL2xvZ28ucG5nJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxtYXQtdG9vbGJhclxuICAgIGNsYXNzPVwiYWRmLXRvb2xiYXItY29udGFpbmVyLXJvd1wiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvclwiXG4gICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiYmFja2dyb3VuZEltYWdlID8gJ3VybCgnICsgYmFja2dyb3VuZEltYWdlICsgJyknIDogJ25vbmUnXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dTaWRlbmF2VG9nZ2xlICYmIHBvc2l0aW9uID09PSAnc3RhcnQnXCJcbiAgICAgICAgaWQ9XCJhZGYtc2lkZWJhci10b2dnbGUtc3RhcnRcIlxuICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtbWVudS1pY29uXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtbWVudS1pY29uIGFkZi1oZWFkZXItaWNvbi1idXR0b25cIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRTaWRlbmF2XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ09SRS5IRUFERVIuQUNDRVNTSUJJTElUWS5TSURFQkFSX1RPR0dMRV9CVVRUT05fQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1tZW51LWljb24taGVhZGVyXCJcbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgdG9nZ2xlSWNvbiB9fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGEgKm5nSWY9XCJzaG93TG9nb1wiIFtyb3V0ZXJMaW5rXT1cInJlZGlyZWN0VXJsXCIgdGl0bGU9XCJ7eyB0b29sdGlwIH19XCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIHNyYz1cInt7IGxvZ28gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtYXBwLWxvZ29cIlxuICAgICAgICAgICAgYWx0PVwie3sgJ0NPUkUuSEVBREVSLkxPR09fQVJJQScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAvPlxuICAgIDwvYT5cblxuICAgIDxoMVxuICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbcm91dGVyTGlua109XCJyZWRpcmVjdFVybFwiXG4gICAgICAgIGNsYXNzPVwiYWRmLWFwcC10aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAge3sgdGl0bGUgfX1cbiAgICA8L2gxPlxuXG4gICAgPG5nLWNvbnRlbnQgLz5cblxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93U2lkZW5hdlRvZ2dsZSAmJiBwb3NpdGlvbiA9PT0gJ2VuZCdcIlxuICAgICAgICBpZD1cImFkZi1zaWRlYmFyLXRvZ2dsZS1lbmRcIlxuICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtbWVudS1pY29uXCJcbiAgICAgICAgY2xhc3M9XCJhZGYtbWVudS1pY29uIGFkZi1oZWFkZXItaWNvbi1idXR0b25cIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRTaWRlbmF2XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ09SRS5IRUFERVIuQUNDRVNTSUJJTElUWS5TSURFQkFSX1RPR0dMRV9CVVRUT05fQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1tZW51LWljb24taGVhZGVyXCJcbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgdG9nZ2xlSWNvbiB9fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9tYXQtdG9vbGJhcj5cbiJdfQ==
@@ -25,7 +25,7 @@ import { MatIconModule } from '@angular/material/icon';
25
25
  import { MatInputModule } from '@angular/material/input';
26
26
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
27
27
  import { ActivatedRoute, Router } from '@angular/router';
28
- import { TranslateModule } from '@ngx-translate/core';
28
+ import { TranslatePipe } from '@ngx-translate/core';
29
29
  import { AppConfigService, AppConfigValues } from '../../../app-config';
30
30
  import { AuthenticationService, BasicAlfrescoAuthService } from '../../../auth';
31
31
  import { OidcAuthenticationService } from '../../../auth/oidc/oidc-authentication.service';
@@ -45,13 +45,12 @@ import * as i6 from "../../../app-config";
45
45
  import * as i7 from "../../../common";
46
46
  import * as i8 from "@angular/common";
47
47
  import * as i9 from "@angular/material/card";
48
- import * as i10 from "@ngx-translate/core";
49
- import * as i11 from "@angular/material/icon";
50
- import * as i12 from "@angular/material/form-field";
51
- import * as i13 from "@angular/material/input";
52
- import * as i14 from "@angular/material/button";
53
- import * as i15 from "@angular/material/progress-spinner";
54
- import * as i16 from "@angular/material/checkbox";
48
+ import * as i10 from "@angular/material/icon";
49
+ import * as i11 from "@angular/material/form-field";
50
+ import * as i12 from "@angular/material/input";
51
+ import * as i13 from "@angular/material/button";
52
+ import * as i14 from "@angular/material/progress-spinner";
53
+ import * as i15 from "@angular/material/checkbox";
55
54
  // eslint-disable-next-line no-shadow
56
55
  var LoginSteps;
57
56
  (function (LoginSteps) {
@@ -324,7 +323,7 @@ export class LoginComponent {
324
323
  this.initFormError();
325
324
  }
326
325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.AuthenticationService }, { token: i2.BasicAlfrescoAuthService }, { token: i3.OidcAuthenticationService }, { token: i4.TranslationService }, { token: i5.Router }, { token: i6.AppConfigService }, { token: i7.UserPreferencesService }, { token: i5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
327
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoginComponent, isStandalone: true, selector: "adf-login", inputs: { showRememberMe: "showRememberMe", showLoginActions: "showLoginActions", needHelpLink: "needHelpLink", registerLink: "registerLink", logoImageUrl: "logoImageUrl", backgroundImageUrl: "backgroundImageUrl", copyrightText: "copyrightText", fieldsValidation: "fieldsValidation", successRoute: "successRoute" }, outputs: { success: "success", error: "error", executeSubmit: "executeSubmit" }, host: { classAttribute: "adf-login" }, ngImport: i0, template: "<div class=\"adf-login-content\" [style.background-image]=\"'url(' + backgroundImageUrl + ')'\">\n <div class=\"adf-ie11FixerParent\">\n <div class=\"adf-ie11FixerChild\">\n\n <mat-card class=\"adf-login-card-wide\">\n <form id=\"adf-login-form\"\n [formGroup]=\"form\"\n autocomplete=\"off\"\n (submit)=\"onSubmit(form.value)\">\n <mat-card-header class=\"adf-login-card-header-text\">\n <mat-card-title>\n <div class=\"adf-alfresco-logo\">\n <!--HEADER TEMPLATE-->\n <ng-template *ngIf=\"headerTemplate\"\n ngFor\n [ngForOf]=\"[data]\"\n [ngForTemplate]=\"headerTemplate\" />\n <img *ngIf=\"!headerTemplate\"\n id=\"adf-login-img-logo\"\n class=\"adf-img-logo\"\n [src]=\"logoImageUrl\"\n alt=\"{{ 'LOGIN.LOGO' | translate }}\">\n </div>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content class=\"adf-login-controls\">\n\n <!--ERRORS AREA-->\n <div class=\"adf-error-container\">\n <div *ngIf=\"isError\"\n id=\"login-error\"\n data-automation-id=\"login-error\"\n class=\"adf-error adf-error-message\">\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n <span class=\"adf-login-error-message\">\n {{ errorMsg | translate }}\n </span>\n </div>\n </div>\n\n <div *ngIf=\"!ssoLogin\">\n\n <!--USERNAME FIELD-->\n <div class=\"adf-login__field adf-login-container\"\n [ngClass]=\"{'adf-is-invalid': isErrorStyle(form.controls.username)}\">\n <mat-form-field class=\"adf-full-width adf-login-form-field\"\n floatPlaceholder=\"never\"\n color=\"primary\">\n <mat-label class=\"adf-login-form-input-label\">\n {{'LOGIN.LABEL.USERNAME' | translate }}\n </mat-label>\n <input matInput\n type=\"text\"\n class=\"adf-login-input\"\n formControlName=\"username\"\n id=\"username\"\n data-automation-id=\"username\"\n autocapitalize=\"none\"\n (blur)=\"trimUsername($event)\">\n </mat-form-field>\n <span *ngIf=\"formError['username']\"\n class=\"adf-login-validation\"\n for=\"username\">\n <span id=\"username-error\"\n class=\"adf-login-error\"\n data-automation-id=\"username-error\">\n {{ formError['username'] | translate }}\n </span>\n </span>\n </div>\n\n <!--PASSWORD FIELD-->\n <div class=\"adf-login__field\">\n <mat-form-field class=\"adf-full-width adf-login-form-field\"\n floatPlaceholder=\"never\"\n color=\"primary\">\n <mat-label class=\"adf-login-form-input-label\">\n {{'LOGIN.LABEL.PASSWORD' | translate }}\n </mat-label>\n <input matInput\n [type]=\"isPasswordShow ? 'text' : 'password'\"\n formControlName=\"password\"\n class=\"adf-login-input\"\n id=\"password\"\n data-automation-id=\"password\">\n <button matSuffix\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"(isPasswordShow ? 'LOGIN.ARIA-LABEL.HIDE-PASSWORD' : 'LOGIN.ARIA-LABEL.SHOW-PASSWORD') | translate\"\n (click)=\"toggleShowPassword($event)\"\n (keyup.enter)=\"toggleShowPassword($event)\"\n [attr.data-automation-id]=\"isPasswordShow ? 'hide_password' : 'show_password'\">\n <mat-icon class=\"adf-login-form-password-icon adf-login-password-icon\">\n {{ isPasswordShow ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n </mat-form-field>\n <span class=\"adf-login-validation\"\n for=\"password\"\n *ngIf=\"formError['password']\">\n <span id=\"password-required\"\n class=\"adf-login-error\"\n data-automation-id=\"password-required\">\n {{ formError['password'] | translate }}\n </span>\n </span>\n </div>\n\n <!--CUSTOM CONTENT-->\n <ng-content />\n\n <br>\n <button type=\"submit\"\n id=\"login-button\"\n class=\"adf-login-button\"\n mat-raised-button\n color=\"accent\"\n [class.adf-isChecking]=\"actualLoginStep === LoginSteps.Checking\"\n [class.adf-isWelcome]=\"actualLoginStep === LoginSteps.Welcome\"\n data-automation-id=\"login-button\"\n [disabled]=\"!form.valid\"\n [attr.aria-label]=\"'LOGIN.BUTTON.LOGIN' | translate\">\n <span *ngIf=\"actualLoginStep === LoginSteps.Landing\"\n class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.LOGIN' | translate }}\n </span>\n <div *ngIf=\"actualLoginStep === LoginSteps.Checking\"\n class=\"adf-interactive-login-label\">\n <span class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.CHECKING' | translate }}\n </span>\n <div class=\"adf-login-spinner-container\">\n <mat-spinner id=\"checking-spinner\"\n class=\"adf-login-checking-spinner\"\n [strokeWidth]=\"4\"\n [diameter]=\"25\" />\n </div>\n </div>\n <div *ngIf=\"actualLoginStep === LoginSteps.Welcome\"\n class=\"adf-interactive-login-label\">\n <span class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.WELCOME' | translate }}\n </span>\n <mat-icon class=\"adf-welcome-icon\">done</mat-icon>\n </div>\n </button>\n <div *ngIf=\"showRememberMe\" class=\"adf-login__remember-me\">\n <mat-checkbox id=\"adf-login-remember\"\n color=\"primary\"\n class=\"adf-login-remember-me\"\n [checked]=\"rememberMe\"\n (change)=\"rememberMe = !rememberMe\">\n <div class=\"adf-login-remember-me-label\">\n {{ 'LOGIN.LABEL.REMEMBER' | translate }}\n </div>\n </mat-checkbox>\n </div>\n </div>\n <div *ngIf=\"ssoLogin\">\n <button type=\"button\"\n (click)=\"implicitLogin()\"\n id=\"login-button-sso\"\n [attr.aria-label]=\"'LOGIN.BUTTON.SSO' | translate\"\n class=\"adf-login-button\"\n mat-raised-button color=\"primary\"\n data-automation-id=\"login-button-sso\">\n <span class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.SSO' | translate }}\n </span>\n </button>\n </div>\n </mat-card-content>\n\n <mat-card-actions *ngIf=\"footerTemplate || showLoginActions\">\n\n <div class=\"adf-login-action-container\">\n <!--FOOTER TEMPLATE-->\n <ng-template *ngIf=\"footerTemplate\"\n ngFor\n [ngForOf]=\"[data]\"\n [ngForTemplate]=\"footerTemplate\" />\n <div class=\"adf-login-action\" *ngIf=\"!footerTemplate && showLoginActions\">\n <div id=\"adf-login-action-left\" class=\"adf-login-action-left\">\n <a href=\"{{ needHelpLink }}\">{{ 'LOGIN.ACTION.HELP' | translate }}</a>\n </div>\n <div id=\"adf-login-action-right\" class=\"adf-login-action-right\">\n <a href=\"{{ registerLink }}\">{{ 'LOGIN.ACTION.REGISTER' | translate }}</a>\n </div>\n </div>\n </div>\n </mat-card-actions>\n </form>\n </mat-card>\n\n <div class=\"adf-copyright\" data-automation-id=\"login-copyright\">\n {{ copyrightText }}\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".adf-login{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0}.adf-login-content{background-size:cover;background-position:center;min-height:100%;min-width:320px;display:flex;justify-content:center;flex-direction:column}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.adf-login-content{display:table;width:100%;height:100%}}.adf-login-content .adf-ie11FixerParent{margin:16px 0;min-width:320px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.adf-login-content .adf-ie11FixerParent{display:table-cell;vertical-align:middle;width:100%;padding-top:16px}}.adf-login-content .adf-ie11FixerChild{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.adf-login-content .adf-icon-inline{position:absolute;display:block;top:31%;left:82%;width:30px;overflow:hidden}.adf-login-content .adf-login-card-wide{border-radius:8px;background-color:var(--adf-theme-background-dialog-color);box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;width:450px;min-width:320px;padding:21px 64px 34px;box-sizing:border-box}@media screen and (width <= 482px){.adf-login-content .adf-login-card-wide{width:calc(100% - 32px)}}.adf-login-content .adf-error-container{height:45px}.adf-login-content .adf-error-message{display:flex;flex-direction:row;justify-content:flex-start;color:var(--theme-warn-color);padding:0;margin-bottom:4px;font-size:var(--theme-caption-font-size)}.adf-login-content .adf-error-message .adf-error-icon{margin-right:10px}.adf-login-content .adf-login-card-header-text{padding-bottom:42px;padding-top:0;margin:0 auto}.adf-login-content .adf-img-logo{display:block;margin-left:auto;margin-right:auto}.adf-login-content .adf-alfresco-logo{padding:24px 16px}.adf-login-content .adf-alfresco-logo img{max-height:58px}.adf-login-content .adf-login-button{width:100%;height:36px;line-height:normal;box-shadow:none}.adf-login-content .adf-login-button-label{color:var(--theme-accent-color-default-contrast);font-weight:bolder}.adf-login-content .adf-login-button.adf-isChecking{background-color:#e0f7fa}.adf-login-content .adf-login-button.adf-isChecking .adf-login-button-label{color:var(--theme-primary-color)}.adf-login-content .adf-login-button.adf-isWelcome{background-color:var(--theme-primary-color);color:var(--theme-primary-color-default-contrast)}.adf-login-content .adf-login-button.adf-isWelcome .adf-welcome-icon{margin:5px 0 0 10px}.adf-login-content .adf-interactive-login-label{display:flex;flex-direction:row;line-height:38px;justify-content:center}.adf-login-content .adf-login-spinner-container{margin-left:15px;margin-top:5px}.adf-login-content .adf-login-action{margin-top:20px;display:flex;flex-direction:row;justify-content:space-between}.adf-login-content .adf-login-action-left a,.adf-login-content .adf-login-action-right a{text-decoration:none}.adf-login-content .adf-is-active{background-color:transparent;font-size:var(--theme-caption-font-size);font-weight:400;line-height:1.33;color:var(--theme-warn-color)}.adf-login-content .adf-copyright{min-width:320px;text-align:center;padding:16px 0;font-size:var(--theme-caption-font-size);opacity:.54}.adf-login-content .adf-login-input:is(input){font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-form-field .adf-login-password-icon.adf-login-form-password-icon{color:var(--adf-theme-foreground-text-color);font-size:var(--theme-subheading-2-font-size);top:9px;position:relative;left:7px}.adf-login-content .adf-login-controls:has(div){padding:0 0 26px;overflow:visible;width:100%;margin-bottom:16px}.adf-login-content .adf-login-controls:has(div) .adf-login-container{margin-bottom:20px}.adf-login-content .adf-login-controls:has(div) .adf-login__field{display:block;padding-bottom:16px;font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-controls:has(div) .adf-login__field .mat-mdc-form-field-infix{min-height:0;padding-bottom:3px;padding-top:20px}.adf-login-content .adf-login-controls:has(div) .adf-login__field .mat-mdc-form-field-infix .adf-login-form-input-label{font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-controls:has(div) .adf-login__field .mat-mdc-form-field-infix .mdc-floating-label--required:after{font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-controls:has(div) .adf-login__field input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--adf-theme-background-dialog-color) inset;-webkit-text-fill-color:var(--adf-theme-foreground-text-color)}.adf-login-content .adf-login-validation{background-color:transparent;color:var(--theme-warn-color);font-size:var(--theme-caption-font-size)}.adf-login-content .adf-login-error{color:var(--theme-warn-color);position:absolute;font-size:var(--theme-caption-font-size);margin-top:-12px;display:block}.adf-login-content .adf-full-width{width:100%}.adf-login-content .adf-login__remember-me{padding-top:22px}.adf-login-content .adf-login__remember-me .adf-login-remember-me-label{opacity:.87}.adf-login-content .adf-login-remember-me:has(.adf-login-remember-me-label){color:var(--adf-theme-foreground-text-color)}.adf-login-content .adf-login-action-container{border-top:1px solid rgba(0,0,0,.1);margin-top:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i9.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i9.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i9.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i9.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i12.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i12.MatLabel, selector: "mat-label" }, { kind: "directive", type: i12.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i14.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i14.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i15.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i16.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], encapsulation: i0.ViewEncapsulation.None }); }
326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoginComponent, isStandalone: true, selector: "adf-login", inputs: { showRememberMe: "showRememberMe", showLoginActions: "showLoginActions", needHelpLink: "needHelpLink", registerLink: "registerLink", logoImageUrl: "logoImageUrl", backgroundImageUrl: "backgroundImageUrl", copyrightText: "copyrightText", fieldsValidation: "fieldsValidation", successRoute: "successRoute" }, outputs: { success: "success", error: "error", executeSubmit: "executeSubmit" }, host: { classAttribute: "adf-login" }, ngImport: i0, template: "<div class=\"adf-login-content\" [style.background-image]=\"'url(' + backgroundImageUrl + ')'\">\n <div class=\"adf-ie11FixerParent\">\n <div class=\"adf-ie11FixerChild\">\n\n <mat-card class=\"adf-login-card-wide\">\n <form id=\"adf-login-form\"\n [formGroup]=\"form\"\n autocomplete=\"off\"\n (submit)=\"onSubmit(form.value)\">\n <mat-card-header class=\"adf-login-card-header-text\">\n <mat-card-title>\n <div class=\"adf-alfresco-logo\">\n <!--HEADER TEMPLATE-->\n <ng-template *ngIf=\"headerTemplate\"\n ngFor\n [ngForOf]=\"[data]\"\n [ngForTemplate]=\"headerTemplate\" />\n <img *ngIf=\"!headerTemplate\"\n id=\"adf-login-img-logo\"\n class=\"adf-img-logo\"\n [src]=\"logoImageUrl\"\n alt=\"{{ 'LOGIN.LOGO' | translate }}\">\n </div>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content class=\"adf-login-controls\">\n\n <!--ERRORS AREA-->\n <div class=\"adf-error-container\">\n <div *ngIf=\"isError\"\n id=\"login-error\"\n data-automation-id=\"login-error\"\n class=\"adf-error adf-error-message\">\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n <span class=\"adf-login-error-message\">\n {{ errorMsg | translate }}\n </span>\n </div>\n </div>\n\n <div *ngIf=\"!ssoLogin\">\n\n <!--USERNAME FIELD-->\n <div class=\"adf-login__field adf-login-container\"\n [ngClass]=\"{'adf-is-invalid': isErrorStyle(form.controls.username)}\">\n <mat-form-field class=\"adf-full-width adf-login-form-field\"\n floatPlaceholder=\"never\"\n color=\"primary\">\n <mat-label class=\"adf-login-form-input-label\">\n {{'LOGIN.LABEL.USERNAME' | translate }}\n </mat-label>\n <input matInput\n type=\"text\"\n class=\"adf-login-input\"\n formControlName=\"username\"\n id=\"username\"\n data-automation-id=\"username\"\n autocapitalize=\"none\"\n (blur)=\"trimUsername($event)\">\n </mat-form-field>\n <span *ngIf=\"formError['username']\"\n class=\"adf-login-validation\"\n for=\"username\">\n <span id=\"username-error\"\n class=\"adf-login-error\"\n data-automation-id=\"username-error\">\n {{ formError['username'] | translate }}\n </span>\n </span>\n </div>\n\n <!--PASSWORD FIELD-->\n <div class=\"adf-login__field\">\n <mat-form-field class=\"adf-full-width adf-login-form-field\"\n floatPlaceholder=\"never\"\n color=\"primary\">\n <mat-label class=\"adf-login-form-input-label\">\n {{'LOGIN.LABEL.PASSWORD' | translate }}\n </mat-label>\n <input matInput\n [type]=\"isPasswordShow ? 'text' : 'password'\"\n formControlName=\"password\"\n class=\"adf-login-input\"\n id=\"password\"\n data-automation-id=\"password\">\n <button matSuffix\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"(isPasswordShow ? 'LOGIN.ARIA-LABEL.HIDE-PASSWORD' : 'LOGIN.ARIA-LABEL.SHOW-PASSWORD') | translate\"\n (click)=\"toggleShowPassword($event)\"\n (keyup.enter)=\"toggleShowPassword($event)\"\n [attr.data-automation-id]=\"isPasswordShow ? 'hide_password' : 'show_password'\">\n <mat-icon class=\"adf-login-form-password-icon adf-login-password-icon\">\n {{ isPasswordShow ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n </mat-form-field>\n <span class=\"adf-login-validation\"\n for=\"password\"\n *ngIf=\"formError['password']\">\n <span id=\"password-required\"\n class=\"adf-login-error\"\n data-automation-id=\"password-required\">\n {{ formError['password'] | translate }}\n </span>\n </span>\n </div>\n\n <!--CUSTOM CONTENT-->\n <ng-content />\n\n <br>\n <button type=\"submit\"\n id=\"login-button\"\n class=\"adf-login-button\"\n mat-raised-button\n color=\"accent\"\n [class.adf-isChecking]=\"actualLoginStep === LoginSteps.Checking\"\n [class.adf-isWelcome]=\"actualLoginStep === LoginSteps.Welcome\"\n data-automation-id=\"login-button\"\n [disabled]=\"!form.valid\"\n [attr.aria-label]=\"'LOGIN.BUTTON.LOGIN' | translate\">\n <span *ngIf=\"actualLoginStep === LoginSteps.Landing\"\n class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.LOGIN' | translate }}\n </span>\n <div *ngIf=\"actualLoginStep === LoginSteps.Checking\"\n class=\"adf-interactive-login-label\">\n <span class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.CHECKING' | translate }}\n </span>\n <div class=\"adf-login-spinner-container\">\n <mat-spinner id=\"checking-spinner\"\n class=\"adf-login-checking-spinner\"\n [strokeWidth]=\"4\"\n [diameter]=\"25\" />\n </div>\n </div>\n <div *ngIf=\"actualLoginStep === LoginSteps.Welcome\"\n class=\"adf-interactive-login-label\">\n <span class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.WELCOME' | translate }}\n </span>\n <mat-icon class=\"adf-welcome-icon\">done</mat-icon>\n </div>\n </button>\n <div *ngIf=\"showRememberMe\" class=\"adf-login__remember-me\">\n <mat-checkbox id=\"adf-login-remember\"\n color=\"primary\"\n class=\"adf-login-remember-me\"\n [checked]=\"rememberMe\"\n (change)=\"rememberMe = !rememberMe\">\n <div class=\"adf-login-remember-me-label\">\n {{ 'LOGIN.LABEL.REMEMBER' | translate }}\n </div>\n </mat-checkbox>\n </div>\n </div>\n <div *ngIf=\"ssoLogin\">\n <button type=\"button\"\n (click)=\"implicitLogin()\"\n id=\"login-button-sso\"\n [attr.aria-label]=\"'LOGIN.BUTTON.SSO' | translate\"\n class=\"adf-login-button\"\n mat-raised-button color=\"primary\"\n data-automation-id=\"login-button-sso\">\n <span class=\"adf-login-button-label\">\n {{ 'LOGIN.BUTTON.SSO' | translate }}\n </span>\n </button>\n </div>\n </mat-card-content>\n\n <mat-card-actions *ngIf=\"footerTemplate || showLoginActions\">\n\n <div class=\"adf-login-action-container\">\n <!--FOOTER TEMPLATE-->\n <ng-template *ngIf=\"footerTemplate\"\n ngFor\n [ngForOf]=\"[data]\"\n [ngForTemplate]=\"footerTemplate\" />\n <div class=\"adf-login-action\" *ngIf=\"!footerTemplate && showLoginActions\">\n <div id=\"adf-login-action-left\" class=\"adf-login-action-left\">\n <a href=\"{{ needHelpLink }}\">{{ 'LOGIN.ACTION.HELP' | translate }}</a>\n </div>\n <div id=\"adf-login-action-right\" class=\"adf-login-action-right\">\n <a href=\"{{ registerLink }}\">{{ 'LOGIN.ACTION.REGISTER' | translate }}</a>\n </div>\n </div>\n </div>\n </mat-card-actions>\n </form>\n </mat-card>\n\n <div class=\"adf-copyright\" data-automation-id=\"login-copyright\">\n {{ copyrightText }}\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".adf-login{display:flex;flex-direction:column;flex:1;height:100%;overflow:hidden;min-height:0}.adf-login-content{background-size:cover;background-position:center;min-height:100%;min-width:320px;display:flex;justify-content:center;flex-direction:column}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.adf-login-content{display:table;width:100%;height:100%}}.adf-login-content .adf-ie11FixerParent{margin:16px 0;min-width:320px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.adf-login-content .adf-ie11FixerParent{display:table-cell;vertical-align:middle;width:100%;padding-top:16px}}.adf-login-content .adf-ie11FixerChild{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.adf-login-content .adf-icon-inline{position:absolute;display:block;top:31%;left:82%;width:30px;overflow:hidden}.adf-login-content .adf-login-card-wide{border-radius:8px;background-color:var(--adf-theme-background-dialog-color);box-shadow:0 2px 2px #0000003d,0 0 2px #0000001f;width:450px;min-width:320px;padding:21px 64px 34px;box-sizing:border-box}@media screen and (width <= 482px){.adf-login-content .adf-login-card-wide{width:calc(100% - 32px)}}.adf-login-content .adf-error-container{height:45px}.adf-login-content .adf-error-message{display:flex;flex-direction:row;justify-content:flex-start;color:var(--theme-warn-color);padding:0;margin-bottom:4px;font-size:var(--theme-caption-font-size)}.adf-login-content .adf-error-message .adf-error-icon{margin-right:10px}.adf-login-content .adf-login-card-header-text{padding-bottom:42px;padding-top:0;margin:0 auto}.adf-login-content .adf-img-logo{display:block;margin-left:auto;margin-right:auto}.adf-login-content .adf-alfresco-logo{padding:24px 16px}.adf-login-content .adf-alfresco-logo img{max-height:58px}.adf-login-content .adf-login-button{width:100%;height:36px;line-height:normal;box-shadow:none}.adf-login-content .adf-login-button-label{color:var(--theme-accent-color-default-contrast);font-weight:bolder}.adf-login-content .adf-login-button.adf-isChecking{background-color:#e0f7fa}.adf-login-content .adf-login-button.adf-isChecking .adf-login-button-label{color:var(--theme-primary-color)}.adf-login-content .adf-login-button.adf-isWelcome{background-color:var(--theme-primary-color);color:var(--theme-primary-color-default-contrast)}.adf-login-content .adf-login-button.adf-isWelcome .adf-welcome-icon{margin:5px 0 0 10px}.adf-login-content .adf-interactive-login-label{display:flex;flex-direction:row;line-height:38px;justify-content:center}.adf-login-content .adf-login-spinner-container{margin-left:15px;margin-top:5px}.adf-login-content .adf-login-action{margin-top:20px;display:flex;flex-direction:row;justify-content:space-between}.adf-login-content .adf-login-action-left a,.adf-login-content .adf-login-action-right a{text-decoration:none}.adf-login-content .adf-is-active{background-color:transparent;font-size:var(--theme-caption-font-size);font-weight:400;line-height:1.33;color:var(--theme-warn-color)}.adf-login-content .adf-copyright{min-width:320px;text-align:center;padding:16px 0;font-size:var(--theme-caption-font-size);opacity:.54}.adf-login-content .adf-login-input:is(input){font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-form-field .adf-login-password-icon.adf-login-form-password-icon{color:var(--adf-theme-foreground-text-color);font-size:var(--theme-subheading-2-font-size);top:9px;position:relative;left:7px}.adf-login-content .adf-login-controls:has(div){padding:0 0 26px;overflow:visible;width:100%;margin-bottom:16px}.adf-login-content .adf-login-controls:has(div) .adf-login-container{margin-bottom:20px}.adf-login-content .adf-login-controls:has(div) .adf-login__field{display:block;padding-bottom:16px;font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-controls:has(div) .adf-login__field .mat-mdc-form-field-infix{min-height:0;padding-bottom:3px;padding-top:20px}.adf-login-content .adf-login-controls:has(div) .adf-login__field .mat-mdc-form-field-infix .adf-login-form-input-label{font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-controls:has(div) .adf-login__field .mat-mdc-form-field-infix .mdc-floating-label--required:after{font-size:var(--theme-subheading-2-font-size)}.adf-login-content .adf-login-controls:has(div) .adf-login__field input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--adf-theme-background-dialog-color) inset;-webkit-text-fill-color:var(--adf-theme-foreground-text-color)}.adf-login-content .adf-login-validation{background-color:transparent;color:var(--theme-warn-color);font-size:var(--theme-caption-font-size)}.adf-login-content .adf-login-error{color:var(--theme-warn-color);position:absolute;font-size:var(--theme-caption-font-size);margin-top:-12px;display:block}.adf-login-content .adf-full-width{width:100%}.adf-login-content .adf-login__remember-me{padding-top:22px}.adf-login-content .adf-login__remember-me .adf-login-remember-me-label{opacity:.87}.adf-login-content .adf-login-remember-me:has(.adf-login-remember-me-label){color:var(--adf-theme-foreground-text-color)}.adf-login-content .adf-login-action-container{border-top:1px solid rgba(0,0,0,.1);margin-top:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i9.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i9.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i9.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i9.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i9.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i13.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i14.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i15.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], encapsulation: i0.ViewEncapsulation.None }); }
328
327
  }
329
328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginComponent, decorators: [{
330
329
  type: Component,
@@ -332,7 +331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
332
331
  CommonModule,
333
332
  MatCardModule,
334
333
  ReactiveFormsModule,
335
- TranslateModule,
334
+ TranslatePipe,
336
335
  MatIconModule,
337
336
  MatFormFieldModule,
338
337
  MatInputModule,
@@ -365,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
365
364
  }], executeSubmit: [{
366
365
  type: Output
367
366
  }] } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9sb2dpbi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvbG9naW4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIs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O2lXQVc1QixjQUFjO3NCQURiLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sT0FBTztzQkFETixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBBcHBDb25maWdWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgQmFzaWNBbGZyZXNjb0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aCc7XG5pbXBvcnQgeyBPaWRjQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9vaWRjL29pZGMtYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RyYW5zbGF0aW9uJztcblxuaW1wb3J0IHsgTG9naW5FcnJvckV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvZ2luLWVycm9yLmV2ZW50JztcbmltcG9ydCB7IExvZ2luU3VibWl0RXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9naW4tc3VibWl0LmV2ZW50JztcbmltcG9ydCB7IExvZ2luU3VjY2Vzc0V2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvZ2luLXN1Y2Nlc3MuZXZlbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5lbnVtIExvZ2luU3RlcHMge1xuICAgIExhbmRpbmcgPSAwLFxuICAgIENoZWNraW5nID0gMSxcbiAgICBXZWxjb21lID0gMlxufVxuXG5pbnRlcmZhY2UgVmFsaWRhdGlvbk1lc3NhZ2Uge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgcGFyYW1zPzogYW55O1xufVxuXG5pbnRlcmZhY2UgTG9naW5Gb3JtVmFsdWVzIHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWxvZ2luJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRDYXJkTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBNYXRDaGVja2JveE1vZHVsZVxuICAgIF0sXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1sb2dpbicgfVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgaXNQYXNzd29yZFNob3c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNob3VsZCB0aGUgYFJlbWVtYmVyIG1lYCBjaGVja2JveCBiZSBzaG93bj8gV2hlbiBzZWxlY3RlZCwgdGhpc1xuICAgICAqIG9wdGlvbiB3aWxsIHJlbWVtYmVyIHRoZSBsb2dnZWQtaW4gdXNlciBhZnRlciB0aGUgYnJvd3NlciBpcyBjbG9zZWRcbiAgICAgKiB0byBhdm9pZCBsb2dnaW5nIGluIHJlcGVhdGVkbHkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93UmVtZW1iZXJNZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogU2hvdWxkIHRoZSBleHRyYSBhY3Rpb25zIChgTmVlZCBIZWxwYCwgYFJlZ2lzdGVyYCwgZXRjKSBiZSBzaG93bj8gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dMb2dpbkFjdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFNldHMgdGhlIFVSTCBvZiB0aGUgTkVFRCBIRUxQIGxpbmsgaW4gdGhlIGZvb3Rlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5lZWRIZWxwTGluazogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogU2V0cyB0aGUgVVJMIG9mIHRoZSBSRUdJU1RFUiBsaW5rIGluIHRoZSBmb290ZXIuICovXG4gICAgQElucHV0KClcbiAgICByZWdpc3Rlckxpbms6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFBhdGggdG8gYSBjdXN0b20gbG9nbyBpbWFnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGxvZ29JbWFnZVVybDogc3RyaW5nID0gJy4vYXNzZXRzL2ltYWdlcy9hbGZyZXNjby1sb2dvLnN2Zyc7XG5cbiAgICAvKiogUGF0aCB0byBhIGN1c3RvbSBiYWNrZ3JvdW5kIGltYWdlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmFja2dyb3VuZEltYWdlVXJsOiBzdHJpbmcgPSAnLi9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQuc3ZnJztcblxuICAgIC8qKiBUaGUgY29weXJpZ2h0IHRleHQgYmVsb3cgdGhlIGxvZ2luIGJveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvcHlyaWdodFRleHQ6IHN0cmluZyA9ICdcXHUwMEE5IDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLic7XG5cbiAgICAvKiogQ3VzdG9tIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoZSBsb2dpbiBmb3JtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmllbGRzVmFsaWRhdGlvbjogYW55O1xuXG4gICAgLyoqIFJvdXRlIHRvIHJlZGlyZWN0IHRvIG9uIHN1Y2Nlc3NmdWwgbG9naW4uICovXG4gICAgQElucHV0KClcbiAgICBzdWNjZXNzUm91dGU6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBsb2dpbiBpcyBzdWNjZXNzZnVsLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luU3VjY2Vzc0V2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbG9naW4gZmFpbHMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luRXJyb3JFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGxvZ2luIGZvcm0gaXMgc3VibWl0dGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGV4ZWN1dGVTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luU3VibWl0RXZlbnQ+KCk7XG5cbiAgICBzc29Mb2dpbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBpc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgZXJyb3JNc2c6IHN0cmluZztcbiAgICBhY3R1YWxMb2dpblN0ZXA6IGFueSA9IExvZ2luU3RlcHMuTGFuZGluZztcbiAgICBMb2dpblN0ZXBzID0gTG9naW5TdGVwcztcbiAgICByZW1lbWJlck1lOiBib29sZWFuID0gdHJ1ZTtcbiAgICBmb3JtRXJyb3I6IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBtaW5MZW5ndGg6IG51bWJlciA9IDI7XG4gICAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgZGF0YTogYW55O1xuXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogeyBbaWQ6IHN0cmluZ106IHsgW2lkOiBzdHJpbmddOiBWYWxpZGF0aW9uTWVzc2FnZSB9IH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGJhc2ljQWxmcmVzY29BdXRoU2VydmljZTogQmFzaWNBbGZyZXNjb0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9pZGNBdXRoZW50aWNhdGlvblNlcnZpY2U6IE9pZGNBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdEZvcm1FcnJvcigpO1xuICAgICAgICB0aGlzLmluaXRGb3JtRmllbGRzRGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmluaXRGb3JtRmllbGRzTWVzc2FnZXMoKTtcblxuICAgICAgICB0aGlzLnN1Y2Nlc3NSb3V0ZSA9IHRoaXMuYXBwQ29uZmlnLmdldDxzdHJpbmc+KCdzdWNjZXNzUm91dGUnLCB0aGlzLnN1Y2Nlc3NSb3V0ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbigpKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5zdWNjZXNzUm91dGVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzT2F1dGgoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9hdXRoID0gdGhpcy5hcHBDb25maWcub2F1dGgyO1xuICAgICAgICAgICAgICAgIGlmIChvYXV0aD8uc2lsZW50TG9naW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvU1NPTG9naW4oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9hdXRoPy5pbXBsaWNpdEZsb3cgfHwgb2F1dGg/LmNvZGVGbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3NvTG9naW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gcGFyYW1zWydyZWRpcmVjdFVybCddO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5hcHBDb25maWcuZ2V0PHN0cmluZz4oQXBwQ29uZmlnVmFsdWVzLlBST1ZJREVSUyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJhc2ljQWxmcmVzY29BdXRoU2VydmljZS5zZXRSZWRpcmVjdCh7IHByb3ZpZGVyLCB1cmwgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkc1ZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHRoaXMuZmllbGRzVmFsaWRhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlZChkYXRhKSk7XG4gICAgfVxuXG4gICAgc3VibWl0KCkge1xuICAgICAgICB0aGlzLm9uU3VibWl0KHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVkaXJlY3RUb1NTT0xvZ2luKCkge1xuICAgICAgICB0aGlzLm9pZGNBdXRoZW50aWNhdGlvblNlcnZpY2Uuc3NvTG9naW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgY2FsbGVkIG9uIHN1Ym1pdCBmb3JtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWVzIGxvZ2luIGZvcm0gdmFsdWVzXG4gICAgICovXG4gICAgb25TdWJtaXQodmFsdWVzOiBMb2dpbkZvcm1WYWx1ZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlRXJyb3IoKTtcblxuICAgICAgICBjb25zdCBhcmdzID0gbmV3IExvZ2luU3VibWl0RXZlbnQoe1xuICAgICAgICAgICAgY29udHJvbHM6IHsgdXNlcm5hbWU6IHRoaXMuZm9ybS5jb250cm9scy51c2VybmFtZSB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmV4ZWN1dGVTdWJtaXQuZW1pdChhcmdzKTtcblxuICAgICAgICBpZiAoIWFyZ3MuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5hY3R1YWxMb2dpblN0ZXAgPSBMb2dpblN0ZXBzLkNoZWNraW5nO1xuXG4gICAgICAgICAgICB0aGlzLnBlcmZvcm1Mb2dpbih2YWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW1wbGljaXRMb2dpbigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbigpKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5zdWNjZXNzUm91dGVdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9pZGNBdXRoZW50aWNhdGlvblNlcnZpY2Uuc3NvTG9naW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWV0aG9kIGNoZWNrIHRoZSBlcnJvciBpbiB0aGUgZm9ybSBhbmQgcHVzaCB0aGUgZXJyb3IgaW4gdGhlIGZvcm1FcnJvciBvYmplY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhIGZvcm0gZGF0YVxuICAgICAqL1xuICAgIG9uVmFsdWVDaGFuZ2VkKGRhdGE6IGFueSkge1xuICAgICAgICB0aGlzLmRpc2FibGVFcnJvcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIGluIHRoaXMuZm9ybUVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1FcnJvcltmaWVsZF0gPSAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbZmllbGRdLmVycm9ycyAmJiBkYXRhW2ZpZWxkXSAhPT0gJycpIHx8ICh0aGlzLmZvcm0uY29udHJvbHNbZmllbGRdLmRpcnR5ICYmICF0aGlzLmZvcm0uY29udHJvbHNbZmllbGRdLnZhbGlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5fbWVzc2FnZVtmaWVsZF1ba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZT8udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UudmFsdWUsIG1lc3NhZ2UucGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtRXJyb3JbZmllbGRdICs9IHRyYW5zbGF0ZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGVyZm9ybUxvZ2luKHZhbHVlczogeyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dpbih2YWx1ZXMudXNlcm5hbWUsIHZhbHVlcy5wYXNzd29yZCwgdGhpcy5yZW1lbWJlck1lKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICBhc3luYyAodG9rZW46IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gdGhpcy5iYXNpY0FsZnJlc2NvQXV0aFNlcnZpY2UuZ2V0UmVkaXJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYWN0dWFsTG9naW5TdGVwID0gTG9naW5TdGVwcy5XZWxjb21lO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzLnNldFN0b3JhZ2VQcmVmaXgodmFsdWVzLnVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucGFzc3dvcmQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KG5ldyBMb2dpblN1Y2Nlc3NFdmVudCh0b2tlbiwgdmFsdWVzLnVzZXJuYW1lLCBudWxsKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3RVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNpY0FsZnJlc2NvQXV0aFNlcnZpY2Uuc2V0UmVkaXJlY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocmVkaXJlY3RVcmwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWNjZXNzUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuc3VjY2Vzc1JvdXRlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0dWFsTG9naW5TdGVwID0gTG9naW5TdGVwcy5MYW5kaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheUVycm9yTWVzc2FnZShlcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KG5ldyBMb2dpbkVycm9yRXZlbnQoZXJyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgYW5kIGRpc3BsYXkgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UgaW4gdGhlIFVJXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJyIGVycm9yIG9iamVjdFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlzcGxheUVycm9yTWVzc2FnZShlcnI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZXJyLmVycm9yPy5jcm9zc0RvbWFpbiAmJiBlcnIuZXJyb3IubWVzc2FnZS5pbmRleE9mKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNc2cgPSBlcnIuZXJyb3IubWVzc2FnZTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuc3RhdHVzID09PSA0MDMgJiYgZXJyLm1lc3NhZ2UuaW5kZXhPZignSW52YWxpZCBDU1JGLXRva2VuJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTXNnID0gJ0xPR0lOLk1FU1NBR0VTLkxPR0lOLUVSUk9SLUNTUkYnO1xuICAgICAgICB9IGVsc2UgaWYgKGVyci5zdGF0dXMgPT09IDQwMyAmJiBlcnIubWVzc2FnZS5pbmRleE9mKCdUaGUgc3lzdGVtIGlzIGN1cnJlbnRseSBpbiByZWFkLW9ubHkgbW9kZScpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1zZyA9ICdMT0dJTi5NRVNTQUdFUy5MT0dJTi1FQ00tTElDRU5TRSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTXNnID0gJ0xPR0lOLk1FU1NBR0VTLkxPR0lOLUVSUk9SLUNSRURFTlRJQUxTJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBhIGN1c3RvbSBmb3JtIGVycm9yIGZvciBhIGZpZWxkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGQgZmllbGRcbiAgICAgKiBAcGFyYW0gbXNnIGVycm9yIG1lc3NhZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkQ3VzdG9tRm9ybUVycm9yKGZpZWxkOiBzdHJpbmcsIG1zZzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZm9ybUVycm9yW2ZpZWxkXSArPSBtc2c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgY3VzdG9tIHZhbGlkYXRpb24gcnVsZSBlcnJvciBmb3IgYSBmaWVsZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkIGZpZWxkXG4gICAgICogQHBhcmFtIHJ1bGVJZCAtIGkuZS4gcmVxdWlyZWQgfCBtaW5sZW5ndGggfCBtYXhsZW5ndGhcbiAgICAgKiBAcGFyYW0gbXNnIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcGFyYW1zIHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICBhZGRDdXN0b21WYWxpZGF0aW9uRXJyb3IoZmllbGQ6IHN0cmluZywgcnVsZUlkOiBzdHJpbmcsIG1zZzogc3RyaW5nLCBwYXJhbXM/OiBhbnkpIHtcbiAgICAgICAgaWYgKGZpZWxkICE9PSAnX19wcm90b19fJyAmJiBmaWVsZCAhPT0gJ2NvbnN0cnVjdG9yJyAmJiBmaWVsZCAhPT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VbZmllbGRdW3J1bGVJZF0gPSB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IG1zZyxcbiAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IGFuZCBoaWRlIHRoZSBwYXNzd29yZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBpbnB1dCBldmVudFxuICAgICAqL1xuICAgIHRvZ2dsZVNob3dQYXNzd29yZChldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaXNQYXNzd29yZFNob3cgPSAhdGhpcy5pc1Bhc3N3b3JkU2hvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWV0aG9kIHJldHVybiBpZiBhIGZpZWxkIGlzIHZhbGlkIG9yIG5vdFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkIGZvcm0gZmllbGQgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZm9ybSBmaWVsZCBzaG91bGQgZGlzcGxheSBhbiBlcnJvciwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc0Vycm9yU3R5bGUoZmllbGQ6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIWZpZWxkLnZhbGlkICYmIGZpZWxkLmRpcnR5ICYmICFmaWVsZC5wcmlzdGluZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmltIHVzZXJuYW1lXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRcbiAgICAgKi9cbiAgICB0cmltVXNlcm5hbWUoZXZlbnQ6IGFueSkge1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWUudHJpbSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgZm9ybUVycm9yIHZhbHVlc1xuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdEZvcm1FcnJvcigpIHtcbiAgICAgICAgdGhpcy5mb3JtRXJyb3IgPSB7XG4gICAgICAgICAgICB1c2VybmFtZTogJycsXG4gICAgICAgICAgICBwYXNzd29yZDogJydcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0IGZvcm0gZmllbGRzIG1lc3NhZ2VzXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0Rm9ybUZpZWxkc01lc3NhZ2VzKCkge1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0ge1xuICAgICAgICAgICAgdXNlcm5hbWU6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ0xPR0lOLk1FU1NBR0VTLlVTRVJOQU1FLVJFUVVJUkVEJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWlubGVuZ3RoOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnTE9HSU4uTUVTU0FHRVMuVVNFUk5BTUUtTUlOJyxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IHRoaXMubWluTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ0xPR0lOLk1FU1NBR0VTLlBBU1NXT1JELVJFUVVJUkVEJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRGb3JtRmllbGRzRGVmYXVsdCgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xuICAgICAgICAgICAgdXNlcm5hbWU6IFsnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm1pbkxlbmd0aCldKV0sXG4gICAgICAgICAgICBwYXNzd29yZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHRoZSBlcnJvciBmbGFnXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXNhYmxlRXJyb3IoKSB7XG4gICAgICAgIHRoaXMuaXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluaXRGb3JtRXJyb3IoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLWxvZ2luLWNvbnRlbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBiYWNrZ3JvdW5kSW1hZ2VVcmwgKyAnKSdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLWllMTFGaXhlclBhcmVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWllMTFGaXhlckNoaWxkXCI+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cImFkZi1sb2dpbi1jYXJkLXdpZGVcIj5cbiAgICAgICAgICAgICAgICA8Zm9ybSBpZD1cImFkZi1sb2dpbi1mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdChmb3JtLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwiYWRmLWxvZ2luLWNhcmQtaGVhZGVyLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWFsZnJlc2NvLWxvZ29cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUhFQURFUiBURU1QTEFURS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0ZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nRm9yT2ZdPVwiW2RhdGFdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0ZvclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFoZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtbG9naW4taW1nLWxvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWltZy1sb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImxvZ29JbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwie3sgJ0xPR0lOLkxPR08nIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1sb2dpbi1jb250cm9sc1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tRVJST1JTIEFSRUEtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZXJyb3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJsb2dpbi1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJsb2dpbi1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1lcnJvciAgYWRmLWVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYWRmLWVycm9yLWljb25cIj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtbG9naW4tZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXJyb3JNc2cgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3NvTG9naW5cIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1VU0VSTkFNRSBGSUVMRC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtbG9naW5fX2ZpZWxkIGFkZi1sb2dpbi1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhZGYtaXMtaW52YWxpZCc6IGlzRXJyb3JTdHlsZShmb3JtLmNvbnRyb2xzLnVzZXJuYW1lKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYWRmLWZ1bGwtd2lkdGggYWRmLWxvZ2luLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRQbGFjZWhvbGRlcj1cIm5ldmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImFkZi1sb2dpbi1mb3JtLWlucHV0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snTE9HSU4uTEFCRUwuVVNFUk5BTUUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInRyaW1Vc2VybmFtZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybUVycm9yWyd1c2VybmFtZSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4tdmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInVzZXJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInVzZXJuYW1lLWVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxvZ2luLWVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInVzZXJuYW1lLWVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybUVycm9yWyd1c2VybmFtZSddIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1QQVNTV09SRCBGSUVMRC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtbG9naW5fX2ZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi1mdWxsLXdpZHRoIGFkZi1sb2dpbi1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0UGxhY2Vob2xkZXI9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJhZGYtbG9naW4tZm9ybS1pbnB1dC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0xPR0lOLkxBQkVMLlBBU1NXT1JEJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpc1Bhc3N3b3JkU2hvdyA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicGFzc3dvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoaXNQYXNzd29yZFNob3cgPyAnTE9HSU4uQVJJQS1MQUJFTC5ISURFLVBBU1NXT1JEJyA6ICdMT0dJTi5BUklBLUxBQkVMLlNIT1ctUEFTU1dPUkQnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93UGFzc3dvcmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVTaG93UGFzc3dvcmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJpc1Bhc3N3b3JkU2hvdyA/ICdoaWRlX3Bhc3N3b3JkJyA6ICdzaG93X3Bhc3N3b3JkJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi1sb2dpbi1mb3JtLXBhc3N3b3JkLWljb24gYWRmLWxvZ2luLXBhc3N3b3JkLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNQYXNzd29yZFNob3cgPyAndmlzaWJpbGl0eScgOiAndmlzaWJpbGl0eV9vZmYnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1sb2dpbi12YWxpZGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm1FcnJvclsncGFzc3dvcmQnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJwYXNzd29yZC1yZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJwYXNzd29yZC1yZXF1aXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1FcnJvclsncGFzc3dvcmQnXSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tQ1VTVE9NIENPTlRFTlQtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImxvZ2luLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtaXNDaGVja2luZ109XCJhY3R1YWxMb2dpblN0ZXAgPT09IExvZ2luU3RlcHMuQ2hlY2tpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFkZi1pc1dlbGNvbWVdPVwiYWN0dWFsTG9naW5TdGVwID09PSBMb2dpblN0ZXBzLldlbGNvbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibG9naW4tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidMT0dJTi5CVVRUT04uTE9HSU4nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0dWFsTG9naW5TdGVwID09PSBMb2dpblN0ZXBzLkxhbmRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1idXR0b24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdMT0dJTi5CVVRUT04uTE9HSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdHVhbExvZ2luU3RlcCA9PT0gTG9naW5TdGVwcy5DaGVja2luZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtaW50ZXJhY3RpdmUtbG9naW4tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWxvZ2luLWJ1dHRvbi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdMT0dJTi5CVVRUT04uQ0hFQ0tJTkcnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWxvZ2luLXNwaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIGlkPVwiY2hlY2tpbmctc3Bpbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxvZ2luLWNoZWNraW5nLXNwaW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3Ryb2tlV2lkdGhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaWFtZXRlcl09XCIyNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3R1YWxMb2dpblN0ZXAgPT09IExvZ2luU3RlcHMuV2VsY29tZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtaW50ZXJhY3RpdmUtbG9naW4tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWxvZ2luLWJ1dHRvbi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdMT0dJTi5CVVRUT04uV0VMQ09NRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi13ZWxjb21lLWljb25cIj5kb25lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dSZW1lbWJlck1lXCIgY2xhc3M9XCJhZGYtbG9naW5fX3JlbWVtYmVyLW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggaWQ9XCJhZGYtbG9naW4tcmVtZW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4tcmVtZW1iZXItbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlbWVtYmVyTWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwicmVtZW1iZXJNZSA9ICFyZW1lbWJlck1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWxvZ2luLXJlbWVtYmVyLW1lLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0xPR0lOLkxBQkVMLlJFTUVNQkVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3NvTG9naW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImltcGxpY2l0TG9naW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImxvZ2luLWJ1dHRvbi1zc29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTE9HSU4uQlVUVE9OLlNTTycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJsb2dpbi1idXR0b24tc3NvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWxvZ2luLWJ1dHRvbi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdMT0dJTi5CVVRUT04uU1NPJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGUgfHwgc2hvd0xvZ2luQWN0aW9uc1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWxvZ2luLWFjdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tRk9PVEVSIFRFTVBMQVRFLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0ZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdGb3JPZl09XCJbZGF0YV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdGb3JUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2dpbi1hY3Rpb25cIiAqbmdJZj1cIiFmb290ZXJUZW1wbGF0ZSAmJiBzaG93TG9naW5BY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJhZGYtbG9naW4tYWN0aW9uLWxlZnRcIiBjbGFzcz1cImFkZi1sb2dpbi1hY3Rpb24tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7IG5lZWRIZWxwTGluayB9fVwiPnt7ICdMT0dJTi5BQ1RJT04uSEVMUCcgfCB0cmFuc2xhdGUgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWRmLWxvZ2luLWFjdGlvbi1yaWdodFwiIGNsYXNzPVwiYWRmLWxvZ2luLWFjdGlvbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7IHJlZ2lzdGVyTGluayB9fVwiPnt7ICdMT0dJTi5BQ1RJT04uUkVHSVNURVInIHwgdHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jb3B5cmlnaHRcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJsb2dpbi1jb3B5cmlnaHRcIj5cbiAgICAgICAgICAgICAgICB7eyBjb3B5cmlnaHRUZXh0IH19XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9sb2dpbi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvbG9naW4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIs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aVdBVzVCLGNBQWM7c0JBRGIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixPQUFPO3NCQUROLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBBcHBDb25maWdWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgQmFzaWNBbGZyZXNjb0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aCc7XG5pbXBvcnQgeyBPaWRjQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9vaWRjL29pZGMtYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RyYW5zbGF0aW9uJztcblxuaW1wb3J0IHsgTG9naW5FcnJvckV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvZ2luLWVycm9yLmV2ZW50JztcbmltcG9ydCB7IExvZ2luU3VibWl0RXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9naW4tc3VibWl0LmV2ZW50JztcbmltcG9ydCB7IExvZ2luU3VjY2Vzc0V2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvZ2luLXN1Y2Nlc3MuZXZlbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG5lbnVtIExvZ2luU3RlcHMge1xuICAgIExhbmRpbmcgPSAwLFxuICAgIENoZWNraW5nID0gMSxcbiAgICBXZWxjb21lID0gMlxufVxuXG5pbnRlcmZhY2UgVmFsaWRhdGlvbk1lc3NhZ2Uge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgcGFyYW1zPzogYW55O1xufVxuXG5pbnRlcmZhY2UgTG9naW5Gb3JtVmFsdWVzIHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWxvZ2luJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRDYXJkTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGVcbiAgICBdLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtbG9naW4nIH1cbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGlzUGFzc3dvcmRTaG93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTaG91bGQgdGhlIGBSZW1lbWJlciBtZWAgY2hlY2tib3ggYmUgc2hvd24/IFdoZW4gc2VsZWN0ZWQsIHRoaXNcbiAgICAgKiBvcHRpb24gd2lsbCByZW1lbWJlciB0aGUgbG9nZ2VkLWluIHVzZXIgYWZ0ZXIgdGhlIGJyb3dzZXIgaXMgY2xvc2VkXG4gICAgICogdG8gYXZvaWQgbG9nZ2luZyBpbiByZXBlYXRlZGx5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JlbWVtYmVyTWU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFNob3VsZCB0aGUgZXh0cmEgYWN0aW9ucyAoYE5lZWQgSGVscGAsIGBSZWdpc3RlcmAsIGV0YykgYmUgc2hvd24/ICovXG4gICAgQElucHV0KClcbiAgICBzaG93TG9naW5BY3Rpb25zOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBTZXRzIHRoZSBVUkwgb2YgdGhlIE5FRUQgSEVMUCBsaW5rIGluIHRoZSBmb290ZXIuICovXG4gICAgQElucHV0KClcbiAgICBuZWVkSGVscExpbms6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIFNldHMgdGhlIFVSTCBvZiB0aGUgUkVHSVNURVIgbGluayBpbiB0aGUgZm9vdGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVnaXN0ZXJMaW5rOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBQYXRoIHRvIGEgY3VzdG9tIGxvZ28gaW1hZ2UuICovXG4gICAgQElucHV0KClcbiAgICBsb2dvSW1hZ2VVcmw6IHN0cmluZyA9ICcuL2Fzc2V0cy9pbWFnZXMvYWxmcmVzY28tbG9nby5zdmcnO1xuXG4gICAgLyoqIFBhdGggdG8gYSBjdXN0b20gYmFja2dyb3VuZCBpbWFnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGJhY2tncm91bmRJbWFnZVVybDogc3RyaW5nID0gJy4vYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLnN2Zyc7XG5cbiAgICAvKiogVGhlIGNvcHlyaWdodCB0ZXh0IGJlbG93IHRoZSBsb2dpbiBib3guICovXG4gICAgQElucHV0KClcbiAgICBjb3B5cmlnaHRUZXh0OiBzdHJpbmcgPSAnXFx1MDBBOSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nO1xuXG4gICAgLyoqIEN1c3RvbSB2YWxpZGF0aW9uIHJ1bGVzIGZvciB0aGUgbG9naW4gZm9ybS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpZWxkc1ZhbGlkYXRpb246IGFueTtcblxuICAgIC8qKiBSb3V0ZSB0byByZWRpcmVjdCB0byBvbiBzdWNjZXNzZnVsIGxvZ2luLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3VjY2Vzc1JvdXRlOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbG9naW4gaXMgc3VjY2Vzc2Z1bC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxMb2dpblN1Y2Nlc3NFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGxvZ2luIGZhaWxzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxMb2dpbkVycm9yRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBsb2dpbiBmb3JtIGlzIHN1Ym1pdHRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGVjdXRlU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxMb2dpblN1Ym1pdEV2ZW50PigpO1xuXG4gICAgc3NvTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgaXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGVycm9yTXNnOiBzdHJpbmc7XG4gICAgYWN0dWFsTG9naW5TdGVwOiBhbnkgPSBMb2dpblN0ZXBzLkxhbmRpbmc7XG4gICAgTG9naW5TdGVwcyA9IExvZ2luU3RlcHM7XG4gICAgcmVtZW1iZXJNZTogYm9vbGVhbiA9IHRydWU7XG4gICAgZm9ybUVycm9yOiB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgbWluTGVuZ3RoOiBudW1iZXIgPSAyO1xuICAgIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGRhdGE6IGFueTtcblxuICAgIHByaXZhdGUgX21lc3NhZ2U6IHsgW2lkOiBzdHJpbmddOiB7IFtpZDogc3RyaW5nXTogVmFsaWRhdGlvbk1lc3NhZ2UgfSB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2ZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBiYXNpY0FsZnJlc2NvQXV0aFNlcnZpY2U6IEJhc2ljQWxmcmVzY29BdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBvaWRjQXV0aGVudGljYXRpb25TZXJ2aWNlOiBPaWRjQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRGb3JtRXJyb3IoKTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUZpZWxkc0RlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUZpZWxkc01lc3NhZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5zdWNjZXNzUm91dGUgPSB0aGlzLmFwcENvbmZpZy5nZXQ8c3RyaW5nPignc3VjY2Vzc1JvdXRlJywgdGhpcy5zdWNjZXNzUm91dGUpO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzTG9nZ2VkSW4oKSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuc3VjY2Vzc1JvdXRlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5pc09hdXRoKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYXV0aCA9IHRoaXMuYXBwQ29uZmlnLm9hdXRoMjtcbiAgICAgICAgICAgICAgICBpZiAob2F1dGg/LnNpbGVudExvZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1NTT0xvZ2luKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYXV0aD8uaW1wbGljaXRGbG93IHx8IG9hdXRoPy5jb2RlRmxvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNzb0xvZ2luID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHBhcmFtc1sncmVkaXJlY3RVcmwnXTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuYXBwQ29uZmlnLmdldDxzdHJpbmc+KEFwcENvbmZpZ1ZhbHVlcy5QUk9WSURFUlMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNpY0FsZnJlc2NvQXV0aFNlcnZpY2Uuc2V0UmVkaXJlY3QoeyBwcm92aWRlciwgdXJsIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWVsZHNWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLl9mYi5ncm91cCh0aGlzLmZpZWxkc1ZhbGlkYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMub25WYWx1ZUNoYW5nZWQoZGF0YSkpO1xuICAgIH1cblxuICAgIHN1Ym1pdCgpIHtcbiAgICAgICAgdGhpcy5vblN1Ym1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgIH1cblxuICAgIHJlZGlyZWN0VG9TU09Mb2dpbigpIHtcbiAgICAgICAgdGhpcy5vaWRjQXV0aGVudGljYXRpb25TZXJ2aWNlLnNzb0xvZ2luKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGNhbGxlZCBvbiBzdWJtaXQgZm9ybVxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlcyBsb2dpbiBmb3JtIHZhbHVlc1xuICAgICAqL1xuICAgIG9uU3VibWl0KHZhbHVlczogTG9naW5Gb3JtVmFsdWVzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUVycm9yKCk7XG5cbiAgICAgICAgY29uc3QgYXJncyA9IG5ldyBMb2dpblN1Ym1pdEV2ZW50KHtcbiAgICAgICAgICAgIGNvbnRyb2xzOiB7IHVzZXJuYW1lOiB0aGlzLmZvcm0uY29udHJvbHMudXNlcm5hbWUgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leGVjdXRlU3VibWl0LmVtaXQoYXJncyk7XG5cbiAgICAgICAgaWYgKCFhcmdzLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0dWFsTG9naW5TdGVwID0gTG9naW5TdGVwcy5DaGVja2luZztcblxuICAgICAgICAgICAgdGhpcy5wZXJmb3JtTG9naW4odmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGltcGxpY2l0TG9naW4oKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzTG9nZ2VkSW4oKSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuc3VjY2Vzc1JvdXRlXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vaWRjQXV0aGVudGljYXRpb25TZXJ2aWNlLnNzb0xvZ2luKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1ldGhvZCBjaGVjayB0aGUgZXJyb3IgaW4gdGhlIGZvcm0gYW5kIHB1c2ggdGhlIGVycm9yIGluIHRoZSBmb3JtRXJyb3Igb2JqZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSBmb3JtIGRhdGFcbiAgICAgKi9cbiAgICBvblZhbHVlQ2hhbmdlZChkYXRhOiBhbnkpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlRXJyb3IoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBpbiB0aGlzLmZvcm1FcnJvcikge1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRXJyb3JbZmllbGRdID0gJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkXS5lcnJvcnMgJiYgZGF0YVtmaWVsZF0gIT09ICcnKSB8fCAodGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkXS5kaXJ0eSAmJiAhdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkXS52YWxpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZm9ybS5jb250cm9sc1tmaWVsZF0uZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VbZmllbGRdW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2U/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtZXNzYWdlLnZhbHVlLCBtZXNzYWdlLnBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVycm9yW2ZpZWxkXSArPSB0cmFuc2xhdGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBlcmZvcm1Mb2dpbih2YWx1ZXM6IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSB7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW4odmFsdWVzLnVzZXJuYW1lLCB2YWx1ZXMucGFzc3dvcmQsIHRoaXMucmVtZW1iZXJNZSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgYXN5bmMgKHRva2VuOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuYmFzaWNBbGZyZXNjb0F1dGhTZXJ2aWNlLmdldFJlZGlyZWN0KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFjdHVhbExvZ2luU3RlcCA9IExvZ2luU3RlcHMuV2VsY29tZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlcy5zZXRTdG9yYWdlUHJlZml4KHZhbHVlcy51c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgdmFsdWVzLnBhc3N3b3JkID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdChuZXcgTG9naW5TdWNjZXNzRXZlbnQodG9rZW4sIHZhbHVlcy51c2VybmFtZSwgbnVsbCkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0VXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzaWNBbGZyZXNjb0F1dGhTZXJ2aWNlLnNldFJlZGlyZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJlZGlyZWN0VXJsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3VjY2Vzc1JvdXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnN1Y2Nlc3NSb3V0ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdHVhbExvZ2luU3RlcCA9IExvZ2luU3RlcHMuTGFuZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlFcnJvck1lc3NhZ2UoZXJyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChuZXcgTG9naW5FcnJvckV2ZW50KGVycikpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGFuZCBkaXNwbGF5IHRoZSByaWdodCBlcnJvciBtZXNzYWdlIGluIHRoZSBVSVxuICAgICAqXG4gICAgICogQHBhcmFtIGVyciBlcnJvciBvYmplY3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc3BsYXlFcnJvck1lc3NhZ2UoZXJyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVyci5lcnJvcj8uY3Jvc3NEb21haW4gJiYgZXJyLmVycm9yLm1lc3NhZ2UuaW5kZXhPZignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTXNnID0gZXJyLmVycm9yLm1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLnN0YXR1cyA9PT0gNDAzICYmIGVyci5tZXNzYWdlLmluZGV4T2YoJ0ludmFsaWQgQ1NSRi10b2tlbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1zZyA9ICdMT0dJTi5NRVNTQUdFUy5MT0dJTi1FUlJPUi1DU1JGJztcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuc3RhdHVzID09PSA0MDMgJiYgZXJyLm1lc3NhZ2UuaW5kZXhPZignVGhlIHN5c3RlbSBpcyBjdXJyZW50bHkgaW4gcmVhZC1vbmx5IG1vZGUnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNc2cgPSAnTE9HSU4uTUVTU0FHRVMuTE9HSU4tRUNNLUxJQ0VOU0UnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1zZyA9ICdMT0dJTi5NRVNTQUdFUy5MT0dJTi1FUlJPUi1DUkVERU5USUFMUyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSBjdXN0b20gZm9ybSBlcnJvciBmb3IgYSBmaWVsZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkIGZpZWxkXG4gICAgICogQHBhcmFtIG1zZyBlcnJvciBtZXNzYWdlXG4gICAgICovXG4gICAgcHVibGljIGFkZEN1c3RvbUZvcm1FcnJvcihmaWVsZDogc3RyaW5nLCBtc2c6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcltmaWVsZF0gKz0gbXNnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBhIGN1c3RvbSB2YWxpZGF0aW9uIHJ1bGUgZXJyb3IgZm9yIGEgZmllbGRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZCBmaWVsZFxuICAgICAqIEBwYXJhbSBydWxlSWQgLSBpLmUuIHJlcXVpcmVkIHwgbWlubGVuZ3RoIHwgbWF4bGVuZ3RoXG4gICAgICogQHBhcmFtIG1zZyBtZXNzYWdlXG4gICAgICogQHBhcmFtIHBhcmFtcyBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgYWRkQ3VzdG9tVmFsaWRhdGlvbkVycm9yKGZpZWxkOiBzdHJpbmcsIHJ1bGVJZDogc3RyaW5nLCBtc2c6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XG4gICAgICAgIGlmIChmaWVsZCAhPT0gJ19fcHJvdG9fXycgJiYgZmllbGQgIT09ICdjb25zdHJ1Y3RvcicgJiYgZmllbGQgIT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlW2ZpZWxkXVtydWxlSWRdID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBtc2csXG4gICAgICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheSBhbmQgaGlkZSB0aGUgcGFzc3dvcmQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgaW5wdXQgZXZlbnRcbiAgICAgKi9cbiAgICB0b2dnbGVTaG93UGFzc3dvcmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzUGFzc3dvcmRTaG93ID0gIXRoaXMuaXNQYXNzd29yZFNob3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1ldGhvZCByZXR1cm4gaWYgYSBmaWVsZCBpcyB2YWxpZCBvciBub3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZCBmb3JtIGZpZWxkIHRvIGNoZWNrXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGZvcm0gZmllbGQgc2hvdWxkIGRpc3BsYXkgYW4gZXJyb3IsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNFcnJvclN0eWxlKGZpZWxkOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFmaWVsZC52YWxpZCAmJiBmaWVsZC5kaXJ0eSAmJiAhZmllbGQucHJpc3RpbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpbSB1c2VybmFtZVxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IGV2ZW50XG4gICAgICovXG4gICAgdHJpbVVzZXJuYW1lKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IGZvcm1FcnJvciB2YWx1ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRGb3JtRXJyb3IoKSB7XG4gICAgICAgIHRoaXMuZm9ybUVycm9yID0ge1xuICAgICAgICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgICAgICAgcGFzc3dvcmQ6ICcnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdCBmb3JtIGZpZWxkcyBtZXNzYWdlc1xuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdEZvcm1GaWVsZHNNZXNzYWdlcygpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZSA9IHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdMT0dJTi5NRVNTQUdFUy5VU0VSTkFNRS1SRVFVSVJFRCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1pbmxlbmd0aDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ0xPR0lOLk1FU1NBR0VTLlVTRVJOQU1FLU1JTicsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkxlbmd0aFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdMT0dJTi5NRVNTQUdFUy5QQVNTV09SRC1SRVFVSVJFRCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Rm9ybUZpZWxkc0RlZmF1bHQoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBbJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5MZW5ndGgpXSldLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZSB0aGUgZXJyb3IgZmxhZ1xuICAgICAqL1xuICAgIHByaXZhdGUgZGlzYWJsZUVycm9yKCkge1xuICAgICAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUVycm9yKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1sb2dpbi1jb250ZW50XCIgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiJ3VybCgnICsgYmFja2dyb3VuZEltYWdlVXJsICsgJyknXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1pZTExRml4ZXJQYXJlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1pZTExRml4ZXJDaGlsZFwiPlxuXG4gICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJhZGYtbG9naW4tY2FyZC13aWRlXCI+XG4gICAgICAgICAgICAgICAgPGZvcm0gaWQ9XCJhZGYtbG9naW4tZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgIChzdWJtaXQpPVwib25TdWJtaXQoZm9ybS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cImFkZi1sb2dpbi1jYXJkLWhlYWRlci10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hbGZyZXNjby1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1IRUFERVIgVEVNUExBVEUtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdGb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0Zvck9mXT1cIltkYXRhXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdGb3JUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhaGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxvZ2luLWltZy1sb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1pbWctbG9nb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJsb2dvSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInt7ICdMT0dJTi5MT0dPJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtbG9naW4tY29udHJvbHNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUVSUk9SUyBBUkVBLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0Vycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibG9naW4tZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibG9naW4tZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtZXJyb3IgIGFkZi1lcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi1lcnJvci1pY29uXCI+d2FybmluZzwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLWxvZ2luLWVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVycm9yTXNnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNzb0xvZ2luXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tVVNFUk5BTUUgRklFTEQtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWxvZ2luX19maWVsZCBhZGYtbG9naW4tY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWRmLWlzLWludmFsaWQnOiBpc0Vycm9yU3R5bGUoZm9ybS5jb250cm9scy51c2VybmFtZSl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi1mdWxsLXdpZHRoIGFkZi1sb2dpbi1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0UGxhY2Vob2xkZXI9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJhZGYtbG9naW4tZm9ybS1pbnB1dC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0xPR0lOLkxBQkVMLlVTRVJOQU1FJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJ1c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJ0cmltVXNlcm5hbWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZvcm1FcnJvclsndXNlcm5hbWUnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxvZ2luLXZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJ1c2VybmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJ1c2VybmFtZS1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJ1c2VybmFtZS1lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1FcnJvclsndXNlcm5hbWUnXSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tUEFTU1dPUkQgRklFTEQtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWxvZ2luX19maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtZnVsbC13aWR0aCBhZGYtbG9naW4tZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdFBsYWNlaG9sZGVyPVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiYWRmLWxvZ2luLWZvcm0taW5wdXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydMT0dJTi5MQUJFTC5QQVNTV09SRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXNQYXNzd29yZFNob3cgPyAndGV4dCcgOiAncGFzc3dvcmQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cInBhc3N3b3JkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGlzUGFzc3dvcmRTaG93ID8gJ0xPR0lOLkFSSUEtTEFCRUwuSElERS1QQVNTV09SRCcgOiAnTE9HSU4uQVJJQS1MQUJFTC5TSE9XLVBBU1NXT1JEJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd1Bhc3N3b3JkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlU2hvd1Bhc3N3b3JkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiaXNQYXNzd29yZFNob3cgPyAnaGlkZV9wYXNzd29yZCcgOiAnc2hvd19wYXNzd29yZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtbG9naW4tZm9ybS1wYXNzd29yZC1pY29uIGFkZi1sb2dpbi1wYXNzd29yZC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzUGFzc3dvcmRTaG93ID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtbG9naW4tdmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRXJyb3JbJ3Bhc3N3b3JkJ11cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwicGFzc3dvcmQtcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4tZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwicGFzc3dvcmQtcmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtRXJyb3JbJ3Bhc3N3b3JkJ10gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUNVU1RPTSBDT05URU5ULS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJsb2dpbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWRmLWlzQ2hlY2tpbmddPVwiYWN0dWFsTG9naW5TdGVwID09PSBMb2dpblN0ZXBzLkNoZWNraW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtaXNXZWxjb21lXT1cImFjdHVhbExvZ2luU3RlcCA9PT0gTG9naW5TdGVwcy5XZWxjb21lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImxvZ2luLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTE9HSU4uQlVUVE9OLkxPR0lOJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjdHVhbExvZ2luU3RlcCA9PT0gTG9naW5TdGVwcy5MYW5kaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtbG9naW4tYnV0dG9uLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnTE9HSU4uQlVUVE9OLkxPR0lOJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3R1YWxMb2dpblN0ZXAgPT09IExvZ2luU3RlcHMuQ2hlY2tpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWludGVyYWN0aXZlLWxvZ2luLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1sb2dpbi1idXR0b24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnTE9HSU4uQlVUVE9OLkNIRUNLSU5HJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2dpbi1zcGlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBpZD1cImNoZWNraW5nLXNwaW5uZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1sb2dpbi1jaGVja2luZy1zcGlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cm9rZVdpZHRoXT1cIjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0dWFsTG9naW5TdGVwID09PSBMb2dpblN0ZXBzLldlbGNvbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWludGVyYWN0aXZlLWxvZ2luLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1sb2dpbi1idXR0b24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnTE9HSU4uQlVUVE9OLldFTENPTUUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtd2VsY29tZS1pY29uXCI+ZG9uZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UmVtZW1iZXJNZVwiIGNsYXNzPVwiYWRmLWxvZ2luX19yZW1lbWJlci1tZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IGlkPVwiYWRmLWxvZ2luLXJlbWVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxvZ2luLXJlbWVtYmVyLW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyZW1lbWJlck1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInJlbWVtYmVyTWUgPSAhcmVtZW1iZXJNZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2dpbi1yZW1lbWJlci1tZS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdMT0dJTi5MQUJFTC5SRU1FTUJFUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNzb0xvZ2luXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpbXBsaWNpdExvZ2luKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJsb2dpbi1idXR0b24tc3NvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0xPR0lOLkJVVFRPTi5TU08nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxvZ2luLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibG9naW4tYnV0dG9uLXNzb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1sb2dpbi1idXR0b24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnTE9HSU4uQlVUVE9OLlNTTycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyAqbmdJZj1cImZvb3RlclRlbXBsYXRlIHx8IHNob3dMb2dpbkFjdGlvbnNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2dpbi1hY3Rpb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUZPT1RFUiBURU1QTEFURS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdGb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nRm9yT2ZdPVwiW2RhdGFdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nRm9yVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtbG9naW4tYWN0aW9uXCIgKm5nSWY9XCIhZm9vdGVyVGVtcGxhdGUgJiYgc2hvd0xvZ2luQWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWRmLWxvZ2luLWFjdGlvbi1sZWZ0XCIgY2xhc3M9XCJhZGYtbG9naW4tYWN0aW9uLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBuZWVkSGVscExpbmsgfX1cIj57eyAnTE9HSU4uQUNUSU9OLkhFTFAnIHwgdHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImFkZi1sb2dpbi1hY3Rpb24tcmlnaHRcIiBjbGFzcz1cImFkZi1sb2dpbi1hY3Rpb24tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyByZWdpc3RlckxpbmsgfX1cIj57eyAnTE9HSU4uQUNUSU9OLlJFR0lTVEVSJyB8IHRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtY29weXJpZ2h0XCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwibG9naW4tY29weXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAge3sgY29weXJpZ2h0VGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==