@messaia/cdk 18.0.0 → 18.1.0-rc02

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 (163) hide show
  1. package/esm2022/lib/base/base.module.mjs +11 -15
  2. package/esm2022/lib/base/components/base.component.mjs +3 -3
  3. package/esm2022/lib/base/components/dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.mjs +121 -0
  4. package/esm2022/lib/base/components/generic-form-base.component.mjs +3 -3
  5. package/esm2022/lib/base/components/generic-form.component.mjs +3 -3
  6. package/esm2022/lib/base/components/generic-list.component.mjs +40 -32
  7. package/esm2022/lib/base/components/generic-reactive-form.component.mjs +3 -3
  8. package/esm2022/lib/base/interceptors/base.interceptor.mjs +3 -3
  9. package/esm2022/lib/base/interceptors/caching-interceptor.mjs +3 -3
  10. package/esm2022/lib/base/interceptors/loading.interceptor.mjs +3 -3
  11. package/esm2022/lib/base/interfaces/igeneric-list-component.mjs +1 -1
  12. package/esm2022/lib/base/services/file.service.mjs +3 -3
  13. package/esm2022/lib/base/services/loading-screen.service.mjs +3 -3
  14. package/esm2022/lib/base/services/print.service.mjs +3 -3
  15. package/esm2022/lib/chips/chips.module.mjs +4 -4
  16. package/esm2022/lib/chips/components/chips.component.mjs +4 -4
  17. package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +3 -3
  18. package/esm2022/lib/chips/directives/chip.directive.mjs +3 -3
  19. package/esm2022/lib/common/common.module.mjs +4 -4
  20. package/esm2022/lib/common/directives/delayed-hover.directive.mjs +3 -3
  21. package/esm2022/lib/common/directives/disable-control.directive.mjs +3 -3
  22. package/esm2022/lib/common/functions/utils.mjs +6 -6
  23. package/esm2022/lib/common/helpers/app-storage.mjs +3 -3
  24. package/esm2022/lib/common/helpers/dynamic-builder.mjs +3 -3
  25. package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +3 -3
  26. package/esm2022/lib/common/models/app-setting.mjs +3 -3
  27. package/esm2022/lib/common/pipes/bind.mjs +3 -3
  28. package/esm2022/lib/common/pipes/data-source.pipe.mjs +3 -3
  29. package/esm2022/lib/common/pipes/enum.pipe.mjs +3 -3
  30. package/esm2022/lib/common/pipes/file-size.pipe.mjs +3 -3
  31. package/esm2022/lib/common/pipes/filter.pipe.mjs +3 -3
  32. package/esm2022/lib/common/pipes/first-letter.mjs +3 -3
  33. package/esm2022/lib/common/pipes/form-array.pipe.mjs +3 -3
  34. package/esm2022/lib/common/pipes/form-control.pipe.mjs +3 -3
  35. package/esm2022/lib/common/pipes/form-group.pipe.mjs +3 -3
  36. package/esm2022/lib/common/pipes/func.pipe.mjs +3 -3
  37. package/esm2022/lib/common/pipes/join.pipe.mjs +3 -3
  38. package/esm2022/lib/common/pipes/keys.mjs +3 -3
  39. package/esm2022/lib/common/pipes/map.pipe.mjs +3 -3
  40. package/esm2022/lib/common/pipes/month-name.pipe.mjs +3 -3
  41. package/esm2022/lib/common/pipes/nested-property.mjs +3 -3
  42. package/esm2022/lib/common/pipes/only-number.mjs +3 -3
  43. package/esm2022/lib/common/pipes/order.pipe.mjs +3 -3
  44. package/esm2022/lib/common/pipes/placeholder.pipe.mjs +3 -3
  45. package/esm2022/lib/common/pipes/property-join.pipe.mjs +3 -3
  46. package/esm2022/lib/common/pipes/safe-html.pipe.mjs +3 -3
  47. package/esm2022/lib/common/pipes/split.pipe.mjs +3 -3
  48. package/esm2022/lib/common/pipes/time.pipe.mjs +3 -3
  49. package/esm2022/lib/common/pipes/titlecase.pipe.mjs +3 -3
  50. package/esm2022/lib/common/pipes/truncate.pipe.mjs +3 -3
  51. package/esm2022/lib/common/pipes/values.mjs +3 -3
  52. package/esm2022/lib/common/services/base.service.mjs +3 -3
  53. package/esm2022/lib/common/services/enum.service.mjs +3 -3
  54. package/esm2022/lib/common/services/event-queue.service.mjs +3 -3
  55. package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +3 -3
  56. package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +3 -3
  57. package/esm2022/lib/dialogs/dialog.component.mjs +12 -12
  58. package/esm2022/lib/dialogs/dialogs.module.mjs +4 -4
  59. package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +3 -3
  60. package/esm2022/lib/dialogs/services/dialog.service.mjs +3 -3
  61. package/esm2022/lib/file/file-input.component.mjs +3 -3
  62. package/esm2022/lib/file/file.module.mjs +4 -4
  63. package/esm2022/lib/form-validators/core/default-container.mjs +3 -1
  64. package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +3 -1
  65. package/esm2022/lib/form-validators/directives/base-directive.mjs +3 -3
  66. package/esm2022/lib/form-validators/directives/control-host.directive.mjs +3 -3
  67. package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +3 -3
  68. package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +3 -3
  69. package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +3 -3
  70. package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +3 -3
  71. package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +3 -3
  72. package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +3 -3
  73. package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +3 -3
  74. package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +3 -3
  75. package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +3 -3
  76. package/esm2022/lib/form-validators/models/config/prop-config.mjs +1 -1
  77. package/esm2022/lib/form-validators/models/property-info.mjs +1 -1
  78. package/esm2022/lib/form-validators/services/reactive-form.module.mjs +8 -8
  79. package/esm2022/lib/form-validators/services/rx-form-builder.mjs +13 -6
  80. package/esm2022/lib/form-validators/services/typed-form-builder.mjs +3 -3
  81. package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +3 -3
  82. package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +15 -15
  83. package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +3 -3
  84. package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +3 -3
  85. package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +3 -3
  86. package/esm2022/lib/forms/forms.module.mjs +4 -4
  87. package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +3 -3
  88. package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +3 -3
  89. package/esm2022/lib/forms/helpers/value-accessor-base.mjs +3 -3
  90. package/esm2022/lib/forms/pipes/field-func.pipe.mjs +3 -3
  91. package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +3 -3
  92. package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +3 -3
  93. package/esm2022/lib/forms/validators/equal-validator.directive.mjs +3 -3
  94. package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +3 -3
  95. package/esm2022/lib/forms/validators/unique-validator-directive.mjs +3 -3
  96. package/esm2022/lib/http/http.module.mjs +4 -4
  97. package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +3 -3
  98. package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +3 -3
  99. package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +3 -3
  100. package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +3 -3
  101. package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +3 -3
  102. package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +9 -9
  103. package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +3 -3
  104. package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +3 -3
  105. package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +9 -9
  106. package/esm2022/lib/layout/layout-toggle.class.mjs +3 -3
  107. package/esm2022/lib/layout/layout.component.mjs +3 -3
  108. package/esm2022/lib/layout/layout.directives.mjs +9 -9
  109. package/esm2022/lib/layout/layout.module.mjs +4 -4
  110. package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +3 -3
  111. package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +9 -9
  112. package/esm2022/lib/list/components/list.component.mjs +3 -3
  113. package/esm2022/lib/list/directives/vd-list-option.directive.mjs +3 -3
  114. package/esm2022/lib/list/list.module.mjs +4 -4
  115. package/esm2022/lib/media/directives/media-toggle.directive.mjs +3 -3
  116. package/esm2022/lib/media/media.module.mjs +4 -4
  117. package/esm2022/lib/media/services/media.service.mjs +3 -3
  118. package/esm2022/lib/menu/components/menu.component.mjs +3 -3
  119. package/esm2022/lib/menu/menu.module.mjs +4 -4
  120. package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +3 -3
  121. package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +3 -3
  122. package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +3 -3
  123. package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +3 -3
  124. package/esm2022/lib/menu/services/menu-items.service.mjs +3 -3
  125. package/esm2022/lib/menu/services/menu.resolve.mjs +6 -6
  126. package/esm2022/lib/menu/services/menu.service.mjs +3 -3
  127. package/esm2022/lib/search/search.module.mjs +4 -4
  128. package/esm2022/lib/select/components/select.component.mjs +3 -3
  129. package/esm2022/lib/select/directives/vd-select-option.directive.mjs +3 -3
  130. package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +3 -3
  131. package/esm2022/lib/select/select.module.mjs +4 -4
  132. package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +132 -18
  133. package/esm2022/lib/table/components/filter-clear.component.mjs +3 -3
  134. package/esm2022/lib/table/components/filter-date.component.mjs +3 -3
  135. package/esm2022/lib/table/components/filter-input.component.mjs +3 -3
  136. package/esm2022/lib/table/components/filter-select/filter-select.component.mjs +6 -6
  137. package/esm2022/lib/table/directives/data-source-filter.directive.mjs +3 -3
  138. package/esm2022/lib/table/directives/vd-table-field.directive.mjs +3 -3
  139. package/esm2022/lib/table/functions/decorators.mjs +2 -2
  140. package/esm2022/lib/table/models/table-column-config.mjs +12 -14
  141. package/esm2022/lib/table/models/table-config.mjs +41 -0
  142. package/esm2022/lib/table/models/table-query-config.mjs +26 -0
  143. package/esm2022/lib/table/paginator-intl.mjs +3 -3
  144. package/esm2022/lib/table/table.module.mjs +7 -5
  145. package/esm2022/lib/table/table.static-data-source.mjs +1 -2
  146. package/fesm2022/messaia-cdk.mjs +5007 -4856
  147. package/fesm2022/messaia-cdk.mjs.map +1 -1
  148. package/lib/base/base.module.d.ts +5 -6
  149. package/lib/base/components/{dynamic-table-config-dialog.comnponent.d.ts → dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.d.ts} +12 -6
  150. package/lib/base/components/generic-list.component.d.ts +13 -12
  151. package/lib/base/interfaces/igeneric-list-component.d.ts +8 -4
  152. package/lib/common/functions/utils.d.ts +1 -1
  153. package/lib/common/styles/utilities/_general.scss +49 -2
  154. package/lib/common/theming/_m2-all-theme.scss +0 -2
  155. package/lib/form-validators/models/config/prop-config.d.ts +2 -0
  156. package/lib/form-validators/models/property-info.d.ts +8 -0
  157. package/lib/layout/_m2-layout-theme.scss +1 -1
  158. package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +14 -5
  159. package/lib/table/models/table-config.d.ts +29 -0
  160. package/lib/table/models/table-query-config.d.ts +26 -0
  161. package/lib/table/table.module.d.ts +2 -0
  162. package/package.json +3 -3
  163. package/esm2022/lib/base/components/dynamic-table-config-dialog.comnponent.mjs +0 -155
@@ -1,155 +0,0 @@
1
- import { ChangeDetectorRef, Component, Inject } from '@angular/core';
2
- import { FormBuilder } from '@angular/forms'; /* Import FormBuilder and FormGroup */
3
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
4
- import { ActivatedRoute } from '@angular/router';
5
- import { TableColumnConfig } from '../../table/models/table-column-config';
6
- import { BaseComponent } from './base.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "@angular/material/dialog";
10
- import * as i3 from "@angular/forms";
11
- import * as i4 from "../../table/components/dynamic-table/dynamic-table.component";
12
- import * as i5 from "@angular/material/button";
13
- import * as i6 from "@angular/cdk/drag-drop";
14
- export class VdDynamicTableConfigDialogComponent extends BaseComponent {
15
- route;
16
- changeDetectorRef;
17
- dialogRef;
18
- genericList;
19
- formBuilder;
20
- /**
21
- * The array of columns to be configured in the dynamic table.
22
- * This is of type TableColumnConfig, which holds the configuration details for each column.
23
- */
24
- columns = [];
25
- /**
26
- * A reference to the TableColumnConfig class for use in the template.
27
- */
28
- classType = TableColumnConfig;
29
- /**
30
- * Form group to manage the table configuration form controls.
31
- */
32
- configForm;
33
- /**
34
- * Constructor to initialize the dialog component.
35
- *
36
- * @param route - The activated route for the current component.
37
- * @param changeDetectorRef - Service to request change detection for the component.
38
- * @param dialogRef - Reference to the dialog instance.
39
- * @param genericList - The generic list component that contains the table data and configurations.
40
- * @param formBuilder - Service to build reactive forms.
41
- */
42
- constructor(route, changeDetectorRef, dialogRef, genericList, formBuilder /* Inject FormBuilder */) {
43
- super(route, changeDetectorRef);
44
- this.route = route;
45
- this.changeDetectorRef = changeDetectorRef;
46
- this.dialogRef = dialogRef;
47
- this.genericList = genericList;
48
- this.formBuilder = formBuilder;
49
- /* Initialize the form controls */
50
- this.configForm = this.formBuilder.group({
51
- sticky: [false], /* Default value for sticky */
52
- tableWidth: [''] /* Default value for table width */
53
- });
54
- /* Filter columns that are configurable from the provided dynamic table configuration */
55
- this.columns = genericList?.dynamicTable?.columns?.filter((x) => x.configurable);
56
- }
57
- /**
58
- * Saves the current column configuration and closes the dialog.
59
- */
60
- save() {
61
- this.apply(); /* Apply changes before closing */
62
- this.dialogRef.close(); /* Close the dialog */
63
- }
64
- /**
65
- * Applies the current column configuration to the generic list.
66
- * Maps the column data to a new array of TableColumnConfig instances
67
- * and saves the configuration.
68
- */
69
- apply() {
70
- /* Map the config data from the columns */
71
- let configs = this.columns?.map(x => new TableColumnConfig({
72
- name: x.name,
73
- header: x.header,
74
- index: x.index,
75
- display: x.display,
76
- width: x.width,
77
- maxWidth: x.maxWidth,
78
- minWidth: x.minWidth
79
- }));
80
- /* Save the column configurations using the generic list component's method */
81
- this.genericList?.saveConfigs(configs);
82
- /* Also save sticky and tableWidth values if needed */
83
- const sticky = this.configForm.get('sticky')?.value;
84
- const tableWidth = this.configForm.get('tableWidth')?.value;
85
- /* Here you can implement logic to handle sticky and tableWidth values */
86
- console.log('Sticky:', sticky);
87
- console.log('Table Width:', tableWidth);
88
- }
89
- /**
90
- * Triggers an update of the columns in the generic list component.
91
- */
92
- updateColumns() {
93
- this.genericList?.updateColumns();
94
- }
95
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdDynamicTableConfigDialogComponent, deps: [{ token: i1.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
96
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: VdDynamicTableConfigDialogComponent, selector: "vd-dynamic-table-config-dialog", usesInheritance: true, ngImport: i0, template: `
97
- <div mat-dialog-title cdkDrag cdkDragRootElement=".cdk-overlay-pane" class="pad push-none" cdkDragHandle i18n="@@tableConfiguration">Table configuration</div>
98
- <!-- <form *ngIf="configForm" [formGroup]="configForm" class="pad">
99
- <div>
100
- <mat-checkbox formControlName="sticky"></mat-checkbox>
101
- </div>
102
- <div>
103
- <mat-form-field>
104
- <mat-label>Table Width</mat-label>
105
- <input matInput type="text" formControlName="tableWidth" />
106
- </mat-form-field>
107
- </div>
108
- </form> -->
109
- <vd-dynamic-table
110
- [data]="columns"
111
- [classType]="classType"
112
- [filterable]="true"
113
- [useFilterOperator]="false"
114
- [pageSize]="10"
115
- [context]="this">
116
- <div table-footer layout-padding class="push-xs">
117
- <a mat-flat-button color="primary" (click)="save()" i18n="@@save">Save</a>
118
- <a mat-flat-button (click)="apply()" i18n="@@apply">Apply</a>
119
- <a mat-flat-button (click)="dialogRef.close()" i18n="@@close">Close</a>
120
- </div>
121
- </vd-dynamic-table>`, isInline: true, styles: [".mat-mdc-dialog-title{cursor:move}\n"], dependencies: [{ kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "component", type: i4.VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: ["dataSource", "data", "formArray", "debugValue", "classType", "context", "dataSourceFilter", "static", "filterable", "sticky", "useFilterOperator", "paginable", "selectable", "sortActive", "sortDirection", "stickyHeader", "stickyFilter", "rowNgClass", "detailsTemplate", "readonly", "selectAllFilter", "columns", "rowMenuItems", "rowAction", "excludedColumns", "pageSize", "pageSizeOptions"], outputs: ["rowClick"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] });
122
- }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdDynamicTableConfigDialogComponent, decorators: [{
124
- type: Component,
125
- args: [{ selector: 'vd-dynamic-table-config-dialog', template: `
126
- <div mat-dialog-title cdkDrag cdkDragRootElement=".cdk-overlay-pane" class="pad push-none" cdkDragHandle i18n="@@tableConfiguration">Table configuration</div>
127
- <!-- <form *ngIf="configForm" [formGroup]="configForm" class="pad">
128
- <div>
129
- <mat-checkbox formControlName="sticky"></mat-checkbox>
130
- </div>
131
- <div>
132
- <mat-form-field>
133
- <mat-label>Table Width</mat-label>
134
- <input matInput type="text" formControlName="tableWidth" />
135
- </mat-form-field>
136
- </div>
137
- </form> -->
138
- <vd-dynamic-table
139
- [data]="columns"
140
- [classType]="classType"
141
- [filterable]="true"
142
- [useFilterOperator]="false"
143
- [pageSize]="10"
144
- [context]="this">
145
- <div table-footer layout-padding class="push-xs">
146
- <a mat-flat-button color="primary" (click)="save()" i18n="@@save">Save</a>
147
- <a mat-flat-button (click)="apply()" i18n="@@apply">Apply</a>
148
- <a mat-flat-button (click)="dialogRef.close()" i18n="@@close">Close</a>
149
- </div>
150
- </vd-dynamic-table>`, styles: [".mat-mdc-dialog-title{cursor:move}\n"] }]
151
- }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
152
- type: Inject,
153
- args: [MAT_DIALOG_DATA]
154
- }] }, { type: i3.FormBuilder }] });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9iYXNlL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDLENBQUMsc0NBQXNDO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFnQ2pELE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxhQUFhO0lBNEJwRDtJQUNBO0lBQ0g7SUFDeUI7SUFDeEI7SUE5Qlo7OztPQUdHO0lBQ0ksT0FBTyxHQUF5QixFQUFFLENBQUM7SUFFMUM7O09BRUc7SUFDSSxTQUFTLEdBQTZCLGlCQUFpQixDQUFDO0lBRS9EOztPQUVHO0lBQ0ksVUFBVSxDQUFZO0lBRTdCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDYyxLQUFxQixFQUNyQixpQkFBb0MsRUFDdkMsU0FBNEQsRUFDbkMsV0FBdUMsRUFDL0QsV0FBd0IsQ0FBQyx3QkFBd0I7UUFFekQsS0FBSyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBTnRCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFDbkMsZ0JBQVcsR0FBWCxXQUFXLENBQTRCO1FBQy9ELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSWhDLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3JDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLDhCQUE4QjtZQUMvQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxtQ0FBbUM7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsd0ZBQXdGO1FBQ3hGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNQLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFFLGtDQUFrQztRQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsc0JBQXNCO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSztRQUNSLDBDQUEwQztRQUMxQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUM7WUFDdkQsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7WUFDZCxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7WUFDcEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1NBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUosOEVBQThFO1FBQzlFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLHNEQUFzRDtRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBRTVELHlFQUF5RTtRQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQzswSEF4RlEsbUNBQW1DLDZHQStCaEMsZUFBZTs4R0EvQmxCLG1DQUFtQyw2RkE1QmxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCQXlCVTs7MkZBR1gsbUNBQW1DO2tCQTlCL0MsU0FBUzsrQkFDSSxnQ0FBZ0MsWUFDaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBeUJVOzswQkFrQ2YsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7IC8qIEltcG9ydCBGb3JtQnVpbGRlciBhbmQgRm9ybUdyb3VwICovXHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnJztcclxuaW1wb3J0IHsgSUdlbmVyaWNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZ2VuZXJpYy1saXN0LWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZC1keW5hbWljLXRhYmxlLWNvbmZpZy1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgbWF0LWRpYWxvZy10aXRsZSBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCIgY2xhc3M9XCJwYWQgcHVzaC1ub25lXCIgY2RrRHJhZ0hhbmRsZSBpMThuPVwiQEB0YWJsZUNvbmZpZ3VyYXRpb25cIj5UYWJsZSBjb25maWd1cmF0aW9uPC9kaXY+XHJcbiAgICA8IS0tIDxmb3JtICpuZ0lmPVwiY29uZmlnRm9ybVwiIFtmb3JtR3JvdXBdPVwiY29uZmlnRm9ybVwiIGNsYXNzPVwicGFkXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJzdGlja3lcIj48L21hdC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRhYmxlIFdpZHRoPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YWJsZVdpZHRoXCIgLz5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT4gLS0+XHJcbiAgICA8dmQtZHluYW1pYy10YWJsZSBcclxuICAgICAgICBbZGF0YV09XCJjb2x1bW5zXCIgXHJcbiAgICAgICAgW2NsYXNzVHlwZV09XCJjbGFzc1R5cGVcIiBcclxuICAgICAgICBbZmlsdGVyYWJsZV09XCJ0cnVlXCIgXHJcbiAgICAgICAgW3VzZUZpbHRlck9wZXJhdG9yXT1cImZhbHNlXCIgXHJcbiAgICAgICAgW3BhZ2VTaXplXT1cIjEwXCIgXHJcbiAgICAgICAgW2NvbnRleHRdPVwidGhpc1wiPlxyXG4gICAgICAgIDxkaXYgdGFibGUtZm9vdGVyIGxheW91dC1wYWRkaW5nIGNsYXNzPVwicHVzaC14c1wiPlxyXG4gICAgICAgICAgICA8YSBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmUoKVwiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9hPlxyXG4gICAgICAgICAgICA8YSBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImFwcGx5KClcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9hPlxyXG4gICAgICAgICAgICA8YSBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCIgaTE4bj1cIkBAY2xvc2VcIj5DbG9zZTwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvdmQtZHluYW1pYy10YWJsZT5gLFxyXG4gICAgc3R5bGVzOiBbYC5tYXQtbWRjLWRpYWxvZy10aXRsZSB7IGN1cnNvcjogbW92ZTsgfWBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGFycmF5IG9mIGNvbHVtbnMgdG8gYmUgY29uZmlndXJlZCBpbiB0aGUgZHluYW1pYyB0YWJsZS5cclxuICAgICAqIFRoaXMgaXMgb2YgdHlwZSBUYWJsZUNvbHVtbkNvbmZpZywgd2hpY2ggaG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgZWFjaCBjb2x1bW4uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb2x1bW5zPzogVGFibGVDb2x1bW5Db25maWdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSByZWZlcmVuY2UgdG8gdGhlIFRhYmxlQ29sdW1uQ29uZmlnIGNsYXNzIGZvciB1c2UgaW4gdGhlIHRlbXBsYXRlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xhc3NUeXBlOiB0eXBlb2YgVGFibGVDb2x1bW5Db25maWcgPSBUYWJsZUNvbHVtbkNvbmZpZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gZ3JvdXAgdG8gbWFuYWdlIHRoZSB0YWJsZSBjb25maWd1cmF0aW9uIGZvcm0gY29udHJvbHMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25maWdGb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIHRoZSBkaWFsb2cgY29tcG9uZW50LlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gcm91dGUgLSBUaGUgYWN0aXZhdGVkIHJvdXRlIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXHJcbiAgICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgLSBTZXJ2aWNlIHRvIHJlcXVlc3QgY2hhbmdlIGRldGVjdGlvbiBmb3IgdGhlIGNvbXBvbmVudC5cclxuICAgICAqIEBwYXJhbSBkaWFsb2dSZWYgLSBSZWZlcmVuY2UgdG8gdGhlIGRpYWxvZyBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSBnZW5lcmljTGlzdCAtIFRoZSBnZW5lcmljIGxpc3QgY29tcG9uZW50IHRoYXQgY29udGFpbnMgdGhlIHRhYmxlIGRhdGEgYW5kIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICogQHBhcmFtIGZvcm1CdWlsZGVyIC0gU2VydmljZSB0byBidWlsZCByZWFjdGl2ZSBmb3Jtcy5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBnZW5lcmljTGlzdDogSUdlbmVyaWNMaXN0Q29tcG9uZW50PGFueT4sXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIgLyogSW5qZWN0IEZvcm1CdWlsZGVyICovXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICAgICAgICAvKiBJbml0aWFsaXplIHRoZSBmb3JtIGNvbnRyb2xzICovXHJcbiAgICAgICAgdGhpcy5jb25maWdGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIHN0aWNreTogW2ZhbHNlXSwgLyogRGVmYXVsdCB2YWx1ZSBmb3Igc3RpY2t5ICovXHJcbiAgICAgICAgICAgIHRhYmxlV2lkdGg6IFsnJ10gLyogRGVmYXVsdCB2YWx1ZSBmb3IgdGFibGUgd2lkdGggKi9cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLyogRmlsdGVyIGNvbHVtbnMgdGhhdCBhcmUgY29uZmlndXJhYmxlIGZyb20gdGhlIHByb3ZpZGVkIGR5bmFtaWMgdGFibGUgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGdlbmVyaWNMaXN0Py5keW5hbWljVGFibGU/LmNvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+IHguY29uZmlndXJhYmxlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNhdmVzIHRoZSBjdXJyZW50IGNvbHVtbiBjb25maWd1cmF0aW9uIGFuZCBjbG9zZXMgdGhlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNhdmUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hcHBseSgpOyAgLyogQXBwbHkgY2hhbmdlcyBiZWZvcmUgY2xvc2luZyAqL1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7IC8qIENsb3NlIHRoZSBkaWFsb2cgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFwcGxpZXMgdGhlIGN1cnJlbnQgY29sdW1uIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGdlbmVyaWMgbGlzdC5cclxuICAgICAqIE1hcHMgdGhlIGNvbHVtbiBkYXRhIHRvIGEgbmV3IGFycmF5IG9mIFRhYmxlQ29sdW1uQ29uZmlnIGluc3RhbmNlcyBcclxuICAgICAqIGFuZCBzYXZlcyB0aGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFwcGx5KCk6IHZvaWQge1xyXG4gICAgICAgIC8qIE1hcCB0aGUgY29uZmlnIGRhdGEgZnJvbSB0aGUgY29sdW1ucyAqL1xyXG4gICAgICAgIGxldCBjb25maWdzID0gdGhpcy5jb2x1bW5zPy5tYXAoeCA9PiBuZXcgVGFibGVDb2x1bW5Db25maWcoe1xyXG4gICAgICAgICAgICBuYW1lOiB4Lm5hbWUsXHJcbiAgICAgICAgICAgIGhlYWRlcjogeC5oZWFkZXIsXHJcbiAgICAgICAgICAgIGluZGV4OiB4LmluZGV4LFxyXG4gICAgICAgICAgICBkaXNwbGF5OiB4LmRpc3BsYXksXHJcbiAgICAgICAgICAgIHdpZHRoOiB4LndpZHRoLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogeC5tYXhXaWR0aCxcclxuICAgICAgICAgICAgbWluV2lkdGg6IHgubWluV2lkdGhcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIC8qIFNhdmUgdGhlIGNvbHVtbiBjb25maWd1cmF0aW9ucyB1c2luZyB0aGUgZ2VuZXJpYyBsaXN0IGNvbXBvbmVudCdzIG1ldGhvZCAqL1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY0xpc3Q/LnNhdmVDb25maWdzKGNvbmZpZ3MpO1xyXG5cclxuICAgICAgICAvKiBBbHNvIHNhdmUgc3RpY2t5IGFuZCB0YWJsZVdpZHRoIHZhbHVlcyBpZiBuZWVkZWQgKi9cclxuICAgICAgICBjb25zdCBzdGlja3kgPSB0aGlzLmNvbmZpZ0Zvcm0uZ2V0KCdzdGlja3knKT8udmFsdWU7XHJcbiAgICAgICAgY29uc3QgdGFibGVXaWR0aCA9IHRoaXMuY29uZmlnRm9ybS5nZXQoJ3RhYmxlV2lkdGgnKT8udmFsdWU7XHJcblxyXG4gICAgICAgIC8qIEhlcmUgeW91IGNhbiBpbXBsZW1lbnQgbG9naWMgdG8gaGFuZGxlIHN0aWNreSBhbmQgdGFibGVXaWR0aCB2YWx1ZXMgKi9cclxuICAgICAgICBjb25zb2xlLmxvZygnU3RpY2t5OicsIHN0aWNreSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1RhYmxlIFdpZHRoOicsIHRhYmxlV2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJpZ2dlcnMgYW4gdXBkYXRlIG9mIHRoZSBjb2x1bW5zIGluIHRoZSBnZW5lcmljIGxpc3QgY29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlQ29sdW1ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdlbmVyaWNMaXN0Py51cGRhdGVDb2x1bW5zKCk7XHJcbiAgICB9XHJcbn0iXX0=