@lenne.tech/ng-base 14.35.0 → 15.0.0-beta-2

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 (118) hide show
  1. package/base-cms/pages/base-cms/base-cms.component.d.ts +1 -1
  2. package/base-components/components/breadcrumb/breadcrumb.component.d.ts +1 -1
  3. package/base-components/components/change-password/change-password.component.d.ts +1 -1
  4. package/base-components/components/checkbox/checkbox.component.d.ts +1 -1
  5. package/base-components/components/delete-account/delete-account.component.d.ts +1 -1
  6. package/base-components/components/fab-button/fab-button.component.d.ts +1 -1
  7. package/base-components/components/input/input.component.d.ts +1 -1
  8. package/base-components/components/loading-bar/loading-bar.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-prototype/pages/email-verification/email-verification.component.d.ts +1 -1
  25. package/base-prototype/pages/forgot-password/forgot-password.component.d.ts +1 -1
  26. package/base-prototype/pages/login/login.component.d.ts +1 -1
  27. package/base-prototype/pages/profile/profile.component.d.ts +1 -1
  28. package/base-prototype/pages/register/register.component.d.ts +1 -1
  29. package/base-prototype/pages/set-password/set-password.component.d.ts +1 -1
  30. package/esm2020/base-cms/base-cms-routing.module.mjs +5 -5
  31. package/esm2020/base-cms/base-cms.module.mjs +5 -5
  32. package/esm2020/base-cms/pages/base-cms/base-cms.component.mjs +4 -4
  33. package/esm2020/base-components/base-components.module.mjs +5 -5
  34. package/esm2020/base-components/components/breadcrumb/breadcrumb.component.mjs +4 -4
  35. package/esm2020/base-components/components/change-password/change-password.component.mjs +4 -4
  36. package/esm2020/base-components/components/checkbox/checkbox.component.mjs +4 -4
  37. package/esm2020/base-components/components/delete-account/delete-account.component.mjs +4 -4
  38. package/esm2020/base-components/components/fab-button/fab-button.component.mjs +4 -4
  39. package/esm2020/base-components/components/input/input.component.mjs +4 -4
  40. package/esm2020/base-components/components/loading-bar/loading-bar.component.mjs +4 -4
  41. package/esm2020/base-components/components/model-form/model-form-base.component.mjs +4 -4
  42. package/esm2020/base-components/components/model-form/model-form.component.mjs +14 -14
  43. package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +4 -4
  44. package/esm2020/base-components/components/model-table/model-table.component.mjs +4 -4
  45. package/esm2020/base-components/components/refence-input/refence-input.component.mjs +4 -4
  46. package/esm2020/base-components/components/select/select.component.mjs +4 -4
  47. package/esm2020/base-components/components/skeleton-loader/skeleton-loader.component.mjs +4 -4
  48. package/esm2020/base-components/components/tags/tags.component.mjs +4 -4
  49. package/esm2020/base-components/components/textarea/textarea.component.mjs +4 -4
  50. package/esm2020/base-components/components/toast/toast.component.mjs +4 -4
  51. package/esm2020/base-components/components/upload-image/upload-image.component.mjs +4 -4
  52. package/esm2020/base-components/directives/back-button.directive.mjs +4 -4
  53. package/esm2020/base-components/directives/context-menu.directive.mjs +4 -4
  54. package/esm2020/base-components/directives/sort.directive.mjs +4 -4
  55. package/esm2020/base-components/directives/stop-propagation.directive.mjs +4 -4
  56. package/esm2020/base-components/pipes/ellipses.pipe.mjs +4 -4
  57. package/esm2020/base-prototype/base-prototype.module.mjs +5 -5
  58. package/esm2020/base-prototype/pages/email-verification/email-verification.component.mjs +4 -4
  59. package/esm2020/base-prototype/pages/forgot-password/forgot-password.component.mjs +4 -4
  60. package/esm2020/base-prototype/pages/login/login.component.mjs +4 -4
  61. package/esm2020/base-prototype/pages/profile/profile.component.mjs +4 -4
  62. package/esm2020/base-prototype/pages/register/register.component.mjs +4 -4
  63. package/esm2020/base-prototype/pages/set-password/set-password.component.mjs +4 -4
  64. package/esm2020/shared/services/auth.service.mjs +4 -4
  65. package/esm2020/shared/services/breadcrumb.service.mjs +9 -9
  66. package/esm2020/shared/services/cms.service.mjs +4 -4
  67. package/esm2020/shared/services/file.service.mjs +4 -4
  68. package/esm2020/shared/services/forms.service.mjs +4 -4
  69. package/esm2020/shared/services/graphql-meta.service.mjs +4 -4
  70. package/esm2020/shared/services/graphql-plus.service.mjs +4 -4
  71. package/esm2020/shared/services/graphql.service.mjs +4 -4
  72. package/esm2020/shared/services/image.service.mjs +4 -4
  73. package/esm2020/shared/services/loader.service.mjs +4 -4
  74. package/esm2020/shared/services/navigation.service.mjs +4 -4
  75. package/esm2020/shared/services/scroll.service.mjs +4 -4
  76. package/esm2020/shared/services/storage.service.mjs +4 -4
  77. package/esm2020/shared/services/toast.service.mjs +4 -4
  78. package/esm2020/shared/services/user.service.mjs +4 -4
  79. package/esm2020/shared/services/ws.service.mjs +4 -4
  80. package/esm2020/src/base.module.mjs +5 -5
  81. package/esm2020/src/directives/lazy-load.directive.mjs +4 -4
  82. package/esm2020/src/directives/match-height.directive.mjs +4 -4
  83. package/esm2020/src/directives/resizable.directive.mjs +4 -4
  84. package/esm2020/src/guards/auth.guard.mjs +4 -4
  85. package/esm2020/src/guards/can-deactivate.guard.mjs +4 -4
  86. package/esm2020/src/guards/logout.guard.mjs +4 -4
  87. package/esm2020/src/pipes/date-ago.pipe.mjs +4 -4
  88. package/esm2020/src/pipes/safe-html.pipe.mjs +4 -4
  89. package/esm2020/src/services/fullscreen.service.mjs +4 -4
  90. package/esm2020/src/services/seo.service.mjs +4 -4
  91. package/esm2020/src/services/theme.service.mjs +14 -14
  92. package/fesm2015/lenne.tech-ng-base-base-cms.mjs +11 -11
  93. package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  94. package/fesm2015/lenne.tech-ng-base-base-components.mjs +83 -83
  95. package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
  96. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +22 -22
  97. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  98. package/fesm2015/lenne.tech-ng-base-shared.mjs +53 -53
  99. package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
  100. package/fesm2015/lenne.tech-ng-base.mjs +47 -47
  101. package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
  102. package/fesm2020/lenne.tech-ng-base-base-cms.mjs +11 -11
  103. package/fesm2020/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  104. package/fesm2020/lenne.tech-ng-base-base-components.mjs +83 -83
  105. package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
  106. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +22 -22
  107. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  108. package/fesm2020/lenne.tech-ng-base-shared.mjs +53 -53
  109. package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
  110. package/fesm2020/lenne.tech-ng-base.mjs +47 -47
  111. package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
  112. package/package.json +8 -8
  113. package/shared/interfaces/field.interface.d.ts +1 -1
  114. package/shared/types/graphql-fields.type.d.ts +1 -1
  115. package/shared/types/storage.type.d.ts +1 -1
  116. package/src/directives/lazy-load.directive.d.ts +1 -1
  117. package/src/directives/match-height.directive.d.ts +1 -1
  118. package/src/directives/resizable.directive.d.ts +1 -1
@@ -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>;
91
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseCmsComponent, "app-base-cms", never, {}, {}, never, never, false, never>;
92
92
  }
@@ -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>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "base-breadcrumb", never, {}, {}, never, never, false, 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>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChangePasswordComponent, "base-change-password", never, {}, {}, never, never, false, 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": "id"; "name": "name"; "label": "label"; "value": "value"; "control": "control"; "required": "required"; "objectPath": "objectPath"; }, {}, never, ["*"], false>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "base-checkbox", never, { "id": "id"; "name": "name"; "label": "label"; "value": "value"; "control": "control"; "required": "required"; "objectPath": "objectPath"; }, {}, never, ["*"], false, 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": "description"; }, {}, never, never, false>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeleteAccountComponent, "base-delete-account", never, { "description": "description"; }, {}, never, never, false, 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": "fabIcon"; "buttons": "buttons"; }, {}, never, never, false>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<FabButtonComponent, "base-fab-button", never, { "fabIcon": "fabIcon"; "buttons": "buttons"; }, {}, never, never, false, 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": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "type": "type"; "required": "required"; "eyeButton": "eyeButton"; "objectPath": "objectPath"; }, { "enter": "enter"; }, never, never, false>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "base-input", never, { "id": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "type": "type"; "required": "required"; "eyeButton": "eyeButton"; "objectPath": "objectPath"; }, { "enter": "enter"; }, never, never, false, never>;
27
27
  }
@@ -13,5 +13,5 @@ export declare class LoadingBarComponent implements OnInit, OnDestroy {
13
13
  ngOnInit(): void;
14
14
  ngOnDestroy(): void;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<LoadingBarComponent, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<LoadingBarComponent, "base-loading-bar", never, { "manuallyLoading": "manuallyLoading"; }, {}, never, never, false>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoadingBarComponent, "base-loading-bar", never, { "manuallyLoading": "manuallyLoading"; }, {}, never, never, false, never>;
17
17
  }
@@ -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": "modelName"; "label": "label"; "id": "id"; "delete": "delete"; "onlyUpdateMode": "onlyUpdateMode"; "duplicate": "duplicate"; "logging": "logging"; "config": "config"; "showFavButton": "showFavButton"; }, { "finished": "finished"; }, never, never, false>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormBaseComponent, "ng-component", never, { "modelName": "modelName"; "label": "label"; "id": "id"; "delete": "delete"; "onlyUpdateMode": "onlyUpdateMode"; "duplicate": "duplicate"; "logging": "logging"; "config": "config"; "showFavButton": "showFavButton"; }, { "finished": "finished"; }, never, never, false, 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": "modelName"; "label": "label"; "id": "id"; "delete": "delete"; "onlyUpdateMode": "onlyUpdateMode"; "duplicate": "duplicate"; "logging": "logging"; "config": "config"; "showFavButton": "showFavButton"; }, { "finished": "finished"; }, never, never, false>;
138
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormComponent, "base-model-form", never, { "modelName": "modelName"; "label": "label"; "id": "id"; "delete": "delete"; "onlyUpdateMode": "onlyUpdateMode"; "duplicate": "duplicate"; "logging": "logging"; "config": "config"; "showFavButton": "showFavButton"; }, { "finished": "finished"; }, never, never, false, 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": "id"; "parentKey": "parentKey"; "fields": "fields"; "form": "form"; "config": "config"; }, { "imageChanged": "imageChanged"; "fileChanged": "fileChanged"; }, never, never, false>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelFormSubComponent, "base-model-form-sub", never, { "id": "id"; "parentKey": "parentKey"; "fields": "fields"; "form": "form"; "config": "config"; }, { "imageChanged": "imageChanged"; "fileChanged": "fileChanged"; }, never, never, false, never>;
56
56
  }
@@ -99,5 +99,5 @@ export declare class ModelTableComponent implements OnInit, OnChanges, AfterView
99
99
  getAllKeys(): any[];
100
100
  selectPage(i: number): Promise<void>;
101
101
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelTableComponent, never>;
102
- static ɵcmp: i0.ɵɵComponentDeclaration<ModelTableComponent, "base-model-table", never, { "modelName": "modelName"; "objectId": "objectId"; "createMode": "createMode"; "logging": "logging"; "create": "create"; "update": "update"; "delete": "delete"; "import": "import"; "export": "export"; "duplicate": "duplicate"; "modelConfig": "modelConfig"; "config": "config"; "showFavButton": "showFavButton"; }, { "idSelected": "idSelected"; "createModeChanged": "createModeChanged"; }, never, never, false>;
102
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModelTableComponent, "base-model-table", never, { "modelName": "modelName"; "objectId": "objectId"; "createMode": "createMode"; "logging": "logging"; "create": "create"; "update": "update"; "delete": "delete"; "import": "import"; "export": "export"; "duplicate": "duplicate"; "modelConfig": "modelConfig"; "config": "config"; "showFavButton": "showFavButton"; }, { "idSelected": "idSelected"; "createModeChanged": "createModeChanged"; }, never, never, false, never>;
103
103
  }
@@ -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": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "isList": "isList"; "search": "search"; "useParamAsArg": "useParamAsArg"; "param": "param"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "required": "required"; "method": "method"; "fields": "fields"; "valueField": "valueField"; "objectPath": "objectPath"; "nameField": "nameField"; "creationLink": "creationLink"; }, {}, never, never, false>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<RefenceInputComponent, "base-refence-input", never, { "id": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "isList": "isList"; "search": "search"; "useParamAsArg": "useParamAsArg"; "param": "param"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "required": "required"; "method": "method"; "fields": "fields"; "valueField": "valueField"; "objectPath": "objectPath"; "nameField": "nameField"; "creationLink": "creationLink"; }, {}, never, never, false, 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": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "objectPath": "objectPath"; "control": "control"; "tabIndex": "tabIndex"; "required": "required"; "multiple": "multiple"; "search": "search"; "options": "options"; }, {}, never, never, false>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "base-select", never, { "id": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "objectPath": "objectPath"; "control": "control"; "tabIndex": "tabIndex"; "required": "required"; "multiple": "multiple"; "search": "search"; "options": "options"; }, {}, never, never, false, 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": "type"; "count": "count"; "size": "size"; }, {}, never, never, false>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonLoaderComponent, "base-skeleton-loader", never, { "type": "type"; "count": "count"; "size": "size"; }, {}, never, never, false, 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": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "options": "options"; "custom": "custom"; "removeByKey": "removeByKey"; "required": "required"; "objectPath": "objectPath"; "validators": "validators"; }, {}, never, never, false>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<TagsComponent, "base-tags", never, { "id": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "tabIndex": "tabIndex"; "control": "control"; "options": "options"; "custom": "custom"; "removeByKey": "removeByKey"; "required": "required"; "objectPath": "objectPath"; "validators": "validators"; }, {}, never, never, false, 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": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "control": "control"; "rows": "rows"; "required": "required"; "autoHeight": "autoHeight"; "tabIndex": "tabIndex"; "objectPath": "objectPath"; }, {}, never, never, false>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "base-textarea", never, { "id": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "placeholder": "placeholder"; "control": "control"; "rows": "rows"; "required": "required"; "autoHeight": "autoHeight"; "tabIndex": "tabIndex"; "objectPath": "objectPath"; }, {}, never, never, false, 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": "position"; }, {}, never, never, false>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "base-toast", never, { "position": "position"; }, {}, never, never, false, 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": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "supportText": "supportText"; "required": "required"; "defaultDragText": "defaultDragText"; "defaultReleaseText": "defaultReleaseText"; "preButtonText": "preButtonText"; "buttonText": "buttonText"; "validExtensions": "validExtensions"; "control": "control"; "url": "url"; "uploadPath": "uploadPath"; "deletePath": "deletePath"; "path": "path"; "compressOptions": "compressOptions"; "maxSize": "maxSize"; "uploadDirectly": "uploadDirectly"; "croppingImage": "croppingImage"; "croppingOptions": "croppingOptions"; "objectPath": "objectPath"; "mode": "mode"; }, { "imageUploaded": "imageUploaded"; "imageDeleted": "imageDeleted"; "fileChanged": "fileChanged"; }, never, never, false>;
110
+ static ɵcmp: i0.ɵɵComponentDeclaration<UploadImageComponent, "base-upload-image", never, { "id": "id"; "name": "name"; "infoText": "infoText"; "label": "label"; "supportText": "supportText"; "required": "required"; "defaultDragText": "defaultDragText"; "defaultReleaseText": "defaultReleaseText"; "preButtonText": "preButtonText"; "buttonText": "buttonText"; "validExtensions": "validExtensions"; "control": "control"; "url": "url"; "uploadPath": "uploadPath"; "deletePath": "deletePath"; "path": "path"; "compressOptions": "compressOptions"; "maxSize": "maxSize"; "uploadDirectly": "uploadDirectly"; "croppingImage": "croppingImage"; "croppingOptions": "croppingOptions"; "objectPath": "objectPath"; "mode": "mode"; }, { "imageUploaded": "imageUploaded"; "imageDeleted": "imageDeleted"; "fileChanged": "fileChanged"; }, never, never, false, 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>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BackButtonDirective, "[baseBackButton]", never, {}, {}, never, never, false, 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": "contextMenuData"; "ltContextMenu": "ltContextMenu"; "xGap": "xGap"; "yGap": "yGap"; "overflowSpace": "overflowSpace"; "selectors": "selectors"; }, { "clickedElement": "clickedElement"; }, never, never, false>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ContextMenuDirective, "[ltContextMenu]", ["contextMenuData"], { "contextMenuData": "contextMenuData"; "ltContextMenu": "ltContextMenu"; "xGap": "xGap"; "yGap": "yGap"; "overflowSpace": "overflowSpace"; "selectors": "selectors"; }, { "clickedElement": "clickedElement"; }, never, never, false, never>;
22
22
  }
@@ -10,5 +10,5 @@ export declare class SortDirective {
10
10
  */
11
11
  sortColumn(): void;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<SortDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<SortDirective, "[baseSort]", never, { "baseSort": "baseSort"; }, {}, never, never, false>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SortDirective, "[baseSort]", never, { "baseSort": "baseSort"; }, {}, never, never, false, never>;
14
14
  }
@@ -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>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StopPropagationDirective, "[baseStopPropagation]", never, {}, {}, never, never, false, never>;
10
10
  }
@@ -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>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<EmailVerificationComponent, "base-email-verification", never, {}, {}, never, never, false, 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>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<ForgotPasswordComponent, "base-forgot-password", never, {}, {}, never, never, false, 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": "config"; }, {}, never, never, false>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoginComponent, "base-login", never, { "config": "config"; }, {}, never, never, false, 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": "config"; }, {}, never, never, false>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProfileComponent, "base-profile", never, { "config": "config"; }, {}, never, never, false, never>;
24
24
  }
@@ -26,5 +26,5 @@ export declare class RegisterComponent implements OnInit {
26
26
  submit(): void;
27
27
  scrollToTop(): void;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<RegisterComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<RegisterComponent, "base-register", never, {}, {}, never, never, false>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<RegisterComponent, "base-register", never, {}, {}, never, never, false, never>;
30
30
  }
@@ -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": "redirectUrl"; }, {}, never, never, false>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<SetPasswordComponent, "base-set-password", never, { "redirectUrl": "redirectUrl"; }, {}, never, never, false, never>;
29
29
  }
@@ -19,14 +19,14 @@ const routes = [
19
19
  ];
20
20
  export class BaseCMSRoutingModule {
21
21
  }
22
- BaseCMSRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- BaseCMSRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
24
- BaseCMSRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSRoutingModule, decorators: [{
22
+ BaseCMSRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
+ BaseCMSRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
24
+ BaseCMSRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSRoutingModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  imports: [RouterModule.forChild(routes)],
29
29
  exports: [RouterModule],
30
30
  }]
31
31
  }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL2Jhc2UtY21zLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFFdkUsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsU0FBUyxFQUFFLGdCQUFnQjtLQUM1QjtDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sb0JBQW9COztrSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0Isd0NBRnJCLFlBQVk7bUhBRVgsb0JBQW9CLFlBSHJCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7NEZBRVgsb0JBQW9CO2tCQUpoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNtc0NvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvYmFzZS1jbXMvYmFzZS1jbXMuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IEJhc2VDbXNDb21wb25lbnQsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnOm1vZGVsTmFtZScsXG4gICAgY29tcG9uZW50OiBCYXNlQ21zQ29tcG9uZW50LFxuICB9LFxuICB7XG4gICAgcGF0aDogJzptb2RlbE5hbWUvOmlkJyxcbiAgICBjb21wb25lbnQ6IEJhc2VDbXNDb21wb25lbnQsXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNNU1JvdXRpbmdNb2R1bGUge31cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL2Jhc2UtY21zLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFFdkUsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsU0FBUyxFQUFFLGdCQUFnQjtLQUM1QjtDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0Isd0NBRnJCLFlBQVk7a0hBRVgsb0JBQW9CLFlBSHJCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsb0JBQW9CO2tCQUpoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNtc0NvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvYmFzZS1jbXMvYmFzZS1jbXMuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IEJhc2VDbXNDb21wb25lbnQsXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnOm1vZGVsTmFtZScsXG4gICAgY29tcG9uZW50OiBCYXNlQ21zQ29tcG9uZW50LFxuICB9LFxuICB7XG4gICAgcGF0aDogJzptb2RlbE5hbWUvOmlkJyxcbiAgICBjb21wb25lbnQ6IEJhc2VDbXNDb21wb25lbnQsXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNNU1JvdXRpbmdNb2R1bGUge31cbiJdfQ==
@@ -18,14 +18,14 @@ export function CMSConfigFactory() {
18
18
  }
19
19
  export class BaseCMSModule {
20
20
  }
21
- BaseCMSModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
- BaseCMSModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSModule, declarations: [BaseCmsComponent], imports: [
21
+ BaseCMSModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
+ BaseCMSModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSModule, declarations: [BaseCmsComponent], imports: [
23
23
  // Modules
24
24
  CommonModule,
25
25
  ReactiveFormsModule,
26
26
  BaseCMSRoutingModule,
27
27
  BaseComponentsModule] });
28
- BaseCMSModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSModule, providers: [
28
+ BaseCMSModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSModule, providers: [
29
29
  {
30
30
  provide: BASE_CMS_MODULE_CONFIG,
31
31
  useFactory: CMSConfigFactory,
@@ -36,7 +36,7 @@ BaseCMSModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
36
36
  ReactiveFormsModule,
37
37
  BaseCMSRoutingModule,
38
38
  BaseComponentsModule] });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCMSModule, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCMSModule, decorators: [{
40
40
  type: NgModule,
41
41
  args: [{
42
42
  imports: [
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
56
56
  ],
57
57
  }]
58
58
  }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9iYXNlLWNtcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLCtDQUErQyxDQUFDOztBQUU1RyxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU87UUFDTCxXQUFXLEVBQUUsRUFBRTtRQUNmLFdBQVcsRUFBRSxFQUFFO1FBQ2YsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsRUFBRTtRQUNYLE9BQU8sRUFBRSxLQUFLO1FBQ2QsR0FBRyxhQUFhLENBQUMsTUFBTTtLQUN4QixDQUFDO0FBQ0osQ0FBQztBQW1CRCxNQUFNLE9BQU8sYUFBYTs7MkdBQWIsYUFBYTs0R0FBYixhQUFhLGlCQVRULGdCQUFnQjtRQU43QixVQUFVO1FBQ1YsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsb0JBQW9COzRHQVdYLGFBQWEsYUFQYjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixVQUFVLEVBQUUsZ0JBQWdCO1NBQzdCO0tBQ0Y7UUFiQyxVQUFVO1FBQ1YsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsb0JBQW9COzRGQVdYLGFBQWE7a0JBakJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDckI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixVQUFVLEVBQUUsZ0JBQWdCO3lCQUM3QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VDbXNDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlQ01TUm91dGluZ01vZHVsZSB9IGZyb20gJy4vYmFzZS1jbXMtcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCQVNFX0NNU19NT0RVTEVfQ09ORklHLCBCYXNlQ01TTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Jhc2UtY21zLW1vZHVsZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIENNU0NvbmZpZ0ZhY3RvcnkoKSB7XG4gIHJldHVybiB7XG4gICAgbW9kZWxDb25maWc6IHt9LFxuICAgIGZpZWxkQ29uZmlnOiB7fSxcbiAgICBicmFuZGluZzogdHJ1ZSxcbiAgICBsb2dvVXJsOiAnJyxcbiAgICBsb2dnaW5nOiBmYWxzZSxcbiAgICAuLi5CYXNlQ01TTW9kdWxlLmNvbmZpZyxcbiAgfTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIC8vIE1vZHVsZXNcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCYXNlQ01TUm91dGluZ01vZHVsZSxcbiAgICBCYXNlQ29tcG9uZW50c01vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbQmFzZUNtc0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBCQVNFX0NNU19NT0RVTEVfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeTogQ01TQ29uZmlnRmFjdG9yeSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ01TTW9kdWxlIHtcbiAgc3RhdGljIGNvbmZpZzogQmFzZUNNU01vZHVsZUNvbmZpZztcbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9iYXNlLWNtcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLCtDQUErQyxDQUFDOztBQUU1RyxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU87UUFDTCxXQUFXLEVBQUUsRUFBRTtRQUNmLFdBQVcsRUFBRSxFQUFFO1FBQ2YsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsRUFBRTtRQUNYLE9BQU8sRUFBRSxLQUFLO1FBQ2QsR0FBRyxhQUFhLENBQUMsTUFBTTtLQUN4QixDQUFDO0FBQ0osQ0FBQztBQW1CRCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQVRULGdCQUFnQjtRQU43QixVQUFVO1FBQ1YsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsb0JBQW9COzJHQVdYLGFBQWEsYUFQYjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixVQUFVLEVBQUUsZ0JBQWdCO1NBQzdCO0tBQ0Y7UUFiQyxVQUFVO1FBQ1YsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsb0JBQW9COzJGQVdYLGFBQWE7a0JBakJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjtxQkFDckI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixVQUFVLEVBQUUsZ0JBQWdCO3lCQUM3QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VDbXNDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlQ01TUm91dGluZ01vZHVsZSB9IGZyb20gJy4vYmFzZS1jbXMtcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCQVNFX0NNU19NT0RVTEVfQ09ORklHLCBCYXNlQ01TTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Jhc2UtY21zLW1vZHVsZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIENNU0NvbmZpZ0ZhY3RvcnkoKSB7XG4gIHJldHVybiB7XG4gICAgbW9kZWxDb25maWc6IHt9LFxuICAgIGZpZWxkQ29uZmlnOiB7fSxcbiAgICBicmFuZGluZzogdHJ1ZSxcbiAgICBsb2dvVXJsOiAnJyxcbiAgICBsb2dnaW5nOiBmYWxzZSxcbiAgICAuLi5CYXNlQ01TTW9kdWxlLmNvbmZpZyxcbiAgfTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIC8vIE1vZHVsZXNcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCYXNlQ01TUm91dGluZ01vZHVsZSxcbiAgICBCYXNlQ29tcG9uZW50c01vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbQmFzZUNtc0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBCQVNFX0NNU19NT0RVTEVfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeTogQ01TQ29uZmlnRmFjdG9yeSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ01TTW9kdWxlIHtcbiAgc3RhdGljIGNvbmZpZzogQmFzZUNNU01vZHVsZUNvbmZpZztcbn1cbiJdfQ==
@@ -210,13 +210,13 @@ export class BaseCmsComponent {
210
210
  this.sideBarWidth = window.innerWidth < 768 ? '8%' : '22%';
211
211
  }
212
212
  }
213
- BaseCmsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", 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 });
214
- BaseCmsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", 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.RouterLinkWithHref, selector: "a[routerLink],area[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"] }] });
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: BaseCmsComponent, decorators: [{
213
+ BaseCmsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", 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 });
214
+ BaseCmsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", 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"] }] });
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: BaseCmsComponent, decorators: [{
216
216
  type: Component,
217
217
  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"] }]
218
218
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
219
219
  type: Inject,
220
220
  args: [BASE_CMS_MODULE_CONFIG]
221
221
  }] }, { type: i1.GraphQLMetaService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1.AuthService }, { type: i1.CmsService }]; } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9wYWdlcy9iYXNlLWNtcy9iYXNlLWNtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBRUwsU0FBUyxHQUtWLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLG1EQUFtRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU9wQyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQ3lDLFlBQWlDLEVBQ2hFLGtCQUFzQyxFQUN0QyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsVUFBc0I7UUFMUyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDaEUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVhoQyxVQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBVXZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUUzRSxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN4RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO3dCQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM5RixDQUFDLENBQUMsQ0FBQztpQkFDSjthQUNGO1lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFFakIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDeEQ7Z0JBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0M7Z0JBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCwyQkFBMkI7Z0JBQzNCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RyxhQUFhO2dCQUNiLGFBQWEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUMxQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSzt3QkFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLO3dCQUM3RCxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNQLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUs7NEJBQzFELENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSzs0QkFDN0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNSLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBRUgsNkJBQTZCO2dCQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDdEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFO3dCQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUU7NEJBQ2xDLE9BQU8sS0FBSyxDQUFDO3lCQUNkO3dCQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO3dCQUMzQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUV2QyxPQUFPLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUM3Rjt5QkFBTTt3QkFDTCxPQUFPLElBQUksQ0FBQztxQkFDYjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFO29CQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzNFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDcEY7Z0JBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ2pHO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDOUY7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxVQUFtQjtRQUNyQyxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0I7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUUzRSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUMzQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBRTNFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQzNDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDakI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQjtRQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0I7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEVBQVU7UUFDbkIsSUFBSSxFQUFFLEVBQUU7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMvRDthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sR0FBRyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNyQixPQUFPLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDOzs4R0EvT1UsZ0JBQWdCLGtCQVdqQixzQkFBc0I7a0dBWHJCLGdCQUFnQixvRENsQjdCLGlwSUFzR0E7NEZEcEZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOzswQkFlckIsTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhTZXJ2aWNlLFxuICBCYXNpY1VzZXIsXG4gIENtc1NlcnZpY2UsXG4gIEdyYXBocWxDcnVkVHlwZSxcbiAgR3JhcGhRTE1ldGEsXG4gIEdyYXBoUUxNZXRhU2VydmljZSxcbn0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCQVNFX0NNU19NT0RVTEVfQ09ORklHLCBCYXNlQ01TTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYXNlLWNtcy1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtY21zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS1jbXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNtc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbWV0YTogR3JhcGhRTE1ldGE7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBjYW1lbE1vZGVsTmFtZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICB0eXBlczogR3JhcGhxbENydWRUeXBlW10gPSBbXTtcbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBzaWRlQmFyV2lkdGggPSAnMjIlJztcbiAgcmVzcG9uc2l2ZVRvZ2dsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQkFTRV9DTVNfTU9EVUxFX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQmFzZUNNU01vZHVsZUNvbmZpZyxcbiAgICBwcml2YXRlIGdyYXBoUUxNZXRhU2VydmljZTogR3JhcGhRTE1ldGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2FsY1NpZGVCYXJXaWR0aCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlWydtb2RlbE5hbWUnXSkge1xuICAgICAgICAgIGNvbnN0IGV4Y2x1ZGUgPSB0aGlzLm1vZHVsZUNvbmZpZy5tb2RlbENvbmZpZ1t2YWx1ZVsnbW9kZWxOYW1lJ11dPy5leGNsdWRlO1xuXG4gICAgICAgICAgaWYgKGV4Y2x1ZGUgIT09IG51bGwgJiYgIWV4Y2x1ZGUpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWxOYW1lID0gdmFsdWVbJ21vZGVsTmFtZSddO1xuICAgICAgICAgICAgdGhpcy5jYW1lbE1vZGVsTmFtZSA9IHRoaXMudG9DYW1lbENhc2UodGhpcy5tb2RlbE5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluaXQoKS50aGVuKCh0eXBlczogR3JhcGhxbENydWRUeXBlW10pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nICsgdGhpcy50b0tlYmFiQ2FzZSh0eXBlc1swXS5uYW1lKV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZVsnaWQnXSkge1xuICAgICAgICAgIHRoaXMuaWQgPSB2YWx1ZVsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgR3JhcGhxbENydWRUeXBlIG9iamVjdHNcbiAgICpcbiAgICogQHJldHVybnMgVGhlIHR5cGVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byB0aGUgdXNlci5cbiAgICovXG4gIGluaXQoKTogUHJvbWlzZTxHcmFwaHFsQ3J1ZFR5cGVbXT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdyYXBoUUxNZXRhU2VydmljZS5nZXRNZXRhKCkuc3Vic2NyaWJlKChtZXRhKSA9PiB7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG5cbiAgICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydtb2RlbE5hbWUnXSkge1xuICAgICAgICAgIHRoaXMubW9kZWxOYW1lID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ21vZGVsTmFtZSddO1xuICAgICAgICAgIHRoaXMuY2FtZWxNb2RlbE5hbWUgPSB0aGlzLnRvQ2FtZWxDYXNlKHRoaXMubW9kZWxOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnaWQnXSkge1xuICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnaWQnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGVzID0gbWV0YS5nZXRUeXBlcyh0aGlzLm1vZHVsZUNvbmZpZz8ubG9nZ2luZyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGV4Y2x1ZGVkIHR5cGVzXG4gICAgICAgIGxldCBmaWx0ZXJlZFR5cGVzID0gdHlwZXMuZmlsdGVyKChlKSA9PiAhdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2UubmFtZS50b0xvd2VyQ2FzZSgpXT8uZXhjbHVkZSk7XG5cbiAgICAgICAgLy8gU29ydCB0eXBlc1xuICAgICAgICBmaWx0ZXJlZFR5cGVzID0gZmlsdGVyZWRUeXBlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbYS5uYW1lLnRvTG93ZXJDYXNlKCldPy5vcmRlclxuICAgICAgICAgICAgICA/IHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1thLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgIDogOTkpIC1cbiAgICAgICAgICAgICh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbYi5uYW1lLnRvTG93ZXJDYXNlKCldPy5vcmRlclxuICAgICAgICAgICAgICA/IHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tiLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgIDogOTkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIHJlc3RyaWN0ZWQgdHlwZXNcbiAgICAgICAgdGhpcy50eXBlcyA9IGZpbHRlcmVkVHlwZXMuZmlsdGVyKChlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tlLm5hbWUudG9Mb3dlckNhc2UoKV0/LnJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZT8uY3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2U/LmN1cnJlbnRVc2VyO1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkVXNlciA9IEJhc2ljVXNlci5tYXAodXNlcik7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRVc2VyPy5oYXNBbGxSb2xlcyh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbZS5uYW1lLnRvTG93ZXJDYXNlKCldPy5yb2xlcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5sb2dnaW5nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPnR5cGVzJywgdGhpcy50eXBlcyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPmNhbWVsTW9kZWxOYW1lJywgdGhpcy5jYW1lbE1vZGVsTmFtZSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPmZpZWxkQ29uZmlnJywgdGhpcy5tb2R1bGVDb25maWc/LmZpZWxkQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUodGhpcy50eXBlcyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsTmFtZSAmJiB0aGlzLnR5cGVzKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyB0aGlzLnRvS2ViYWJDYXNlKHRoaXMudHlwZXNbMF0ubmFtZSldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIHNldCBhbmQgdGhlIHR5cGVzIGFyZSBzZXQsIHRoZW4gcmV0dXJuIHRoZSB0eXBlIHRoYXQgbWF0Y2hlcyB0aGUgbW9kZWwgbmFtZVxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdHlwZSBvYmplY3QgdGhhdCBtYXRjaGVzIHRoZSBtb2RlbCBuYW1lLlxuICAgKi9cbiAgZ2V0VHlwZUJ5TW9kZWxOYW1lKCkge1xuICAgIGlmICh0aGlzLm1vZGVsTmFtZSAmJiB0aGlzLnR5cGVzKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlcy5maW5kKChlKSA9PiB0aGlzLnRvS2ViYWJDYXNlKGUubmFtZSkgPT09IHRoaXMudG9LZWJhYkNhc2UodGhpcy5tb2RlbE5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIGNyZWF0ZU1vZGVDaGFuZ2VkIGV2ZW50IGlzIGVtaXR0ZWQsIGlmIHRoZSBjcmVhdGVNb2RlIGlzIHRydWUsIG5hdmlnYXRlIHRvIHRoZSBuZXcgcm91dGVcbiAgICpcbiAgICogQHBhcmFtIGNyZWF0ZU1vZGUgLSBib29sZWFuIC0gVGhpcyBpcyBhIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgdXNlciBpcyBpbiBjcmVhdGUgbW9kZSBvclxuICAgKiBub3QuXG4gICAqL1xuICBvbkNyZWF0ZU1vZGVDaGFuZ2VkKGNyZWF0ZU1vZGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoY3JlYXRlTW9kZSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyAnbmV1J10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHR5cGUgZXhpc3RzLCByZXR1cm4gdGhlIGNyZWF0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgaXNDcmVhdGVQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlQnlNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gdHlwZSA/IHR5cGUuY3JlYXRlIDogZmFsc2U7XG4gIH1cblxuICBpc0ltcG9ydFBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbdGhpcy5jYW1lbE1vZGVsTmFtZV0/LmltcG9ydDtcblxuICAgIGlmIChjb25maWcgIT09IG51bGwgJiYgY29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IGNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaXNFeHBvcnRQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW3RoaXMuY2FtZWxNb2RlbE5hbWVdPy5leHBvcnQ7XG5cbiAgICBpZiAoY29uZmlnICE9PSBudWxsICYmIGNvbmZpZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQgPSBjb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBmb3VuZCBpbiB0aGUgdHlwZSBtYXAsIHJldHVybiB0aGUgdXBkYXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc1VwZGF0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS51cGRhdGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdHlwZSBpcyBkZWZpbmVkLCByZXR1cm4gdGhlIGRlbGV0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc0RlbGV0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS5kZWxldGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBmb3VuZCBpbiB0aGUgdHlwZSBhcnJheSwgcmV0dXJuIHRoZSBkdXBsaWNhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzRHVwbGljYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmR1cGxpY2F0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBpZCBpcyB0cnV0aHksIG5hdmlnYXRlIHRvIHRoZSBpZCwgb3RoZXJ3aXNlIG5hdmlnYXRlIHRvIHRoZSBwYXJlbnQgcm91dGVcbiAgICovXG4gIGlkU2VsZWN0ZWQoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyBpZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICAgKi9cbiAgdG9LZWJhYkNhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyPy5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICAgKi9cbiAgdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyPy5yZXBsYWNlKC8tLi9nLCAobWF0Y2gpID0+IG1hdGNoWzFdLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBmaXJzdCBsZXR0ZXIgdG8gbG93ZXIgY2FzZVxuICAgKi9cbiAgbG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNtc1NlcnZpY2UubG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgc2lkZWJhciB3aWR0aCBiYXNlZCBvbiBzY3JlZW4gc2l6ZVxuICAgKi9cbiAgY2FsY1NpZGVCYXJXaWR0aCgpIHtcbiAgICB0aGlzLnNpZGVCYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4ID8gJzglJyA6ICcyMiUnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzaWRlYmFyXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAnZmxleC1iYXNpcyc6ICFyZXNwb25zaXZlVG9nZ2xlID8gc2lkZUJhcldpZHRoIDogJzEwMCUnLFxuICAgICAgJ21pbi13aWR0aCc6ICFyZXNwb25zaXZlVG9nZ2xlID8gc2lkZUJhcldpZHRoIDogJydcbiAgICB9XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLW5vbmUgZC1tZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc2hyaW5rLTAgcC0zIGgtMTAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kdWxlQ29uZmlnLmJyYW5kaW5nXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTMgbXQtMyBtZS1tZC1hdXRvIGxpbmstZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgICAgICAgKm5nSWY9XCIhbW9kdWxlQ29uZmlnPy5sb2dvVXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBmcy00XCI+PGIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5CYXNlPC9iPkNNUzwvc3Bhbj5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmdy1saWdodGVyXCI+VGhlIGF1dG8gZ2VuZXJhdGVkIEdyYXBoUUwgQ01TPC9zbWFsbD5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTMgbXQtMyBtZS1tZC1hdXRvIGxpbmstZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZSB3LTEwMFwiXG4gICAgICAgICAgKm5nSWY9XCJtb2R1bGVDb25maWc/LmxvZ29VcmxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGltZyBbc3JjXT1cIm1vZHVsZUNvbmZpZy5sb2dvVXJsXCIgY2xhc3M9XCJpbWctcmVzcG9uc2l2ZSB3LTEwMFwiIGFsdD1cIkxvZ29cIiAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxociAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIGZsZXgtY29sdW1uIG1iLWF1dG9cIiAqbmdJZj1cInR5cGVzXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNcIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgICBhcmlhLWN1cnJlbnQ9XCJwYWdlXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIihpZCA/ICcuLi8uLi8nIDogJy4uLycpICsgdG9LZWJhYkNhc2UodHlwZT8ubmFtZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpID09PSB0b0tlYmFiQ2FzZSh0aGlzLm1vZGVsTmFtZSkgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgIDogbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgPyBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA6IHR5cGUubmFtZSArICdzJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZC1tZC1ub25lIHAtMyBoLTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJiaVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYmktY2hldnJvbi1sZWZ0JzogIXJlc3BvbnNpdmVUb2dnbGUsICdiaS1jaGV2cm9uLXJpZ2h0JzogcmVzcG9uc2l2ZVRvZ2dsZSB9XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzcG9uc2l2ZVRvZ2dsZSA9ICFyZXNwb25zaXZlVG9nZ2xlXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHVsXG4gICAgICAgIGNsYXNzPVwibmF2IG5hdi1waWxscyByZXNwb25zaXZlLXBpbGxzIGZsZXgtY29sdW1uIG1iLWF1dG9cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMC10cmFuc2l0aW9uJzogcmVzcG9uc2l2ZVRvZ2dsZSB9XCJcbiAgICAgICAgKm5nSWY9XCJ0eXBlc1wiXG4gICAgICA+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNcIiAoY2xpY2spPVwicmVzcG9uc2l2ZVRvZ2dsZSA9ICFyZXNwb25zaXZlVG9nZ2xlXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCIoaWQgPyAnLi4vLi4vJyA6ICcuLi8nKSArIHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKSA9PT0gdG9LZWJhYkNhc2UodGhpcy5tb2RlbE5hbWUpIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5wbHVyYWxcbiAgICAgICAgICAgICAgICA/IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5wbHVyYWxcbiAgICAgICAgICAgICAgICA6IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5sYWJlbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgOiB0eXBlLm5hbWUgKyAncydcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNpZGViYXItY29udGVudFwiIFtuZ1N0eWxlXT1cInsgJ2ZsZXgtYmFzaXMnOiAhcmVzcG9uc2l2ZVRvZ2dsZSA/ICd1bnNldCcgOiAnMCcgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTMgcC1tZC01IG1iLTNcIj5cbiAgICAgIDxiYXNlLW1vZGVsLXRhYmxlXG4gICAgICAgIFttb2RlbENvbmZpZ109XCJtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2NhbWVsTW9kZWxOYW1lXVwiXG4gICAgICAgIFtjb25maWddPVwibW9kdWxlQ29uZmlnPy5maWVsZENvbmZpZ1tjYW1lbE1vZGVsTmFtZV0gfHwge31cIlxuICAgICAgICBbbW9kZWxOYW1lXT1cIm1vZGVsTmFtZVwiXG4gICAgICAgIFtsb2dnaW5nXT1cIm1vZHVsZUNvbmZpZz8ubG9nZ2luZ1wiXG4gICAgICAgIFtvYmplY3RJZF09XCJpZCAhPT0gJ25ldScgPyBpZCA6ICcnXCJcbiAgICAgICAgW2NyZWF0ZU1vZGVdPVwiaWQgPT09ICduZXUnXCJcbiAgICAgICAgKGNyZWF0ZU1vZGVDaGFuZ2VkKT1cIm9uQ3JlYXRlTW9kZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChpZFNlbGVjdGVkKT1cImlkU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtpbXBvcnRdPVwiaXNJbXBvcnRQb3NzaWJsZSgpXCJcbiAgICAgICAgW2V4cG9ydF09XCJpc0V4cG9ydFBvc3NpYmxlKClcIlxuICAgICAgICBbY3JlYXRlXT1cImlzQ3JlYXRlUG9zc2libGUoKVwiXG4gICAgICAgIFt1cGRhdGVdPVwiaXNVcGRhdGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW2RlbGV0ZV09XCJpc0RlbGV0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbZHVwbGljYXRlXT1cImlzRHVwbGljYXRlUG9zc2libGUoKVwiXG4gICAgICAgIFtzaG93RmF2QnV0dG9uXT1cIiFyZXNwb25zaXZlVG9nZ2xlXCJcbiAgICAgID48L2Jhc2UtbW9kZWwtdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNtcy9wYWdlcy9iYXNlLWNtcy9iYXNlLWNtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY21zL3BhZ2VzL2Jhc2UtY21zL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBRUwsU0FBUyxHQUtWLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLG1EQUFtRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU9wQyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQ3lDLFlBQWlDLEVBQ2hFLGtCQUFzQyxFQUN0QyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsVUFBc0I7UUFMUyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDaEUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVhoQyxVQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBVXZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNu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SyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDOzs2R0EvT1UsZ0JBQWdCLGtCQVdqQixzQkFBc0I7aUdBWHJCLGdCQUFnQixvRENsQjdCLGlwSUFzR0E7MkZEcEZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOzswQkFlckIsTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhTZXJ2aWNlLFxuICBCYXNpY1VzZXIsXG4gIENtc1NlcnZpY2UsXG4gIEdyYXBocWxDcnVkVHlwZSxcbiAgR3JhcGhRTE1ldGEsXG4gIEdyYXBoUUxNZXRhU2VydmljZSxcbn0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCQVNFX0NNU19NT0RVTEVfQ09ORklHLCBCYXNlQ01TTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYXNlLWNtcy1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtY21zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtY21zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS1jbXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQmFzZUNtc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbWV0YTogR3JhcGhRTE1ldGE7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBjYW1lbE1vZGVsTmFtZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICB0eXBlczogR3JhcGhxbENydWRUeXBlW10gPSBbXTtcbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBzaWRlQmFyV2lkdGggPSAnMjIlJztcbiAgcmVzcG9uc2l2ZVRvZ2dsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQkFTRV9DTVNfTU9EVUxFX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQmFzZUNNU01vZHVsZUNvbmZpZyxcbiAgICBwcml2YXRlIGdyYXBoUUxNZXRhU2VydmljZTogR3JhcGhRTE1ldGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2FsY1NpZGVCYXJXaWR0aCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlWydtb2RlbE5hbWUnXSkge1xuICAgICAgICAgIGNvbnN0IGV4Y2x1ZGUgPSB0aGlzLm1vZHVsZUNvbmZpZy5tb2RlbENvbmZpZ1t2YWx1ZVsnbW9kZWxOYW1lJ11dPy5leGNsdWRlO1xuXG4gICAgICAgICAgaWYgKGV4Y2x1ZGUgIT09IG51bGwgJiYgIWV4Y2x1ZGUpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWxOYW1lID0gdmFsdWVbJ21vZGVsTmFtZSddO1xuICAgICAgICAgICAgdGhpcy5jYW1lbE1vZGVsTmFtZSA9IHRoaXMudG9DYW1lbENhc2UodGhpcy5tb2RlbE5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluaXQoKS50aGVuKCh0eXBlczogR3JhcGhxbENydWRUeXBlW10pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nICsgdGhpcy50b0tlYmFiQ2FzZSh0eXBlc1swXS5uYW1lKV0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZVsnaWQnXSkge1xuICAgICAgICAgIHRoaXMuaWQgPSB2YWx1ZVsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgR3JhcGhxbENydWRUeXBlIG9iamVjdHNcbiAgICpcbiAgICogQHJldHVybnMgVGhlIHR5cGVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byB0aGUgdXNlci5cbiAgICovXG4gIGluaXQoKTogUHJvbWlzZTxHcmFwaHFsQ3J1ZFR5cGVbXT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdyYXBoUUxNZXRhU2VydmljZS5nZXRNZXRhKCkuc3Vic2NyaWJlKChtZXRhKSA9PiB7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG5cbiAgICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3Q/LnBhcmFtcz8uWydtb2RlbE5hbWUnXSkge1xuICAgICAgICAgIHRoaXMubW9kZWxOYW1lID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zPy5bJ21vZGVsTmFtZSddO1xuICAgICAgICAgIHRoaXMuY2FtZWxNb2RlbE5hbWUgPSB0aGlzLnRvQ2FtZWxDYXNlKHRoaXMubW9kZWxOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnaWQnXSkge1xuICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXM/LlsnaWQnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR5cGVzID0gbWV0YS5nZXRUeXBlcyh0aGlzLm1vZHVsZUNvbmZpZz8ubG9nZ2luZyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIGV4Y2x1ZGVkIHR5cGVzXG4gICAgICAgIGxldCBmaWx0ZXJlZFR5cGVzID0gdHlwZXMuZmlsdGVyKChlKSA9PiAhdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2UubmFtZS50b0xvd2VyQ2FzZSgpXT8uZXhjbHVkZSk7XG5cbiAgICAgICAgLy8gU29ydCB0eXBlc1xuICAgICAgICBmaWx0ZXJlZFR5cGVzID0gZmlsdGVyZWRUeXBlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbYS5uYW1lLnRvTG93ZXJDYXNlKCldPy5vcmRlclxuICAgICAgICAgICAgICA/IHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1thLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgIDogOTkpIC1cbiAgICAgICAgICAgICh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbYi5uYW1lLnRvTG93ZXJDYXNlKCldPy5vcmRlclxuICAgICAgICAgICAgICA/IHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tiLm5hbWUudG9Mb3dlckNhc2UoKV0/Lm9yZGVyXG4gICAgICAgICAgICAgIDogOTkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIHJlc3RyaWN0ZWQgdHlwZXNcbiAgICAgICAgdGhpcy50eXBlcyA9IGZpbHRlcmVkVHlwZXMuZmlsdGVyKChlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tlLm5hbWUudG9Mb3dlckNhc2UoKV0/LnJlc3RyaWN0ZWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZT8uY3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2U/LmN1cnJlbnRVc2VyO1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkVXNlciA9IEJhc2ljVXNlci5tYXAodXNlcik7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRVc2VyPy5oYXNBbGxSb2xlcyh0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbZS5uYW1lLnRvTG93ZXJDYXNlKCldPy5yb2xlcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5sb2dnaW5nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPnR5cGVzJywgdGhpcy50eXBlcyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPmNhbWVsTW9kZWxOYW1lJywgdGhpcy5jYW1lbE1vZGVsTmFtZSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Jhc2VDbXNDb21wb25lbnQ6OmluaXQtPmZpZWxkQ29uZmlnJywgdGhpcy5tb2R1bGVDb25maWc/LmZpZWxkQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmUodGhpcy50eXBlcyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsTmFtZSAmJiB0aGlzLnR5cGVzKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyB0aGlzLnRvS2ViYWJDYXNlKHRoaXMudHlwZXNbMF0ubmFtZSldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBtb2RlbCBuYW1lIGlzIHNldCBhbmQgdGhlIHR5cGVzIGFyZSBzZXQsIHRoZW4gcmV0dXJuIHRoZSB0eXBlIHRoYXQgbWF0Y2hlcyB0aGUgbW9kZWwgbmFtZVxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdHlwZSBvYmplY3QgdGhhdCBtYXRjaGVzIHRoZSBtb2RlbCBuYW1lLlxuICAgKi9cbiAgZ2V0VHlwZUJ5TW9kZWxOYW1lKCkge1xuICAgIGlmICh0aGlzLm1vZGVsTmFtZSAmJiB0aGlzLnR5cGVzKSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlcy5maW5kKChlKSA9PiB0aGlzLnRvS2ViYWJDYXNlKGUubmFtZSkgPT09IHRoaXMudG9LZWJhYkNhc2UodGhpcy5tb2RlbE5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIGNyZWF0ZU1vZGVDaGFuZ2VkIGV2ZW50IGlzIGVtaXR0ZWQsIGlmIHRoZSBjcmVhdGVNb2RlIGlzIHRydWUsIG5hdmlnYXRlIHRvIHRoZSBuZXcgcm91dGVcbiAgICpcbiAgICogQHBhcmFtIGNyZWF0ZU1vZGUgLSBib29sZWFuIC0gVGhpcyBpcyBhIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgdXNlciBpcyBpbiBjcmVhdGUgbW9kZSBvclxuICAgKiBub3QuXG4gICAqL1xuICBvbkNyZWF0ZU1vZGVDaGFuZ2VkKGNyZWF0ZU1vZGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoY3JlYXRlTW9kZSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyAnbmV1J10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHR5cGUgZXhpc3RzLCByZXR1cm4gdGhlIGNyZWF0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgaXNDcmVhdGVQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRUeXBlQnlNb2RlbE5hbWUoKTtcbiAgICByZXR1cm4gdHlwZSA/IHR5cGUuY3JlYXRlIDogZmFsc2U7XG4gIH1cblxuICBpc0ltcG9ydFBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLm1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbdGhpcy5jYW1lbE1vZGVsTmFtZV0/LmltcG9ydDtcblxuICAgIGlmIChjb25maWcgIT09IG51bGwgJiYgY29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdCA9IGNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaXNFeHBvcnRQb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5tb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW3RoaXMuY2FtZWxNb2RlbE5hbWVdPy5leHBvcnQ7XG5cbiAgICBpZiAoY29uZmlnICE9PSBudWxsICYmIGNvbmZpZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQgPSBjb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBmb3VuZCBpbiB0aGUgdHlwZSBtYXAsIHJldHVybiB0aGUgdXBkYXRlIHByb3BlcnR5IG9mIHRoZSB0eXBlIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc1VwZGF0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS51cGRhdGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdHlwZSBpcyBkZWZpbmVkLCByZXR1cm4gdGhlIGRlbGV0ZSBwcm9wZXJ0eSBvZiB0aGUgdHlwZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBpc0RlbGV0ZVBvc3NpYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldFR5cGVCeU1vZGVsTmFtZSgpO1xuICAgIHJldHVybiB0eXBlID8gdHlwZS5kZWxldGUgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbW9kZWwgbmFtZSBpcyBmb3VuZCBpbiB0aGUgdHlwZSBhcnJheSwgcmV0dXJuIHRoZSBkdXBsaWNhdGUgcHJvcGVydHkgb2YgdGhlIHR5cGUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIGlzRHVwbGljYXRlUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0VHlwZUJ5TW9kZWxOYW1lKCk7XG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlLmR1cGxpY2F0ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBpZCBpcyB0cnV0aHksIG5hdmlnYXRlIHRvIHRoZSBpZCwgb3RoZXJ3aXNlIG5hdmlnYXRlIHRvIHRoZSBwYXJlbnQgcm91dGVcbiAgICovXG4gIGlkU2VsZWN0ZWQoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLycgKyBpZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICAgKi9cbiAgdG9LZWJhYkNhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyPy5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICAgKi9cbiAgdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyPy5yZXBsYWNlKC8tLi9nLCAobWF0Y2gpID0+IG1hdGNoWzFdLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBmaXJzdCBsZXR0ZXIgdG8gbG93ZXIgY2FzZVxuICAgKi9cbiAgbG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNtc1NlcnZpY2UubG93ZXJDYXNlRmlyc3RMZXR0ZXIodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgc2lkZWJhciB3aWR0aCBiYXNlZCBvbiBzY3JlZW4gc2l6ZVxuICAgKi9cbiAgY2FsY1NpZGVCYXJXaWR0aCgpIHtcbiAgICB0aGlzLnNpZGVCYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4ID8gJzglJyA6ICcyMiUnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzaWRlYmFyXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAnZmxleC1iYXNpcyc6ICFyZXNwb25zaXZlVG9nZ2xlID8gc2lkZUJhcldpZHRoIDogJzEwMCUnLFxuICAgICAgJ21pbi13aWR0aCc6ICFyZXNwb25zaXZlVG9nZ2xlID8gc2lkZUJhcldpZHRoIDogJydcbiAgICB9XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLW5vbmUgZC1tZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc2hyaW5rLTAgcC0zIGgtMTAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kdWxlQ29uZmlnLmJyYW5kaW5nXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTMgbXQtMyBtZS1tZC1hdXRvIGxpbmstZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgICAgICAgKm5nSWY9XCIhbW9kdWxlQ29uZmlnPy5sb2dvVXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBmcy00XCI+PGIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5CYXNlPC9iPkNNUzwvc3Bhbj5cbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmdy1saWdodGVyXCI+VGhlIGF1dG8gZ2VuZXJhdGVkIEdyYXBoUUwgQ01TPC9zbWFsbD5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTMgbXQtMyBtZS1tZC1hdXRvIGxpbmstZGFyayB0ZXh0LWRlY29yYXRpb24tbm9uZSB3LTEwMFwiXG4gICAgICAgICAgKm5nSWY9XCJtb2R1bGVDb25maWc/LmxvZ29VcmxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGltZyBbc3JjXT1cIm1vZHVsZUNvbmZpZy5sb2dvVXJsXCIgY2xhc3M9XCJpbWctcmVzcG9uc2l2ZSB3LTEwMFwiIGFsdD1cIkxvZ29cIiAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxociAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXBpbGxzIGZsZXgtY29sdW1uIG1iLWF1dG9cIiAqbmdJZj1cInR5cGVzXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNcIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgICAgICBhcmlhLWN1cnJlbnQ9XCJwYWdlXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIihpZCA/ICcuLi8uLi8nIDogJy4uLycpICsgdG9LZWJhYkNhc2UodHlwZT8ubmFtZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpID09PSB0b0tlYmFiQ2FzZSh0aGlzLm1vZGVsTmFtZSkgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LnBsdXJhbFxuICAgICAgICAgICAgICAgIDogbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgPyBtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2xvd2VyQ2FzZUZpcnN0TGV0dGVyKHR5cGU/Lm5hbWUpXT8ubGFiZWxcbiAgICAgICAgICAgICAgICA6IHR5cGUubmFtZSArICdzJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZC1tZC1ub25lIHAtMyBoLTEwMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJiaVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYmktY2hldnJvbi1sZWZ0JzogIXJlc3BvbnNpdmVUb2dnbGUsICdiaS1jaGV2cm9uLXJpZ2h0JzogcmVzcG9uc2l2ZVRvZ2dsZSB9XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzcG9uc2l2ZVRvZ2dsZSA9ICFyZXNwb25zaXZlVG9nZ2xlXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHVsXG4gICAgICAgIGNsYXNzPVwibmF2IG5hdi1waWxscyByZXNwb25zaXZlLXBpbGxzIGZsZXgtY29sdW1uIG1iLWF1dG9cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICd3LTEwMC10cmFuc2l0aW9uJzogcmVzcG9uc2l2ZVRvZ2dsZSB9XCJcbiAgICAgICAgKm5nSWY9XCJ0eXBlc1wiXG4gICAgICA+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNcIiAoY2xpY2spPVwicmVzcG9uc2l2ZVRvZ2dsZSA9ICFyZXNwb25zaXZlVG9nZ2xlXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCIoaWQgPyAnLi4vLi4vJyA6ICcuLi8nKSArIHRvS2ViYWJDYXNlKHR5cGU/Lm5hbWUpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0b0tlYmFiQ2FzZSh0eXBlPy5uYW1lKSA9PT0gdG9LZWJhYkNhc2UodGhpcy5tb2RlbE5hbWUpIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5wbHVyYWxcbiAgICAgICAgICAgICAgICA/IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5wbHVyYWxcbiAgICAgICAgICAgICAgICA6IG1vZHVsZUNvbmZpZz8ubW9kZWxDb25maWdbbG93ZXJDYXNlRmlyc3RMZXR0ZXIodHlwZT8ubmFtZSldPy5sYWJlbFxuICAgICAgICAgICAgICAgID8gbW9kdWxlQ29uZmlnPy5tb2RlbENvbmZpZ1tsb3dlckNhc2VGaXJzdExldHRlcih0eXBlPy5uYW1lKV0/LmxhYmVsXG4gICAgICAgICAgICAgICAgOiB0eXBlLm5hbWUgKyAncydcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNpZGViYXItY29udGVudFwiIFtuZ1N0eWxlXT1cInsgJ2ZsZXgtYmFzaXMnOiAhcmVzcG9uc2l2ZVRvZ2dsZSA/ICd1bnNldCcgOiAnMCcgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTMgcC1tZC01IG1iLTNcIj5cbiAgICAgIDxiYXNlLW1vZGVsLXRhYmxlXG4gICAgICAgIFttb2RlbENvbmZpZ109XCJtb2R1bGVDb25maWc/Lm1vZGVsQ29uZmlnW2NhbWVsTW9kZWxOYW1lXVwiXG4gICAgICAgIFtjb25maWddPVwibW9kdWxlQ29uZmlnPy5maWVsZENvbmZpZ1tjYW1lbE1vZGVsTmFtZV0gfHwge31cIlxuICAgICAgICBbbW9kZWxOYW1lXT1cIm1vZGVsTmFtZVwiXG4gICAgICAgIFtsb2dnaW5nXT1cIm1vZHVsZUNvbmZpZz8ubG9nZ2luZ1wiXG4gICAgICAgIFtvYmplY3RJZF09XCJpZCAhPT0gJ25ldScgPyBpZCA6ICcnXCJcbiAgICAgICAgW2NyZWF0ZU1vZGVdPVwiaWQgPT09ICduZXUnXCJcbiAgICAgICAgKGNyZWF0ZU1vZGVDaGFuZ2VkKT1cIm9uQ3JlYXRlTW9kZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChpZFNlbGVjdGVkKT1cImlkU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtpbXBvcnRdPVwiaXNJbXBvcnRQb3NzaWJsZSgpXCJcbiAgICAgICAgW2V4cG9ydF09XCJpc0V4cG9ydFBvc3NpYmxlKClcIlxuICAgICAgICBbY3JlYXRlXT1cImlzQ3JlYXRlUG9zc2libGUoKVwiXG4gICAgICAgIFt1cGRhdGVdPVwiaXNVcGRhdGVQb3NzaWJsZSgpXCJcbiAgICAgICAgW2RlbGV0ZV09XCJpc0RlbGV0ZVBvc3NpYmxlKClcIlxuICAgICAgICBbZHVwbGljYXRlXT1cImlzRHVwbGljYXRlUG9zc2libGUoKVwiXG4gICAgICAgIFtzaG93RmF2QnV0dG9uXT1cIiFyZXNwb25zaXZlVG9nZ2xlXCJcbiAgICAgID48L2Jhc2UtbW9kZWwtdGFibGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=