@theseam/ui-common 0.4.12-beta.0 → 0.4.13

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 (119) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +1 -10
  3. package/datatable/services/columns-manager.service.d.ts +0 -7
  4. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  5. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  6. package/esm2020/datatable/datatable/datatable.component.mjs +4 -20
  7. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  8. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  9. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  10. package/esm2020/datatable/services/columns-manager.service.mjs +2 -27
  11. package/esm2020/datatable/utils/create-action-menu-column.mjs +3 -4
  12. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  13. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  14. package/esm2020/framework/base-layout/base-layout.component.mjs +4 -14
  15. package/esm2020/framework/base-layout/base-layout.module.mjs +1 -6
  16. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +5 -21
  17. package/esm2020/framework/base-layout/index.mjs +1 -2
  18. package/esm2020/framework/public-api.mjs +1 -2
  19. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  20. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +67 -28
  21. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +5 -12
  22. package/esm2020/framework/side-nav/side-nav.component.mjs +38 -116
  23. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  24. package/esm2020/framework/side-nav/side-nav.module.mjs +39 -9
  25. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  26. package/esm2020/framework/top-bar/index.mjs +1 -3
  27. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +4 -10
  28. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +4 -6
  29. package/esm2020/framework/top-bar/top-bar.component.mjs +11 -55
  30. package/esm2020/framework/top-bar/top-bar.module.mjs +5 -15
  31. package/esm2020/layout/layout.service.mjs +2 -12
  32. package/esm2020/menu/menu-item.component.mjs +3 -3
  33. package/esm2020/menu/menu-toggle.directive.mjs +2 -7
  34. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +2 -4
  35. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  36. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  37. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  38. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  39. package/fesm2015/theseam-ui-common-datatable.mjs +10 -56
  40. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  41. package/fesm2015/theseam-ui-common-framework.mjs +156 -905
  42. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2015/theseam-ui-common-layout.mjs +2 -11
  44. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  45. package/fesm2015/theseam-ui-common-menu.mjs +3 -8
  46. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  47. package/fesm2015/theseam-ui-common-table-cell-types.mjs +1 -3
  48. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  49. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  50. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  51. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  52. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  53. package/fesm2020/theseam-ui-common-datatable.mjs +10 -56
  54. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  55. package/fesm2020/theseam-ui-common-framework.mjs +156 -907
  56. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  57. package/fesm2020/theseam-ui-common-layout.mjs +2 -11
  58. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  59. package/fesm2020/theseam-ui-common-menu.mjs +3 -8
  60. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  61. package/fesm2020/theseam-ui-common-table-cell-types.mjs +1 -3
  62. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  63. package/framework/base-layout/base-layout.component.d.ts +2 -4
  64. package/framework/base-layout/base-layout.component.scss +10 -18
  65. package/framework/base-layout/base-layout.module.d.ts +10 -11
  66. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +3 -8
  67. package/framework/base-layout/index.d.ts +0 -1
  68. package/framework/base-layout/styles/_variables.scss +0 -21
  69. package/framework/public-api.d.ts +0 -1
  70. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +14 -7
  71. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -7
  72. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +3 -5
  73. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +6 -3
  74. package/framework/side-nav/side-nav.component.d.ts +1 -13
  75. package/framework/side-nav/side-nav.component.scss +1 -0
  76. package/framework/side-nav/side-nav.models.d.ts +1 -7
  77. package/framework/side-nav/side-nav.module.d.ts +9 -1
  78. package/framework/side-nav/styles/_themes/light/_variables.scss +14 -24
  79. package/framework/side-nav/styles/_themes/primary/_variables.scss +0 -8
  80. package/framework/top-bar/index.d.ts +0 -2
  81. package/framework/top-bar/top-bar-item.directive.d.ts +1 -4
  82. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +2 -5
  83. package/framework/top-bar/top-bar.component.d.ts +3 -25
  84. package/framework/top-bar/top-bar.component.scss +2 -7
  85. package/framework/top-bar/top-bar.module.d.ts +8 -10
  86. package/layout/layout.service.d.ts +1 -9
  87. package/menu/menu-toggle.directive.d.ts +1 -2
  88. package/package.json +2 -2
  89. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +14 -57
  90. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +5 -33
  91. package/datatable/models/action-item-column-position.d.ts +0 -13
  92. package/esm2020/datatable/models/action-item-column-position.mjs +0 -5
  93. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +0 -16
  94. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +0 -55
  95. package/esm2020/framework/nav/index.mjs +0 -6
  96. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +0 -227
  97. package/esm2020/framework/nav/nav-utils.mjs +0 -107
  98. package/esm2020/framework/nav/nav.models.mjs +0 -2
  99. package/esm2020/framework/nav/nav.module.mjs +0 -67
  100. package/esm2020/framework/nav/nav.service.mjs +0 -204
  101. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +0 -16
  102. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +0 -16
  103. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +0 -9
  104. package/framework/nav/_nav-theme.scss +0 -4
  105. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +0 -25
  106. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +0 -50
  107. package/framework/nav/index.d.ts +0 -5
  108. package/framework/nav/nav-item/nav-item.component.d.ts +0 -74
  109. package/framework/nav/nav-item/nav-item.component.scss +0 -203
  110. package/framework/nav/nav-utils.d.ts +0 -20
  111. package/framework/nav/nav.models.d.ts +0 -77
  112. package/framework/nav/nav.module.d.ts +0 -17
  113. package/framework/nav/nav.service.d.ts +0 -27
  114. package/framework/nav/styles/_themes/light/_variables.scss +0 -56
  115. package/framework/nav/styles/_themes/primary/_variables.scss +0 -56
  116. package/framework/nav/styles/_utilities.scss +0 -3
  117. package/framework/nav/styles/_variables.scss +0 -2
  118. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +0 -8
  119. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +0 -8
@@ -1,13 +1,13 @@
1
1
  import { __decorate } from "tslib";
2
- import { CommonModule } from '@angular/common';
3
2
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
3
+ import { faBars } from '@fortawesome/free-solid-svg-icons';
4
4
  import { InputBoolean } from '@theseam/ui-common/core';
5
- import { TheSeamIconModule } from '@theseam/ui-common/icon';
6
5
  import * as i0 from "@angular/core";
7
6
  import * as i1 from "@angular/common";
8
7
  import * as i2 from "@theseam/ui-common/icon";
9
8
  export class SideNavToggleComponent {
10
9
  constructor() {
10
+ this.faBars = faBars;
11
11
  this.expanded = false;
12
12
  this.toggleExpand = new EventEmitter();
13
13
  }
@@ -16,7 +16,7 @@ export class SideNavToggleComponent {
16
16
  }
17
17
  }
18
18
  SideNavToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- SideNavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavToggleComponent, isStandalone: true, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
19
+ SideNavToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n <ng-content></ng-content>\n</div>\n<button seamIconBtn [icon]=\"faBars\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn ml-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n</button>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{position:absolute;top:0;right:5px;color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
20
20
  __decorate([
21
21
  InputBoolean()
22
22
  ], SideNavToggleComponent.prototype, "expanded", void 0);
@@ -24,17 +24,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
24
24
  type: Component,
25
25
  args: [{ selector: 'seam-side-nav-toggle', host: {
26
26
  '[class.side-nav-toggle--compact]': '!expanded'
27
- }, imports: [
28
- CommonModule,
29
- TheSeamIconModule,
30
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
27
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-toggle--content\" *ngIf=\"expanded\">\n <ng-content></ng-content>\n</div>\n<button seamIconBtn [icon]=\"faBars\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn ml-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n</button>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{position:absolute;top:0;right:5px;color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
31
28
  }], propDecorators: { expanded: [{
32
29
  type: Input
33
- }], toggleIcon: [{
34
- type: Input
35
- }], toggleTpl: [{
36
- type: Input
37
30
  }], toggleExpand: [{
38
31
  type: Output
39
32
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvc2lkZS1uYXYvc2lkZS1uYXYtdG9nZ2xlL3NpZGUtbmF2LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LXRvZ2dsZS9zaWRlLW5hdi10b2dnbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRS9ILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN0RCxPQUFPLEVBQVksaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTs7OztBQWlCckUsTUFBTSxPQUFPLHNCQUFzQjtJQWZuQztRQWtCMkIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQU0vQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7S0FNbEQ7SUFKQyxNQUFNO1FBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixDQUFDOzttSEFiVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix3UkN0Qm5DLDRyQkF3QkEsOFhEVEksWUFBWSx5U0FDWixpQkFBaUI7QUFTTTtJQUFmLFlBQVksRUFBRTt3REFBaUI7MkZBSDlCLHNCQUFzQjtrQkFmbEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFHMUI7d0JBQ0osa0NBQWtDLEVBQUUsV0FBVztxQkFDaEQsV0FDUTt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjtxQkFDbEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSTs4QkFLUyxRQUFRO3NCQUFoQyxLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcbmltcG9ydCB7IFNlYW1JY29uLCBUaGVTZWFtSWNvbk1vZHVsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXNpZGUtbmF2LXRvZ2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc2lkZS1uYXYtdG9nZ2xlLS1jb21wYWN0XSc6ICchZXhwYW5kZWQnXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGhlU2VhbUljb25Nb2R1bGUsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2VG9nZ2xlQ29tcG9uZW50IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4cGFuZGVkOiBCb29sZWFuSW5wdXRcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZXhwYW5kZWQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHRvZ2dsZUljb246IFNlYW1JY29uIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIHRvZ2dsZVRwbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBAT3V0cHV0KCkgdG9nZ2xlRXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMudG9nZ2xlRXhwYW5kLmVtaXQoKVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzaWRlLW5hdi10b2dnbGUtLWNvbnRlbnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidG9nZ2xlVHBsOyBlbHNlIGljb25CdG5cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic2lkZS1uYXYtdG9nZ2xlLS1idG4gbXgtMVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+VG9nZ2xlIHNpZGViYXI8L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvZ2dsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2ljb25CdG4+XG4gIDxidXR0b24gc2VhbUljb25CdG4gW2ljb25dPVwidG9nZ2xlSWNvblwiXG4gICAgaWNvblR5cGU9XCJib3JkZXJsZXNzLXN0eWxlZC1zcXVhcmVcIlxuICAgIGJ0blNpemU9XCJzbVwiXG4gICAgY2xhc3M9XCJzaWRlLW5hdi10b2dnbGUtLWJ0biBteC0xXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIj5cbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5Ub2dnbGUgc2lkZWJhcjwvc3Bhbj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtdG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvc2lkZS1uYXYvc2lkZS1uYXYtdG9nZ2xlL3NpZGUtbmF2LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LXRvZ2dsZS9zaWRlLW5hdi10b2dnbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTs7OztBQVl0RCxNQUFNLE9BQU8sc0JBQXNCO0lBVm5DO1FBYUUsV0FBTSxHQUFHLE1BQU0sQ0FBQTtRQUVVLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFFL0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO0tBTWxEO0lBSkMsTUFBTTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDMUIsQ0FBQzs7bUhBWFUsc0JBQXNCO3VHQUF0QixzQkFBc0Isa05DakJuQyxrVUFVQTtBRFkyQjtJQUFmLFlBQVksRUFBRTt3REFBaUI7MkZBTDlCLHNCQUFzQjtrQkFWbEMsU0FBUzsrQkFDRSxzQkFBc0IsUUFHMUI7d0JBQ0osa0NBQWtDLEVBQUUsV0FBVztxQkFDaEQsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBT1osUUFBUTtzQkFBaEMsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IGZhQmFycyB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tc2lkZS1uYXYtdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGUtbmF2LXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zaWRlLW5hdi10b2dnbGUtLWNvbXBhY3RdJzogJyFleHBhbmRlZCdcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdlRvZ2dsZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9leHBhbmRlZDogQm9vbGVhbklucHV0XG5cbiAgZmFCYXJzID0gZmFCYXJzXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGV4cGFuZGVkID0gZmFsc2VcblxuICBAT3V0cHV0KCkgdG9nZ2xlRXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMudG9nZ2xlRXhwYW5kLmVtaXQoKVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzaWRlLW5hdi10b2dnbGUtLWNvbnRlbnRcIiAqbmdJZj1cImV4cGFuZGVkXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuPGJ1dHRvbiBzZWFtSWNvbkJ0biBbaWNvbl09XCJmYUJhcnNcIlxuICBpY29uVHlwZT1cImJvcmRlcmxlc3Mtc3R5bGVkLXNxdWFyZVwiXG4gIGJ0blNpemU9XCJzbVwiXG4gIGNsYXNzPVwic2lkZS1uYXYtdG9nZ2xlLS1idG4gbWwtMVwiXG4gIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5Ub2dnbGUgc2lkZWJhcjwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
@@ -1,29 +1,23 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { animate, animateChild, group, query, state, style, transition, trigger } from '@angular/animations';
3
3
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
- import { PortalModule, TemplatePortal } from '@angular/cdk/portal';
5
- import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, HostBinding, Inject, Input, Optional, Output, TemplateRef, ViewEncapsulation, } from '@angular/core';
6
- import { CommonModule } from '@angular/common';
7
- import { A11yModule } from '@angular/cdk/a11y';
4
+ import { TemplatePortal } from '@angular/cdk/portal';
5
+ import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, HostBinding, Inject, Input, Optional, Output, TemplateRef, ViewEncapsulation, } from '@angular/core';
8
6
  import { BehaviorSubject, combineLatest, Subject } from 'rxjs';
9
7
  import { distinctUntilChanged, map, shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';
10
- import { faBars } from '@fortawesome/free-solid-svg-icons';
11
- import { InputBoolean, InputNumber } from '@theseam/ui-common/core';
12
- import { TheSeamLayoutModule } from '@theseam/ui-common/layout';
13
- import { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar';
8
+ import { InputBoolean } from '@theseam/ui-common/core';
14
9
  import { THESEAM_BASE_LAYOUT_REF } from '../base-layout/index';
15
10
  import { BaseLayoutSideBarFooterDirective } from '../base-layout/directives/base-layout-side-bar-footer.directive';
16
- import { BaseLayoutSideBarHeaderDirective } from '../base-layout/directives/base-layout-side-bar-header.directive';
17
11
  import { THESEAM_SIDE_NAV_ACCESSOR } from './side-nav-tokens';
18
12
  import { TheSeamSideNavService } from './side-nav.service';
19
- import { SideNavToggleComponent } from './side-nav-toggle/side-nav-toggle.component';
20
- import { SideNavItemComponent } from './side-nav-item/side-nav-item.component';
21
13
  import * as i0 from "@angular/core";
22
14
  import * as i1 from "@theseam/ui-common/layout";
23
15
  import * as i2 from "./side-nav.service";
24
16
  import * as i3 from "@angular/common";
25
17
  import * as i4 from "@theseam/ui-common/scrollbar";
26
18
  import * as i5 from "@angular/cdk/portal";
19
+ import * as i6 from "./side-nav-item/side-nav-item.component";
20
+ import * as i7 from "./side-nav-toggle/side-nav-toggle.component";
27
21
  const EXPANDED_STATE = 'expanded';
28
22
  const COLLAPSED_STATE = 'collapsed';
29
23
  const EXPANDED_OVERLAY_STATE = 'expanded-overlay';
@@ -79,20 +73,14 @@ export class SideNavComponent {
79
73
  this._sideNav = _sideNav;
80
74
  this._baseLayoutRef = _baseLayoutRef;
81
75
  this._ngUnsubscribe = new Subject();
82
- this.faBars = faBars;
83
76
  // @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE
84
77
  // _sideNavExpand = EXPANDED_STATE
85
78
  // @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE
86
79
  this._sideNavExpand = 'initial';
87
80
  this.hasHeaderToggle = true;
88
- this.toggleIcon = faBars;
89
81
  this._items = new BehaviorSubject([]);
90
- this.indentSize = 10;
91
82
  this._expanded = new BehaviorSubject(true);
92
83
  this.expanded$ = this._expanded.asObservable();
93
- this.expandOrigin = 'left';
94
- this.expandHeight = '100%';
95
- this.expandWidth = 'calc(100vw - 50px)';
96
84
  this._overlay = new BehaviorSubject(false);
97
85
  this.overlay$ = this._overlay.asObservable();
98
86
  this._menuItemTooltipConfig = {
@@ -102,7 +90,7 @@ export class SideNavComponent {
102
90
  };
103
91
  this.toggleExpand = new EventEmitter();
104
92
  this._backdropHidden = new BehaviorSubject(true);
105
- this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._sideNav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
93
+ this.items$ = this._items.asObservable().pipe(switchMap(items => this._sideNav.createItemsObservable(items)), shareReplay({ bufferSize: 1, refCount: true }));
106
94
  this.isMobile$ = this._layout.isMobile$.pipe(tap(isMobile => isMobile ? this.collapse() : this.expand()));
107
95
  this.sideNavExpandedState$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => expanded
108
96
  ? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE
@@ -127,9 +115,6 @@ export class SideNavComponent {
127
115
  this.sideNavExpandedState$
128
116
  .pipe(takeUntil(this._ngUnsubscribe))
129
117
  .subscribe(v => this._sideNavExpand = v);
130
- if (this._sideBarHeaderTpl) {
131
- this._sideBarHeaderPortal = new TemplatePortal(this._sideBarHeaderTpl, this._viewContainerRef);
132
- }
133
118
  if (this._sideBarFooterTpl) {
134
119
  this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef);
135
120
  }
@@ -160,32 +145,16 @@ export class SideNavComponent {
160
145
  this._backdropHidden.next(true);
161
146
  }
162
147
  }
163
- get expandOriginTransform() {
164
- switch (this.expandOrigin) {
165
- case 'right':
166
- return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(100vw) translateX(-100%)'
167
- : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(100vw)' : null;
168
- case 'top':
169
- return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(0)'
170
- : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(-100%)' : null;
171
- case 'bottom':
172
- return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(100vh) translateY(-100%)'
173
- : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(100vh)' : null;
174
- case 'left':
175
- default:
176
- return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(0)'
177
- : this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(-100%)' : null;
178
- }
179
- }
180
148
  }
181
149
  SideNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TheSeamLayoutService }, { token: i2.TheSeamSideNavService }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Component });
182
- SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, isStandalone: true, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl", items: "items", hideEmptyIcon: "hideEmptyIcon", indentSize: "indentSize", expanded: "expanded", expandOrigin: "expandOrigin", expandHeight: "expandHeight", expandWidth: "expandWidth", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
150
+ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", items: "items", expanded: "expanded", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
183
151
  TheSeamSideNavService,
184
152
  {
185
153
  provide: THESEAM_SIDE_NAV_ACCESSOR,
186
- useExisting: SideNavComponent
154
+ // tslint:disable-next-line:no-use-before-declare
155
+ useExisting: forwardRef(() => SideNavComponent)
187
156
  },
188
- ], queries: [{ propertyName: "_sideBarHeaderTpl", first: true, predicate: BaseLayoutSideBarHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth\n }\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: TheSeamScrollbarModule }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded", "toggleIcon", "toggleTpl"], outputs: ["toggleExpand"] }], animations: [
157
+ ], queries: [{ propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i6.SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: i7.SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], animations: [
189
158
  //
190
159
  // TODO: This animation code turned into a mess. Clean it up and make it
191
160
  // more smooth.
@@ -208,42 +177,32 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
208
177
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
209
178
  ]),
210
179
  trigger('sideNavExpand', [
211
- // TODO: Make width configurable for non-overlay state.
180
+ // TODO: Make width configurable.
212
181
  state(EXPANDED_STATE, style({ width: '260px' })),
213
182
  state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
214
183
  state(EXPANDED_OVERLAY_STATE, style({
215
184
  position: 'absolute',
216
185
  top: 0,
186
+ height: '100%',
217
187
  bottom: 0,
218
188
  left: 0,
219
- height: '{{ height }}',
220
- width: '{{ width }}',
221
- transform: '{{ origin }}',
189
+ float: 'left',
222
190
  zIndex: '9999',
223
- }), {
224
- params: {
225
- origin: 'translateX(100%)',
226
- height: '100%',
227
- width: 'calc(100vw - 50px)',
228
- }
229
- }),
191
+ width: 'calc(100vw - 50px)',
192
+ transform: 'translateX(0)'
193
+ })),
230
194
  state(COLLAPSED_OVERLAY_STATE, style({
231
195
  position: 'absolute',
232
196
  top: 0,
197
+ height: '100%',
233
198
  bottom: 0,
234
199
  left: 0,
235
- height: '{{ height }}',
236
- width: '{{ width }}',
237
- transform: '{{ origin }}',
238
- 'overflow-x': 'hidden',
200
+ float: 'left',
239
201
  zIndex: '9999',
240
- }), {
241
- params: {
242
- origin: 'translateX(0)',
243
- height: '100%',
244
- width: 'calc(100vw - 50px)',
245
- }
246
- }),
202
+ width: 'calc(100vw - 50px)',
203
+ transform: 'translateX(calc(-100vw + 50px))',
204
+ 'overflow-x': 'hidden'
205
+ })),
247
206
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
248
207
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
249
208
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
@@ -261,16 +220,14 @@ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
261
220
  __decorate([
262
221
  InputBoolean()
263
222
  ], SideNavComponent.prototype, "hasHeaderToggle", void 0);
264
- __decorate([
265
- InputNumber(10)
266
- ], SideNavComponent.prototype, "indentSize", void 0);
267
223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, decorators: [{
268
224
  type: Component,
269
225
  args: [{ selector: 'seam-side-nav', providers: [
270
226
  TheSeamSideNavService,
271
227
  {
272
228
  provide: THESEAM_SIDE_NAV_ACCESSOR,
273
- useExisting: SideNavComponent
229
+ // tslint:disable-next-line:no-use-before-declare
230
+ useExisting: forwardRef(() => SideNavComponent)
274
231
  },
275
232
  ], animations: [
276
233
  //
@@ -295,42 +252,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
295
252
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
296
253
  ]),
297
254
  trigger('sideNavExpand', [
298
- // TODO: Make width configurable for non-overlay state.
255
+ // TODO: Make width configurable.
299
256
  state(EXPANDED_STATE, style({ width: '260px' })),
300
257
  state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
301
258
  state(EXPANDED_OVERLAY_STATE, style({
302
259
  position: 'absolute',
303
260
  top: 0,
261
+ height: '100%',
304
262
  bottom: 0,
305
263
  left: 0,
306
- height: '{{ height }}',
307
- width: '{{ width }}',
308
- transform: '{{ origin }}',
264
+ float: 'left',
309
265
  zIndex: '9999',
310
- }), {
311
- params: {
312
- origin: 'translateX(100%)',
313
- height: '100%',
314
- width: 'calc(100vw - 50px)',
315
- }
316
- }),
266
+ width: 'calc(100vw - 50px)',
267
+ transform: 'translateX(0)'
268
+ })),
317
269
  state(COLLAPSED_OVERLAY_STATE, style({
318
270
  position: 'absolute',
319
271
  top: 0,
272
+ height: '100%',
320
273
  bottom: 0,
321
274
  left: 0,
322
- height: '{{ height }}',
323
- width: '{{ width }}',
324
- transform: '{{ origin }}',
325
- 'overflow-x': 'hidden',
275
+ float: 'left',
326
276
  zIndex: '9999',
327
- }), {
328
- params: {
329
- origin: 'translateX(0)',
330
- height: '100%',
331
- width: 'calc(100vw - 50px)',
332
- }
333
- }),
277
+ width: 'calc(100vw - 50px)',
278
+ transform: 'translateX(calc(-100vw + 50px))',
279
+ 'overflow-x': 'hidden'
280
+ })),
334
281
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
335
282
  transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
336
283
  // transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
@@ -344,15 +291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
344
291
  // ])
345
292
  // ]),
346
293
  ])
347
- ], imports: [
348
- CommonModule,
349
- A11yModule,
350
- TheSeamScrollbarModule,
351
- TheSeamLayoutModule,
352
- PortalModule,
353
- SideNavItemComponent,
354
- SideNavToggleComponent,
355
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth\n }\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
294
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
356
295
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }, { type: i2.TheSeamSideNavService }, { type: undefined, decorators: [{
357
296
  type: Optional
358
297
  }, {
@@ -363,35 +302,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
363
302
  args: ['@sideNavAnim']
364
303
  }], hasHeaderToggle: [{
365
304
  type: Input
366
- }], toggleIcon: [{
367
- type: Input
368
- }], toggleTpl: [{
369
- type: Input
370
305
  }], items: [{
371
306
  type: Input
372
- }], hideEmptyIcon: [{
373
- type: Input
374
- }], indentSize: [{
375
- type: Input
376
307
  }], expanded: [{
377
308
  type: Input
378
- }], expandOrigin: [{
379
- type: Input
380
- }], expandHeight: [{
381
- type: Input
382
- }], expandWidth: [{
383
- type: Input
384
309
  }], overlay: [{
385
310
  type: Input
386
311
  }], menuItemTooltipConfig: [{
387
312
  type: Input
388
313
  }], toggleExpand: [{
389
314
  type: Output
390
- }], _sideBarHeaderTpl: [{
391
- type: ContentChild,
392
- args: [BaseLayoutSideBarHeaderDirective, { static: true, read: TemplateRef }]
393
315
  }], _sideBarFooterTpl: [{
394
316
  type: ContentChild,
395
317
  args: [BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }]
396
318
  }] } });
397
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzFE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YUksWUFBWTtzQkFBckIsTUFBTTtnQkFNOEUsaUJBQWlCO3NCQUFyRyxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdFLGlCQUFpQjtzQkFBckcsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIGFuaW1hdGVDaGlsZCxcbiAgZ3JvdXAsXG4gIHF1ZXJ5LFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucydcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFCYXJzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJ1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgVGhlU2VhbUxheW91dE1vZHVsZSwgVGhlU2VhbUxheW91dFNlcnZpY2UgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbGF5b3V0J1xuaW1wb3J0IHsgU2VhbUljb24gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vaWNvbidcbmltcG9ydCB7IFRoZVNlYW1TY3JvbGxiYXJNb2R1bGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vc2Nyb2xsYmFyJ1xuXG5pbXBvcnQgeyBJVGhlU2VhbUJhc2VMYXlvdXROYXYsIElUaGVTZWFtQmFzZUxheW91dFJlZiwgVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYgfSBmcm9tICcuLi9iYXNlLWxheW91dC9pbmRleCdcblxuaW1wb3J0IHsgQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9iYXNlLWxheW91dC9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYXNlTGF5b3V0U2lkZUJhckhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXItaGVhZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IgfSBmcm9tICcuL3NpZGUtbmF2LXRva2VucydcbmltcG9ydCB7IElTaWRlTmF2SXRlbSwgU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgfSBmcm9tICcuL3NpZGUtbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1TaWRlTmF2U2VydmljZSB9IGZyb20gJy4vc2lkZS1uYXYuc2VydmljZSdcbmltcG9ydCB7IFNpZGVOYXZUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL3NpZGUtbmF2LXRvZ2dsZS9zaWRlLW5hdi10b2dnbGUuY29tcG9uZW50J1xuaW1wb3J0IHsgU2lkZU5hdkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQnXG5cbmNvbnN0IEVYUEFOREVEX1NUQVRFID0gJ2V4cGFuZGVkJ1xuY29uc3QgQ09MTEFQU0VEX1NUQVRFID0gJ2NvbGxhcHNlZCdcblxuY29uc3QgRVhQQU5ERURfT1ZFUkxBWV9TVEFURSA9ICdleHBhbmRlZC1vdmVybGF5J1xuY29uc3QgQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUgPSAnY29sbGFwc2VkLW92ZXJsYXknXG5cbmNvbnN0IEVYUEFOREVEX1NUQVRFUyA9IFsgRVhQQU5ERURfU1RBVEUsIEVYUEFOREVEX09WRVJMQVlfU1RBVEUgXVxuY29uc3QgQ09MTEFQU0VEX1NUQVRFUyA9IFsgQ09MTEFQU0VEX1NUQVRFLCBDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSBdXG5jb25zdCBFWFBBTkRfU1RBVEVTID0gWyAuLi5FWFBBTkRFRF9TVEFURVMsIC4uLkNPTExBUFNFRF9TVEFURVMgXVxuXG5leHBvcnQgZnVuY3Rpb24gc2lkZU5hdkV4cGFuZFN0YXRlQ2hhbmdlRm4oZnJvbVN0YXRlOiBzdHJpbmcsIHRvU3RhdGU6IHN0cmluZykge1xuICAvLyBjb25zb2xlLmxvZyh7IGZyb21TdGF0ZSwgdG9TdGF0ZSB9KVxuICByZXR1cm4gZnJvbVN0YXRlICE9PSB0b1N0YXRlICYmXG4gICAgKFxuICAgICAgLy8gTk9URTogVGhlIGN1cnJlbnQgd2F5IHRoZSBzaWRlIG5hdiBpcyBiZWluZyB1c2VkIGl0IGNhdXNlcyB0aGVcbiAgICAgIC8vIGNvbXBvbmVudCB0byBzb21ldGltZXMgZ2V0IHBsYWNlZCBpbiB0aGUgd3JvbmcgbG9jYXRpb24gaW5pdGlhbGx5LiBJdFxuICAgICAgLy8gaXMgZmFzdCBlbm91Z2ggdG8gbm90IGJlIG5vdGljZWQgd2l0aG91dCBhbiBpbml0aWFsIGFuaW1hdGlvbiB1c3VhbGx5LFxuICAgICAgLy8gc28gaXQgaXMgY29tbWVudGVkIG91dCBiZWxvdyB1bnRpbCB0aGUgaW5pdGlhbCBwbGFjZW1lbnQgaXNzdWUgaXRcbiAgICAgIC8vIGZpeGVkLlxuICAgICAgLy9cbiAgICAgIC8vIChcbiAgICAgIC8vICAgZnJvbVN0YXRlID09PSAndm9pZCcgJiYgRVhQQU5EX1NUQVRFUy5pbmRleE9mKHRvU3RhdGUpICE9PSAtMVxuICAgICAgLy8gICB8fFxuICAgICAgLy8gICB0b1N0YXRlID09PSAndm9pZCcgJiYgRVhQQU5EX1NUQVRFUy5pbmRleE9mKGZyb21TdGF0ZSkgIT09IC0xXG4gICAgICAvLyApXG4gICAgICAvLyB8fFxuICAgICAgKFxuICAgICAgICAoRVhQQU5ERURfU1RBVEVTLmluZGV4T2YoZnJvbVN0YXRlKSAhPT0gLTEgJiYgQ09MTEFQU0VEX1NUQVRFUy5pbmRleE9mKHRvU3RhdGUpICE9PSAtMSkgfHxcbiAgICAgICAgKEVYUEFOREVEX1NUQVRFUy5pbmRleE9mKHRvU3RhdGUpICE9PSAtMSAmJiBDT0xMQVBTRURfU1RBVEVTLmluZGV4T2YoZnJvbVN0YXRlKSAhPT0gLTEpXG4gICAgICApXG4gICAgKVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXNpZGUtbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lkZS1uYXYuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGhlU2VhbVNpZGVOYXZTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogU2lkZU5hdkNvbXBvbmVudFxuICAgIH0sXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcblxuICAgIC8vXG4gICAgLy8gVE9ETzogVGhpcyBhbmltYXRpb24gY29kZSB0dXJuZWQgaW50byBhIG1lc3MuIENsZWFuIGl0IHVwIGFuZCBtYWtlIGl0XG4gICAgLy8gbW9yZSBzbW9vdGguXG4gICAgLy9cblxuICAgIHRyaWdnZXIoJ3NpZGVOYXZBbmltJywgW1xuICAgICAgdHJhbnNpdGlvbihzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbiwgW1xuICAgICAgICBncm91cChbXG4gICAgICAgICAgcXVlcnkoJ0BzaWRlTmF2QmFja2Ryb3AnLCBhbmltYXRlQ2hpbGQoKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgICAgICBxdWVyeSgnQHNpZGVOYXZFeHBhbmQnLCBhbmltYXRlQ2hpbGQoKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgICAgXSksXG4gICAgICBdKSxcbiAgICBdKSxcblxuICAgIHRyaWdnZXIoJ3NpZGVOYXZCYWNrZHJvcCcsIFtcbiAgICAgIHN0YXRlKEVYUEFOREVEX09WRVJMQVlfU1RBVEUsIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pKSxcbiAgICAgIHN0YXRlKENPTExBUFNFRF9PVkVSTEFZX1NUQVRFLCBzdHlsZSh7IG9wYWNpdHk6ICcwJyB9KSksXG5cbiAgICAgIC8vIHRyYW5zaXRpb24oKGZyb21TdGF0ZSwgdG9TdGF0ZSwgZWxlbWVudCwgcGFyYW1zKSA9PiB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdzaWRlTmF2QmFja2Ryb3AgdicsIGZyb21TdGF0ZSwgdG9TdGF0ZSwgZWxlbWVudCwgcGFyYW1zKVxuICAgICAgLy8gICByZXR1cm4gZmFsc2VcbiAgICAgIC8vIH0sIFtdKSxcblxuICAgICAgdHJhbnNpdGlvbihzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbiwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcbiAgICBdKSxcblxuICAgIHRyaWdnZXIoJ3NpZGVOYXZFeHBhbmQnLCBbXG4gICAgICAvLyBUT0RPOiBNYWtlIHdpZHRoIGNvbmZpZ3VyYWJsZSBmb3Igbm9uLW92ZXJsYXkgc3RhdGUuXG4gICAgICBzdGF0ZShFWFBBTkRFRF9TVEFURSwgc3R5bGUoeyB3aWR0aDogJzI2MHB4JyB9KSksXG4gICAgICBzdGF0ZShDT0xMQVBTRURfU1RBVEUsIHN0eWxlKHsgd2lkdGg6ICc1MHB4JywgJ292ZXJmbG93LXgnOiAnaGlkZGVuJyB9KSksXG5cbiAgICAgIHN0YXRlKEVYUEFOREVEX09WRVJMQVlfU1RBVEUsIHN0eWxlKHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAne3sgaGVpZ2h0IH19JyxcbiAgICAgICAgICB3aWR0aDogJ3t7IHdpZHRoIH19JyxcbiAgICAgICAgICB0cmFuc2Zvcm06ICd7eyBvcmlnaW4gfX0nLFxuICAgICAgICAgIHpJbmRleDogJzk5OTknLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgb3JpZ2luOiAndHJhbnNsYXRlWCgxMDAlKScsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHdpZHRoOiAnY2FsYygxMDB2dyAtIDUwcHgpJyxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBzdGF0ZShDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoe1xuICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICBoZWlnaHQ6ICd7eyBoZWlnaHQgfX0nLFxuICAgICAgICAgIHdpZHRoOiAne3sgd2lkdGggfX0nLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ3t7IG9yaWdpbiB9fScsXG4gICAgICAgICAgJ292ZXJmbG93LXgnOiAnaGlkZGVuJyxcbiAgICAgICAgICB6SW5kZXg6ICc5OTk5JyxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG9yaWdpbjogJ3RyYW5zbGF0ZVgoMCknLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICB3aWR0aDogJ2NhbGMoMTAwdncgLSA1MHB4KScsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApLFxuXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0VYUEFOREVEX1NUQVRFfSA8PT4gJHtDT0xMQVBTRURfU1RBVEV9YCwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgdHJhbnNpdGlvbihzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbiwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIFtcbiAgICAgIC8vICAgLy8gcXVlcnkoJzpsZWF2ZScsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAvLyBxdWVyeSgnOmVudGVyJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgIGdyb3VwKFtcbiAgICAgIC8vICAgICBxdWVyeSgnOmxlYXZlJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgICAgcXVlcnkoJzplbnRlcicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAgIHF1ZXJ5KCdAY29tcGFjdEFuaW0nLCBhbmltYXRlQ2hpbGQoKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0JylcbiAgICAgIC8vICAgXSlcbiAgICAgIC8vIF0pLFxuICAgIF0pXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBUaGVTZWFtU2Nyb2xsYmFyTW9kdWxlLFxuICAgIFRoZVNlYW1MYXlvdXRNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIFNpZGVOYXZJdGVtQ29tcG9uZW50LFxuICAgIFNpZGVOYXZUb2dnbGVDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIElUaGVTZWFtQmFzZUxheW91dE5hdiB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oYXNIZWFkZXJUb2dnbGU6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgZmFCYXJzID0gZmFCYXJzXG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdAc2lkZU5hdkV4cGFuZCcpIF9zaWRlTmF2RXhwYW5kID0gRVhQQU5ERURfU1RBVEVcbiAgLy8gX3NpZGVOYXZFeHBhbmQgPSBFWFBBTkRFRF9TVEFURVxuXG4gIC8vIEBIb3N0QmluZGluZygnQHNpZGVOYXZBbmltJykgX3NpZGVOYXZFeHBhbmQgPSBFWFBBTkRFRF9TVEFURVxuICBASG9zdEJpbmRpbmcoJ0BzaWRlTmF2QW5pbScpIF9zaWRlTmF2RXhwYW5kID0gJ2luaXRpYWwnXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGhhc0hlYWRlclRvZ2dsZSA9IHRydWVcblxuICBASW5wdXQoKSB0b2dnbGVJY29uOiBTZWFtSWNvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBmYUJhcnNcblxuICBASW5wdXQoKSB0b2dnbGVUcGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGl0ZW1zKCk6IElTaWRlTmF2SXRlbVtdIHsgcmV0dXJuIHRoaXMuX2l0ZW1zLnZhbHVlIH1cbiAgc2V0IGl0ZW1zKHZhbHVlOiBJU2lkZU5hdkl0ZW1bXSkgeyB0aGlzLl9pdGVtcy5uZXh0KHZhbHVlKSB9XG4gIHByaXZhdGUgX2l0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJU2lkZU5hdkl0ZW1bXT4oW10pXG4gIHB1YmxpYyByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8SVNpZGVOYXZJdGVtW10+XG5cbiAgQElucHV0KCkgaGlkZUVtcHR5SWNvbjogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMTApIGluZGVudFNpemUgPSAxMFxuXG4gIEBJbnB1dCgpXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gICAgY29uc3QgZW1pdCA9IGV4cGFuZGVkICE9PSB0aGlzLmV4cGFuZGVkXG4gICAgdGhpcy5fZXhwYW5kZWQubmV4dChleHBhbmRlZClcblxuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZC5lbWl0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2V4cGFuZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKSBleHBhbmRPcmlnaW46ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nID0gJ2xlZnQnXG5cbiAgQElucHV0KCkgZXhwYW5kSGVpZ2h0ID0gJzEwMCUnXG5cbiAgQElucHV0KCkgZXhwYW5kV2lkdGggPSAnY2FsYygxMDB2dyAtIDUwcHgpJ1xuXG4gIEBJbnB1dCgpXG4gIGdldCBvdmVybGF5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb3ZlcmxheS52YWx1ZSB9XG4gIHNldCBvdmVybGF5KHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX292ZXJsYXkubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKSB9XG4gIHByaXZhdGUgX292ZXJsYXkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcmxheSQgPSB0aGlzLl9vdmVybGF5LmFzT2JzZXJ2YWJsZSgpXG5cbiAgcHJpdmF0ZSBfbWVudUl0ZW1Ub29sdGlwQ29uZmlnOiBTaWRlTmF2SXRlbU1lbnVJdGVtVG9vbHRpcENvbmZpZyA9IHtcbiAgICBwbGFjZW1lbnQ6ICdyaWdodCcsXG4gICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgYmVoYXZpb3I6ICdhbHdheXMnXG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgbWVudUl0ZW1Ub29sdGlwQ29uZmlnKCkgeyByZXR1cm4gdGhpcy5fbWVudUl0ZW1Ub29sdGlwQ29uZmlnIH1cbiAgc2V0IG1lbnVJdGVtVG9vbHRpcENvbmZpZyh2YWx1ZTogU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fbWVudUl0ZW1Ub29sdGlwQ29uZmlnID0ge1xuICAgICAgY2xhc3M6IHZhbHVlPy5jbGFzcyxcbiAgICAgIHBsYWNlbWVudDogdmFsdWU/LnBsYWNlbWVudCB8fCB0aGlzLl9tZW51SXRlbVRvb2x0aXBDb25maWcucGxhY2VtZW50LFxuICAgICAgY29udGFpbmVyOiB2YWx1ZT8uY29udGFpbmVyIHx8IHRoaXMuX21lbnVJdGVtVG9vbHRpcENvbmZpZy5jb250YWluZXIsXG4gICAgICBiZWhhdmlvcjogdmFsdWU/LmJlaGF2aW9yIHx8IHRoaXMuX21lbnVJdGVtVG9vbHRpcENvbmZpZy5iZWhhdmlvclxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtZW51SXRlbVRvb2x0aXBEaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQE91dHB1dCgpIHRvZ2dsZUV4cGFuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuXG4gIHB1YmxpYyByZWFkb25seSBpc01vYmlsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgcHVibGljIHJlYWRvbmx5IHNpZGVOYXZFeHBhbmRlZFN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG4gIHB1YmxpYyBfYmFja2Ryb3BIaWRkZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpXG5cbiAgQENvbnRlbnRDaGlsZChCYXNlTGF5b3V0U2lkZUJhckhlYWRlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9zaWRlQmFySGVhZGVyVHBsPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcbiAgX3NpZGVCYXJIZWFkZXJQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbFxuXG4gIEBDb250ZW50Q2hpbGQoQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfc2lkZUJhckZvb3RlclRwbD86IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG4gIF9zaWRlQmFyRm9vdGVyUG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xheW91dDogVGhlU2VhbUxheW91dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2lkZU5hdjogVGhlU2VhbVNpZGVOYXZTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYpIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2VMYXlvdXRSZWY6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuX2l0ZW1zLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gaXRlbXMgPyB0aGlzLl9zaWRlTmF2LmNyZWF0ZUl0ZW1zT2JzZXJ2YWJsZShpdGVtcykgOiBbXSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgIClcblxuICAgIHRoaXMuaXNNb2JpbGUkID0gdGhpcy5fbGF5b3V0LmlzTW9iaWxlJC5waXBlKFxuICAgICAgdGFwKGlzTW9iaWxlID0+IGlzTW9iaWxlID8gdGhpcy5jb2xsYXBzZSgpIDogdGhpcy5leHBhbmQoKSlcbiAgICApXG5cbiAgICB0aGlzLnNpZGVOYXZFeHBhbmRlZFN0YXRlJCA9IGNvbWJpbmVMYXRlc3QoWyB0aGlzLmV4cGFuZGVkJCwgdGhpcy5vdmVybGF5JCBdKS5waXBlKFxuICAgICAgbWFwKChbIGV4cGFuZGVkLCBvdmVybGF5IF0pID0+IGV4cGFuZGVkXG4gICAgICAgID8gb3ZlcmxheSA/IEVYUEFOREVEX09WRVJMQVlfU1RBVEUgOiBFWFBBTkRFRF9TVEFURVxuICAgICAgICA6IG92ZXJsYXkgPyBDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSA6IENPTExBUFNFRF9TVEFURVxuICAgICAgKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG5cbiAgICB0aGlzLm1lbnVJdGVtVG9vbHRpcERpc2FibGVkJCA9IGNvbWJpbmVMYXRlc3QoWyB0aGlzLmV4cGFuZGVkJCwgdGhpcy5vdmVybGF5JCBdKS5waXBlKFxuICAgICAgbWFwKChbIGV4cGFuZGVkLCBvdmVybGF5IF0pID0+IHtcbiAgICAgICAgLy8gbmV2ZXIgZGlzcGxheSB0b29sdGlwIG9uIG1vYmlsZSwgaXQgYnJlYWtzIHRoZSBsYXlvdXRcbiAgICAgICAgaWYgKG92ZXJsYXkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVudUl0ZW1Ub29sdGlwQ29uZmlnPy5iZWhhdmlvciA9PT0gJ2Fsd2F5cycgPyBmYWxzZVxuICAgICAgICAgIDogdGhpcy5tZW51SXRlbVRvb2x0aXBDb25maWc/LmJlaGF2aW9yID09PSAnbmV2ZXInID8gdHJ1ZVxuICAgICAgICAgIDogdGhpcy5tZW51SXRlbVRvb2x0aXBDb25maWc/LmJlaGF2aW9yID09PSAnY29sbGFwc2VPbmx5JyA/IGV4cGFuZGVkIDogdHJ1ZVxuICAgICAgfSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuX2Jhc2VMYXlvdXRSZWYpIHsgdGhpcy5fYmFzZUxheW91dFJlZi5yZWdpc3Rlck5hdih0aGlzKSB9XG5cbiAgICB0aGlzLmlzTW9iaWxlJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZShiID0+IHRoaXMub3ZlcmxheSA9IGIpXG5cbiAgICB0aGlzLnNpZGVOYXZFeHBhbmRlZFN0YXRlJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSh2ID0+IHRoaXMuX3NpZGVOYXZFeHBhbmQgPSB2KVxuXG4gICAgaWYgKHRoaXMuX3NpZGVCYXJIZWFkZXJUcGwpIHtcbiAgICAgIHRoaXMuX3NpZGVCYXJIZWFkZXJQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fc2lkZUJhckhlYWRlclRwbCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2lkZUJhckZvb3RlclRwbCkge1xuICAgICAgdGhpcy5fc2lkZUJhckZvb3RlclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9zaWRlQmFyRm9vdGVyVHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gICAgaWYgKHRoaXMuX2Jhc2VMYXlvdXRSZWYpIHsgdGhpcy5fYmFzZUxheW91dFJlZi51bnJlZ2lzdGVyTmF2KHRoaXMpIH1cbiAgfVxuXG4gIHB1YmxpYyBleHBhbmQoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9IHRydWVcbiAgfVxuXG4gIHB1YmxpYyBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2VcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkXG4gIH1cblxuICBwdWJsaWMgYW5pbWF0ZVN0YXJ0KCkge1xuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9iYWNrZHJvcEhpZGRlbi5uZXh0KGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhbmltYXRlRW5kKCkge1xuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5fYmFja2Ryb3BIaWRkZW4ubmV4dCh0cnVlKVxuICAgIH1cbiAgfVxuXG4gIGdldCBleHBhbmRPcmlnaW5UcmFuc2Zvcm0oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgc3dpdGNoICh0aGlzLmV4cGFuZE9yaWdpbikge1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4gdGhpcy5fc2lkZU5hdkV4cGFuZCA9PT0gRVhQQU5ERURfT1ZFUkxBWV9TVEFURSA/ICd0cmFuc2xhdGVYKDEwMHZ3KSB0cmFuc2xhdGVYKC0xMDAlKSdcbiAgICAgICAgICAgIDogdGhpcy5fc2lkZU5hdkV4cGFuZCA9PT0gQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUgPyAndHJhbnNsYXRlWCgxMDB2dyknIDogbnVsbFxuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZGVOYXZFeHBhbmQgPT09IEVYUEFOREVEX09WRVJMQVlfU1RBVEUgPyAndHJhbnNsYXRlWSgwKSdcbiAgICAgICAgICAgIDogdGhpcy5fc2lkZU5hdkV4cGFuZCA9PT0gQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogbnVsbFxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZGVOYXZFeHBhbmQgPT09IEVYUEFOREVEX09WRVJMQVlfU1RBVEUgPyAndHJhbnNsYXRlWSgxMDB2aCkgdHJhbnNsYXRlWSgtMTAwJSknXG4gICAgICAgICAgICA6IHRoaXMuX3NpZGVOYXZFeHBhbmQgPT09IENPTExBUFNFRF9PVkVSTEFZX1NUQVRFID8gJ3RyYW5zbGF0ZVkoMTAwdmgpJyA6IG51bGxcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZGVOYXZFeHBhbmQgPT09IEVYUEFOREVEX09WRVJMQVlfU1RBVEUgPyAndHJhbnNsYXRlWCgwKSdcbiAgICAgICAgICAgIDogdGhpcy5fc2lkZU5hdkV4cGFuZCA9PT0gQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUgPyAndHJhbnNsYXRlWCgtMTAwJSknIDogbnVsbFxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1uYXYtYmFja2Ryb3BcIiAqbmdJZj1cImlzTW9iaWxlJCB8IGFzeW5jXCJcbiAgW0BzaWRlTmF2QmFja2Ryb3BdPVwiX3NpZGVOYXZFeHBhbmRcIlxuICBbY2xhc3Muc2lkZS1uYXYtYmFja2Ryb3AtaGlkZGVuXT1cIl9iYWNrZHJvcEhpZGRlbiB8IGFzeW5jXCJcbiAgKGNsaWNrKT1cImNvbGxhcHNlKClcIj48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cInNpZGUtbmF2LWlubmVyLXdyYXBwZXJcIlxuICBbQHNpZGVOYXZFeHBhbmRdPVwie1xuICAgIHZhbHVlOiBfc2lkZU5hdkV4cGFuZCxcbiAgICBwYXJhbXM6IHtcbiAgICAgIG9yaWdpbjogZXhwYW5kT3JpZ2luVHJhbnNmb3JtLFxuICAgICAgaGVpZ2h0OiBleHBhbmRIZWlnaHQsXG4gICAgICB3aWR0aDogZXhwYW5kV2lkdGhcbiAgICB9XG4gIH1cIlxuICAoQHNpZGVOYXZFeHBhbmQuc3RhcnQpPVwiYW5pbWF0ZVN0YXJ0KClcIlxuICAoQHNpZGVOYXZFeHBhbmQuZG9uZSk9XCJhbmltYXRlRW5kKClcIj5cbiAgPG5hdiBjbGFzcz1cIm5hdiBzaWRlLW5hdi1jb250ZW50XCI+XG4gICAgPHNlYW0tc2lkZS1uYXYtdG9nZ2xlICpuZ0lmPVwiaGFzSGVhZGVyVG9nZ2xlXCJcbiAgICAgIFt0b2dnbGVJY29uXT1cInRvZ2dsZUljb25cIlxuICAgICAgW3RvZ2dsZVRwbF09XCJ0b2dnbGVUcGxcIlxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkJCB8IGFzeW5jXCJcbiAgICAgICh0b2dnbGVFeHBhbmQpPVwidG9nZ2xlKClcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl9zaWRlQmFySGVhZGVyUG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3NlYW0tc2lkZS1uYXYtdG9nZ2xlPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pdGVtcy1jb250YWluZXJcIiBzZWFtT3ZlcmxheVNjcm9sbGJhcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi0tZ3JvdXAgc2lkZS1uYXYtLWdyb3VwLS1sZXZlbC0wXCI+XG4gICAgICAgIDxzZWFtLXNpZGUtbmF2LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMkIHwgYXN5bmNcIlxuICAgICAgICAgIFtjb21wYWN0XT1cIiEoZXhwYW5kZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGUkIHwgYXN5bmNcIlxuICAgICAgICAgIFtpdGVtVHlwZV09XCIkYW55KGl0ZW0pPy5pdGVtVHlwZVwiXG4gICAgICAgICAgW2ljb25dPVwiJGFueShpdGVtKT8uaWNvblwiXG4gICAgICAgICAgW2xhYmVsXT1cIiRhbnkoaXRlbSk/LmxhYmVsXCJcbiAgICAgICAgICBbbGlua109XCIkYW55KGl0ZW0pPy5saW5rXCJcbiAgICAgICAgICBbYmFkZ2VUZXh0XT1cIiRhbnkoaXRlbSk/LmJhZGdlPy50ZXh0XCJcbiAgICAgICAgICBbYmFkZ2VUaGVtZV09XCIkYW55KGl0ZW0pPy5iYWRnZT8udGhlbWUgfHwgJ2RhbmdlcidcIlxuICAgICAgICAgIFtiYWRnZVNyQ29udGVudF09XCIkYW55KGl0ZW0pPy5iYWRnZT8uc3JDb250ZW50XCJcbiAgICAgICAgICBbYmFkZ2VUb29sdGlwXT1cIiRhbnkoaXRlbSk/LmJhZGdlPy50b29sdGlwXCJcbiAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiJGFueShpdGVtKT8ucXVlcnlQYXJhbXNcIlxuICAgICAgICAgIFtjaGlsZHJlbl09XCIkYW55KGl0ZW0pPy5jaGlsZHJlblwiXG4gICAgICAgICAgW2FjdGl2ZV09XCIkYW55KGl0ZW0pLl9fc3RhdGU/LmFjdGl2ZVwiXG4gICAgICAgICAgW2V4cGFuZGVkXT1cIiRhbnkoaXRlbSkuX19zdGF0ZT8uZXhwYW5kZWRcIlxuICAgICAgICAgIFtoaWRlRW1wdHlJY29uXT1cImhpZGVFbXB0eUljb25cIlxuICAgICAgICAgIFtpbmRlbnRTaXplXT1cImluZGVudFNpemVcIlxuICAgICAgICAgIFttZW51SXRlbVRvb2x0aXBDb25maWddPVwibWVudUl0ZW1Ub29sdGlwQ29uZmlnXCJcbiAgICAgICAgICBbbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRdPVwibWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQkIHwgYXN5bmNcIj5cbiAgICAgICAgPC9zZWFtLXNpZGUtbmF2LWl0ZW0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfc2lkZUJhckZvb3RlclBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmF2PlxuPC9kaXY+XG4iXX0=
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQVUsR0FBRyxFQUFtQixXQUFXLEVBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV0SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFHdEQsT0FBTyxFQUFnRCx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRTVHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlFQUFpRSxDQUFB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RSxDQUFDO2dDQUNULElBQUksRUFBRSxDQUFDO2dDQUNQLEtBQUssRUFBRSxNQUFNO2dDQUNiLE1BQU0sRUFBRSxNQUFNO2dDQUNkLEtBQUssRUFBRSxvQkFBb0I7Z0NBQzNCLFNBQVMsRUFBRSxpQ0FBaUM7Z0NBQzVDLFlBQVksRUFBRSxRQUFROzZCQUN2QixDQUFDLENBQUM7NEJBRUgsdUZBQXVGOzRCQUV2RixVQUFVLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7NEJBRW5FLDJEQUEyRDs0QkFDM0QsNERBQTREOzRCQUM1RCw0REFBNEQ7NEJBQzVELFlBQVk7NEJBQ1osMkRBQTJEOzRCQUMzRCwyREFBMkQ7NEJBQzNELGlFQUFpRTs0QkFDakUsa0NBQWtDOzRCQUNsQyxPQUFPOzRCQUNQLE1BQU07eUJBQ1AsQ0FBQztxQkFDSCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBeUVsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0E5RGhCLGNBQWM7c0JBQTFDLFdBQVc7dUJBQUMsY0FBYztnQkFFRixlQUFlO3NCQUF2QyxLQUFLO2dCQUdGLEtBQUs7c0JBRFIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBZUYsT0FBTztzQkFEVixLQUFLO2dCQWFGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFhSSxZQUFZO3NCQUFyQixNQUFNO2dCQU04RSxpQkFBaUI7c0JBQXJHLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBhbmltYXRlQ2hpbGQsXG4gIGdyb3VwLFxuICBxdWVyeSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtYXBUbywgcGFpcndpc2UsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBUaGVTZWFtTGF5b3V0U2VydmljZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9sYXlvdXQnXG5cbmltcG9ydCB7IElUaGVTZWFtQmFzZUxheW91dE5hdiwgSVRoZVNlYW1CYXNlTGF5b3V0UmVmLCBUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRiB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0L2luZGV4J1xuXG5pbXBvcnQgeyBCYXNlTGF5b3V0U2lkZUJhckZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXItZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IgfSBmcm9tICcuL3NpZGUtbmF2LXRva2VucydcbmltcG9ydCB7IElTaWRlTmF2SXRlbSwgU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgfSBmcm9tICcuL3NpZGUtbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1TaWRlTmF2U2VydmljZSB9IGZyb20gJy4vc2lkZS1uYXYuc2VydmljZSdcblxuY29uc3QgRVhQQU5ERURfU1RBVEUgPSAnZXhwYW5kZWQnXG5jb25zdCBDT0xMQVBTRURfU1RBVEUgPSAnY29sbGFwc2VkJ1xuXG5jb25zdCBFWFBBTkRFRF9PVkVSTEFZX1NUQVRFID0gJ2V4cGFuZGVkLW92ZXJsYXknXG5jb25zdCBDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSA9ICdjb2xsYXBzZWQtb3ZlcmxheSdcblxuY29uc3QgRVhQQU5ERURfU1RBVEVTID0gWyBFWFBBTkRFRF9TVEFURSwgRVhQQU5ERURfT1ZFUkxBWV9TVEFURSBdXG5jb25zdCBDT0xMQVBTRURfU1RBVEVTID0gWyBDT0xMQVBTRURfU1RBVEUsIENPTExBUFNFRF9PVkVSTEFZX1NUQVRFIF1cbmNvbnN0IEVYUEFORF9TVEFURVMgPSBbIC4uLkVYUEFOREVEX1NUQVRFUywgLi4uQ09MTEFQU0VEX1NUQVRFUyBdXG5cbmV4cG9ydCBmdW5jdGlvbiBzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbihmcm9tU3RhdGU6IHN0cmluZywgdG9TdGF0ZTogc3RyaW5nKSB7XG4gIC8vIGNvbnNvbGUubG9nKHsgZnJvbVN0YXRlLCB0b1N0YXRlIH0pXG4gIHJldHVybiBmcm9tU3RhdGUgIT09IHRvU3RhdGUgJiZcbiAgICAoXG4gICAgICAvLyBOT1RFOiBUaGUgY3VycmVudCB3YXkgdGhlIHNpZGUgbmF2IGlzIGJlaW5nIHVzZWQgaXQgY2F1c2VzIHRoZVxuICAgICAgLy8gY29tcG9uZW50IHRvIHNvbWV0aW1lcyBnZXQgcGxhY2VkIGluIHRoZSB3cm9uZyBsb2NhdGlvbiBpbml0aWFsbHkuIEl0XG4gICAgICAvLyBpcyBmYXN0IGVub3VnaCB0byBub3QgYmUgbm90aWNlZCB3aXRob3V0IGFuIGluaXRpYWwgYW5pbWF0aW9uIHVzdWFsbHksXG4gICAgICAvLyBzbyBpdCBpcyBjb21tZW50ZWQgb3V0IGJlbG93IHVudGlsIHRoZSBpbml0aWFsIHBsYWNlbWVudCBpc3N1ZSBpdFxuICAgICAgLy8gZml4ZWQuXG4gICAgICAvL1xuICAgICAgLy8gKFxuICAgICAgLy8gICBmcm9tU3RhdGUgPT09ICd2b2lkJyAmJiBFWFBBTkRfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xXG4gICAgICAvLyAgIHx8XG4gICAgICAvLyAgIHRvU3RhdGUgPT09ICd2b2lkJyAmJiBFWFBBTkRfU1RBVEVTLmluZGV4T2YoZnJvbVN0YXRlKSAhPT0gLTFcbiAgICAgIC8vIClcbiAgICAgIC8vIHx8XG4gICAgICAoXG4gICAgICAgIChFWFBBTkRFRF9TVEFURVMuaW5kZXhPZihmcm9tU3RhdGUpICE9PSAtMSAmJiBDT0xMQVBTRURfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xKSB8fFxuICAgICAgICAoRVhQQU5ERURfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xICYmIENPTExBUFNFRF9TVEFURVMuaW5kZXhPZihmcm9tU3RhdGUpICE9PSAtMSlcbiAgICAgIClcbiAgICApXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tc2lkZS1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUaGVTZWFtU2lkZU5hdlNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogVEhFU0VBTV9TSURFX05BVl9BQ0NFU1NPUixcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNpZGVOYXZDb21wb25lbnQpXG4gICAgfSxcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuXG4gICAgLy9cbiAgICAvLyBUT0RPOiBUaGlzIGFuaW1hdGlvbiBjb2RlIHR1cm5lZCBpbnRvIGEgbWVzcy4gQ2xlYW4gaXQgdXAgYW5kIG1ha2UgaXRcbiAgICAvLyBtb3JlIHNtb290aC5cbiAgICAvL1xuXG4gICAgdHJpZ2dlcignc2lkZU5hdkFuaW0nLCBbXG4gICAgICB0cmFuc2l0aW9uKHNpZGVOYXZFeHBhbmRTdGF0ZUNoYW5nZUZuLCBbXG4gICAgICAgIGdyb3VwKFtcbiAgICAgICAgICBxdWVyeSgnQHNpZGVOYXZCYWNrZHJvcCcsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgICAgIHF1ZXJ5KCdAc2lkZU5hdkV4cGFuZCcsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgICBdKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuXG4gICAgdHJpZ2dlcignc2lkZU5hdkJhY2tkcm9wJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUsIHN0eWxlKHsgb3BhY2l0eTogJzAnIH0pKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbigoZnJvbVN0YXRlLCB0b1N0YXRlLCBlbGVtZW50LCBwYXJhbXMpID0+IHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3NpZGVOYXZCYWNrZHJvcCB2JywgZnJvbVN0YXRlLCB0b1N0YXRlLCBlbGVtZW50LCBwYXJhbXMpXG4gICAgICAvLyAgIHJldHVybiBmYWxzZVxuICAgICAgLy8gfSwgW10pLFxuXG4gICAgICB0cmFuc2l0aW9uKHNpZGVOYXZFeHBhbmRTdGF0ZUNoYW5nZUZuLCBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pLFxuXG4gICAgdHJpZ2dlcignc2lkZU5hdkV4cGFuZCcsIFtcbiAgICAgIC8vIFRPRE86IE1ha2Ugd2lkdGggY29uZmlndXJhYmxlLlxuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgd2lkdGg6ICcyNjBweCcgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IHdpZHRoOiAnNTBweCcsICdvdmVyZmxvdy14JzogJ2hpZGRlbicgfSkpLFxuXG4gICAgICBzdGF0ZShFWFBBTkRFRF9PVkVSTEFZX1NUQVRFLCBzdHlsZSh7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGZsb2F0OiAnbGVmdCcsXG4gICAgICAgIHpJbmRleDogJzk5OTknLFxuICAgICAgICB3aWR0aDogJ2NhbGMoMTAwdncgLSA1MHB4KScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknXG4gICAgICB9KSksXG4gICAgICBzdGF0ZShDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoe1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBmbG9hdDogJ2xlZnQnLFxuICAgICAgICB6SW5kZXg6ICc5OTk5JyxcbiAgICAgICAgd2lkdGg6ICdjYWxjKDEwMHZ3IC0gNTBweCknLFxuICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKGNhbGMoLTEwMHZ3ICsgNTBweCkpJyxcbiAgICAgICAgJ292ZXJmbG93LXgnOiAnaGlkZGVuJ1xuICAgICAgfSkpLFxuXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0VYUEFOREVEX1NUQVRFfSA8PT4gJHtDT0xMQVBTRURfU1RBVEV9YCwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgdHJhbnNpdGlvbihzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbiwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIFtcbiAgICAgIC8vICAgLy8gcXVlcnkoJzpsZWF2ZScsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAvLyBxdWVyeSgnOmVudGVyJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgIGdyb3VwKFtcbiAgICAgIC8vICAgICBxdWVyeSgnOmxlYXZlJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgICAgcXVlcnkoJzplbnRlcicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAgIHF1ZXJ5KCdAY29tcGFjdEFuaW0nLCBhbmltYXRlQ2hpbGQoKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0JylcbiAgICAgIC8vICAgXSlcbiAgICAgIC8vIF0pLFxuICAgIF0pXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgSVRoZVNlYW1CYXNlTGF5b3V0TmF2IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hhc0hlYWRlclRvZ2dsZTogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAvLyBASG9zdEJpbmRpbmcoJ0BzaWRlTmF2RXhwYW5kJykgX3NpZGVOYXZFeHBhbmQgPSBFWFBBTkRFRF9TVEFURVxuICAvLyBfc2lkZU5hdkV4cGFuZCA9IEVYUEFOREVEX1NUQVRFXG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdAc2lkZU5hdkFuaW0nKSBfc2lkZU5hdkV4cGFuZCA9IEVYUEFOREVEX1NUQVRFXG4gIEBIb3N0QmluZGluZygnQHNpZGVOYXZBbmltJykgX3NpZGVOYXZFeHBhbmQgPSAnaW5pdGlhbCdcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyVG9nZ2xlID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpOiBJU2lkZU5hdkl0ZW1bXSB7IHJldHVybiB0aGlzLl9pdGVtcy52YWx1ZSB9XG4gIHNldCBpdGVtcyh2YWx1ZTogSVNpZGVOYXZJdGVtW10pIHsgdGhpcy5faXRlbXMubmV4dCh2YWx1ZSkgfVxuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNpZGVOYXZJdGVtW10+KFtdKVxuICBwdWJsaWMgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPElTaWRlTmF2SXRlbVtdPlxuXG4gIEBJbnB1dCgpXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gICAgY29uc3QgZW1pdCA9IGV4cGFuZGVkICE9PSB0aGlzLmV4cGFuZGVkXG4gICAgdGhpcy5fZXhwYW5kZWQubmV4dChleHBhbmRlZClcblxuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZC5lbWl0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2V4cGFuZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBnZXQgb3ZlcmxheSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX292ZXJsYXkudmFsdWUgfVxuICBzZXQgb3ZlcmxheSh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9vdmVybGF5Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBwcml2YXRlIF9vdmVybGF5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXkkID0gdGhpcy5fb3ZlcmxheS5hc09ic2VydmFibGUoKVxuXG4gIHByaXZhdGUgX21lbnVJdGVtVG9vbHRpcENvbmZpZzogU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgPSB7XG4gICAgcGxhY2VtZW50OiAncmlnaHQnLFxuICAgIGNvbnRhaW5lcjogJ2JvZHknLFxuICAgIGJlaGF2aW9yOiAnYWx3YXlzJ1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IG1lbnVJdGVtVG9vbHRpcENvbmZpZygpIHsgcmV0dXJuIHRoaXMuX21lbnVJdGVtVG9vbHRpcENvbmZpZyB9XG4gIHNldCBtZW51SXRlbVRvb2x0aXBDb25maWcodmFsdWU6IFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQ29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX21lbnVJdGVtVG9vbHRpcENvbmZpZyA9IHtcbiAgICAgIGNsYXNzOiB2YWx1ZT8uY2xhc3MsXG4gICAgICBwbGFjZW1lbnQ6IHZhbHVlPy5wbGFjZW1lbnQgfHwgdGhpcy5fbWVudUl0ZW1Ub29sdGlwQ29uZmlnLnBsYWNlbWVudCxcbiAgICAgIGNvbnRhaW5lcjogdmFsdWU/LmNvbnRhaW5lciB8fCB0aGlzLl9tZW51SXRlbVRvb2x0aXBDb25maWcuY29udGFpbmVyLFxuICAgICAgYmVoYXZpb3I6IHZhbHVlPy5iZWhhdmlvciB8fCB0aGlzLl9tZW51SXRlbVRvb2x0aXBDb25maWcuYmVoYXZpb3JcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBPdXRwdXQoKSB0b2dnbGVFeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIHB1YmxpYyByZWFkb25seSBzaWRlTmF2RXhwYW5kZWRTdGF0ZSQ6IE9ic2VydmFibGU8c3RyaW5nPlxuICBwdWJsaWMgX2JhY2tkcm9wSGlkZGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuXG4gIEBDb250ZW50Q2hpbGQoQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfc2lkZUJhckZvb3RlclRwbD86IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG4gIF9zaWRlQmFyRm9vdGVyUG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xheW91dDogVGhlU2VhbUxheW91dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2lkZU5hdjogVGhlU2VhbVNpZGVOYXZTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYpIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2VMYXlvdXRSZWY6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuX2l0ZW1zLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gdGhpcy5fc2lkZU5hdi5jcmVhdGVJdGVtc09ic2VydmFibGUoaXRlbXMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKVxuXG4gICAgdGhpcy5pc01vYmlsZSQgPSB0aGlzLl9sYXlvdXQuaXNNb2JpbGUkLnBpcGUoXG4gICAgICB0YXAoaXNNb2JpbGUgPT4gaXNNb2JpbGUgPyB0aGlzLmNvbGxhcHNlKCkgOiB0aGlzLmV4cGFuZCgpKVxuICAgIClcblxuICAgIHRoaXMuc2lkZU5hdkV4cGFuZGVkU3RhdGUkID0gY29tYmluZUxhdGVzdChbIHRoaXMuZXhwYW5kZWQkLCB0aGlzLm92ZXJsYXkkIF0pLnBpcGUoXG4gICAgICBtYXAoKFsgZXhwYW5kZWQsIG92ZXJsYXkgXSkgPT4gZXhwYW5kZWRcbiAgICAgICAgPyBvdmVybGF5ID8gRVhQQU5ERURfT1ZFUkxBWV9TVEFURSA6IEVYUEFOREVEX1NUQVRFXG4gICAgICAgIDogb3ZlcmxheSA/IENPTExBUFNFRF9PVkVSTEFZX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgIClcblxuICAgIHRoaXMubWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQkID0gY29tYmluZUxhdGVzdChbIHRoaXMuZXhwYW5kZWQkLCB0aGlzLm92ZXJsYXkkIF0pLnBpcGUoXG4gICAgICBtYXAoKFsgZXhwYW5kZWQsIG92ZXJsYXkgXSkgPT4ge1xuICAgICAgICAvLyBuZXZlciBkaXNwbGF5IHRvb2x0aXAgb24gbW9iaWxlLCBpdCBicmVha3MgdGhlIGxheW91dFxuICAgICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZW51SXRlbVRvb2x0aXBDb25maWc/LmJlaGF2aW9yID09PSAnYWx3YXlzJyA/IGZhbHNlXG4gICAgICAgICAgOiB0aGlzLm1lbnVJdGVtVG9vbHRpcENvbmZpZz8uYmVoYXZpb3IgPT09ICduZXZlcicgPyB0cnVlXG4gICAgICAgICAgOiB0aGlzLm1lbnVJdGVtVG9vbHRpcENvbmZpZz8uYmVoYXZpb3IgPT09ICdjb2xsYXBzZU9ubHknID8gZXhwYW5kZWQgOiB0cnVlXG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fYmFzZUxheW91dFJlZikgeyB0aGlzLl9iYXNlTGF5b3V0UmVmLnJlZ2lzdGVyTmF2KHRoaXMpIH1cblxuICAgIHRoaXMuaXNNb2JpbGUkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKGIgPT4gdGhpcy5vdmVybGF5ID0gYilcblxuICAgIHRoaXMuc2lkZU5hdkV4cGFuZGVkU3RhdGUkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHYgPT4gdGhpcy5fc2lkZU5hdkV4cGFuZCA9IHYpXG5cbiAgICBpZiAodGhpcy5fc2lkZUJhckZvb3RlclRwbCkge1xuICAgICAgdGhpcy5fc2lkZUJhckZvb3RlclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9zaWRlQmFyRm9vdGVyVHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gICAgaWYgKHRoaXMuX2Jhc2VMYXlvdXRSZWYpIHsgdGhpcy5fYmFzZUxheW91dFJlZi51bnJlZ2lzdGVyTmF2KHRoaXMpIH1cbiAgfVxuXG4gIHB1YmxpYyBleHBhbmQoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9IHRydWVcbiAgfVxuXG4gIHB1YmxpYyBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2VcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkXG4gIH1cblxuICBwdWJsaWMgYW5pbWF0ZVN0YXJ0KCkge1xuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9iYWNrZHJvcEhpZGRlbi5uZXh0KGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhbmltYXRlRW5kKCkge1xuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5fYmFja2Ryb3BIaWRkZW4ubmV4dCh0cnVlKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1uYXYtYmFja2Ryb3BcIiAqbmdJZj1cImlzTW9iaWxlJCB8IGFzeW5jXCJcbiAgW0BzaWRlTmF2QmFja2Ryb3BdPVwiX3NpZGVOYXZFeHBhbmRcIlxuICBbY2xhc3Muc2lkZS1uYXYtYmFja2Ryb3AtaGlkZGVuXT1cIl9iYWNrZHJvcEhpZGRlbiB8IGFzeW5jXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pbm5lci13cmFwcGVyXCIgW0BzaWRlTmF2RXhwYW5kXT1cIl9zaWRlTmF2RXhwYW5kXCJcbiAgKEBzaWRlTmF2RXhwYW5kLnN0YXJ0KT1cImFuaW1hdGVTdGFydCgpXCJcbiAgKEBzaWRlTmF2RXhwYW5kLmRvbmUpPVwiYW5pbWF0ZUVuZCgpXCI+XG4gIDxuYXYgY2xhc3M9XCJuYXYgc2lkZS1uYXYtY29udGVudFwiPlxuICAgIDxzZWFtLXNpZGUtbmF2LXRvZ2dsZSAqbmdJZj1cImhhc0hlYWRlclRvZ2dsZVwiXG4gICAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWQkIHwgYXN5bmNcIlxuICAgICAgKHRvZ2dsZUV4cGFuZCk9XCJ0b2dnbGUoKVwiPlxuICAgIDwvc2VhbS1zaWRlLW5hdi10b2dnbGU+XG4gICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW1zLWNvbnRhaW5lclwiIHNlYW1PdmVybGF5U2Nyb2xsYmFyPlxuICAgICAgPHNlYW0tc2lkZS1uYXYtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyQgfCBhc3luY1wiXG4gICAgICAgIFtjb21wYWN0XT1cIiEoZXhwYW5kZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlJCB8IGFzeW5jXCJcbiAgICAgICAgW2l0ZW1UeXBlXT1cIiRhbnkoaXRlbSk/Lml0ZW1UeXBlXCJcbiAgICAgICAgW2ljb25dPVwiJGFueShpdGVtKT8uaWNvblwiXG4gICAgICAgIFtsYWJlbF09XCIkYW55KGl0ZW0pPy5sYWJlbFwiXG4gICAgICAgIFtsaW5rXT1cIiRhbnkoaXRlbSk/LmxpbmtcIlxuICAgICAgICBbYmFkZ2VUZXh0XT1cIiRhbnkoaXRlbSk/LmJhZGdlPy50ZXh0XCJcbiAgICAgICAgW2JhZGdlVGhlbWVdPVwiJGFueShpdGVtKT8uYmFkZ2U/LnRoZW1lIHx8ICdkYW5nZXInXCJcbiAgICAgICAgW2JhZGdlU3JDb250ZW50XT1cIiRhbnkoaXRlbSk/LmJhZGdlPy5zckNvbnRlbnRcIlxuICAgICAgICBbYmFkZ2VUb29sdGlwXT1cIiRhbnkoaXRlbSk/LmJhZGdlPy50b29sdGlwXCJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIiRhbnkoaXRlbSk/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgW2NoaWxkcmVuXT1cIiRhbnkoaXRlbSk/LmNoaWxkcmVuXCJcbiAgICAgICAgW2FjdGl2ZV09XCIkYW55KGl0ZW0pLl9fc3RhdGUuYWN0aXZlXCJcbiAgICAgICAgW2V4cGFuZGVkXT1cIiRhbnkoaXRlbSkuX19zdGF0ZS5leHBhbmRlZFwiXG4gICAgICAgIFttZW51SXRlbVRvb2x0aXBDb25maWddPVwibWVudUl0ZW1Ub29sdGlwQ29uZmlnXCJcbiAgICAgICAgW21lbnVJdGVtVG9vbHRpcERpc2FibGVkXT1cIm1lbnVJdGVtVG9vbHRpcERpc2FibGVkJCB8IGFzeW5jXCI+XG4gICAgICA8L3NlYW0tc2lkZS1uYXYtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfc2lkZUJhckZvb3RlclBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmF2PlxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkl0ZW1TdGF0ZSB7XG4gIC8vIHBhcmVudD86IElTaWRlTmF2SXRlbVxuICBhY3RpdmU6IGJvb2xlYW5cbiAgZXhwYW5kZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWRlTmF2SXRlbUNhbkhhdmVTdGF0ZSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3AgaXMgbWFuYWdlZCBieSB0aGUgU2lkZU5hdi4gSWYgbWFudWFsbHkgc2V0IGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gICBfX3N0YXRlPzogSVNpZGVOYXZJdGVtU3RhdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWRlTmF2SXRlbUNhbkhhdmVDaGlsZHJlbiB7XG4gIGNoaWxkcmVuPzogSVNpZGVOYXZJdGVtW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkl0ZW1CYXNlPFQgZXh0ZW5kcyBzdHJpbmc+IGV4dGVuZHMgU2lkZU5hdkl0ZW1DYW5IYXZlU3RhdGUge1xuICAvKipcbiAgICogZGVmYXVsdDogJ3JvdXRlJ1xuICAgKi9cbiAgaXRlbVR5cGU/OiBUXG5cbiAgYmFkZ2U/OiBJU2lkZU5hdkJhZGdlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZUaXRsZSBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J3RpdGxlJz4ge1xuICBsYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2RGl2aWRlciBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2RpdmlkZXInPiB7XG4gIGxhYmVsPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZCYWRnZSB7XG5cbiAgdGV4dD86IHN0cmluZ1xuXG4gIHRoZW1lPzogVGhlbWVUeXBlc1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHRvIHByb3ZpZGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ3ksIHN1Y2ggYXMgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICBzckNvbnRlbnQ/OiBzdHJpbmdcblxuICB0b29sdGlwPzogc3RyaW5nIHwgU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkJhc2ljIGV4dGVuZHMgSVNpZGVOYXZJdGVtQmFzZTwnYmFzaWMnPiwgU2lkZU5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4ge1xuICBpY29uPzogU2VhbUljb25cbiAgbGFiZWw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2TGluayBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2xpbmsnPixcbiAgUGFydGlhbDxQaWNrPFVybENyZWF0aW9uT3B0aW9ucywgJ3F1ZXJ5UGFyYW1zJyB8ICdmcmFnbWVudCcgfCAncXVlcnlQYXJhbXNIYW5kbGluZycgfCAncHJlc2VydmVGcmFnbWVudCc+PixcbiAgU2lkZU5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4ge1xuICBpY29uPzogU2VhbUljb25cbiAgbGFiZWw6IHN0cmluZ1xuXG4gIGxpbms/OiBhbnlbXSB8IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0OiB7IHBhdGhzOiAnc3Vic2V0JywgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLCBmcmFnbWVudDogJ2lnbm9yZWQnLCBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyB9XG4gICAqL1xuICBtYXRjaE9wdGlvbnM/OiBQYXJ0aWFsPElzQWN0aXZlTWF0Y2hPcHRpb25zPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2QnV0dG9uIGV4dGVuZHMgSVNpZGVOYXZJdGVtQmFzZTwnYnV0dG9uJz4ge1xuICBvbkNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgSVNpZGVOYXZJdGVtID0gSVNpZGVOYXZUaXRsZSB8IElTaWRlTmF2RGl2aWRlciB8IElTaWRlTmF2QmFzaWMgfCBJU2lkZU5hdkxpbmsgfCBJU2lkZU5hdkJ1dHRvblxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtU3RhdGVDaGFuZ2VkIHtcbiAgaXRlbTogSVNpZGVOYXZJdGVtXG4gIHByb3A6IHN0cmluZ1xuICBwcmV2VmFsdWU6IGFueVxuICBuZXdWYWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXAge1xuICB0b29sdGlwPzogc3RyaW5nXG4gIGNsYXNzPzogc3RyaW5nXG4gIHBsYWNlbWVudD86IHN0cmluZ1xuICBjb250YWluZXI/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG59XG5cbi8qKlxuICogV2hlbiBgbmV2ZXJgLCBtZW51IGl0ZW0gdG9vbHRpcCBpcyBhbHdheXMgZGlzYWJsZWQuXG4gKiBXaGVuIGBhbHdheXNgLCBtZW51IGl0ZW0gdG9vbHRpcCBpcyBhbHdheXMgZW5hYmxlZC5cbiAqIFdoZW4gYGNvbGxhcHNlT25seWAsIG1lbnUgaXRlbSB0b29sdGlwIGlzIGVuYWJsZWQgb25seSB3aGVuIHRoZSBzaWRlbmF2IGlzIGNvbGxhcHNlZC5cbiAqL1xuZXhwb3J0IHR5cGUgU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBCZWhhdmlvciA9ICduZXZlcicgfCAnYWx3YXlzJyB8ICdjb2xsYXBzZU9ubHknXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcge1xuICBjbGFzcz86IHN0cmluZ1xuICBwbGFjZW1lbnQ/OiBzdHJpbmdcbiAgY29udGFpbmVyPzogc3RyaW5nXG4gIGJlaGF2aW9yPzogU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBCZWhhdmlvclxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXAgfSBmcm9tICcuL3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZJdGVtU3RhdGUge1xuICAvLyBwYXJlbnQ/OiBJU2lkZU5hdkl0ZW1cbiAgYWN0aXZlOiBib29sZWFuXG4gIGV4cGFuZGVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1DYW5IYXZlU3RhdGUge1xuICAvKipcbiAgICogVGhpcyBwcm9wIGlzIG1hbmFnZWQgYnkgdGhlIFNpZGVOYXYuIElmIG1hbnVhbGx5IHNldCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAgX19zdGF0ZT86IElTaWRlTmF2SXRlbVN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4ge1xuICBjaGlsZHJlbj86IElTaWRlTmF2SXRlbVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZJdGVtQmFzZTxUIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIFNpZGVOYXZJdGVtQ2FuSGF2ZVN0YXRlIHtcbiAgLyoqXG4gICAqIGRlZmF1bHQ6ICdyb3V0ZSdcbiAgICovXG4gIGl0ZW1UeXBlPzogVFxuXG4gIGJhZGdlPzogSVNpZGVOYXZCYWRnZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2VGl0bGUgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCd0aXRsZSc+IHtcbiAgbGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkRpdmlkZXIgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCdkaXZpZGVyJz4ge1xuICBsYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2QmFkZ2Uge1xuXG4gIHRleHQ/OiBzdHJpbmdcblxuICB0aGVtZT86IFRoZW1lVHlwZXNcblxuICAvKipcbiAgICogQ29udGVudCB0byBwcm92aWRlIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LCBzdWNoIGFzIHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgc3JDb250ZW50Pzogc3RyaW5nXG5cbiAgdG9vbHRpcD86IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZCYXNpYyBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2Jhc2ljJz4sIFNpZGVOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkxpbmsgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCdsaW5rJz4sXG4gIFBhcnRpYWw8UGljazxVcmxDcmVhdGlvbk9wdGlvbnMsICdxdWVyeVBhcmFtcycgfCAnZnJhZ21lbnQnIHwgJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnIHwgJ3ByZXNlcnZlRnJhZ21lbnQnPj4sXG4gIFNpZGVOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcblxuICBsaW5rPzogYW55W10gfCBzdHJpbmdcblxuICAvKipcbiAgICogRGVmYXVsdDogeyBwYXRoczogJ3N1YnNldCcsIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0JywgZnJhZ21lbnQ6ICdpZ25vcmVkJywgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcgfVxuICAgKi9cbiAgbWF0Y2hPcHRpb25zPzogUGFydGlhbDxJc0FjdGl2ZU1hdGNoT3B0aW9ucz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkJ1dHRvbiBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2J1dHRvbic+IHtcbiAgb25DbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIElTaWRlTmF2SXRlbSA9IElTaWRlTmF2VGl0bGUgfCBJU2lkZU5hdkRpdmlkZXIgfCBJU2lkZU5hdkJhc2ljIHwgSVNpZGVOYXZMaW5rIHwgSVNpZGVOYXZCdXR0b25cblxuZXhwb3J0IGludGVyZmFjZSBTaWRlTmF2SXRlbVN0YXRlQ2hhbmdlZCB7XG4gIGl0ZW06IElTaWRlTmF2SXRlbVxuICBwcm9wOiBzdHJpbmdcbiAgcHJldlZhbHVlOiBhbnlcbiAgbmV3VmFsdWU6IGFueVxufVxuXG4vKipcbiAqIFdoZW4gYG5ldmVyYCwgbWVudSBpdGVtIHRvb2x0aXAgaXMgYWx3YXlzIGRpc2FibGVkLlxuICogV2hlbiBgYWx3YXlzYCwgbWVudSBpdGVtIHRvb2x0aXAgaXMgYWx3YXlzIGVuYWJsZWQuXG4gKiBXaGVuIGBjb2xsYXBzZU9ubHlgLCBtZW51IGl0ZW0gdG9vbHRpcCBpcyBlbmFibGVkIG9ubHkgd2hlbiB0aGUgc2lkZW5hdiBpcyBjb2xsYXBzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQmVoYXZpb3IgPSAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnY29sbGFwc2VPbmx5J1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQ29uZmlnIHtcbiAgY2xhc3M/OiBzdHJpbmdcbiAgcGxhY2VtZW50Pzogc3RyaW5nXG4gIGNvbnRhaW5lcj86IHN0cmluZ1xuICBiZWhhdmlvcj86IFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQmVoYXZpb3Jcbn1cbiJdfQ==