@alauda-fe/common 1.4.28-beta.6 → 1.4.28

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 (165) hide show
  1. package/array-form-table/form/component.d.ts +1 -1
  2. package/code/code-editor-configs.d.ts +2 -0
  3. package/code/managed-fields-folder.util.d.ts +35 -0
  4. package/code/public-api.d.ts +4 -0
  5. package/code/resource-yaml-display/component.d.ts +64 -6
  6. package/code/resource-yaml-editor/component.d.ts +95 -0
  7. package/code/yaml-examples.d.ts +8 -0
  8. package/code/yaml-sidebar/component.d.ts +57 -0
  9. package/code/yaml-sidebar/types.d.ts +21 -0
  10. package/core/abstract/base-nested-form-control.d.ts +1 -1
  11. package/core/services/kubernetes-schema.service.d.ts +44 -0
  12. package/core/services/public-api.d.ts +1 -0
  13. package/core/types/openapi.d.ts +37 -0
  14. package/core/types/public-api.d.ts +1 -0
  15. package/esm2022/abnormal-page/abnormal-page.component.mjs +1 -1
  16. package/esm2022/array-form-table/form/component.mjs +1 -1
  17. package/esm2022/array-form-table/key-value-form/component.mjs +1 -1
  18. package/esm2022/array-form-table/key-value-table/component.mjs +1 -1
  19. package/esm2022/array-form-table/string-array-form/component.mjs +1 -1
  20. package/esm2022/async-data/error-page/component.mjs +1 -1
  21. package/esm2022/async-data/page-state/component.mjs +1 -1
  22. package/esm2022/business/notification-disabled-container/component.mjs +1 -1
  23. package/esm2022/business/resource-select/exports/cluster-list/component.mjs +1 -1
  24. package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +1 -1
  25. package/esm2022/business/resource-select/exports/icon/component.mjs +1 -1
  26. package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +1 -1
  27. package/esm2022/business/resource-select/exports/namespace-list/component.mjs +1 -1
  28. package/esm2022/business/resource-select/exports/namespace-page/component.mjs +1 -1
  29. package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +1 -1
  30. package/esm2022/business/resource-select/exports/project-list/component.mjs +1 -1
  31. package/esm2022/business/resource-select/exports/project-page/component.mjs +1 -1
  32. package/esm2022/business/resource-select/exports/project-selector/component.mjs +1 -1
  33. package/esm2022/business/resource-select/internals/data-grid/component.mjs +1 -1
  34. package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +1 -1
  35. package/esm2022/business/resource-select/internals/no-data/component.mjs +1 -1
  36. package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +1 -1
  37. package/esm2022/business/resource-select/internals/selector-popup/component.mjs +1 -1
  38. package/esm2022/chart/common/axis/axis-label.component.mjs +1 -1
  39. package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +1 -1
  40. package/esm2022/chart/common/axis/x-axis.component.mjs +1 -1
  41. package/esm2022/chart/common/axis/x-plot-lines.component.mjs +1 -1
  42. package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +1 -1
  43. package/esm2022/chart/common/axis/y-axis.component.mjs +1 -1
  44. package/esm2022/chart/common/axis/y-plot-lines.component.mjs +1 -1
  45. package/esm2022/chart/common/chart/chart.component.mjs +1 -1
  46. package/esm2022/chart/common/legend/legend.component.mjs +1 -1
  47. package/esm2022/chart/common/range-area/range-area.component.mjs +1 -1
  48. package/esm2022/chart/common/reference-area/reference-area.component.mjs +1 -1
  49. package/esm2022/chart/common/series/area-series.component.mjs +1 -1
  50. package/esm2022/chart/common/series/bar-path.component.mjs +1 -1
  51. package/esm2022/chart/common/series/bar-series.component.mjs +1 -1
  52. package/esm2022/chart/common/series/line-series.component.mjs +1 -1
  53. package/esm2022/chart/common/tooltip/tooltip.component.mjs +1 -1
  54. package/esm2022/chart/custom-template/dropdown-legend.mjs +1 -1
  55. package/esm2022/code/code-display-dialog/component.mjs +1 -1
  56. package/esm2022/code/code-editor-configs.mjs +12 -2
  57. package/esm2022/code/k8s-yaml-display-dialog/component.mjs +1 -1
  58. package/esm2022/code/managed-fields-folder.util.mjs +147 -0
  59. package/esm2022/code/public-api.mjs +5 -1
  60. package/esm2022/code/resource-yaml-display/component.mjs +257 -43
  61. package/esm2022/code/resource-yaml-editor/component.mjs +392 -0
  62. package/esm2022/code/yaml-examples.mjs +337 -0
  63. package/esm2022/code/yaml-sidebar/component.mjs +482 -0
  64. package/esm2022/code/yaml-sidebar/types.mjs +2 -0
  65. package/esm2022/core/components/tree/node/component.mjs +1 -1
  66. package/esm2022/core/components/tree/tree/component.mjs +1 -1
  67. package/esm2022/core/directives/readonly-field.directive.mjs +1 -1
  68. package/esm2022/core/services/kubernetes-schema.service.mjs +129 -0
  69. package/esm2022/core/services/public-api.mjs +2 -1
  70. package/esm2022/core/services/workspace-helper.service.mjs +4 -3
  71. package/esm2022/core/types/openapi.mjs +2 -0
  72. package/esm2022/core/types/public-api.mjs +2 -1
  73. package/esm2022/custom-columns-setting/component.mjs +1 -1
  74. package/esm2022/disabled-container/disabled-container.component.mjs +1 -1
  75. package/esm2022/editable/editable.component.mjs +1 -1
  76. package/esm2022/editable-text/component.mjs +1 -1
  77. package/esm2022/exec/placeholder/component.mjs +1 -1
  78. package/esm2022/exec/terminal/component.mjs +1 -1
  79. package/esm2022/exec/terminal-group/component.mjs +3 -3
  80. package/esm2022/feature-gate-forbidden/component/component.mjs +1 -1
  81. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +1 -1
  82. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +1 -1
  83. package/esm2022/form/labels-editor/component.mjs +1 -1
  84. package/esm2022/form/taints-editor/component.mjs +1 -1
  85. package/esm2022/form/upload-file/component.mjs +1 -1
  86. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +1 -1
  87. package/esm2022/graph-canvas/components/graph-actions.component.mjs +1 -1
  88. package/esm2022/graph-canvas/components/graph-canvas.component.mjs +1 -1
  89. package/esm2022/graph-canvas/components/graph-link.component.mjs +1 -1
  90. package/esm2022/graph-canvas/components/graph-links.component.mjs +1 -1
  91. package/esm2022/grid-layout/components/grid/component.mjs +1 -1
  92. package/esm2022/grid-layout/components/grid-items/component.mjs +1 -1
  93. package/esm2022/help-document/component.mjs +1 -1
  94. package/esm2022/k8s-resource-list/footer/component.mjs +1 -1
  95. package/esm2022/k8s-shared/resource-mark/k8s-resource-mark.component.mjs +1 -1
  96. package/esm2022/k8s-shared/update-description-dialog/component.mjs +1 -1
  97. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +1 -1
  98. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +1 -1
  99. package/esm2022/lazy-component/lazy-load-component.mjs +1 -1
  100. package/esm2022/license/license-error/component.mjs +1 -1
  101. package/esm2022/list-display/component.mjs +1 -1
  102. package/esm2022/metric-chart/metric-chart.component.mjs +1 -1
  103. package/esm2022/metric-chart/metric-time-pick.mjs +1 -1
  104. package/esm2022/multi-search/action-input/component.mjs +1 -1
  105. package/esm2022/multi-search/form/component.mjs +1 -1
  106. package/esm2022/multi-search/multi-search-tags/component.mjs +1 -1
  107. package/esm2022/mutable/mosaic/mosaic.component.mjs +1 -1
  108. package/esm2022/notification/feedback-notification/component.mjs +1 -1
  109. package/esm2022/overview-banner/overview-banner.component.mjs +1 -1
  110. package/esm2022/page-guard/component/component.mjs +1 -1
  111. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +1 -1
  112. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +1 -1
  113. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +1 -1
  114. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +1 -1
  115. package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +1 -1
  116. package/esm2022/page-scaffold/page/notices/notice.component.mjs +1 -1
  117. package/esm2022/page-scaffold/page/page.component.mjs +1 -1
  118. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +1 -1
  119. package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +1 -1
  120. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +1 -1
  121. package/esm2022/page-scaffold/page-header/component.mjs +1 -1
  122. package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +1 -1
  123. package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +1 -1
  124. package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +1 -1
  125. package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +1 -1
  126. package/esm2022/pie-derivative-chart/donut-status/component.mjs +1 -1
  127. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +1 -1
  128. package/esm2022/pod-status/component.mjs +1 -1
  129. package/esm2022/searchable-selector/component.mjs +1 -1
  130. package/esm2022/skeleton/item/component.mjs +1 -1
  131. package/esm2022/skeleton/nav-skeleton/component.mjs +1 -1
  132. package/esm2022/table/component.mjs +1 -1
  133. package/esm2022/view-chart/custom-template/dropdown-legend.mjs +1 -1
  134. package/esm2022/view-chart/legend/legend.component.mjs +1 -1
  135. package/esm2022/view-chart/view-chart.component.mjs +1 -1
  136. package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +1 -1
  137. package/esm2022/view-zchart/legend/legend.component.mjs +1 -1
  138. package/esm2022/view-zchart/view-zchart.component.mjs +1 -1
  139. package/esm2022/widget/card-section/card-section.component.mjs +1 -1
  140. package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +1 -1
  141. package/esm2022/widget/current-time/component.mjs +1 -1
  142. package/esm2022/widget/date-range-picker/component.mjs +1 -1
  143. package/esm2022/widget/field-set/column/component.mjs +2 -2
  144. package/esm2022/widget/field-set/group/component.mjs +1 -1
  145. package/esm2022/widget/field-set/item/component.mjs +1 -1
  146. package/esm2022/widget/foldable-block/component.mjs +1 -1
  147. package/esm2022/widget/foldable-item-in-table/component.mjs +1 -1
  148. package/esm2022/widget/loading-mask/loading-mask.component.mjs +1 -1
  149. package/esm2022/widget/password-input/component.mjs +1 -1
  150. package/esm2022/widget/relative-time/component.mjs +1 -1
  151. package/esm2022/widget/resource-label/component.mjs +1 -1
  152. package/esm2022/widget/resource-multi-select/component.mjs +1 -1
  153. package/esm2022/widget/search-panel/component.mjs +1 -1
  154. package/esm2022/widget/search-panel/search-item/component.mjs +1 -1
  155. package/esm2022/widget/status-icon/status-icon.component.mjs +1 -1
  156. package/esm2022/widget/tags-label/component.mjs +1 -1
  157. package/esm2022/widget/terminating-tag/component.mjs +1 -1
  158. package/esm2022/widget/text-ellipsis/component.mjs +1 -1
  159. package/esm2022/widget/text-with-url/component.mjs +1 -1
  160. package/esm2022/widget/zero-state/zero-state.component.mjs +1 -1
  161. package/esm2022/workload-status-icon/component.mjs +1 -1
  162. package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +1 -1
  163. package/esm2022/xterm/xterm.component.mjs +1 -1
  164. package/package.json +1 -1
  165. package/styles/global.scss +4 -0
@@ -83,7 +83,7 @@ export declare class ArrayFormTableComponent implements OnDestroy {
83
83
  addDisabled: boolean | '';
84
84
  actionColumnDivider: boolean | '';
85
85
  showZeroState: boolean;
86
- get formDirective(): FormGroupDirective | NgForm;
86
+ get formDirective(): NgForm | FormGroupDirective;
87
87
  /**
88
88
  * 自定义是否展示错误内容
89
89
  * 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容
@@ -15,5 +15,7 @@ export declare const commonOptions: IEditorConstructionOptions;
15
15
  export declare const readonlyOptions: IEditorConstructionOptions;
16
16
  export declare const yamlReadOptions: IEditorConstructionOptions;
17
17
  export declare const yamlWriteOptions: IEditorConstructionOptions;
18
+ export declare const yamlWriteMinimapOptions: IEditorConstructionOptions;
19
+ export declare const yamlReadMinimapOptions: IEditorConstructionOptions;
18
20
  export declare const textWriteOptions: IEditorConstructionOptions;
19
21
  export declare const logsReadOptions: IEditorConstructionOptions;
@@ -0,0 +1,35 @@
1
+ import { editor } from 'monaco-editor/esm/vs/editor/editor.api';
2
+ /**
3
+ * 自动折叠 managedFields 字段
4
+ * @param monacoEditor Monaco 编辑器实例
5
+ */
6
+ export declare function foldManagedFields(monacoEditor: editor.IStandaloneCodeEditor): void;
7
+ /**
8
+ * 编辑器实例获取器接口
9
+ */
10
+ export interface EditorInstanceProvider {
11
+ getEditorInstance(): editor.IStandaloneCodeEditor | null;
12
+ }
13
+ /**
14
+ * ManagedFields 自动折叠器
15
+ * 用于在内容变化时自动折叠 managedFields 字段
16
+ */
17
+ export declare class ManagedFieldsAutoFolder {
18
+ private subscription?;
19
+ private lastFoldedContent;
20
+ /**
21
+ * 开始监听内容变化并自动折叠
22
+ * @param editorProvider 编辑器实例提供者
23
+ * @param contentObservable 内容变化的 Observable
24
+ */
25
+ startAutoFold(editorProvider: EditorInstanceProvider, contentObservable: any): void;
26
+ /**
27
+ * 停止自动折叠
28
+ */
29
+ stopAutoFold(): void;
30
+ /**
31
+ * 手动执行一次折叠
32
+ * @param editorProvider 编辑器实例提供者
33
+ */
34
+ foldOnce(editorProvider: EditorInstanceProvider): void;
35
+ }
@@ -9,3 +9,7 @@ export * from './code-display-dialog/component';
9
9
  export * from './code-editor-configs';
10
10
  export * from './k8s-yaml-display-dialog/component';
11
11
  export * from './resource-yaml-display/component';
12
+ export * from './resource-yaml-editor/component';
13
+ export * from './yaml-sidebar/component';
14
+ export * from './yaml-sidebar/types';
15
+ export * from './yaml-examples';
@@ -1,20 +1,78 @@
1
+ import { MonacoLanguageService } from '@alauda/code-editor';
2
+ import { OnDestroy, AfterViewInit } from '@angular/core';
3
+ import { editor } from 'monaco-editor/esm/vs/editor/editor.api';
1
4
  import { BehaviorSubject, Observable } from 'rxjs';
2
- import { KubernetesResource, YamlUtilService, Arrayable } from '../../core/public-api';
5
+ import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
6
+ import { YamlUtilService } from '../../core/services/yaml-util.service';
7
+ import { Arrayable } from '../../core/types/helpers';
8
+ import { KubernetesResource } from '../../core/types/k8s/core';
9
+ import { OpenAPIV3SchemaObject } from '../../core/types/schema';
10
+ import { EditorInstanceProvider } from '../managed-fields-folder.util';
3
11
  import * as i0 from "@angular/core";
4
- export declare class ResourceYamlDisplayComponent<T extends KubernetesResource> {
5
- private readonly yamlUtil;
12
+ export declare class ResourceYamlDisplayComponent<T extends KubernetesResource> implements OnDestroy, AfterViewInit, EditorInstanceProvider {
13
+ readonly yamlUtil: YamlUtilService;
14
+ readonly schemaService: KubernetesSchemaService;
15
+ private readonly monacoLanguageService;
16
+ private destroy$;
6
17
  concise$$: BehaviorSubject<boolean>;
7
18
  reduce$$: BehaviorSubject<boolean>;
19
+ showSidebar$$: BehaviorSubject<boolean>;
20
+ showDebugPanel$$: BehaviorSubject<boolean>;
21
+ modelUri: string;
22
+ private yamlSchemaService;
23
+ private monacoEditor;
24
+ private registeredSchemas;
25
+ codeEditorRef: {
26
+ editor: editor.IStandaloneCodeEditor;
27
+ };
8
28
  hasWrapper: boolean;
29
+ showDebugInfo: boolean;
9
30
  conciseEnable: boolean;
10
31
  manageFieldActionEnable: boolean;
32
+ sidebarEnable: boolean;
33
+ schemaEnable: boolean;
34
+ exampleEnable: boolean;
35
+ autoFoldManagedFields: boolean;
36
+ schema: OpenAPIV3SchemaObject;
11
37
  resource: Arrayable<T>;
12
38
  readonly resource$: Observable<Arrayable<T>>;
13
- constructor(yamlUtil: YamlUtilService);
39
+ readonly schema$: Observable<OpenAPIV3SchemaObject>;
40
+ minimap: boolean;
41
+ yamlReadMinimapOptions: import("../code-editor-configs").IEditorConstructionOptions;
42
+ yamlReadOptions: import("../code-editor-configs").IEditorConstructionOptions;
43
+ hasFolded: boolean;
44
+ /**
45
+ * 自动获取的 schema,当没有手动提供 schema 时使用
46
+ */
47
+ autoSchema$: Observable<OpenAPIV3SchemaObject>;
48
+ /**
49
+ * 最终使用的 schema,优先使用手动提供的,否则使用自动获取的
50
+ */
51
+ finalSchema$: Observable<OpenAPIV3SchemaObject>;
52
+ constructor(yamlUtil: YamlUtilService, schemaService: KubernetesSchemaService, monacoLanguageService: MonacoLanguageService);
14
53
  yaml$: Observable<string>;
15
- editorOptions: import("../code-editor-configs").IEditorConstructionOptions;
54
+ get editorOptions(): import("../code-editor-configs").IEditorConstructionOptions;
16
55
  viewActions: import("@alauda/code-editor").CodeEditorActionsConfig;
17
56
  conciseChange(value: boolean): void;
57
+ toggleSidebar(): void;
58
+ toggleDebugInfo(): void;
59
+ getCurrentResource(): T | null;
60
+ getCurrentSchema(): OpenAPIV3SchemaObject | null;
61
+ selfFoldManagedFields(): void;
62
+ /**
63
+ * 设置 YAML schema 以提供 hover 提示和自动完成
64
+ */
65
+ setYamlSchema(resource: T, schema: OpenAPIV3SchemaObject): void;
66
+ ngAfterViewInit(): void;
67
+ /**
68
+ * 获取 Monaco Editor 实例
69
+ */
70
+ getEditorInstance(): editor.IStandaloneCodeEditor | null;
71
+ /**
72
+ * 自动折叠 managedFields 字段
73
+ */
74
+ foldManagedFields(): void;
75
+ ngOnDestroy(): void;
18
76
  static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlDisplayComponent<any>, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlDisplayComponent<any>, "acl-resource-yaml-display", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "conciseEnable": { "alias": "conciseEnable"; "required": false; }; "manageFieldActionEnable": { "alias": "manageFieldActionEnable"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; }, {}, never, never, true, never>;
77
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlDisplayComponent<any>, "acl-resource-yaml-display", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "showDebugInfo": { "alias": "showDebugInfo"; "required": false; }; "conciseEnable": { "alias": "conciseEnable"; "required": false; }; "manageFieldActionEnable": { "alias": "manageFieldActionEnable"; "required": false; }; "sidebarEnable": { "alias": "sidebarEnable"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "autoFoldManagedFields": { "alias": "autoFoldManagedFields"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; "minimap": { "alias": "minimap"; "required": false; }; }, {}, never, never, true, never>;
20
78
  }
@@ -0,0 +1,95 @@
1
+ import { MonacoLanguageService } from '@alauda/code-editor';
2
+ import { EventEmitter, OnDestroy, AfterViewInit } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { BehaviorSubject, Observable } from 'rxjs';
5
+ import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
6
+ import { YamlUtilService } from '../../core/services/yaml-util.service';
7
+ import { Arrayable } from '../../core/types/helpers';
8
+ import { KubernetesResource } from '../../core/types/k8s/core';
9
+ import { OpenAPIV3SchemaObject } from '../../core/types/schema';
10
+ import { EditorInstanceProvider } from '../managed-fields-folder.util';
11
+ import { YamlExample } from '../yaml-sidebar/types';
12
+ import * as i0 from "@angular/core";
13
+ export declare class ResourceYamlEditorComponent<T extends KubernetesResource> implements ControlValueAccessor, OnDestroy, EditorInstanceProvider, AfterViewInit {
14
+ readonly yamlUtil: YamlUtilService;
15
+ readonly schemaService: KubernetesSchemaService;
16
+ private readonly monacoLanguageService;
17
+ private destroy$;
18
+ private _value;
19
+ private _originalValue;
20
+ private onChange;
21
+ private onTouched;
22
+ showSidebar$$: BehaviorSubject<boolean>;
23
+ showDebugPanel$$: BehaviorSubject<boolean>;
24
+ modelUri: string;
25
+ private yamlSchemaService;
26
+ private monacoEditor;
27
+ private registeredSchemas;
28
+ private codeEditorRef;
29
+ hasWrapper: boolean;
30
+ showDebugInfo: boolean;
31
+ sidebarEnable: boolean;
32
+ schema: OpenAPIV3SchemaObject;
33
+ schemaEnable: boolean;
34
+ exampleEnable: boolean;
35
+ resource: Arrayable<T>;
36
+ autoFoldManagedFields: boolean;
37
+ set originalValue(value: string);
38
+ get originalValue(): string;
39
+ options: import("../code-editor-configs").IEditorConstructionOptions;
40
+ actionsConfig: import("@alauda/code-editor").CodeEditorActionsConfig;
41
+ tryYaml: EventEmitter<string>;
42
+ readonly resource$: Observable<Arrayable<T>>;
43
+ readonly schema$: Observable<OpenAPIV3SchemaObject>;
44
+ autoFillNamespace: boolean;
45
+ extraExamples: YamlExample[];
46
+ hasFolded: boolean;
47
+ /**
48
+ * 自动获取的 schema,当没有手动提供 schema 时使用
49
+ */
50
+ autoSchema$: Observable<OpenAPIV3SchemaObject>;
51
+ /**
52
+ * 最终使用的 schema,优先使用手动提供的,否则使用自动获取的
53
+ */
54
+ finalSchema$: Observable<OpenAPIV3SchemaObject>;
55
+ constructor(yamlUtil: YamlUtilService, schemaService: KubernetesSchemaService, monacoLanguageService: MonacoLanguageService);
56
+ ngAfterViewInit(): void;
57
+ selfFoldManagedFields(): void;
58
+ get value(): string;
59
+ set value(val: string);
60
+ writeValue(value: string): void;
61
+ registerOnChange(fn: (value: string) => void): void;
62
+ registerOnTouched(fn: () => void): void;
63
+ toggleSidebar(): void;
64
+ toggleDebugInfo(): void;
65
+ getCurrentResource(): T | null;
66
+ getCurrentSchema(): OpenAPIV3SchemaObject | null;
67
+ getDebugInfo(): {
68
+ hasResource: boolean;
69
+ resourceApiVersion: string;
70
+ resourceKind: string;
71
+ hasManualSchema: boolean;
72
+ workspaceHelperAvailable: boolean;
73
+ currentWorkspace: Readonly<{
74
+ project: string;
75
+ cluster: string;
76
+ namespace: string;
77
+ }>;
78
+ };
79
+ onTryYaml(yamlContent: string): void;
80
+ /**
81
+ * 设置 YAML schema 以提供 hover 提示和自动完成
82
+ */
83
+ setYamlSchema(resource: T, schema: OpenAPIV3SchemaObject): void;
84
+ /**
85
+ * 获取 Monaco 编辑器实例
86
+ */
87
+ getEditorInstance(): import('monaco-editor').editor.IStandaloneCodeEditor | null;
88
+ /**
89
+ * 手动折叠 managedFields
90
+ */
91
+ foldManagedFields(): void;
92
+ ngOnDestroy(): void;
93
+ static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlEditorComponent<any>, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlEditorComponent<any>, "acl-resource-yaml-editor", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "showDebugInfo": { "alias": "showDebugInfo"; "required": false; }; "sidebarEnable": { "alias": "sidebarEnable"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; "autoFoldManagedFields": { "alias": "autoFoldManagedFields"; "required": false; }; "originalValue": { "alias": "originalValue"; "required": false; }; "options": { "alias": "options"; "required": false; }; "actionsConfig": { "alias": "actionsConfig"; "required": false; }; "autoFillNamespace": { "alias": "autoFillNamespace"; "required": false; }; "extraExamples": { "alias": "extraExamples"; "required": false; }; }, { "tryYaml": "tryYaml"; }, never, never, true, never>;
95
+ }
@@ -0,0 +1,8 @@
1
+ import { YamlExample } from './yaml-sidebar/types';
2
+ /**
3
+ * Kubernetes 资源的内置 YAML 示例
4
+ * 按照 apiVersion.kind 的格式组织
5
+ */
6
+ export declare const BUILT_IN_YAML_EXAMPLES: {
7
+ [key: string]: YamlExample[];
8
+ };
@@ -0,0 +1,57 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { OnInit, OnChanges, SimpleChanges, EventEmitter, ChangeDetectorRef } from '@angular/core';
3
+ import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
4
+ import { KubernetesResource } from '../../core/types/k8s/core';
5
+ import { OpenAPIV3SchemaObject } from '../../core/types/schema';
6
+ import { YamlExample } from './types';
7
+ import * as i0 from "@angular/core";
8
+ export declare class ResourceYamlSidebarComponent implements OnInit, OnChanges {
9
+ private schemaService;
10
+ private http;
11
+ private cdr;
12
+ resource: KubernetesResource;
13
+ schema: OpenAPIV3SchemaObject;
14
+ close: EventEmitter<void>;
15
+ tryYaml: EventEmitter<string>;
16
+ schemaEnable: boolean;
17
+ exampleEnable: boolean;
18
+ extraExamples: YamlExample[];
19
+ private readonly DEFINITIONS_PREFIX;
20
+ currentSchema: OpenAPIV3SchemaObject;
21
+ properties: {
22
+ [key: string]: OpenAPIV3SchemaObject;
23
+ };
24
+ path: string[];
25
+ resourceKind: string;
26
+ examples: YamlExample[];
27
+ hasSchema: boolean;
28
+ hasExamples: boolean;
29
+ constructor(schemaService: KubernetesSchemaService, http: HttpClient, cdr: ChangeDetectorRef);
30
+ ngOnInit(): void;
31
+ ngOnChanges(changes: SimpleChanges): void;
32
+ refresh(): void;
33
+ private loadExamples;
34
+ private loadConsoleYAMLSamples;
35
+ drillDownToProperty(name: string): void;
36
+ navigateToPath(index: number): void;
37
+ hasNestedProperties(property: OpenAPIV3SchemaObject): boolean;
38
+ getPropertyType(property: OpenAPIV3SchemaObject): string;
39
+ isRequired(propertyName: string): boolean;
40
+ /**
41
+ * 检查属性是否有 $ref 引用或嵌套属性
42
+ */
43
+ hasViewableContent(property: OpenAPIV3SchemaObject): boolean;
44
+ /**
45
+ * 检查属性是否有 $ref 引用
46
+ */
47
+ hasRefProperty(property: OpenAPIV3SchemaObject): boolean;
48
+ /**
49
+ * 获取 $ref 引用的定义名称
50
+ */
51
+ getRefDefinitionName(property: OpenAPIV3SchemaObject): string;
52
+ tryExample(example: YamlExample): void;
53
+ downloadYaml(example: YamlExample): void;
54
+ processDescription(description: string): string;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlSidebarComponent, never>;
56
+ static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlSidebarComponent, "acl-resource-yaml-sidebar", never, { "resource": { "alias": "resource"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "extraExamples": { "alias": "extraExamples"; "required": false; }; }, { "close": "close"; "tryYaml": "tryYaml"; }, never, never, true, never>;
57
+ }
@@ -0,0 +1,21 @@
1
+ export interface YamlExample {
2
+ title: string;
3
+ description: string;
4
+ yaml: string;
5
+ snippet?: boolean;
6
+ }
7
+ export interface ConsoleYAMLSample {
8
+ metadata: {
9
+ name: string;
10
+ };
11
+ spec: {
12
+ title: string;
13
+ description: string;
14
+ yaml: string;
15
+ snippet?: boolean;
16
+ targetResource: {
17
+ apiVersion: string;
18
+ kind: string;
19
+ };
20
+ };
21
+ }
@@ -21,7 +21,7 @@ export declare class BaseNestedFormControl<V, M = V> implements AfterViewInit, O
21
21
  protected asyncValidator: boolean;
22
22
  protected cdr: ChangeDetectorRef;
23
23
  protected destroy$$: Subject<void>;
24
- protected hostForm: FormGroupDirective | NgForm;
24
+ protected hostForm: NgForm | FormGroupDirective;
25
25
  constructor();
26
26
  ngAfterViewInit(): void;
27
27
  ngOnDestroy(): void;
@@ -0,0 +1,44 @@
1
+ import { Observable } from 'rxjs';
2
+ import { OpenAPIV2Document } from '../types/openapi';
3
+ import { OpenAPIV3SchemaObject } from '../types/schema';
4
+ import { WorkspaceHelperService } from './workspace-helper.service';
5
+ import * as i0 from "@angular/core";
6
+ export declare class KubernetesSchemaService {
7
+ private readonly http;
8
+ readonly workspaceHelper: WorkspaceHelperService;
9
+ private initialized;
10
+ private readonly schemaCache;
11
+ private readonly schemaCache$$;
12
+ get definitions(): Record<string, OpenAPIV3SchemaObject>;
13
+ private ensureInitialized;
14
+ /**
15
+ * 获取当前集群的 OpenAPI schema
16
+ */
17
+ getOpenAPISchema(): Observable<OpenAPIV2Document | null>;
18
+ /**
19
+ * 根据 Kubernetes 资源类型获取对应的 schema
20
+ */
21
+ getResourceSchema(apiVersion: string, kind: string): Observable<OpenAPIV3SchemaObject | null>;
22
+ /**
23
+ * 获取所有可用的资源定义
24
+ */
25
+ getAllResourceDefinitions(): Observable<Record<string, OpenAPIV3SchemaObject> | null>;
26
+ /**
27
+ * 清理缓存
28
+ */
29
+ clearCache(): void;
30
+ /**
31
+ * 获取缓存状态
32
+ */
33
+ getCacheStatus(): Observable<Map<string, OpenAPIV2Document>>;
34
+ /**
35
+ * 检查 WorkspaceHelperService 是否可用
36
+ */
37
+ isWorkspaceHelperAvailable(): boolean;
38
+ /**
39
+ * 从 Kubernetes API 获取 OpenAPI schema
40
+ */
41
+ private fetchOpenAPISchema;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<KubernetesSchemaService, never>;
43
+ static ɵprov: i0.ɵɵInjectableDeclaration<KubernetesSchemaService>;
44
+ }
@@ -4,6 +4,7 @@ export * from './custom-code-editor-intl.service';
4
4
  export * from './feature-gate.service';
5
5
  export * from './intercept-deactivate.service';
6
6
  export * from './k8s-util.service';
7
+ export * from './kubernetes-schema.service';
7
8
  export * from './silently-navigate.service';
8
9
  export * from './time.service';
9
10
  export * from './ui-state.service';
@@ -0,0 +1,37 @@
1
+ import { OpenAPIV3SchemaObject } from './schema';
2
+ export interface OpenAPIV2Document {
3
+ swagger: string;
4
+ info: {
5
+ title: string;
6
+ version: string;
7
+ description?: string;
8
+ };
9
+ host?: string;
10
+ basePath?: string;
11
+ schemes?: string[];
12
+ consumes?: string[];
13
+ produces?: string[];
14
+ paths: Record<string, any>;
15
+ definitions: Record<string, OpenAPIV3SchemaObject>;
16
+ parameters?: Record<string, any>;
17
+ responses?: Record<string, any>;
18
+ securityDefinitions?: Record<string, any>;
19
+ security?: any[];
20
+ tags?: any[];
21
+ externalDocs?: any;
22
+ }
23
+ export interface SchemaProperty {
24
+ name: string;
25
+ type: string;
26
+ description?: string;
27
+ required: boolean;
28
+ properties?: {
29
+ [key: string]: OpenAPIV3SchemaObject;
30
+ };
31
+ items?: OpenAPIV3SchemaObject;
32
+ }
33
+ export interface SchemaBreadcrumb {
34
+ name: string;
35
+ path: string[];
36
+ schema: OpenAPIV3SchemaObject;
37
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
  export * from './commons';
7
7
  export * from './helpers';
8
+ export * from './openapi';
8
9
  export * from './schema';
9
10
  export * from './resource-definitions';
10
11
  export * from './k8s/public-api';
@@ -63,5 +63,5 @@ export class AbnormalPageComponent {
63
63
  </acl-page-guard>
64
64
  `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".description{color:rgb(var(--aui-color-secondary-text))}\n"] }]
65
65
  }], null, null); })();
66
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AbnormalPageComponent, { className: "AbnormalPageComponent" }); })();
66
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AbnormalPageComponent, { className: "AbnormalPageComponent", filePath: "abnormal-page/abnormal-page.component.ts", lineNumber: 33 }); })();
67
67
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJub3JtYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYWJub3JtYWwtcGFnZS9hYm5vcm1hbC1wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztJQVU1Qyw2QkFBdUM7SUFFbkMsQUFERiw0QkFBdUIsV0FFbEI7SUFBQSxZQUN1Qjs7O0lBQUEsaUJBQ3pCO0lBQ0QsaUNBSUM7SUFEQywwTEFBUyxjQUFPLEtBQUM7SUFFakIsWUFDRjs7SUFDRixBQURFLGlCQUFTLEVBQ1A7OztJQVZDLGVBQ3VCO0lBRHZCLGtIQUN1QjtJQU94QixlQUNGO0lBREUsOERBQ0Y7O0FBUVYsTUFBTSxPQUFPLHFCQUFxQjtJQTVCbEM7UUE2QkUsV0FBTSxHQUFHLE1BQU0sQ0FBQztLQUtqQjtJQUhDLEtBQUs7UUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7c0ZBTFUscUJBQXFCO29FQUFyQixxQkFBcUI7WUF6QjlCLHlDQUlDO1lBQ0Msd0ZBQXVDO1lBZXpDLGlCQUFpQjs7WUFqQmYsQUFEQSxBQURBLCtCQUFpQiwrQkFDUyxnQkFDWDs7O2lGQXNCUixxQkFBcUI7Y0E1QmpDLFNBQVM7MkJBQ0UsbUJBQW1CLFlBQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNOztrRkFFcEMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWFzb24gfSBmcm9tICcuLi9wYWdlLWd1YXJkL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtYWJub3JtYWwtcGFnZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGFjbC1wYWdlLWd1YXJkXG4gICAgICBbYWxsb3dlZF09XCJmYWxzZVwiXG4gICAgICBbcmVhc29uXT1cInJlYXNvbi5BYm5vcm1hbFwiXG4gICAgICBbaXNGdWxsXT1cInRydWVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKmFjbFBhZ2VHdWFyZERlc2NyaXB0aW9uPlxuICAgICAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgID57eyAnc3lzdGVtX2Fibm9ybWFsX2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX17eyAnb3InIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmV0cnkoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3JldHJ5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3A+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FjbC1wYWdlLWd1YXJkPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hYm5vcm1hbC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBYm5vcm1hbFBhZ2VDb21wb25lbnQge1xuICByZWFzb24gPSBSZWFzb247XG5cbiAgcmV0cnkoKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG59XG4iXX0=
@@ -531,5 +531,5 @@ export class ArrayFormTableComponent {
531
531
  }], rowDrop: [{
532
532
  type: Output
533
533
  }] }); })();
534
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArrayFormTableComponent, { className: "ArrayFormTableComponent" }); })();
534
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArrayFormTableComponent, { className: "ArrayFormTableComponent", filePath: "array-form-table/form/component.ts", lineNumber: 130 }); })();
535
535
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUvZm9ybS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYXJyYXktZm9ybS10YWJsZS9mb3JtL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsU0FBUyxFQUNULGtCQUFrQixFQUNsQixNQUFNLEdBQ1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUs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SztZQUlOLGFBQWE7a0JBRFosS0FBSztZQUdHLFVBQVU7a0JBQWxCLEtBQUs7WUFFSSxPQUFPO2tCQUFoQixNQUFNOztrRkE1SUksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCByZ2JDb2xvciwgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUdyb3VwLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nRm9ybSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBFTVBUWSwgbWFwLCBtZXJnZSwgc3RhcnRXaXRoLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFB1cmVQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9wdXJlLnBpcGUnO1xuaW1wb3J0IHsgRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUgfSBmcm9tICcuLi8uLi9lZmZlY3QtZGlyZWN0aXZlL21vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBaZXJvU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXQvemVyby1zdGF0ZS96ZXJvLXN0YXRlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHID0gcmdiQ29sb3IoJ3ItNicpO1xuXG5leHBvcnQgY29uc3Qgcm93QmFja2dyb3VuZENvbG9yRm4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oe1xuICBpbnZhbGlkLFxufTogVCk6IHN0cmluZyA9PiAoaW52YWxpZCA/IEFSUkFZX1RBQkxFX0ZPUk1fRVJST1JfQkcgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBub1Nob3dSb3dFcnJvciA9ICgpID0+IGZhbHNlO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVIZWFkZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd0Vycm9yXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93RXJyb3JEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xBcnJheUZvcm1UYWJsZVJvd10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBcnJheUZvcm1UYWJsZVJvd0RpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVSb3dDb250cm9sXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlUm93U2VwYXJhdG9yRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsQXJyYXlGb3JtVGFibGVGb290ZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtVGFibGVGb290ZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8vIOmAkuW9kumqjOivgSBjb250cm9sIOaYr+WQpuaciemXrumimO+8jGdyb3VwIOWGhemDqOWPr+iDveS8muacieW1jOWll+eahOaDheWGtVxuZnVuY3Rpb24gX2lzRm9ybUNvbnRyb2xJbnZhbGlkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb250cm9sLmRpcnR5ICYmICEhY29udHJvbC5lcnJvcnMpIHx8XG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpLnNvbWUoX2lzRm9ybUNvbnRyb2xJbnZhbGlkKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC5pbnZhbGlkO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtYXJyYXktZm9ybS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgLy8gU2luY2Ugcm93cyBtYXliZSB1cGRhdGVkIHdpdGhvdXQgY2hhbmdpbmcgcmVmZXJlbmNlLCB3ZSB1c2UgRGVmYXVsdCBoZXJlOlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3ByZWZlci1vbi1wdXNoLWNvbXBvbmVudC1jaGFuZ2UtZGV0ZWN0aW9uXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBaZXJvU3RhdGVDb21wb25lbnQsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIFB1cmVQaXBlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgLi4uRUZGRUNUX0RJUkVDVElWRV9NT0RVTEUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZUhlYWRlckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8g55So5oi35Y+v5Lul5o+Q5L6b5aSa6KGM5qih5p2/LCDkvYblj6rmnInnrKzkuIDooYzmnInmjqfliLbmjInplK4uXG4gIEBDb250ZW50Q2hpbGRyZW4oQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcm93VGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHJvd0Vycm9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihqOWNlem7mOiupOaPkOS+m+WIoOmZpOaMiemUrjsg5YGH5aaC55So5oi35o+Q5L6b5qih5p2/LCDlsIbkvb/nlKjnlKjmiLfnmoTmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICByb3dDb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihqOWNlem7mOiupOaPkOS+m+a3u+WKoOaMiemUrjsg5YGH5aaC55So5oi35o+Q5L6b5qih5p2/LCDlsIbkvb/nlKjnlKjmiLfnmoTmqKHmnb9cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQXJyYXlGb3JtVGFibGVGb290ZXJEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooajljZXpu5jorqTkuLrnqbrmlbDmja7mj5Dkvpvml6B4eHjnmoTmqKHmnb87IOWBh+WmgueUqOaIt+aPkOS+m+aooeadvywg5bCG5L2/55So55So5oi355qE5qih5p2/XG4gICAqL1xuICBAQ29udGVudENoaWxkKEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgemVyb1N0YXRlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIOihjOS5i+mXtOeahOWIhumalOWMuuWfn+iHquWumuS5ieaooeadv1xuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBcnJheUZvcm1UYWJsZVJvd1NlcGFyYXRvckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHNlcGFyYXRvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiDooYzkuYvpl7TnmoTliIbpmpTljLrln5/vvIzpu5jorqTlhbPpl61cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd1NlcGFyYXRvciA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoRm9ybUdyb3VwRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbmdGb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZTtcblxuICAvLyBEYXRhIGNvbnRleHQgZm9yIHJvd3MuXG4gIEBJbnB1dCgpXG4gIHJvd3M6IGFueVtdO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZSA9IG51bGwgYXMgc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZVRyYW5zbGF0ZWQ6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgYWRkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTsgLy8gUmV0dXJucyB0aGUgaW5kZXggdG8gYmUgcmVtb3ZlZFxuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5OiBib29sZWFuIHwgJycgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBhZGREaXNhYmxlZDogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYWN0aW9uQ29sdW1uRGl2aWRlcjogYm9vbGVhbiB8ICcnID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2hvd1plcm9TdGF0ZSA9IHRydWU7XG5cbiAgZ2V0IGZvcm1EaXJlY3RpdmUoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEZvcm1Hcm91cERpcmVjdGl2ZSwgbnVsbCkgfHxcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KE5nRm9ybSwgbnVsbClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOiHquWumuS5ieaYr+WQpuWxleekuumUmeivr+WGheWuuVxuICAgKiDkvovlpoIgY29udHJvbCDmmK8gRm9ybUdyb3Vw77yM5Y+q5pyJ5Zyo5YaF6YOo5a2QIGNvbnRyb2wg6ZSZ6K+v5pe25omN6ZyA6KaB5bGV56S66ZSZ6K+v5YaF5a65XG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93Um93RXJyb3I8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gICAgY29udHJvbDogVCxcbiAgICBmb3JtRGlyZWN0aXZlPzogTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybURpcmVjdGl2ZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29udHJvbC5pbnZhbGlkICYmXG4gICAgICAgIChmb3JtRGlyZWN0aXZlLnN1Ym1pdHRlZCB8fCBfaXNGb3JtQ29udHJvbEludmFsaWQoY29udHJvbCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIHNob3dSb3dFcnJvcn0gaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KClcbiAgcm93QmFja2dyb3VuZENvbG9yRm48VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gICAgY29udHJvbDogVCxcbiAgICBmb3JtRGlyZWN0aXZlPzogTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNob3dSb3dFcnJvcihjb250cm9sLCBmb3JtRGlyZWN0aXZlKVxuICAgICAgPyBBUlJBWV9UQUJMRV9GT1JNX0VSUk9SX0JHXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBtaW5Sb3cgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG1pblJvd1Rvb2x0aXAgPSAnJztcblxuICBASW5wdXQoKVxuICBtYXhSb3cgPSBJbmZpbml0eTtcblxuICBASW5wdXQoKVxuICBtYXhSb3dUb29sdGlwID0gJyc7XG5cbiAgQElucHV0KCkgZW5hYmxlRHJvcCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByb3dEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxDZGtEcmFnRHJvcDxGb3JtR3JvdXBbXT4+KCk7XG5cbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjZHIgPSB0aGlzLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEZvcm1Hcm91cFtdPikge1xuICAgIHRoaXMucm93RHJvcC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHNob3VsZFNob3dSb3dFcnJvciA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICBjb25zdCB7IHN0YXR1c0NoYW5nZXMgPSBFTVBUWSwgc3RhdHVzIH0gPSBjb250cm9sO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZm9ybURpcmVjdGl2ZVxuICAgICAgICA/IG1lcmdlKHN0YXR1c0NoYW5nZXMsIHRoaXMuZm9ybURpcmVjdGl2ZS5uZ1N1Ym1pdClcbiAgICAgICAgOiBzdGF0dXNDaGFuZ2VzXG4gICAgKS5waXBlKFxuICAgICAgc3RhcnRXaXRoKHN0YXR1cyksXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5zaG93Um93RXJyb3IoY29udHJvbCwgdGhpcy5mb3JtRGlyZWN0aXZlKSksXG4gICAgKTtcbiAgfTtcbn1cbiIsIjx0YWJsZVxuICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlXCJcbiAgW2NsYXNzLmFjbC1hcnJheS1mb3JtLXRhYmxlX19yZWFkb25seS1tb2RlXT1cInJlYWRvbmx5XCJcbj5cbiAgPHRoZWFkICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8dHI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0aFxuICAgICAgICAqbmdJZj1cIiFyZWFkb25seSAmJiBtaW5Sb3cgIT09IG1heFJvd1wiXG4gICAgICAgIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2xcIlxuICAgICAgPjwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5XG4gICAgY2RrRHJvcExpc3RcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgIDx0clxuICAgICAgICAqbmdGb3I9XCJsZXQgcm93VGVtcGxhdGUgb2Ygcm93VGVtcGxhdGVzOyBsZXQgdGVtcGxhdGVJbmRleCA9IGluZGV4XCJcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2xhc3MuYWNsLWFycmF5LWZvcm0tdGFibGVfX3Jvdy1lcnJvcl09XCJcbiAgICAgICAgICByb3cgfCBwdXJlOiBzaG91bGRTaG93Um93RXJyb3IgfCBhc3luY1xuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5yb3d0ZW1wbGF0ZWluZGV4XT1cInRlbXBsYXRlSW5kZXhcIlxuICAgICAgPlxuICAgICAgICA8dGQgW2hpZGRlbl09XCIhZW5hYmxlRHJvcFwiPlxuICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1tbC04XCJcbiAgICAgICAgICAgIGljb249XCJtb3ZlXCJcbiAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpbmRleCB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGRcbiAgICAgICAgICAqbmdJZj1cInRlbXBsYXRlSW5kZXggPT09IDAgJiYgIXJlYWRvbmx5ICYmIG1pblJvdyAhPT0gbWF4Um93XCJcbiAgICAgICAgICBjbGFzcz1cImFjbC1hcnJheS1mb3JtLXRhYmxlX19hY3Rpb24tY29sXCJcbiAgICAgICAgICBbY2xhc3MuYWNsLWFycmF5LWZvcm0tdGFibGVfX2FjdGlvbi1jb2wtZGl2aWRlcl09XCJhY3Rpb25Db2x1bW5EaXZpZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dDb250cm9sVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByb3dDb250cm9sVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGluZGV4IH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbYXVpVG9vbHRpcF09XCJtaW5Sb3dUb29sdGlwXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwicm93cz8ubGVuZ3RoID4gbWluUm93IHx8ICFtaW5Sb3dUb29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXJvd0NvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPD0gbWluUm93XCJcbiAgICAgICAgICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3BsYWluXT1cInRydWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlLmVtaXQoaW5kZXgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJtaW51c19jaXJjbGVcIj48L2F1aS1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuXG4gICAgICA8dHJcbiAgICAgICAgKm5nSWY9XCJyb3dFcnJvclRlbXBsYXRlICYmICFyZWFkb25seVwiXG4gICAgICAgIFtjbGFzcy5hY2wtYXJyYXktZm9ybS10YWJsZV9fcm93LWVycm9yXT1cIlxuICAgICAgICAgIHJvdyB8IHB1cmU6IHNob3VsZFNob3dSb3dFcnJvciB8IGFzeW5jXG4gICAgICAgIFwiXG4gICAgICAgIFtoaWRkZW5dPVwiIShyb3cgfCBwdXJlOiBzaG91bGRTaG93Um93RXJyb3IgfCBhc3luYylcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHJvd0Vycm9yVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaW5kZXggfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKHJvd1NlcGFyYXRvciB8fCBzZXBhcmF0b3JUZW1wbGF0ZSkgJiZcbiAgICAgICAgICByb3dzPy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgaW5kZXggIT09IHJvd3M/Lmxlbmd0aCAtIDFcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPHRyIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGVfX3NlcGFyYXRvclwiPlxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgICAgICBAaWYgKHNlcGFyYXRvclRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlcGFyYXRvclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1oLVs4cHhdXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyICpuZ0lmPVwiKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSAmJiBzaG93WmVyb1N0YXRlXCI+XG4gICAgICA8dGRcbiAgICAgICAgY29sc3Bhbj1cIjEwMFwiXG4gICAgICAgIHN0eWxlPVwicGFkZGluZzogdW5zZXRcIlxuICAgICAgPlxuICAgICAgICA8YWNsLXplcm8tc3RhdGVcbiAgICAgICAgICAqbmdJZj1cIiF6ZXJvU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgW3Nob3dFbXB0eUljb25dPVwiZmFsc2VcIlxuICAgICAgICAgIFt6ZXJvU3RhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Jlc291cmNlTmFtZV09XCJyZXNvdXJjZU5hbWVcIlxuICAgICAgICAgIFtyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXT1cInJlc291cmNlTmFtZVRyYW5zbGF0ZWRcIlxuICAgICAgICAgIFttaW5IZWlnaHRdPVwiNDhcIlxuICAgICAgICA+PC9hY2wtemVyby1zdGF0ZT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiemVyb1N0YXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiemVyb1N0YXRlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG5cbiAgICA8dHJcbiAgICAgICpuZ0lmPVwiIXJlYWRvbmx5ICYmIG1pblJvdyAhPT0gbWF4Um93XCJcbiAgICAgIGNsYXNzPVwiYWNsLWFycmF5LWZvcm0tdGFibGUtLXJvdy1hY3Rpb25cIlxuICAgID5cbiAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY2wtYXJyYXktZm9ybS10YWJsZV9fYm90dG9tLWNvbnRyb2wtYnV0dG9uc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbFwiXG4gICAgICAgICAgICBbYXVpVG9vbHRpcF09XCJtYXhSb3dUb29sdGlwXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwicm93cz8ubGVuZ3RoIDwgbWF4Um93IHx8ICFtYXhSb3dUb29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGF1aS1idXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkLmVtaXQoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzPy5sZW5ndGggPj0gbWF4Um93IHx8IGFkZERpc2FibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJwbHVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgICAgICAgICAgIHt7ICdhZGQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuIl19
@@ -293,5 +293,5 @@ __decorate([
293
293
  }], zeroStateTemplate: [{
294
294
  type: Input
295
295
  }] }); })();
296
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueFormTableComponent, { className: "KeyValueFormTableComponent" }); })();
296
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueFormTableComponent, { className: "KeyValueFormTableComponent", filePath: "array-form-table/key-value-form/component.ts", lineNumber: 44 }); })();
297
297
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsbUJBQW1CLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNoSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztJ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Z0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQzs7NkRBUUE7QUErQkY7SUFGQyxTQUFTLENBQTZDLE9BQU8sQ0FBQzs4QkFFakQsS0FBSztnRUFBdUI7aUZBMUQvQiwwQkFBMEI7Y0F0QnRDLFNBQVM7MkJBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO29CQUNQLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQix1QkFBdUI7b0JBQ3ZCLFdBQVc7b0JBQ1gsSUFBSTtvQkFDSixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsVUFBVTtvQkFDVixxQkFBcUI7aUJBQ3RCLGNBQ1csSUFBSSxhQUNMLENBQUMsMkJBQTJCLENBQUM7Z0JBT3hDLFlBQVk7a0JBRFgsS0FBSztZQUlOLHNCQUFzQjtrQkFEckIsS0FBSztZQUlOLGNBQWM7a0JBRGIsS0FBSztZQVdOLFNBQVM7a0JBRFIsS0FBSztZQVVOLFdBQVc7a0JBRFYsS0FBSztZQVVOLFdBQVc7a0JBRFYsS0FBSztZQU9OLFFBQVE7a0JBRFAsS0FBSztZQUlOLE9BQU87a0JBRE4sS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSztZQUtOLFlBQVk7a0JBRFgsS0FBSztZQUlOLGlCQUFpQjtrQkFEaEIsS0FBSzs7a0ZBNURLLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbk1vZHVsZSwgRm9ybU1vZHVsZSwgSWNvbk1vZHVsZSwgSW5wdXRNb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IFN0cmluZ01hcCwgVmFsdWVIb29rIH0gZnJvbSAnLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFZhbGlkYXRlUm93RHVwbGljYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZm9ybS1yb3ctZHVwbGljYXRlL2Zvcm0tcm93LWR1cGxpY2F0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVmZmVjdERpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJy4uLy4uL2VmZmVjdC1kaXJlY3RpdmUvbW9kdWxlJztcbmltcG9ydCB7IEVycm9yc01hcHBlck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBCYXNlU3RyaW5nTWFwRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RyaW5nLW1hcC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcnJheUZvcm1UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vY29tcG9uZW50JztcbmltcG9ydCB7IEFycmF5Rm9ybVRhYmxlTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS9tb2R1bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wta2V5LXZhbHVlLWZvcm0tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc3R5bGVzLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBcnJheUZvcm1UYWJsZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIElucHV0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRXJyb3JzTWFwcGVyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtWYWxpZGF0ZVJvd0R1cGxpY2F0ZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VTdHJpbmdNYXBGb3JtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHJlc291cmNlTmFtZVRyYW5zbGF0ZWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtdWx0aUxpbmVWYWx1ZTogYm9vbGVhbjtcblxuICBAVmFsdWVIb29rKG51bGwsIG51bGwsIGZ1bmN0aW9uICh0aGlzOiBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCkge1xuICAgIHRoaXMuZm9ybT8uY29udHJvbHMuZm9yRWFjaCgoZm9ybUFycmF5OiBGb3JtQXJyYXkpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGZvcm1BcnJheS5jb250cm9scztcbiAgICAgIGtleS5zZXRWYWxpZGF0b3JzKHRoaXMuZ2V0S2V5VmFsaWRhdG9ycygpKTtcbiAgICAgIHZhbHVlLnNldFZhbGlkYXRvcnModGhpcy5nZXRWYWx1ZVZhbGlkYXRvcnMoKSk7XG4gICAgfSk7XG4gIH0pXG4gIEBJbnB1dCgpXG4gIHZhbGlkYXRvcjoge1xuICAgIGtleT86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcbiAgICB2YWx1ZT86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcbiAgfSA9IHtcbiAgICBrZXk6IFtdLFxuICAgIHZhbHVlOiBbXSxcbiAgfTtcblxuICBASW5wdXQoKVxuICBlcnJvck1hcHBlcjoge1xuICAgIGtleT86IFN0cmluZ01hcDtcbiAgICB2YWx1ZT86IFN0cmluZ01hcDtcbiAgfSA9IHtcbiAgICBrZXk6IHt9LFxuICAgIHZhbHVlOiB7fSxcbiAgfTtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjoge1xuICAgIGtleT86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBASW5wdXQoKVxuICByZWFkb25seTogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICB0ZXh0S2V5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIG1heFJvdyA9IEluZmluaXR5O1xuXG4gIEBJbnB1dCgpXG4gIG1pblJvdyA9IDA7XG5cbiAgQFZhbHVlSG9vazxLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCwgJ3JlYWRvbmx5S2V5cyc+KEJvb2xlYW4pXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5S2V5czogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPiA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHplcm9TdGF0ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGlzUmVhZG9ubHkoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seUtleXMuc29tZSh0b0NoZWNrS2V5ID0+IHtcbiAgICAgIGlmICghdG9DaGVja0tleSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHRvQ2hlY2tLZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0b0NoZWNrS2V5ID09PSBrZXk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b0NoZWNrS2V5LnRlc3Qoa2V5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGFWYWx1ZUJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmF0KGluZGV4KSBhcyBGb3JtQXJyYXkpLmF0KDEpLnZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRSZXNvdXJjZU1vZGVsKHJlc291cmNlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgbGV0IG5ld0Zvcm1Nb2RlbCA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlIHx8IHt9KTtcbiAgICAvLyDmjpLluo/vvIzlhYjmjInlrZfmr43mjpLluo/vvIzlho3mioogcmVhZG9ubHkg55qE5pS+5YmN6Z2iXG4gICAgbmV3Rm9ybU1vZGVsID0gc29ydEJ5KG5ld0Zvcm1Nb2RlbCwgKGFycjogW3N0cmluZywgc3RyaW5nXSkgPT4gYXJyWzBdKTtcbiAgICBuZXdGb3JtTW9kZWwuc29ydCgoYXJyMTogW3N0cmluZywgc3RyaW5nXSwgYXJyMjogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xuICAgICAgY29uc3QgZmxhZzEgPSB0aGlzLmlzUmVhZG9ubHkoYXJyMVswXSk7XG4gICAgICBjb25zdCBmbGFnMiA9IHRoaXMuaXNSZWFkb25seShhcnIyWzBdKTtcbiAgICAgIGlmICgoZmxhZzEgJiYgZmxhZzIpIHx8ICghZmxhZzEgJiYgIWZsYWcyKSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmbGFnMSA/IC0xIDogMTtcbiAgICB9KTtcbiAgICBpZiAobmV3Rm9ybU1vZGVsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbmV3Rm9ybU1vZGVsID0gdGhpcy5nZXREZWZhdWx0Rm9ybU1vZGVsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0Zvcm1Nb2RlbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEtleVZhbGlkYXRvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yPy5rZXk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRWYWx1ZVZhbGlkYXRvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yPy52YWx1ZTtcbiAgfVxuXG4gIGlzTGFiZWxSZWFkb25seShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmNvbnRyb2xzW2luZGV4XSBhcyBGb3JtQXJyYXk7XG4gICAgcmV0dXJuIGZvcm1BcnJheS52YWxpZCAmJiB0aGlzLmlzUmVhZG9ubHkoZm9ybUFycmF5LmNvbnRyb2xzWzBdLnZhbHVlKTtcbiAgfVxufVxuIiwiPGFjbC1hcnJheS1mb3JtLXRhYmxlXG4gIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbiAgW3Jlc291cmNlTmFtZVRyYW5zbGF0ZWRdPVwicmVzb3VyY2VOYW1lVHJhbnNsYXRlZFwiXG4gIChhZGQpPVwiYWRkKGZvcm0ubGVuZ3RoKVwiXG4gIChyZW1vdmUpPVwicmVtb3ZlKCRldmVudClcIlxuICBbcm93c109XCJmb3JtLmNvbnRyb2xzXCJcbiAgW2Zvcm1Hcm91cF09XCIkYW55KGZvcm0pXCJcbiAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgW21heFJvd109XCJtYXhSb3dcIlxuICBbbWluUm93XT1cIm1pblJvd1wiXG4+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlSGVhZGVyPlxuICAgIDx0aCBzdHlsZT1cIndpZHRoOiAzMyVcIj57eyAna2V5JyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgPHRoIHN0eWxlPVwid2lkdGg6IDY2JVwiPnt7ICd2YWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cE5hbWVdPVwiaW5kZXhcIlxuICA+XG4gICAgPHRkPlxuICAgICAgPGlucHV0XG4gICAgICAgIFtoaWRkZW5dPVwidGV4dEtleVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSB8fCBpc0xhYmVsUmVhZG9ubHkoaW5kZXgpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcj8ua2V5IHx8ICgna2V5JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgLz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZXh0S2V5XCI+XG4gICAgICAgIHt7IGNvbnRyb2wuZ2V0KCcwJykudmFsdWUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGQ+XG5cbiAgICA8dGQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgKm5nSWY9XCIhbXVsdGlMaW5lVmFsdWVcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIjFcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXI/LnZhbHVlIHx8ICgndmFsdWUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAvPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIm11bHRpTGluZVZhbHVlXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYS13cmFwcGVyXCJcbiAgICAgICAgW2F0dHIuZGF0YS12YWx1ZV09XCJnZXREYXRhVmFsdWVCeUluZGV4KGluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMVwiXG4gICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcj8udmFsdWUgfHwgKCd2YWx1ZScgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElucHV0IGVycm9yIHJvdyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiXG4gICAgICBjb2xzcGFuPVwiM1wiXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8ua2V5SXNNaXNzaW5nXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3JcIj5cbiAgICAgICAge3sgJ2s4c19yZXNvdXJjZV9sYWJlbF9rZXlfZHVwbGljYXRlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzPy5rZXlcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cImVycm9yTWFwcGVyPy5rZXlcIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzPy52YWx1ZVwiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwiZXJyb3JNYXBwZXI/LnZhbHVlXCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbD1cImxldCBpdGVtOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxidXR0b25cbiAgICAgIFtoaWRkZW5dPVwicmVhZG9ubHkgfHwgaXNMYWJlbFJlYWRvbmx5KGluZGV4KVwiXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAoY2xpY2spPVwicmVtb3ZlKGluZGV4KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJtaW51c19jaXJjbGVcIj48L2F1aS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiemVyb1N0YXRlVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVplcm9TdGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ6ZXJvU3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cbiJdfQ==
@@ -70,5 +70,5 @@ export class KeyValueTableComponent {
70
70
  }], resourceNameTranslated: [{
71
71
  type: Input
72
72
  }] }); })();
73
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueTableComponent, { className: "KeyValueTableComponent" }); })();
73
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyValueTableComponent, { className: "KeyValueTableComponent", filePath: "array-form-table/key-value-table/component.ts", lineNumber: 27 }); })();
74
74
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FycmF5LWZvcm0tdGFibGUva2V5LXZhbHVlLXRhYmxlL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcnJheS1mb3JtLXRhYmxlL2tleS12YWx1ZS10YWJsZS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0lDQ3BELDZCQUF1QztJQUNyQywwQkFBSTtJQUFBLFlBQXVCOztJQUFBLGlCQUFLO0lBQ2hDLDBCQUFJO0lBQUEsWUFBeUI7O0lBQUEsaUJBQUs7OztJQUQ5QixlQUF1QjtJQUF2QixpREFBdUI7SUFDdkIsZUFBeUI7SUFBekIsbURBQXlCOzs7SUFFL0IsNkJBQStDO0lBQzdDLDBCQUFJO0lBQUEsWUFBYTtJQUFBLGlCQUFLO0lBQ3RCLDBCQUFJO0lBQUEsWUFBYTtJQUFBLGlCQUFLOzs7O0lBRGxCLGVBQWE7SUFBYixnQ0FBYTtJQUNiLGVBQWE7SUFBYixnQ0FBYTs7QURjckIsTUFBTSxPQUFPLHNCQUFzQjtJQW5CbkM7UUE2QkUsWUFBTyxHQUFHLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEU7dUZBWFksc0JBQXNCO29FQUF0QixzQkFBc0I7WUMxQm5DLCtDQUtDOztZQUtDLEFBSkEseUZBQXVDLDRFQUlRO1lBSWpELGlCQUF1Qjs7WUFWckIsQUFEQSxBQURBLEFBREEsbUVBQThCLGtDQUNELHNEQUNvQixrQkFDaEM7NEJEZWYsdUJBQXVCO1lBQ3ZCLG9CQUFvQixtRUFDcEIsUUFBUTtZQUNSLGVBQWU7O2lGQUlOLHNCQUFzQjtjQW5CbEMsU0FBUzsyQkFDRSxxQkFBcUIsY0FTbkIsSUFBSSxXQUNQO29CQUNQLHVCQUF1QjtvQkFDdkIsb0JBQW9CO29CQUNwQixRQUFRO29CQUNSLGVBQWU7aUJBQ2hCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO2dCQUkvQyxLQUFLO2tCQURKLEtBQUs7WUFJTixZQUFZO2tCQURYLEtBQUs7WUFJTixzQkFBc0I7a0JBRHJCLEtBQUs7O2tGQVBLLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFB1cmVQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9wdXJlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgQXJyYXlGb3JtVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBBcnJheUZvcm1UYWJsZU1vZHVsZSB9IGZyb20gJy4uL2Zvcm0vbW9kdWxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLWtleS12YWx1ZS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICAgIFB1cmVQaXBlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEtleVZhbHVlVGFibGVDb21wb25lbnQ8VD4ge1xuICBASW5wdXQoKVxuICB2YWx1ZTogVDtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG5cbiAgZW50cmllcyA9ICh2YWx1ZTogVCkgPT4gdmFsdWUgIT0gbnVsbCAmJiBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG59XG4iLCI8YWNsLWFycmF5LWZvcm0tdGFibGVcbiAgW3Jvd3NdPVwidmFsdWUgfCBwdXJlOiBlbnRyaWVzXCJcbiAgW3Jlc291cmNlTmFtZV09XCJyZXNvdXJjZU5hbWVcIlxuICBbcmVzb3VyY2VOYW1lVHJhbnNsYXRlZF09XCJyZXNvdXJjZU5hbWVUcmFuc2xhdGVkXCJcbiAgW3JlYWRvbmx5XT1cInRydWVcIlxuPlxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZUhlYWRlcj5cbiAgICA8dGg+e3sgJ2tleScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgIDx0aD57eyAndmFsdWUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGl0ZW1cIj5cbiAgICA8dGQ+e3sgaXRlbVswXSB9fTwvdGQ+XG4gICAgPHRkPnt7IGl0ZW1bMV0gfX08L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYWNsLWFycmF5LWZvcm0tdGFibGU+XG4iXX0=