@lenne.tech/ng-base 17.0.0 → 18.1.0

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 (130) hide show
  1. package/base-cms/pages/base-cms/base-cms.component.d.ts +1 -1
  2. package/base-cms/public-api.d.ts +0 -1
  3. package/base-components/components/breadcrumb/breadcrumb.component.d.ts +1 -1
  4. package/base-components/components/change-password/change-password.component.d.ts +1 -1
  5. package/base-components/components/checkbox/checkbox.component.d.ts +1 -1
  6. package/base-components/components/delete-account/delete-account.component.d.ts +1 -1
  7. package/base-components/components/fab-button/fab-button.component.d.ts +1 -1
  8. package/base-components/components/input/input.component.d.ts +1 -1
  9. package/base-components/components/model-form/model-form-base.component.d.ts +1 -1
  10. package/base-components/components/model-form/model-form.component.d.ts +1 -1
  11. package/base-components/components/model-form-sub/model-form-sub.component.d.ts +1 -1
  12. package/base-components/components/model-table/model-table.component.d.ts +1 -1
  13. package/base-components/components/refence-input/refence-input.component.d.ts +1 -1
  14. package/base-components/components/select/select.component.d.ts +1 -1
  15. package/base-components/components/skeleton-loader/skeleton-loader.component.d.ts +1 -1
  16. package/base-components/components/tags/tags.component.d.ts +1 -1
  17. package/base-components/components/textarea/textarea.component.d.ts +1 -1
  18. package/base-components/components/toast/toast.component.d.ts +1 -1
  19. package/base-components/components/upload-image/upload-image.component.d.ts +1 -1
  20. package/base-components/directives/back-button.directive.d.ts +1 -1
  21. package/base-components/directives/context-menu.directive.d.ts +1 -1
  22. package/base-components/directives/sort.directive.d.ts +1 -1
  23. package/base-components/directives/stop-propagation.directive.d.ts +1 -1
  24. package/base-components/pipes/ellipses.pipe.d.ts +1 -1
  25. package/base-components/public-api.d.ts +0 -1
  26. package/base-prototype/pages/email-verification/email-verification.component.d.ts +1 -1
  27. package/base-prototype/pages/forgot-password/forgot-password.component.d.ts +1 -1
  28. package/base-prototype/pages/login/login.component.d.ts +1 -1
  29. package/base-prototype/pages/profile/profile.component.d.ts +1 -1
  30. package/base-prototype/pages/register/register.component.d.ts +2 -2
  31. package/base-prototype/pages/set-password/set-password.component.d.ts +1 -1
  32. package/base-prototype/public-api.d.ts +0 -1
  33. package/esm2022/base-cms/pages/base-cms/base-cms.component.mjs +14 -8
  34. package/esm2022/base-cms/public-api.mjs +1 -3
  35. package/esm2022/base-components/components/breadcrumb/breadcrumb.component.mjs +10 -7
  36. package/esm2022/base-components/components/change-password/change-password.component.mjs +11 -9
  37. package/esm2022/base-components/components/checkbox/checkbox.component.mjs +10 -6
  38. package/esm2022/base-components/components/delete-account/delete-account.component.mjs +5 -6
  39. package/esm2022/base-components/components/fab-button/fab-button.component.mjs +11 -7
  40. package/esm2022/base-components/components/input/input.component.mjs +10 -6
  41. package/esm2022/base-components/components/loading-bar/loading-bar.component.mjs +5 -6
  42. package/esm2022/base-components/components/model-form/model-form-base.component.mjs +5 -4
  43. package/esm2022/base-components/components/model-form/model-form.component.mjs +17 -10
  44. package/esm2022/base-components/components/model-form-sub/model-form-sub.component.mjs +20 -13
  45. package/esm2022/base-components/components/model-table/model-table.component.mjs +23 -14
  46. package/esm2022/base-components/components/refence-input/refence-input.component.mjs +13 -7
  47. package/esm2022/base-components/components/select/select.component.mjs +10 -6
  48. package/esm2022/base-components/components/skeleton-loader/skeleton-loader.component.mjs +8 -6
  49. package/esm2022/base-components/components/tags/tags.component.mjs +11 -7
  50. package/esm2022/base-components/components/textarea/textarea.component.mjs +10 -6
  51. package/esm2022/base-components/components/toast/toast.component.mjs +8 -6
  52. package/esm2022/base-components/components/upload-image/upload-image.component.mjs +13 -9
  53. package/esm2022/base-components/directives/back-button.directive.mjs +5 -4
  54. package/esm2022/base-components/directives/context-menu.directive.mjs +5 -4
  55. package/esm2022/base-components/directives/sort.directive.mjs +5 -4
  56. package/esm2022/base-components/directives/stop-propagation.directive.mjs +5 -4
  57. package/esm2022/base-components/pipes/ellipses.pipe.mjs +5 -4
  58. package/esm2022/base-components/public-api.mjs +1 -3
  59. package/esm2022/base-prototype/pages/email-verification/email-verification.component.mjs +5 -6
  60. package/esm2022/base-prototype/pages/forgot-password/forgot-password.component.mjs +12 -8
  61. package/esm2022/base-prototype/pages/login/login.component.mjs +12 -8
  62. package/esm2022/base-prototype/pages/profile/profile.component.mjs +8 -6
  63. package/esm2022/base-prototype/pages/register/register.component.mjs +14 -9
  64. package/esm2022/base-prototype/pages/set-password/set-password.component.mjs +11 -9
  65. package/esm2022/base-prototype/public-api.mjs +1 -3
  66. package/esm2022/shared/classes/basic-user.class.mjs +1 -1
  67. package/esm2022/shared/classes/graphql-meta.class.mjs +1 -1
  68. package/esm2022/shared/classes/helper.class.mjs +1 -1
  69. package/esm2022/shared/classes/sort.class.mjs +1 -1
  70. package/esm2022/shared/classes/standard.class.mjs +1 -1
  71. package/esm2022/shared/functions/ws-client.function.mjs +1 -1
  72. package/esm2022/shared/services/auth.service.mjs +4 -4
  73. package/esm2022/shared/services/breadcrumb.service.mjs +4 -4
  74. package/esm2022/shared/services/cms.service.mjs +4 -4
  75. package/esm2022/shared/services/file.service.mjs +4 -4
  76. package/esm2022/shared/services/forms.service.mjs +4 -4
  77. package/esm2022/shared/services/graphql-meta.service.mjs +4 -4
  78. package/esm2022/shared/services/graphql-plus.service.mjs +4 -4
  79. package/esm2022/shared/services/graphql.service.mjs +7 -7
  80. package/esm2022/shared/services/image.service.mjs +4 -4
  81. package/esm2022/shared/services/loader.service.mjs +4 -4
  82. package/esm2022/shared/services/navigation.service.mjs +4 -4
  83. package/esm2022/shared/services/scroll.service.mjs +4 -4
  84. package/esm2022/shared/services/storage.service.mjs +21 -13
  85. package/esm2022/shared/services/toast.service.mjs +4 -4
  86. package/esm2022/shared/services/user.service.mjs +3 -3
  87. package/esm2022/shared/services/ws.service.mjs +3 -3
  88. package/esm2022/shared/validators/match.validator.mjs +1 -1
  89. package/esm2022/src/base.module.mjs +7 -40
  90. package/esm2022/src/decorators/auto-unsubscribe.decorator.mjs +1 -1
  91. package/esm2022/src/directives/lazy-load.directive.mjs +5 -4
  92. package/esm2022/src/directives/match-height.directive.mjs +5 -4
  93. package/esm2022/src/directives/resizable.directive.mjs +5 -4
  94. package/esm2022/src/factories/apollo-options.factory.mjs +1 -1
  95. package/esm2022/src/functions/extract-files.function.mjs +1 -1
  96. package/esm2022/src/guards/auth.guard.mjs +4 -4
  97. package/esm2022/src/guards/can-deactivate.guard.mjs +3 -3
  98. package/esm2022/src/guards/logout.guard.mjs +4 -4
  99. package/esm2022/src/pipes/date-ago.pipe.mjs +5 -4
  100. package/esm2022/src/pipes/safe-html.pipe.mjs +5 -5
  101. package/esm2022/src/services/fullscreen.service.mjs +4 -4
  102. package/esm2022/src/services/seo.service.mjs +33 -23
  103. package/esm2022/src/services/theme.service.mjs +4 -4
  104. package/fesm2022/lenne.tech-ng-base-base-cms.mjs +16 -93
  105. package/fesm2022/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  106. package/fesm2022/lenne.tech-ng-base-base-components.mjs +669 -697
  107. package/fesm2022/lenne.tech-ng-base-base-components.mjs.map +1 -1
  108. package/fesm2022/lenne.tech-ng-base-base-prototype.mjs +48 -74
  109. package/fesm2022/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  110. package/fesm2022/lenne.tech-ng-base-shared.mjs +69 -62
  111. package/fesm2022/lenne.tech-ng-base-shared.mjs.map +1 -1
  112. package/fesm2022/lenne.tech-ng-base.mjs +225 -240
  113. package/fesm2022/lenne.tech-ng-base.mjs.map +1 -1
  114. package/package.json +12 -12
  115. package/shared/services/storage.service.d.ts +2 -1
  116. package/src/base.module.d.ts +2 -8
  117. package/src/directives/lazy-load.directive.d.ts +1 -1
  118. package/src/directives/match-height.directive.d.ts +1 -1
  119. package/src/directives/resizable.directive.d.ts +1 -1
  120. package/src/pipes/date-ago.pipe.d.ts +1 -1
  121. package/src/pipes/safe-html.pipe.d.ts +1 -1
  122. package/src/services/seo.service.d.ts +2 -1
  123. package/base-cms/base-cms-routing.module.d.ts +0 -7
  124. package/base-cms/base-cms.module.d.ts +0 -26
  125. package/base-components/base-components.module.d.ts +0 -32
  126. package/base-prototype/base-prototype.module.d.ts +0 -17
  127. package/esm2022/base-cms/base-cms-routing.module.mjs +0 -32
  128. package/esm2022/base-cms/base-cms.module.mjs +0 -60
  129. package/esm2022/base-components/base-components.module.mjs +0 -122
  130. package/esm2022/base-prototype/base-prototype.module.mjs +0 -53
@@ -88,5 +88,5 @@ export declare class BaseCmsComponent implements OnInit, OnDestroy {
88
88
  */
89
89
  calcSideBarWidth(): void;
90
90
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseCmsComponent, never>;
91
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseCmsComponent, "app-base-cms", never, {}, {}, never, never, false, never>;
91
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseCmsComponent, "app-base-cms", never, {}, {}, never, never, true, never>;
92
92
  }
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Exports for public API
3
3
  */
4
- export * from './base-cms.module';
5
4
  export * from './pages/base-cms/base-cms.component';
6
5
  export * from './interfaces/base-cms-module-config.interface';
@@ -6,5 +6,5 @@ export declare class BreadcrumbComponent {
6
6
  breadcrumbs$: Observable<Breadcrumb[]>;
7
7
  constructor(breadcrumbService: BreadcrumbService);
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "base-breadcrumb", never, {}, {}, never, never, false, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "base-breadcrumb", never, {}, {}, never, never, true, never>;
10
10
  }
@@ -20,5 +20,5 @@ export declare class ChangePasswordComponent implements OnInit {
20
20
  */
21
21
  submit(): void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<ChangePasswordComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordComponent, "base-change-password", never, {}, {}, never, never, false, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordComponent, "base-change-password", never, {}, {}, never, never, true, never>;
24
24
  }
@@ -8,5 +8,5 @@ export declare class CheckboxComponent {
8
8
  required: boolean;
9
9
  objectPath: string;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "base-checkbox", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "control": { "alias": "control"; "required": false; }; "required": { "alias": "required"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; }, {}, never, ["*"], false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "base-checkbox", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "control": { "alias": "control"; "required": false; }; "required": { "alias": "required"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; }, {}, never, ["*"], true, never>;
12
12
  }
@@ -11,5 +11,5 @@ export declare class DeleteAccountComponent {
11
11
  constructor(userService: UserService, authService: AuthService, toastService: ToastService, router: Router);
12
12
  deleteAccount(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<DeleteAccountComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<DeleteAccountComponent, "base-delete-account", never, { "description": { "alias": "description"; "required": false; }; }, {}, never, never, false, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeleteAccountComponent, "base-delete-account", never, { "description": { "alias": "description"; "required": false; }; }, {}, never, never, true, never>;
15
15
  }
@@ -12,5 +12,5 @@ export declare class FabButtonComponent {
12
12
  buttons: Button[];
13
13
  toggle: boolean;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FabButtonComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<FabButtonComponent, "base-fab-button", never, { "fabIcon": { "alias": "fabIcon"; "required": false; }; "buttons": { "alias": "buttons"; "required": false; }; }, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<FabButtonComponent, "base-fab-button", never, { "fabIcon": { "alias": "fabIcon"; "required": false; }; "buttons": { "alias": "buttons"; "required": false; }; }, {}, never, never, true, never>;
16
16
  }
@@ -23,5 +23,5 @@ export declare class InputComponent {
23
23
  */
24
24
  togglePasswordType(): void;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "base-input", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "control": { "alias": "control"; "required": false; }; "type": { "alias": "type"; "required": false; }; "required": { "alias": "required"; "required": false; }; "eyeButton": { "alias": "eyeButton"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; }, { "enter": "enter"; }, never, never, false, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "base-input", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "control": { "alias": "control"; "required": false; }; "type": { "alias": "type"; "required": false; }; "required": { "alias": "required"; "required": false; }; "eyeButton": { "alias": "eyeButton"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; }, { "enter": "enter"; }, never, never, true, never>;
27
27
  }
@@ -60,5 +60,5 @@ export declare abstract class ModelFormBaseComponent implements OnInit {
60
60
  transformToControl(control: AbstractControl | null | undefined): UntypedFormControl;
61
61
  formatDate(date: any): string;
62
62
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelFormBaseComponent, never>;
63
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormBaseComponent, "ng-component", never, { "modelName": { "alias": "modelName"; "required": false; }; "label": { "alias": "label"; "required": false; }; "id": { "alias": "id"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "onlyUpdateMode": { "alias": "onlyUpdateMode"; "required": false; }; "duplicate": { "alias": "duplicate"; "required": false; }; "logging": { "alias": "logging"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showFavButton": { "alias": "showFavButton"; "required": false; }; }, { "finished": "finished"; }, never, never, false, never>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormBaseComponent, "ng-component", never, { "modelName": { "alias": "modelName"; "required": false; }; "label": { "alias": "label"; "required": false; }; "id": { "alias": "id"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "onlyUpdateMode": { "alias": "onlyUpdateMode"; "required": false; }; "duplicate": { "alias": "duplicate"; "required": false; }; "logging": { "alias": "logging"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showFavButton": { "alias": "showFavButton"; "required": false; }; }, { "finished": "finished"; }, never, never, true, never>;
64
64
  }
@@ -135,5 +135,5 @@ export declare class ModelFormComponent implements OnInit, OnChanges {
135
135
  private formatDate;
136
136
  private nestedObject;
137
137
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelFormComponent, never>;
138
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormComponent, "base-model-form", never, { "modelName": { "alias": "modelName"; "required": false; }; "label": { "alias": "label"; "required": false; }; "id": { "alias": "id"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "onlyUpdateMode": { "alias": "onlyUpdateMode"; "required": false; }; "duplicate": { "alias": "duplicate"; "required": false; }; "logging": { "alias": "logging"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showFavButton": { "alias": "showFavButton"; "required": false; }; }, { "finished": "finished"; }, never, never, false, never>;
138
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormComponent, "base-model-form", never, { "modelName": { "alias": "modelName"; "required": false; }; "label": { "alias": "label"; "required": false; }; "id": { "alias": "id"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "onlyUpdateMode": { "alias": "onlyUpdateMode"; "required": false; }; "duplicate": { "alias": "duplicate"; "required": false; }; "logging": { "alias": "logging"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showFavButton": { "alias": "showFavButton"; "required": false; }; }, { "finished": "finished"; }, never, never, true, never>;
139
139
  }
@@ -52,5 +52,5 @@ export declare class ModelFormSubComponent implements OnInit {
52
52
  */
53
53
  transformToControl(control: AbstractControl | null | undefined): UntypedFormControl;
54
54
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelFormSubComponent, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormSubComponent, "base-model-form-sub", never, { "id": { "alias": "id"; "required": false; }; "parentKey": { "alias": "parentKey"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "form": { "alias": "form"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "imageChanged": "imageChanged"; "fileChanged": "fileChanged"; }, never, never, false, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormSubComponent, "base-model-form-sub", never, { "id": { "alias": "id"; "required": false; }; "parentKey": { "alias": "parentKey"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "form": { "alias": "form"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "imageChanged": "imageChanged"; "fileChanged": "fileChanged"; }, never, never, true, never>;
56
56
  }
@@ -111,5 +111,5 @@ export declare class ModelTableComponent implements OnInit, OnChanges, AfterView
111
111
  getAllKeys(): any[];
112
112
  selectPage(i: number): Promise<void>;
113
113
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelTableComponent, never>;
114
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelTableComponent, "base-model-table", never, { "modelName": { "alias": "modelName"; "required": false; }; "objectId": { "alias": "objectId"; "required": false; }; "createMode": { "alias": "createMode"; "required": false; }; "logging": { "alias": "logging"; "required": false; }; "create": { "alias": "create"; "required": false; }; "update": { "alias": "update"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "import": { "alias": "import"; "required": false; }; "export": { "alias": "export"; "required": false; }; "duplicate": { "alias": "duplicate"; "required": false; }; "modelConfig": { "alias": "modelConfig"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showFavButton": { "alias": "showFavButton"; "required": false; }; }, { "idSelected": "idSelected"; "createModeChanged": "createModeChanged"; }, never, never, false, never>;
114
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelTableComponent, "base-model-table", never, { "modelName": { "alias": "modelName"; "required": false; }; "objectId": { "alias": "objectId"; "required": false; }; "createMode": { "alias": "createMode"; "required": false; }; "logging": { "alias": "logging"; "required": false; }; "create": { "alias": "create"; "required": false; }; "update": { "alias": "update"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "import": { "alias": "import"; "required": false; }; "export": { "alias": "export"; "required": false; }; "duplicate": { "alias": "duplicate"; "required": false; }; "modelConfig": { "alias": "modelConfig"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showFavButton": { "alias": "showFavButton"; "required": false; }; }, { "idSelected": "idSelected"; "createModeChanged": "createModeChanged"; }, never, never, true, never>;
115
115
  }
@@ -80,5 +80,5 @@ export declare class RefenceInputComponent implements OnInit, OnDestroy {
80
80
  */
81
81
  checkForNameFields(object: any): any;
82
82
  static ɵfac: i0.ɵɵFactoryDeclaration<RefenceInputComponent, never>;
83
- static ɵcmp: i0.ɵɵComponentDeclaration<RefenceInputComponent, "base-refence-input", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "isList": { "alias": "isList"; "required": false; }; "search": { "alias": "search"; "required": false; }; "useParamAsArg": { "alias": "useParamAsArg"; "required": false; }; "param": { "alias": "param"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "control": { "alias": "control"; "required": false; }; "required": { "alias": "required"; "required": false; }; "method": { "alias": "method"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "valueField": { "alias": "valueField"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "nameField": { "alias": "nameField"; "required": false; }; "creationLink": { "alias": "creationLink"; "required": false; }; }, {}, never, never, false, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<RefenceInputComponent, "base-refence-input", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "isList": { "alias": "isList"; "required": false; }; "search": { "alias": "search"; "required": false; }; "useParamAsArg": { "alias": "useParamAsArg"; "required": false; }; "param": { "alias": "param"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "control": { "alias": "control"; "required": false; }; "required": { "alias": "required"; "required": false; }; "method": { "alias": "method"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "valueField": { "alias": "valueField"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "nameField": { "alias": "nameField"; "required": false; }; "creationLink": { "alias": "creationLink"; "required": false; }; }, {}, never, never, true, never>;
84
84
  }
@@ -20,6 +20,6 @@ export declare class SelectComponent implements OnInit {
20
20
  options: Option[];
21
21
  ngOnInit(): void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "base-select", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "control": { "alias": "control"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "search": { "alias": "search"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, false, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "base-select", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "control": { "alias": "control"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "search": { "alias": "search"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, true, never>;
24
24
  }
25
25
  export {};
@@ -6,5 +6,5 @@ export declare class SkeletonLoaderComponent {
6
6
  size: number;
7
7
  convertToArray(value: any): any;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonLoaderComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonLoaderComponent, "base-skeleton-loader", never, { "type": { "alias": "type"; "required": false; }; "count": { "alias": "count"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, false, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonLoaderComponent, "base-skeleton-loader", never, { "type": { "alias": "type"; "required": false; }; "count": { "alias": "count"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
10
10
  }
@@ -56,5 +56,5 @@ export declare class TagsComponent {
56
56
  */
57
57
  onFocus(event?: any): void;
58
58
  static ɵfac: i0.ɵɵFactoryDeclaration<TagsComponent, never>;
59
- static ɵcmp: i0.ɵɵComponentDeclaration<TagsComponent, "base-tags", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "control": { "alias": "control"; "required": false; }; "options": { "alias": "options"; "required": false; }; "custom": { "alias": "custom"; "required": false; }; "removeByKey": { "alias": "removeByKey"; "required": false; }; "required": { "alias": "required"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "validators": { "alias": "validators"; "required": false; }; }, {}, never, never, false, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<TagsComponent, "base-tags", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "control": { "alias": "control"; "required": false; }; "options": { "alias": "options"; "required": false; }; "custom": { "alias": "custom"; "required": false; }; "removeByKey": { "alias": "removeByKey"; "required": false; }; "required": { "alias": "required"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "validators": { "alias": "validators"; "required": false; }; }, {}, never, never, true, never>;
60
60
  }
@@ -17,5 +17,5 @@ export declare class TextareaComponent implements OnChanges {
17
17
  adjustInitHeight(): void;
18
18
  adjustHeight(event: any): void;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "base-textarea", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "control": { "alias": "control"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "autoHeight": { "alias": "autoHeight"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; }, {}, never, never, false, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "base-textarea", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "control": { "alias": "control"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "autoHeight": { "alias": "autoHeight"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; }, {}, never, never, true, never>;
21
21
  }
@@ -15,5 +15,5 @@ export declare class ToastComponent implements OnInit, OnDestroy {
15
15
  getDefaultDescription(toast: Toast): string;
16
16
  reload(): void;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "base-toast", never, { "position": { "alias": "position"; "required": false; }; }, {}, never, never, false, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "base-toast", never, { "position": { "alias": "position"; "required": false; }; }, {}, never, never, true, never>;
19
19
  }
@@ -107,5 +107,5 @@ export declare class UploadImageComponent implements OnInit {
107
107
  finishedCropping(): void;
108
108
  loadImageFailed(): void;
109
109
  static ɵfac: i0.ɵɵFactoryDeclaration<UploadImageComponent, never>;
110
- static ɵcmp: i0.ɵɵComponentDeclaration<UploadImageComponent, "base-upload-image", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "supportText": { "alias": "supportText"; "required": false; }; "required": { "alias": "required"; "required": false; }; "defaultDragText": { "alias": "defaultDragText"; "required": false; }; "defaultReleaseText": { "alias": "defaultReleaseText"; "required": false; }; "preButtonText": { "alias": "preButtonText"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "validExtensions": { "alias": "validExtensions"; "required": false; }; "control": { "alias": "control"; "required": false; }; "url": { "alias": "url"; "required": false; }; "uploadPath": { "alias": "uploadPath"; "required": false; }; "deletePath": { "alias": "deletePath"; "required": false; }; "path": { "alias": "path"; "required": false; }; "compressOptions": { "alias": "compressOptions"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; "uploadDirectly": { "alias": "uploadDirectly"; "required": false; }; "croppingImage": { "alias": "croppingImage"; "required": false; }; "croppingOptions": { "alias": "croppingOptions"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "imageUploaded": "imageUploaded"; "imageDeleted": "imageDeleted"; "fileChanged": "fileChanged"; }, never, never, false, never>;
110
+ static ɵcmp: i0.ɵɵComponentDeclaration<UploadImageComponent, "base-upload-image", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "infoText": { "alias": "infoText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "supportText": { "alias": "supportText"; "required": false; }; "required": { "alias": "required"; "required": false; }; "defaultDragText": { "alias": "defaultDragText"; "required": false; }; "defaultReleaseText": { "alias": "defaultReleaseText"; "required": false; }; "preButtonText": { "alias": "preButtonText"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "validExtensions": { "alias": "validExtensions"; "required": false; }; "control": { "alias": "control"; "required": false; }; "url": { "alias": "url"; "required": false; }; "uploadPath": { "alias": "uploadPath"; "required": false; }; "deletePath": { "alias": "deletePath"; "required": false; }; "path": { "alias": "path"; "required": false; }; "compressOptions": { "alias": "compressOptions"; "required": false; }; "maxSize": { "alias": "maxSize"; "required": false; }; "uploadDirectly": { "alias": "uploadDirectly"; "required": false; }; "croppingImage": { "alias": "croppingImage"; "required": false; }; "croppingOptions": { "alias": "croppingOptions"; "required": false; }; "objectPath": { "alias": "objectPath"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "imageUploaded": "imageUploaded"; "imageDeleted": "imageDeleted"; "fileChanged": "fileChanged"; }, never, never, true, never>;
111
111
  }
@@ -5,5 +5,5 @@ export declare class BackButtonDirective {
5
5
  constructor(navigation: NavigationService);
6
6
  onClick(): void;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<BackButtonDirective, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<BackButtonDirective, "[baseBackButton]", never, {}, {}, never, never, false, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BackButtonDirective, "[baseBackButton]", never, {}, {}, never, never, true, never>;
9
9
  }
@@ -18,5 +18,5 @@ export declare class ContextMenuDirective implements OnInit {
18
18
  ngOnInit(): void;
19
19
  showContextMenu(event: any, show: boolean): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuDirective, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<ContextMenuDirective, "[ltContextMenu]", ["contextMenuData"], { "contextMenuData": { "alias": "contextMenuData"; "required": false; }; "ltContextMenu": { "alias": "ltContextMenu"; "required": false; }; "xGap": { "alias": "xGap"; "required": false; }; "yGap": { "alias": "yGap"; "required": false; }; "overflowSpace": { "alias": "overflowSpace"; "required": false; }; "selectors": { "alias": "selectors"; "required": false; }; }, { "clickedElement": "clickedElement"; }, never, never, false, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ContextMenuDirective, "[ltContextMenu]", ["contextMenuData"], { "contextMenuData": { "alias": "contextMenuData"; "required": false; }; "ltContextMenu": { "alias": "ltContextMenu"; "required": false; }; "xGap": { "alias": "xGap"; "required": false; }; "yGap": { "alias": "yGap"; "required": false; }; "overflowSpace": { "alias": "overflowSpace"; "required": false; }; "selectors": { "alias": "selectors"; "required": false; }; }, { "clickedElement": "clickedElement"; }, never, never, true, never>;
22
22
  }
@@ -11,5 +11,5 @@ export declare class SortDirective {
11
11
  */
12
12
  sortColumn(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<SortDirective, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<SortDirective, "[baseSort]", never, { "baseSort": { "alias": "baseSort"; "required": false; }; }, { "baseSorted": "baseSorted"; }, never, never, false, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SortDirective, "[baseSort]", never, { "baseSort": { "alias": "baseSort"; "required": false; }; }, { "baseSorted": "baseSorted"; }, never, never, true, never>;
15
15
  }
@@ -6,5 +6,5 @@ import * as i0 from "@angular/core";
6
6
  export declare class StopPropagationDirective {
7
7
  onClick(event: any): void;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<StopPropagationDirective, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<StopPropagationDirective, "[baseStopPropagation]", never, {}, {}, never, never, false, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StopPropagationDirective, "[baseStopPropagation]", never, {}, {}, never, never, true, never>;
10
10
  }
@@ -6,5 +6,5 @@ import * as i0 from "@angular/core";
6
6
  export declare class EllipsesPipe implements PipeTransform {
7
7
  transform(value: string, limit: number): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<EllipsesPipe, never>;
9
- static ɵpipe: i0.ɵɵPipeDeclaration<EllipsesPipe, "baseEllipses", false>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<EllipsesPipe, "baseEllipses", true>;
10
10
  }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Exports for public API
3
3
  */
4
- export * from './base-components.module';
5
4
  export * from './directives/sort.directive';
6
5
  export * from './directives/back-button.directive';
7
6
  export * from './directives/context-menu.directive';
@@ -14,5 +14,5 @@ export declare class EmailVerificationComponent implements OnInit {
14
14
  ngOnInit(): void;
15
15
  verifyUser(): void;
16
16
  static ɵfac: i0.ɵɵFactoryDeclaration<EmailVerificationComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<EmailVerificationComponent, "base-email-verification", never, {}, {}, never, never, false, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<EmailVerificationComponent, "base-email-verification", never, {}, {}, never, never, true, never>;
18
18
  }
@@ -22,5 +22,5 @@ export declare class ForgotPasswordComponent implements OnInit {
22
22
  */
23
23
  submit(): void;
24
24
  static ɵfac: i0.ɵɵFactoryDeclaration<ForgotPasswordComponent, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<ForgotPasswordComponent, "base-forgot-password", never, {}, {}, never, never, false, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ForgotPasswordComponent, "base-forgot-password", never, {}, {}, never, never, true, never>;
26
26
  }
@@ -29,5 +29,5 @@ export declare class LoginComponent implements OnInit, OnDestroy {
29
29
  submit(): void;
30
30
  scrollToTop(): void;
31
31
  static ɵfac: i0.ɵɵFactoryDeclaration<LoginComponent, never>;
32
- static ɵcmp: i0.ɵɵComponentDeclaration<LoginComponent, "base-login", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoginComponent, "base-login", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
33
33
  }
@@ -20,5 +20,5 @@ export declare class ProfileComponent implements OnInit {
20
20
  */
21
21
  updateSessionUser(): void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<ProfileComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<ProfileComponent, "base-profile", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProfileComponent, "base-profile", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
24
24
  }
@@ -1,6 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { UntypedFormGroup } from '@angular/forms';
3
- import { FormsService, UserService, RegisterConfig } from '@lenne.tech/ng-base/shared';
3
+ import { FormsService, RegisterConfig, UserService } from '@lenne.tech/ng-base/shared';
4
4
  import { ActivatedRoute, Router } from '@angular/router';
5
5
  import { Subscription } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
@@ -27,5 +27,5 @@ export declare class RegisterComponent implements OnInit {
27
27
  submit(): void;
28
28
  scrollToTop(): void;
29
29
  static ɵfac: i0.ɵɵFactoryDeclaration<RegisterComponent, never>;
30
- static ɵcmp: i0.ɵɵComponentDeclaration<RegisterComponent, "base-register", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<RegisterComponent, "base-register", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
31
31
  }
@@ -25,5 +25,5 @@ export declare class SetPasswordComponent implements OnInit {
25
25
  */
26
26
  submit(): void;
27
27
  static ɵfac: i0.ɵɵFactoryDeclaration<SetPasswordComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<SetPasswordComponent, "base-set-password", never, { "redirectUrl": { "alias": "redirectUrl"; "required": false; }; }, {}, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<SetPasswordComponent, "base-set-password", never, { "redirectUrl": { "alias": "redirectUrl"; "required": false; }; }, {}, never, never, true, never>;
29
29
  }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Exports for public API
3
3
  */
4
- export * from './base-prototype.module';
5
4
  export * from './pages/login/login.component';
6
5
  export * from './pages/register/register.component';
7
6
  export * from './pages/forgot-password/forgot-password.component';
@@ -1,12 +1,13 @@
1
1
  import { Component, Inject } from '@angular/core';
2
- import { BasicUser, } from '@lenne.tech/ng-base/shared';
2
+ import { BasicUser } from '@lenne.tech/ng-base/shared';
3
+ import { RouterLink } from '@angular/router';
3
4
  import { BASE_CMS_MODULE_CONFIG } from '../../interfaces/base-cms-module-config.interface';
4
5
  import { Subscription } from 'rxjs';
6
+ import { NgClass, NgStyle } from '@angular/common';
7
+ import { ModelTableComponent } from '@lenne.tech/ng-base/base-components';
5
8
  import * as i0 from "@angular/core";
6
9
  import * as i1 from "@lenne.tech/ng-base/shared";
7
10
  import * as i2 from "@angular/router";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@lenne.tech/ng-base/base-components";
10
11
  export class BaseCmsComponent {
11
12
  moduleConfig;
12
13
  graphQLMetaService;
@@ -219,14 +220,19 @@ export class BaseCmsComponent {
219
220
  calcSideBarWidth() {
220
221
  this.sideBarWidth = window.innerWidth < 768 ? '8%' : '22%';
221
222
  }
222
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseCmsComponent, deps: [{ token: BASE_CMS_MODULE_CONFIG }, { token: i1.GraphQLMetaService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1.AuthService }, { token: i1.CmsService }], target: i0.ɵɵFactoryTarget.Component });
223
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: BaseCmsComponent, selector: "app-base-cms", ngImport: i0, template: "<div class=\"main\">\n <div\n class=\"sidebar\"\n [ngStyle]=\"{\n 'flex-basis': !responsiveToggle ? sideBarWidth : '100%',\n 'min-width': !responsiveToggle ? sideBarWidth : ''\n }\"\n >\n <div class=\"d-none d-md-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"d-flex flex-column d-md-none p-3 h-100\">\n <div class=\"d-flex justify-content-end\">\n <i\n class=\"bi\"\n [ngClass]=\"{ 'bi-chevron-left': !responsiveToggle, 'bi-chevron-right': responsiveToggle }\"\n (click)=\"responsiveToggle = !responsiveToggle\"\n ></i>\n </div>\n <ul\n class=\"nav nav-pills responsive-pills flex-column mb-auto\"\n [ngClass]=\"{ 'w-100-transition': responsiveToggle }\"\n *ngIf=\"types\"\n >\n <li class=\"nav-item\" *ngFor=\"let type of types\" (click)=\"responsiveToggle = !responsiveToggle\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? 'unset' : '0' }\">\n <div class=\"p-3 p-md-5 mb-3\">\n <base-model-table\n [modelConfig]=\"moduleConfig?.modelConfig[camelModelName]\"\n [config]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [import]=\"isImportPossible()\"\n [export]=\"isExportPossible()\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n [showFavButton]=\"!responsiveToggle\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex-grow:1}@media only screen and (min-width: 992px){.main .sidebar{max-width:300px}}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe;min-height:100vh}.nav-flush .nav-link{border-radius:0}.responsive-pills{width:0;text-align:center;overflow:hidden}.w-100-transition{width:100%;transition:width .2s}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.ModelTableComponent, selector: "base-model-table", inputs: ["modelName", "objectId", "createMode", "logging", "create", "update", "delete", "import", "export", "duplicate", "modelConfig", "config", "showFavButton"], outputs: ["idSelected", "createModeChanged"] }] });
223
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BaseCmsComponent, deps: [{ token: BASE_CMS_MODULE_CONFIG }, { token: i1.GraphQLMetaService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1.AuthService }, { token: i1.CmsService }], target: i0.ɵɵFactoryTarget.Component });
224
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: BaseCmsComponent, isStandalone: true, selector: "app-base-cms", ngImport: i0, template: "<div class=\"main\">\n <div\n class=\"sidebar\"\n [ngStyle]=\"{\n 'flex-basis': !responsiveToggle ? sideBarWidth : '100%',\n 'min-width': !responsiveToggle ? sideBarWidth : ''\n }\"\n >\n <div class=\"d-none d-md-flex flex-column flex-shrink-0 p-3 h-100\">\n @if (moduleConfig.branding) {\n @if (!moduleConfig?.logoUrl) {\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n }\n @if (moduleConfig?.logoUrl) {\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n }\n <hr />\n }\n @if (types) {\n <ul class=\"nav nav-pills flex-column mb-auto\">\n @for (type of types; track type) {\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"d-flex flex-column d-md-none p-3 h-100\">\n <div class=\"d-flex justify-content-end\">\n <i\n class=\"bi\"\n [ngClass]=\"{ 'bi-chevron-left': !responsiveToggle, 'bi-chevron-right': responsiveToggle }\"\n (click)=\"responsiveToggle = !responsiveToggle\"\n ></i>\n </div>\n @if (types) {\n <ul\n class=\"nav nav-pills responsive-pills flex-column mb-auto\"\n [ngClass]=\"{ 'w-100-transition': responsiveToggle }\"\n >\n @for (type of types; track type) {\n <li class=\"nav-item\" (click)=\"responsiveToggle = !responsiveToggle\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n }\n </ul>\n }\n </div>\n </div>\n\n <div class=\"sidebar-content\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? 'unset' : '0' }\">\n <div class=\"p-3 p-md-5 mb-3\">\n <base-model-table\n [modelConfig]=\"moduleConfig?.modelConfig[camelModelName]\"\n [config]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [import]=\"isImportPossible()\"\n [export]=\"isExportPossible()\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n [showFavButton]=\"!responsiveToggle\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex-grow:1}@media only screen and (min-width: 992px){.main .sidebar{max-width:300px}}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe;min-height:100vh}.nav-flush .nav-link{border-radius:0}.responsive-pills{width:0;text-align:center;overflow:hidden}.w-100-transition{width:100%;transition:width .2s}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ModelTableComponent, selector: "base-model-table", inputs: ["modelName", "objectId", "createMode", "logging", "create", "update", "delete", "import", "export", "duplicate", "modelConfig", "config", "showFavButton"], outputs: ["idSelected", "createModeChanged"] }] });
224
225
  }
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseCmsComponent, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: BaseCmsComponent, decorators: [{
226
227
  type: Component,
227
- args: [{ selector: 'app-base-cms', template: "<div class=\"main\">\n <div\n class=\"sidebar\"\n [ngStyle]=\"{\n 'flex-basis': !responsiveToggle ? sideBarWidth : '100%',\n 'min-width': !responsiveToggle ? sideBarWidth : ''\n }\"\n >\n <div class=\"d-none d-md-flex flex-column flex-shrink-0 p-3 h-100\">\n <ng-container *ngIf=\"moduleConfig.branding\">\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n *ngIf=\"!moduleConfig?.logoUrl\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n *ngIf=\"moduleConfig?.logoUrl\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n <hr />\n </ng-container>\n <ul class=\"nav nav-pills flex-column mb-auto\" *ngIf=\"types\">\n <li class=\"nav-item\" *ngFor=\"let type of types\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n <div class=\"d-flex flex-column d-md-none p-3 h-100\">\n <div class=\"d-flex justify-content-end\">\n <i\n class=\"bi\"\n [ngClass]=\"{ 'bi-chevron-left': !responsiveToggle, 'bi-chevron-right': responsiveToggle }\"\n (click)=\"responsiveToggle = !responsiveToggle\"\n ></i>\n </div>\n <ul\n class=\"nav nav-pills responsive-pills flex-column mb-auto\"\n [ngClass]=\"{ 'w-100-transition': responsiveToggle }\"\n *ngIf=\"types\"\n >\n <li class=\"nav-item\" *ngFor=\"let type of types\" (click)=\"responsiveToggle = !responsiveToggle\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"sidebar-content\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? 'unset' : '0' }\">\n <div class=\"p-3 p-md-5 mb-3\">\n <base-model-table\n [modelConfig]=\"moduleConfig?.modelConfig[camelModelName]\"\n [config]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [import]=\"isImportPossible()\"\n [export]=\"isExportPossible()\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n [showFavButton]=\"!responsiveToggle\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex-grow:1}@media only screen and (min-width: 992px){.main .sidebar{max-width:300px}}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe;min-height:100vh}.nav-flush .nav-link{border-radius:0}.responsive-pills{width:0;text-align:center;overflow:hidden}.w-100-transition{width:100%;transition:width .2s}\n"] }]
228
+ args: [{ selector: 'app-base-cms', standalone: true, imports: [
229
+ NgStyle,
230
+ RouterLink,
231
+ NgClass,
232
+ ModelTableComponent
233
+ ], template: "<div class=\"main\">\n <div\n class=\"sidebar\"\n [ngStyle]=\"{\n 'flex-basis': !responsiveToggle ? sideBarWidth : '100%',\n 'min-width': !responsiveToggle ? sideBarWidth : ''\n }\"\n >\n <div class=\"d-none d-md-flex flex-column flex-shrink-0 p-3 h-100\">\n @if (moduleConfig.branding) {\n @if (!moduleConfig?.logoUrl) {\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none\"\n >\n <span class=\"d-block fs-4\"><b class=\"text-primary\">Base</b>CMS</span>\n <small class=\"fw-lighter\">The auto generated GraphQL CMS</small>\n </a>\n }\n @if (moduleConfig?.logoUrl) {\n <a\n href=\"/\"\n class=\"d-flex flex-column align-items-start mb-3 mt-3 me-md-auto link-dark text-decoration-none w-100\"\n >\n <img [src]=\"moduleConfig.logoUrl\" class=\"img-responsive w-100\" alt=\"Logo\" />\n </a>\n }\n <hr />\n }\n @if (types) {\n <ul class=\"nav nav-pills flex-column mb-auto\">\n @for (type of types; track type) {\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"d-flex flex-column d-md-none p-3 h-100\">\n <div class=\"d-flex justify-content-end\">\n <i\n class=\"bi\"\n [ngClass]=\"{ 'bi-chevron-left': !responsiveToggle, 'bi-chevron-right': responsiveToggle }\"\n (click)=\"responsiveToggle = !responsiveToggle\"\n ></i>\n </div>\n @if (types) {\n <ul\n class=\"nav nav-pills responsive-pills flex-column mb-auto\"\n [ngClass]=\"{ 'w-100-transition': responsiveToggle }\"\n >\n @for (type of types; track type) {\n <li class=\"nav-item\" (click)=\"responsiveToggle = !responsiveToggle\">\n <a\n class=\"nav-link\"\n aria-current=\"page\"\n [routerLink]=\"(id ? '../../' : '../') + toKebabCase(type?.name)\"\n [ngClass]=\"{ active: toKebabCase(type?.name) === toKebabCase(this.modelName) }\"\n >\n {{\n moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.plural\n : moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n ? moduleConfig?.modelConfig[lowerCaseFirstLetter(type?.name)]?.label\n : type.name + 's'\n }}\n </a>\n </li>\n }\n </ul>\n }\n </div>\n </div>\n\n <div class=\"sidebar-content\" [ngStyle]=\"{ 'flex-basis': !responsiveToggle ? 'unset' : '0' }\">\n <div class=\"p-3 p-md-5 mb-3\">\n <base-model-table\n [modelConfig]=\"moduleConfig?.modelConfig[camelModelName]\"\n [config]=\"moduleConfig?.fieldConfig[camelModelName] || {}\"\n [modelName]=\"modelName\"\n [logging]=\"moduleConfig?.logging\"\n [objectId]=\"id !== 'neu' ? id : ''\"\n [createMode]=\"id === 'neu'\"\n (createModeChanged)=\"onCreateModeChanged($event)\"\n (idSelected)=\"idSelected($event)\"\n [import]=\"isImportPossible()\"\n [export]=\"isExportPossible()\"\n [create]=\"isCreatePossible()\"\n [update]=\"isUpdatePossible()\"\n [delete]=\"isDeletePossible()\"\n [duplicate]=\"isDuplicatePossible()\"\n [showFavButton]=\"!responsiveToggle\"\n ></base-model-table>\n </div>\n </div>\n</div>\n", styles: [".active{color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.2)!important;font-weight:700}.nav-link{color:var(--bs-body-color)}.sidebar{box-shadow:#7090b014 14px 17px 40px 4px;transition:all .2s linear 0s;z-index:99}.main{display:flex;flex-direction:row;overflow:hidden;height:100%}.main .sidebar{flex-grow:1}@media only screen and (min-width: 992px){.main .sidebar{max-width:300px}}.main .sidebar-content{flex-grow:999;overflow-y:auto;background-color:#f5f7fe;min-height:100vh}.nav-flush .nav-link{border-radius:0}.responsive-pills{width:0;text-align:center;overflow:hidden}.w-100-transition{width:100%;transition:width .2s}\n"] }]
228
234
  }], ctorParameters: () => [{ type: undefined, decorators: [{
229
235
  type: Inject,
230
236
  args: [BASE_CMS_MODULE_CONFIG]
231
237
  }] }, { type: i1.GraphQLMetaService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1.AuthService }, { type: i1.CmsService }] });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9wYWdlcy9iYXNlLWNtcy9iYXNlLWNtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBRUwsU0FBUyxHQUtWLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLG1EQUFtRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU9wQyxNQUFNLE9BQU8sZ0JBQWdCO0lBV2M7SUFDL0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWZWLElBQUksQ0FBYztJQUNsQixTQUFTLENBQVM7SUFDbEIsY0FBYyxDQUFTO0lBQ3ZCLEVBQUUsQ0FBUztJQUNYLEtBQUssR0FBc0IsRUFBRSxDQUFDO0lBQzlCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ2xDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBRXpCLFlBQ3lDLFlBQWlDLEVBQ2hFLGtCQUFzQyxFQUN0QyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsVUFBc0I7UUFMUyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDaEUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFD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V0FBVyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0QsQ0FBQzt1R0EvT1UsZ0JBQWdCLGtCQVdqQixzQkFBc0I7MkZBWHJCLGdCQUFnQixvRENsQjdCLGlwSUFzR0E7OzJGRHBGYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzs7MEJBZXJCLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBdXRoU2VydmljZSxcbiAgQmFzaWNVc2VyLFxuICBDbXNTZXJ2aWNlLFxuICBHcmFwaHFsQ3J1ZFR5cGUsXG4gIEdyYXBoUUxNZXRhLFxuICBHcmFwaFFMTWV0YVNlcnZpY2UsXG59IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQkFTRV9DTVNfTU9EVUxFX0NPTkZJRywgQmFzZUNNU01vZHVsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFzZS1jbXMtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1iYXNlLWNtcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLWNtcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhc2UtY21zLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VDbXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG1ldGE6IEdyYXBoUUxNZXRhO1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgY2FtZWxNb2RlbE5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdHlwZXM6IEdyYXBocWxDcnVkVHlwZVtdID0gW107XG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgc2lkZUJhcldpZHRoID0gJzIyJSc7XG4gIHJlc3BvbnNpdmVUb2dnbGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEJBU0VfQ01TX01PRFVMRV9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IEJhc2VDTVNNb2R1bGVDb25maWcsXG4gICAgcHJpdmF0ZSBncmFwaFFMTWV0YVNlcnZpY2U6IEdyYXBoUUxNZXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY21zU2VydmljZTogQ21zU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNhbGNTaWRlQmFyV2lkdGgoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZVsnbW9kZWxOYW1lJ10pIHtcbiAgICAgICAgICBjb25zdCBleGNsdWRlID0gdGhpcy5tb2R1bGVDb25maWcubW9kZWxDb25maWdbdmFsdWVbJ21vZGVsTmFtZSddXT8uZXhjbHVkZTtcblxuICAgICAgICAgIGlmIChleGNsdWRlICE9PSBudWxsICYmICFleGNsdWRlKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsTmFtZSA9IHZhbHVlWydtb2RlbE5hbWUnXTtcbiAgICAgICAgICAgIHRoaXMuY2FtZWxNb2RlbE5hbWUgPSB0aGlzLnRvQ2FtZWxDYXNlKHRoaXMubW9kZWxOYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0KCkudGhlbigodHlwZXM6IEdyYXBocWxDcnVkVHlwZVtdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJyArIHRoaXMudG9LZWJhYkNhc2UodHlwZXNbMF0ubmFtZSldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVbJ2lkJ10pIHtcbiAgICAgICAgICB0aGlzLmlkID0gdmFsdWVbJ2lkJ107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIEdyYXBocWxDcnVkVHlwZSBvYmplY3RzXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0eXBlcyB0aGF0IGFyZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBpbml0KCk6IFByb21pc2U8R3JhcGhxbENydWRUeXBlW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5ncmFwaFFMTWV0YVNlcnZpY2UuZ2V0TWV0YSgpLnN1YnNjcmliZSgobWV0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnbW9kZWxOYW1lJ10pIHtcbiAgICAgICAgICB0aGlzLm1vZGVsTmFtZSA9IHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydtb2RlbE5hbWUnXTtcbiAgICAgICAgICB0aGlzLmNhbWVsTW9kZWxOYW1lID0gdGhpcy50b0NhbWVsQ2FzZSh0aGlzLm1vZGVsTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ2lkJ10pIHtcbiAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ2lkJ107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0eXBlcyA9IG1ldGEuZ2V0VHlwZXModGhpcy5tb2R1bGVDb25maWc/LmxvZ2dpbmcpO1xuXG4gICAgICAgIC8vIENoZWNrIGZvciBleGNsdWRlZCB0eXBlc1xuICAgICAgICBsZXQgZmlsdGVyZWRUeXBlcyA9IHR5cGVzLmZpbHRlcigoZSkgPT4gIXRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tlLm5hbWUudG9Mb3dlckNhc2UoKV0/LmV4Y2x1ZGUpO1xuXG4gICAgICAgIC8vIFNvcnQgdHlwZXNcbiAgICAgICAgZmlsdGVyZWRUeXBlcyA9IGZpbHRlcmVkVHlwZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2EubmFtZS50b0xvd2VyQ2FzZSgpXT8ub3JkZXJcbiAgICAgICAgICAgICAgPyB0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbYS5uYW1lLnRvTG93ZXJDYXNlKCldPy5vcmRlclxuICAgICAgICAgICAgICA6IDk5KSAtXG4gICAgICAgICAgICAodGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2IubmFtZS50b0xvd2VyQ2FzZSgpXT8ub3JkZXJcbiAgICAgICAgICAgICAgPyB0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbYi5uYW1lLnRvTG93ZXJDYXNlKCldPy5vcmRlclxuICAgICAgICAgICAgICA6IDk5KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENoZWNrIGZvciByZXN0cmljdGVkIHR5cGVzXG4gICAgICAgIHRoaXMudHlwZXMgPSBmaWx0ZXJlZFR5cGVzLmZpbHRlcigoZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbZS5uYW1lLnRvTG93ZXJDYXNlKCldPy5yZXN0cmljdGVkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2U/LmN1cnJlbnRVc2VyKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlPy5jdXJyZW50VXNlcjtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZFVzZXIgPSBCYXNpY1VzZXIubWFwKHVzZXIpO1xuXG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkVXNlcj8uaGFzQWxsUm9sZXModGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2UubmFtZS50b0xvd2VyQ2FzZSgpXT8ucm9sZXMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLm1vZHVsZUNvbmZpZz8ubG9nZ2luZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdCYXNlQ21zQ29tcG9uZW50Ojppbml0LT50eXBlcycsIHRoaXMudHlwZXMpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdCYXNlQ21zQ29tcG9uZW50Ojppbml0LT5jYW1lbE1vZGVsTmFtZScsIHRoaXMuY2FtZWxNb2RlbE5hbWUpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdCYXNlQ21zQ29tcG9uZW50Ojppbml0LT5maWVsZENvbmZpZycsIHRoaXMubW9kdWxlQ29uZmlnPy5maWVsZENvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKHRoaXMudHlwZXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5tb2RlbE5hbWUgJiYgdGhpcy50eXBlcykge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nICsgdGhpcy50b0tlYmFiQ2FzZSh0aGlzLnR5cGVzWzBdLm5hbWUpXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBzZXQgYW5kIHRoZSB0eXBlcyBhcmUgc2V0LCB0aGVuIHJldHVybiB0aGUgdHlwZSB0aGF0IG1hdGNoZXMgdGhlIG1vZGVsIG5hbWVcbiAgICpcbiAgICogQHJldHVybnMgVGhlIHR5cGUgb2JqZWN0IHRoYXQgbWF0Y2hlcyB0aGUgbW9kZWwgbmFtZS5cbiAgICovXG4gIGdldFR5cGVCeU1vZGVsTmFtZSgpIHtcbiAgICBpZiAodGhpcy5tb2RlbE5hbWUgJiYgdGhpcy50eXBlcykge1xuICAgICAgcmV0dXJuIHRoaXMudHlwZXMuZmluZCgoZSkgPT4gdGhpcy50b0tlYmFiQ2FzZShlLm5hbWUpID09PSB0aGlzLnRvS2ViYWJDYXNlKHRoaXMubW9kZWxOYW1lKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBjcmVhdGVNb2RlQ2hhbmdlZCBldmVudCBpcyBlbWl0dGVkLCBpZiB0aGUgY3JlYXRlTW9kZSBpcyB0cnVlLCBuYXZpZ2F0ZSB0byB0aGUgbmV3IHJvdXRlXG4gICAqXG4gICAqIEBwYXJhbSBjcmVhdGVNb2RlIC0gYm9vbGVhbiAtIFRoaXMgaXMgYSBib29sZWFuIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHVzZXIgaXMgaW4gY3JlYXRlIG1vZGUgb3JcbiAgICogbm90LlxuICAgKi9cbiAgb25DcmVhdGVNb2RlQ2hhbmdlZChjcmVhdGVNb2RlOiBib29sZWFuKSB7XG4gICAgaWYgKGNyZWF0ZU1vZGUpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nICsgJ25ldSddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSB0eXBlIGV4aXN0cywgcmV0dXJuIHRoZSBjcmVhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzQ3JlYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmNyZWF0ZSA6IGZhbHNlO1xuICB9XG5cbiAgaXNJbXBvcnRQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW3RoaXMuY2FtZWxNb2RlbE5hbWVdPy5pbXBvcnQ7XG5cbiAgICBpZiAoY29uZmlnICE9PSBudWxsICYmIGNvbmZpZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQgPSBjb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlzRXhwb3J0UG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1t0aGlzLmNhbWVsTW9kZWxOYW1lXT8uZXhwb3J0O1xuXG4gICAgaWYgKGNvbmZpZyAhPT0gbnVsbCAmJiBjb25maWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0ID0gY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGVsIG5hbWUgaXMgZm91bmQgaW4gdGhlIHR5cGUgbWFwLCByZXR1cm4gdGhlIHVwZGF0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSBvYmplY3RcbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgaXNVcGRhdGVQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlQnlNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gdHlwZSA/IHR5cGUudXBkYXRlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHR5cGUgaXMgZGVmaW5lZCwgcmV0dXJuIHRoZSBkZWxldGUgcHJvcGVydHkgb2YgdGhlIHR5cGUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2VcbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgaXNEZWxldGVQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlQnlNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gdHlwZSA/IHR5cGUuZGVsZXRlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGVsIG5hbWUgaXMgZm91bmQgaW4gdGhlIHR5cGUgYXJyYXksIHJldHVybiB0aGUgZHVwbGljYXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc0R1cGxpY2F0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS5kdXBsaWNhdGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgaWQgaXMgdHJ1dGh5LCBuYXZpZ2F0ZSB0byB0aGUgaWQsIG90aGVyd2lzZSBuYXZpZ2F0ZSB0byB0aGUgcGFyZW50IHJvdXRlXG4gICAqL1xuICBpZFNlbGVjdGVkKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nICsgaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAgICovXG4gIHRvS2ViYWJDYXNlKHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cj8ucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAgICovXG4gIHRvQ2FtZWxDYXNlKHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cj8ucmVwbGFjZSgvLS4vZywgKG1hdGNoKSA9PiBtYXRjaFsxXS50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gZmlyc3QgbGV0dGVyIHRvIGxvd2VyIGNhc2VcbiAgICovXG4gIGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jbXNTZXJ2aWNlLmxvd2VyQ2FzZUZpcnN0TGV0dGVyKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHNpZGViYXIgd2lkdGggYmFzZWQgb24gc2NyZWVuIHNpemVcbiAgICovXG4gIGNhbGNTaWRlQmFyV2lkdGgoKSB7XG4gICAgdGhpcy5zaWRlQmFyV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCA/ICc4JScgOiAnMjIlJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1haW5cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2lkZWJhclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgJ2ZsZXgtYmFzaXMnOiAhcmVzcG9uc2l2ZVRvZ2dsZSA/IHNpZGVCYXJXaWR0aCA6ICcxMDAlJyxcbiAgICAgICdtaW4td2lkdGgnOiAhcmVzcG9uc2l2ZVRvZ2dsZSA/IHNpZGVCYXJXaWR0aCA6ICcnXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIGQtbWQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNocmluay0wIHAtMyBoLTEwMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZHVsZUNvbmZpZy5icmFuZGluZ1wiPlxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydCBtYi0zIG10LTMgbWUtbWQtYXV0byBsaW5rLWRhcmsgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgICAgICAgICpuZ0lmPVwiIW1vZHVsZUNvbmZpZz8ubG9nb1VybFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgZnMtNFwiPjxiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+QmFzZTwvYj5DTVM8L3NwYW4+XG4gICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZnctbGlnaHRlclwiPlRoZSBhdXRvIGdlbmVyYXRlZCBHcmFwaFFMIENNUzwvc21hbGw+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydCBtYi0zIG10LTMgbWUtbWQtYXV0byBsaW5rLWRhcmsgdGV4dC1kZWNvcmF0aW9uLW5vbmUgdy0xMDBcIlxuICAgICAgICAgICpuZ0lmPVwibW9kdWxlQ29uZmlnPy5sb2dvVXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJtb2R1bGVDb25maWcubG9nb1VybFwiIGNsYXNzPVwiaW1nLXJlc3BvbnNpdmUgdy0xMDBcIiBhbHQ9XCJMb2dvXCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgICA8aHIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1waWxscyBmbGV4LWNvbHVtbiBtYi1hdXRvXCIgKm5nSWY9XCJ0eXBlc1wiPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVzXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCIoaWQgPyAnLi4vLi4vJyA6ICcuLi8nKSArIHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKSA9PT0gdG9LZWJhYkNhc2UodGhpcy5tb2RlbE5hbWUpIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5wbHVyYWxcbiAgICAgICAgICAgICAgICA/IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5wbHVyYWxcbiAgICAgICAgICAgICAgICA6IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5sYWJlbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgOiB0eXBlLm5hbWUgKyAncydcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGQtbWQtbm9uZSBwLTMgaC0xMDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiYmlcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2JpLWNoZXZyb24tbGVmdCc6ICFyZXNwb25zaXZlVG9nZ2xlLCAnYmktY2hldnJvbi1yaWdodCc6IHJlc3BvbnNpdmVUb2dnbGUgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc3BvbnNpdmVUb2dnbGUgPSAhcmVzcG9uc2l2ZVRvZ2dsZVwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx1bFxuICAgICAgICBjbGFzcz1cIm5hdiBuYXYtcGlsbHMgcmVzcG9uc2l2ZS1waWxscyBmbGV4LWNvbHVtbiBtYi1hdXRvXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAndy0xMDAtdHJhbnNpdGlvbic6IHJlc3BvbnNpdmVUb2dnbGUgfVwiXG4gICAgICAgICpuZ0lmPVwidHlwZXNcIlxuICAgICAgPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHR5cGVzXCIgKGNsaWNrKT1cInJlc3BvbnNpdmVUb2dnbGUgPSAhcmVzcG9uc2l2ZVRvZ2dsZVwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rXCJcbiAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInBhZ2VcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiKGlkID8gJy4uLy4uLycgOiAnLi4vJykgKyB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdG9LZWJhYkNhc2UodHlwZT8ubmFtZSkgPT09IHRvS2ViYWJDYXNlKHRoaXMubW9kZWxOYW1lKSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ucGx1cmFsXG4gICAgICAgICAgICAgICAgPyBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ucGx1cmFsXG4gICAgICAgICAgICAgICAgOiBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA/IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5sYWJlbFxuICAgICAgICAgICAgICAgIDogdHlwZS5uYW1lICsgJ3MnXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWNvbnRlbnRcIiBbbmdTdHlsZV09XCJ7ICdmbGV4LWJhc2lzJzogIXJlc3BvbnNpdmVUb2dnbGUgPyAndW5zZXQnIDogJzAnIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicC0zIHAtbWQtNSBtYi0zXCI+XG4gICAgICA8YmFzZS1tb2RlbC10YWJsZVxuICAgICAgICBbbW9kZWxDb25maWddPVwibW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tjYW1lbE1vZGVsTmFtZV1cIlxuICAgICAgICBbY29uZmlnXT1cIm1vZHVsZUNvbmZpZz8uZmllbGRDb25maWdbY2FtZWxNb2RlbE5hbWVdIHx8IHt9XCJcbiAgICAgICAgW21vZGVsTmFtZV09XCJtb2RlbE5hbWVcIlxuICAgICAgICBbbG9nZ2luZ109XCJtb2R1bGVDb25maWc/LmxvZ2dpbmdcIlxuICAgICAgICBbb2JqZWN0SWRdPVwiaWQgIT09ICduZXUnID8gaWQgOiAnJ1wiXG4gICAgICAgIFtjcmVhdGVNb2RlXT1cImlkID09PSAnbmV1J1wiXG4gICAgICAgIChjcmVhdGVNb2RlQ2hhbmdlZCk9XCJvbkNyZWF0ZU1vZGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAoaWRTZWxlY3RlZCk9XCJpZFNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICBbaW1wb3J0XT1cImlzSW1wb3J0UG9zc2libGUoKVwiXG4gICAgICAgIFtleHBvcnRdPVwiaXNFeHBvcnRQb3NzaWJsZSgpXCJcbiAgICAgICAgW2NyZWF0ZV09XCJpc0NyZWF0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbdXBkYXRlXT1cImlzVXBkYXRlUG9zc2libGUoKVwiXG4gICAgICAgIFtkZWxldGVdPVwiaXNEZWxldGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW2R1cGxpY2F0ZV09XCJpc0R1cGxpY2F0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbc2hvd0ZhdkJ1dHRvbl09XCIhcmVzcG9uc2l2ZVRvZ2dsZVwiXG4gICAgICA+PC9iYXNlLW1vZGVsLXRhYmxlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9wYWdlcy9iYXNlLWNtcy9iYXNlLWNtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBRUwsU0FBUyxFQUtWLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0sbURBQW1ELENBQUM7QUFDaEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7O0FBYzFFLE1BQU0sT0FBTyxnQkFBZ0I7SUFXYztJQUMvQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZlYsSUFBSSxDQUFjO0lBQ2xCLFNBQVMsQ0FBUztJQUNsQixjQUFjLENBQVM7SUFDdkIsRUFBRSxDQUFTO0lBQ1gsS0FBSyxHQUFzQixFQUFFLENBQUM7SUFDOUIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbEMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFekIsWUFDeUMsWUFBaUMsRUFDaEUsa0JBQXNDLEVBQ3RDLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxXQUF3QixFQUN4QixVQUFzQjtR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d0JBQ1AsVUFBVTt3QkFDVixPQUFPO3dCQUNQLG1CQUFtQjtxQkFDcEI7OzBCQWFFLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBdXRoU2VydmljZSxcbiAgQmFzaWNVc2VyLFxuICBDbXNTZXJ2aWNlLFxuICBHcmFwaHFsQ3J1ZFR5cGUsXG4gIEdyYXBoUUxNZXRhLFxuICBHcmFwaFFMTWV0YVNlcnZpY2Vcbn0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCQVNFX0NNU19NT0RVTEVfQ09ORklHLCBCYXNlQ01TTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYXNlLWNtcy1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kZWxUYWJsZUNvbXBvbmVudCB9IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2UvYmFzZS1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtY21zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS1jbXMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nU3R5bGUsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ0NsYXNzLFxuICAgIE1vZGVsVGFibGVDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ21zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBtZXRhOiBHcmFwaFFMTWV0YTtcbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIGNhbWVsTW9kZWxOYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGVzOiBHcmFwaHFsQ3J1ZFR5cGVbXSA9IFtdO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHNpZGVCYXJXaWR0aCA9ICcyMiUnO1xuICByZXNwb25zaXZlVG9nZ2xlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChCQVNFX0NNU19NT0RVTEVfQ09ORklHKSBwdWJsaWMgbW9kdWxlQ29uZmlnOiBCYXNlQ01TTW9kdWxlQ29uZmlnLFxuICAgIHByaXZhdGUgZ3JhcGhRTE1ldGFTZXJ2aWNlOiBHcmFwaFFMTWV0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIGNtc1NlcnZpY2U6IENtc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jYWxjU2lkZUJhcldpZHRoKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWVbJ21vZGVsTmFtZSddKSB7XG4gICAgICAgICAgY29uc3QgZXhjbHVkZSA9IHRoaXMubW9kdWxlQ29uZmlnLm1vZGVsQ29uZmlnW3ZhbHVlWydtb2RlbE5hbWUnXV0/LmV4Y2x1ZGU7XG5cbiAgICAgICAgICBpZiAoZXhjbHVkZSAhPT0gbnVsbCAmJiAhZXhjbHVkZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbE5hbWUgPSB2YWx1ZVsnbW9kZWxOYW1lJ107XG4gICAgICAgICAgICB0aGlzLmNhbWVsTW9kZWxOYW1lID0gdGhpcy50b0NhbWVsQ2FzZSh0aGlzLm1vZGVsTmFtZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpLnRoZW4oKHR5cGVzOiBHcmFwaHFsQ3J1ZFR5cGVbXSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycgKyB0aGlzLnRvS2ViYWJDYXNlKHR5cGVzWzBdLm5hbWUpXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlWydpZCddKSB7XG4gICAgICAgICAgdGhpcy5pZCA9IHZhbHVlWydpZCddO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBHcmFwaHFsQ3J1ZFR5cGUgb2JqZWN0c1xuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdHlwZXMgdGhhdCBhcmUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgaW5pdCgpOiBQcm9taXNlPEdyYXBocWxDcnVkVHlwZVtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ3JhcGhRTE1ldGFTZXJ2aWNlLmdldE1ldGEoKS5zdWJzY3JpYmUoKG1ldGEpID0+IHtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcblxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ21vZGVsTmFtZSddKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbE5hbWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnbW9kZWxOYW1lJ107XG4gICAgICAgICAgdGhpcy5jYW1lbE1vZGVsTmFtZSA9IHRoaXMudG9DYW1lbENhc2UodGhpcy5tb2RlbE5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydpZCddKSB7XG4gICAgICAgICAgdGhpcy5pZCA9IHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydpZCddO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHlwZXMgPSBtZXRhLmdldFR5cGVzKHRoaXMubW9kdWxlQ29uZmlnPy5sb2dnaW5nKTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgZXhjbHVkZWQgdHlwZXNcbiAgICAgICAgbGV0IGZpbHRlcmVkVHlwZXMgPSB0eXBlcy5maWx0ZXIoKGUpID0+ICF0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbZS5uYW1lLnRvTG93ZXJDYXNlKCldPy5leGNsdWRlKTtcblxuICAgICAgICAvLyBTb3J0IHR5cGVzXG4gICAgICAgIGZpbHRlcmVkVHlwZXMgPSBmaWx0ZXJlZFR5cGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1thLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgID8gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2EubmFtZS50b0xvd2VyQ2FzZSgpXT8ub3JkZXJcbiAgICAgICAgICAgICAgOiA5OSkgLVxuICAgICAgICAgICAgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tiLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgID8gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2IubmFtZS50b0xvd2VyQ2FzZSgpXT8ub3JkZXJcbiAgICAgICAgICAgICAgOiA5OSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgcmVzdHJpY3RlZCB0eXBlc1xuICAgICAgICB0aGlzLnR5cGVzID0gZmlsdGVyZWRUeXBlcy5maWx0ZXIoKGUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2UubmFtZS50b0xvd2VyQ2FzZSgpXT8ucmVzdHJpY3RlZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlPy5jdXJyZW50VXNlcikge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZT8uY3VycmVudFVzZXI7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRVc2VyID0gQmFzaWNVc2VyLm1hcCh1c2VyKTtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZFVzZXI/Lmhhc0FsbFJvbGVzKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tlLm5hbWUudG9Mb3dlckNhc2UoKV0/LnJvbGVzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/LmxvZ2dpbmcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQmFzZUNtc0NvbXBvbmVudDo6aW5pdC0+dHlwZXMnLCB0aGlzLnR5cGVzKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQmFzZUNtc0NvbXBvbmVudDo6aW5pdC0+Y2FtZWxNb2RlbE5hbWUnLCB0aGlzLmNhbWVsTW9kZWxOYW1lKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQmFzZUNtc0NvbXBvbmVudDo6aW5pdC0+ZmllbGRDb25maWcnLCB0aGlzLm1vZHVsZUNvbmZpZz8uZmllbGRDb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZSh0aGlzLnR5cGVzKTtcblxuICAgICAgICBpZiAoIXRoaXMubW9kZWxOYW1lICYmIHRoaXMudHlwZXMpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJyArIHRoaXMudG9LZWJhYkNhc2UodGhpcy50eXBlc1swXS5uYW1lKV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGVsIG5hbWUgaXMgc2V0IGFuZCB0aGUgdHlwZXMgYXJlIHNldCwgdGhlbiByZXR1cm4gdGhlIHR5cGUgdGhhdCBtYXRjaGVzIHRoZSBtb2RlbCBuYW1lXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0eXBlIG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIG1vZGVsIG5hbWUuXG4gICAqL1xuICBnZXRUeXBlQnlNb2RlbE5hbWUoKSB7XG4gICAgaWYgKHRoaXMubW9kZWxOYW1lICYmIHRoaXMudHlwZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnR5cGVzLmZpbmQoKGUpID0+IHRoaXMudG9LZWJhYkNhc2UoZS5uYW1lKSA9PT0gdGhpcy50b0tlYmFiQ2FzZSh0aGlzLm1vZGVsTmFtZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgY3JlYXRlTW9kZUNoYW5nZWQgZXZlbnQgaXMgZW1pdHRlZCwgaWYgdGhlIGNyZWF0ZU1vZGUgaXMgdHJ1ZSwgbmF2aWdhdGUgdG8gdGhlIG5ldyByb3V0ZVxuICAgKlxuICAgKiBAcGFyYW0gY3JlYXRlTW9kZSAtIGJvb2xlYW4gLSBUaGlzIGlzIGEgYm9vbGVhbiB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSB1c2VyIGlzIGluIGNyZWF0ZSBtb2RlIG9yXG4gICAqIG5vdC5cbiAgICovXG4gIG9uQ3JlYXRlTW9kZUNoYW5nZWQoY3JlYXRlTW9kZTogYm9vbGVhbikge1xuICAgIGlmIChjcmVhdGVNb2RlKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJyArICduZXUnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdHlwZSBleGlzdHMsIHJldHVybiB0aGUgY3JlYXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc0NyZWF0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS5jcmVhdGUgOiBmYWxzZTtcbiAgfVxuXG4gIGlzSW1wb3J0UG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1t0aGlzLmNhbWVsTW9kZWxOYW1lXT8uaW1wb3J0O1xuXG4gICAgaWYgKGNvbmZpZyAhPT0gbnVsbCAmJiBjb25maWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0ID0gY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpc0V4cG9ydFBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbdGhpcy5jYW1lbE1vZGVsTmFtZV0/LmV4cG9ydDtcblxuICAgIGlmIChjb25maWcgIT09IG51bGwgJiYgY29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IGNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIGZvdW5kIGluIHRoZSB0eXBlIG1hcCwgcmV0dXJuIHRoZSB1cGRhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzVXBkYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLnVwZGF0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSB0eXBlIGlzIGRlZmluZWQsIHJldHVybiB0aGUgZGVsZXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlXG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzRGVsZXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmRlbGV0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIGZvdW5kIGluIHRoZSB0eXBlIGFycmF5LCByZXR1cm4gdGhlIGR1cGxpY2F0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSBvYmplY3RcbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgaXNEdXBsaWNhdGVQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlQnlNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gdHlwZSA/IHR5cGUuZHVwbGljYXRlIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlkIGlzIHRydXRoeSwgbmF2aWdhdGUgdG8gdGhlIGlkLCBvdGhlcndpc2UgbmF2aWdhdGUgdG8gdGhlIHBhcmVudCByb3V0ZVxuICAgKi9cbiAgaWRTZWxlY3RlZChpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJyArIGlkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gICAqL1xuICB0b0tlYmFiQ2FzZShzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHI/LnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHN0cmluZyB0byBjYW1lbCBjYXNlXG4gICAqL1xuICB0b0NhbWVsQ2FzZShzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHI/LnJlcGxhY2UoLy0uL2csIChtYXRjaCkgPT4gbWF0Y2hbMV0udG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGZpcnN0IGxldHRlciB0byBsb3dlciBjYXNlXG4gICAqL1xuICBsb3dlckNhc2VGaXJzdExldHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY21zU2VydmljZS5sb3dlckNhc2VGaXJzdExldHRlcih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBzaWRlYmFyIHdpZHRoIGJhc2VkIG9uIHNjcmVlbiBzaXplXG4gICAqL1xuICBjYWxjU2lkZUJhcldpZHRoKCkge1xuICAgIHRoaXMuc2lkZUJhcldpZHRoID0gd2luZG93LmlubmVyV2lkdGggPCA3NjggPyAnOCUnIDogJzIyJSc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNpZGViYXJcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICdmbGV4LWJhc2lzJzogIXJlc3BvbnNpdmVUb2dnbGUgPyBzaWRlQmFyV2lkdGggOiAnMTAwJScsXG4gICAgICAnbWluLXdpZHRoJzogIXJlc3BvbnNpdmVUb2dnbGUgPyBzaWRlQmFyV2lkdGggOiAnJ1xuICAgIH1cIlxuICAgID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIGQtbWQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNocmluay0wIHAtMyBoLTEwMFwiPlxuICAgICAgQGlmIChtb2R1bGVDb25maWcuYnJhbmRpbmcpIHtcbiAgICAgICAgQGlmICghbW9kdWxlQ29uZmlnPy5sb2dvVXJsKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTMgbXQtMyBtZS1tZC1hdXRvIGxpbmstZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgZnMtNFwiPjxiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+QmFzZTwvYj5DTVM8L3NwYW4+XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmdy1saWdodGVyXCI+VGhlIGF1dG8gZ2VuZXJhdGVkIEdyYXBoUUwgQ01TPC9zbWFsbD5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChtb2R1bGVDb25maWc/LmxvZ29VcmwpIHtcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnQgbWItMyBtdC0zIG1lLW1kLWF1dG8gbGluay1kYXJrIHRleHQtZGVjb3JhdGlvbi1ub25lIHctMTAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtb2R1bGVDb25maWcubG9nb1VybFwiIGNsYXNzPVwiaW1nLXJlc3BvbnNpdmUgdy0xMDBcIiBhbHQ9XCJMb2dvXCIgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgICAgPGhyIC8+XG4gICAgICB9XG4gICAgICBAaWYgKHR5cGVzKSB7XG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtcGlsbHMgZmxleC1jb2x1bW4gbWItYXV0b1wiPlxuICAgICAgICAgIEBmb3IgKHR5cGUgb2YgdHlwZXM7IHRyYWNrIHR5cGUpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiKGlkID8gJy4uLy4uLycgOiAnLi4vJykgKyB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpID09PSB0b0tlYmFiQ2FzZSh0aGlzLm1vZGVsTmFtZSkgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgIDogbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgPyBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA6IHR5cGUubmFtZSArICdzJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZC1tZC1ub25lIHAtMyBoLTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJiaVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYmktY2hldnJvbi1sZWZ0JzogIXJlc3BvbnNpdmVUb2dnbGUsICdiaS1jaGV2cm9uLXJpZ2h0JzogcmVzcG9uc2l2ZVRvZ2dsZSB9XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzcG9uc2l2ZVRvZ2dsZSA9ICFyZXNwb25zaXZlVG9nZ2xlXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmICh0eXBlcykge1xuICAgICAgICA8dWxcbiAgICAgICAgICBjbGFzcz1cIm5hdiBuYXYtcGlsbHMgcmVzcG9uc2l2ZS1waWxscyBmbGV4LWNvbHVtbiBtYi1hdXRvXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMC10cmFuc2l0aW9uJzogcmVzcG9uc2l2ZVRvZ2dsZSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgQGZvciAodHlwZSBvZiB0eXBlczsgdHJhY2sgdHlwZSkge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwicmVzcG9uc2l2ZVRvZ2dsZSA9ICFyZXNwb25zaXZlVG9nZ2xlXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiKGlkID8gJy4uLy4uLycgOiAnLi4vJykgKyB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpID09PSB0b0tlYmFiQ2FzZSh0aGlzLm1vZGVsTmFtZSkgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgIDogbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgPyBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA6IHR5cGUubmFtZSArICdzJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2lkZWJhci1jb250ZW50XCIgW25nU3R5bGVdPVwieyAnZmxleC1iYXNpcyc6ICFyZXNwb25zaXZlVG9nZ2xlID8gJ3Vuc2V0JyA6ICcwJyB9XCI+XG4gICAgPGRpdiBjbGFzcz1cInAtMyBwLW1kLTUgbWItM1wiPlxuICAgICAgPGJhc2UtbW9kZWwtdGFibGVcbiAgICAgICAgW21vZGVsQ29uZmlnXT1cIm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbY2FtZWxNb2RlbE5hbWVdXCJcbiAgICAgICAgW2NvbmZpZ109XCJtb2R1bGVDb25maWc/LmZpZWxkQ29uZmlnW2NhbWVsTW9kZWxOYW1lXSB8fCB7fVwiXG4gICAgICAgIFttb2RlbE5hbWVdPVwibW9kZWxOYW1lXCJcbiAgICAgICAgW2xvZ2dpbmddPVwibW9kdWxlQ29uZmlnPy5sb2dnaW5nXCJcbiAgICAgICAgW29iamVjdElkXT1cImlkICE9PSAnbmV1JyA/IGlkIDogJydcIlxuICAgICAgICBbY3JlYXRlTW9kZV09XCJpZCA9PT0gJ25ldSdcIlxuICAgICAgICAoY3JlYXRlTW9kZUNoYW5nZWQpPVwib25DcmVhdGVNb2RlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKGlkU2VsZWN0ZWQpPVwiaWRTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgW2ltcG9ydF09XCJpc0ltcG9ydFBvc3NpYmxlKClcIlxuICAgICAgICBbZXhwb3J0XT1cImlzRXhwb3J0UG9zc2libGUoKVwiXG4gICAgICAgIFtjcmVhdGVdPVwiaXNDcmVhdGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW3VwZGF0ZV09XCJpc1VwZGF0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbZGVsZXRlXT1cImlzRGVsZXRlUG9zc2libGUoKVwiXG4gICAgICAgIFtkdXBsaWNhdGVdPVwiaXNEdXBsaWNhdGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW3Nob3dGYXZCdXR0b25dPVwiIXJlc3BvbnNpdmVUb2dnbGVcIlxuICAgICAgPjwvYmFzZS1tb2RlbC10YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,10 +1,8 @@
1
1
  /**
2
2
  * Exports for public API
3
3
  */
4
- // Module
5
- export * from './base-cms.module';
6
4
  // Pages
7
5
  export * from './pages/base-cms/base-cms.component';
8
6
  // Interface
9
7
  export * from './interfaces/base-cms-module-config.interface';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jbXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILFNBQVM7QUFDVCxjQUFjLG1CQUFtQixDQUFDO0FBRWxDLFFBQVE7QUFDUixjQUFjLHFDQUFxQyxDQUFDO0FBRXBELFlBQVk7QUFDWixjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHBvcnRzIGZvciBwdWJsaWMgQVBJXG4gKi9cblxuLy8gTW9kdWxlXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtY21zLm1vZHVsZSc7XG5cbi8vIFBhZ2VzXG5leHBvcnQgKiBmcm9tICcuL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudCc7XG5cbi8vIEludGVyZmFjZVxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2Jhc2UtY21zLW1vZHVsZS1jb25maWcuaW50ZXJmYWNlJztcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jbXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILFFBQVE7QUFDUixjQUFjLHFDQUFxQyxDQUFDO0FBRXBELFlBQVk7QUFDWixjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHBvcnRzIGZvciBwdWJsaWMgQVBJXG4gKi9cblxuLy8gUGFnZXNcbmV4cG9ydCAqIGZyb20gJy4vcGFnZXMvYmFzZS1jbXMvYmFzZS1jbXMuY29tcG9uZW50JztcblxuLy8gSW50ZXJmYWNlXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvYmFzZS1jbXMtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuIl19