@acorex/modules 18.0.15 → 18.0.16

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 (94) hide show
  1. package/application-management/index.d.ts +9 -7
  2. package/application-management/lib/application-management.module.d.ts +11 -2
  3. package/application-management/lib/application-management.service.d.ts +2 -0
  4. package/application-management/lib/entities/property.entity.d.ts +3 -0
  5. package/application-management/lib/module-designer/module-designer.component.d.ts +18 -0
  6. package/application-management/lib/module-designer/module-designer.service.d.ts +34 -0
  7. package/auth/lib/error-handler.d.ts +1 -1
  8. package/backend/lib/data/api/comment.service.d.ts +15 -0
  9. package/backend/lib/data/api/module-designer.service.d.ts +43 -0
  10. package/backend/lib/data/index.d.ts +2 -1
  11. package/backend/lib/data/local/local-data-provider.d.ts +1 -2
  12. package/esm2022/application-management/index.mjs +10 -8
  13. package/esm2022/application-management/lib/application-management.module.mjs +56 -7
  14. package/esm2022/application-management/lib/application-management.service.mjs +8 -2
  15. package/esm2022/application-management/lib/entities/application-module.entity.mjs +273 -0
  16. package/esm2022/application-management/lib/entities/applications.entity.mjs +311 -0
  17. package/esm2022/application-management/lib/entities/edition.entity.mjs +284 -0
  18. package/esm2022/application-management/lib/entities/entity.entity.mjs +284 -0
  19. package/esm2022/application-management/lib/entities/feature.entity.mjs +284 -0
  20. package/esm2022/application-management/lib/entities/modules.entity.mjs +324 -0
  21. package/esm2022/application-management/lib/entities/permission.entity.mjs +284 -0
  22. package/esm2022/application-management/lib/entities/property.entity.mjs +449 -0
  23. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +91 -0
  24. package/esm2022/application-management/lib/module-designer/module-designer.service.mjs +3 -0
  25. package/esm2022/auth/lib/error-handler.mjs +6 -6
  26. package/esm2022/backend/lib/backend.module.mjs +23 -5
  27. package/esm2022/backend/lib/data/api/comment.service.mjs +48 -0
  28. package/esm2022/backend/lib/data/api/data-provider.mjs +2 -2
  29. package/esm2022/backend/lib/data/api/module-designer.service.mjs +95 -0
  30. package/esm2022/backend/lib/data/index.mjs +3 -2
  31. package/esm2022/backend/lib/data/local/local-data-provider.mjs +2 -2
  32. package/esm2022/form-management/acorex-modules-form-management.mjs +5 -0
  33. package/esm2022/form-management/index.mjs +2 -0
  34. package/esm2022/form-management/lib/designer/designer.page.mjs +24 -0
  35. package/esm2022/form-management/lib/form-management.module.mjs +29 -0
  36. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs +100 -0
  37. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs.map +1 -0
  38. package/fesm2022/acorex-modules-application-management.mjs +539 -16
  39. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  40. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BD7I4S8c.mjs → acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs} +12 -12
  41. package/fesm2022/acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs.map +1 -0
  42. package/fesm2022/{acorex-modules-auth-app-chooser.component-Cfl1D1Cw.mjs → acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-auth-app-chooser.component-Cfl1D1Cw.mjs.map → acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-login.module-BQG4ObmU.mjs → acorex-modules-auth-login.module-CGA5aTg2.mjs} +5 -5
  45. package/fesm2022/{acorex-modules-auth-login.module-BQG4ObmU.mjs.map → acorex-modules-auth-login.module-CGA5aTg2.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-master.layout-DoPCP7C0.mjs → acorex-modules-auth-master.layout-ZJWzjLrb.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-auth-master.layout-DoPCP7C0.mjs.map → acorex-modules-auth-master.layout-ZJWzjLrb.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-auth-password.component-fyMD7oKR.mjs → acorex-modules-auth-password.component-C4yqf342.mjs} +3 -3
  49. package/fesm2022/{acorex-modules-auth-password.component-fyMD7oKR.mjs.map → acorex-modules-auth-password.component-C4yqf342.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-auth-password.component-CfhiS2hO.mjs → acorex-modules-auth-password.component-MJhNk3UI.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-auth-password.component-CfhiS2hO.mjs.map → acorex-modules-auth-password.component-MJhNk3UI.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-auth-routes-95DQOnjS.mjs → acorex-modules-auth-routes-DhORV1Js.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-auth-routes-95DQOnjS.mjs.map → acorex-modules-auth-routes-DhORV1Js.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-auth-two-factor.module-BkErlA-n.mjs → acorex-modules-auth-two-factor.module-BWKP0_jO.mjs} +3 -3
  55. package/fesm2022/{acorex-modules-auth-two-factor.module-BkErlA-n.mjs.map → acorex-modules-auth-two-factor.module-BWKP0_jO.mjs.map} +1 -1
  56. package/fesm2022/acorex-modules-auth.mjs +4 -4
  57. package/fesm2022/acorex-modules-backend.mjs +154 -137
  58. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  59. package/fesm2022/acorex-modules-form-management-designer.page-SoPH2V7i.mjs +27 -0
  60. package/fesm2022/acorex-modules-form-management-designer.page-SoPH2V7i.mjs.map +1 -0
  61. package/fesm2022/acorex-modules-form-management.mjs +36 -0
  62. package/fesm2022/acorex-modules-form-management.mjs.map +1 -0
  63. package/form-management/README.md +4 -0
  64. package/form-management/index.d.ts +1 -0
  65. package/form-management/lib/designer/designer.page.d.ts +5 -0
  66. package/form-management/lib/form-management.module.d.ts +7 -0
  67. package/package.json +7 -7
  68. package/backend/lib/data/local/data-Conditioner.d.ts +0 -6
  69. package/esm2022/application-management/lib/application-module.entity.mjs +0 -273
  70. package/esm2022/application-management/lib/applications.entity.mjs +0 -311
  71. package/esm2022/application-management/lib/edition.entity.mjs +0 -284
  72. package/esm2022/application-management/lib/entity.entity.mjs +0 -284
  73. package/esm2022/application-management/lib/feature.entity.mjs +0 -284
  74. package/esm2022/application-management/lib/modules.entity.mjs +0 -324
  75. package/esm2022/application-management/lib/permission.entity.mjs +0 -284
  76. package/esm2022/backend/lib/data/local/data-Conditioner.mjs +0 -138
  77. package/esm2022/log-management/acorex-modules-log-management.mjs +0 -5
  78. package/esm2022/log-management/index.mjs +0 -3
  79. package/esm2022/log-management/lib/audit-logs.entity.mjs +0 -391
  80. package/esm2022/log-management/lib/log-management.module.mjs +0 -16
  81. package/fesm2022/acorex-modules-auth-acorex-modules-auth-BD7I4S8c.mjs.map +0 -1
  82. package/fesm2022/acorex-modules-log-management.mjs +0 -414
  83. package/fesm2022/acorex-modules-log-management.mjs.map +0 -1
  84. package/log-management/README.md +0 -4
  85. package/log-management/index.d.ts +0 -2
  86. package/log-management/lib/audit-logs.entity.d.ts +0 -3
  87. package/log-management/lib/log-management.module.d.ts +0 -6
  88. /package/application-management/lib/{application-module.entity.d.ts → entities/application-module.entity.d.ts} +0 -0
  89. /package/application-management/lib/{applications.entity.d.ts → entities/applications.entity.d.ts} +0 -0
  90. /package/application-management/lib/{edition.entity.d.ts → entities/edition.entity.d.ts} +0 -0
  91. /package/application-management/lib/{entity.entity.d.ts → entities/entity.entity.d.ts} +0 -0
  92. /package/application-management/lib/{feature.entity.d.ts → entities/feature.entity.d.ts} +0 -0
  93. /package/application-management/lib/{modules.entity.d.ts → entities/modules.entity.d.ts} +0 -0
  94. /package/application-management/lib/{permission.entity.d.ts → entities/permission.entity.d.ts} +0 -0
@@ -0,0 +1,273 @@
1
+ import { AXPDataGenerator, AXPEntityCommandScope, AXPEntityQueryType } from '@acorex/platform/common';
2
+ import { applyFilterArray, applySortArray } from '@acorex/platform/core';
3
+ import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
4
+ import { AXPApplicationManagementService } from '../application-management.service';
5
+ export async function applicationModuleEntityFactory(injector) {
6
+ const dataService = injector.get(AXPApplicationManagementService);
7
+ const entityDef = {
8
+ module: 'application-management',
9
+ name: 'application-module',
10
+ source: 'application-management.application-module',
11
+ title: 'Modules',
12
+ formats: {
13
+ individual: 'Application Module',
14
+ plural: 'Application Module',
15
+ },
16
+ relatedEntities: [],
17
+ groups: [
18
+ {
19
+ id: 'application-module',
20
+ title: 'Application Module',
21
+ },
22
+ ],
23
+ properties: [
24
+ {
25
+ name: 'application.title',
26
+ title: 'Application Title',
27
+ groupId: 'application-module',
28
+ schema: {
29
+ dataType: 'text',
30
+ interface: {
31
+ type: AXPWidgetsCatalog.text,
32
+ },
33
+ },
34
+ },
35
+ {
36
+ name: 'module.title',
37
+ title: 'Module Title',
38
+ groupId: 'application-module',
39
+ schema: {
40
+ dataType: 'text',
41
+ interface: {
42
+ type: AXPWidgetsCatalog.text,
43
+ },
44
+ },
45
+ },
46
+ ],
47
+ columns: [{ name: 'application.title' }, { name: 'module.title' }, { name: 'isArchived' }],
48
+ commands: {
49
+ create: {
50
+ execute: async (data) => {
51
+ const entity = Object.assign(data, { id: AXPDataGenerator.uuid() });
52
+ dataService.applicationModuleDataProvider.insertOne(entity);
53
+ return Promise.resolve(entity);
54
+ },
55
+ },
56
+ delete: {
57
+ execute: async (id) => {
58
+ await await dataService.applicationModuleDataProvider.deleteOne(id);
59
+ return Promise.resolve();
60
+ },
61
+ },
62
+ update: {
63
+ execute: async (data) => {
64
+ return new Promise((resolve) => {
65
+ setTimeout(async () => {
66
+ await dataService.applicationModuleDataProvider.updateOne(data.id, data);
67
+ resolve(data);
68
+ }, 1000);
69
+ });
70
+ },
71
+ },
72
+ },
73
+ queries: {
74
+ byKey: {
75
+ execute: async (id) => {
76
+ return new Promise((resolve) => {
77
+ setTimeout(async () => {
78
+ const entity = await dataService.applicationModuleDataProvider.getOne(id);
79
+ resolve(entity);
80
+ }, 500);
81
+ });
82
+ },
83
+ type: AXPEntityQueryType.Single,
84
+ },
85
+ list: {
86
+ execute: async (e) => {
87
+ const list = await dataService.applicationModuleDataProvider.getAll();
88
+ const sortedItems = applySortArray(list, e.sort);
89
+ const filteredItems = applyFilterArray(sortedItems, e.filter ? [e.filter] : []);
90
+ return Promise.resolve({
91
+ total: filteredItems.length,
92
+ items: filteredItems.slice(e.skip, (e.skip ?? 0) + (e.take ?? 0)),
93
+ });
94
+ },
95
+ type: AXPEntityQueryType.List,
96
+ },
97
+ },
98
+ interfaces: {
99
+ master: {
100
+ create: {
101
+ sections: [
102
+ {
103
+ id: 'application',
104
+ },
105
+ ],
106
+ properties: [
107
+ {
108
+ name: 'name',
109
+ layout: {
110
+ positions: {
111
+ lg: {
112
+ colSpan: 6,
113
+ },
114
+ },
115
+ },
116
+ },
117
+ {
118
+ name: 'title',
119
+ layout: {
120
+ positions: {
121
+ lg: {
122
+ colSpan: 6,
123
+ },
124
+ },
125
+ },
126
+ },
127
+ {
128
+ name: 'isArchived',
129
+ layout: {
130
+ positions: {
131
+ lg: {
132
+ colSpan: 12,
133
+ },
134
+ },
135
+ },
136
+ },
137
+ ],
138
+ },
139
+ update: {
140
+ sections: [
141
+ {
142
+ id: 'application',
143
+ },
144
+ ],
145
+ properties: [
146
+ {
147
+ name: 'name',
148
+ layout: {
149
+ positions: {
150
+ lg: {
151
+ colSpan: 6,
152
+ },
153
+ },
154
+ },
155
+ },
156
+ {
157
+ name: 'title',
158
+ layout: {
159
+ positions: {
160
+ lg: {
161
+ colSpan: 6,
162
+ },
163
+ },
164
+ },
165
+ },
166
+ {
167
+ name: 'isArchived',
168
+ layout: {
169
+ positions: {
170
+ lg: {
171
+ colSpan: 12,
172
+ },
173
+ },
174
+ },
175
+ },
176
+ ],
177
+ },
178
+ single: {
179
+ title: '{{title}}',
180
+ sections: [
181
+ {
182
+ id: 'application',
183
+ layout: {
184
+ positions: {
185
+ lg: {
186
+ colSpan: 12,
187
+ },
188
+ },
189
+ },
190
+ },
191
+ ],
192
+ properties: [
193
+ {
194
+ name: 'name',
195
+ layout: {
196
+ positions: {
197
+ lg: {
198
+ colSpan: 6,
199
+ },
200
+ },
201
+ },
202
+ },
203
+ {
204
+ name: 'title',
205
+ layout: {
206
+ positions: {
207
+ lg: {
208
+ colSpan: 6,
209
+ },
210
+ },
211
+ },
212
+ },
213
+ {
214
+ name: 'isArchived',
215
+ layout: {
216
+ positions: {
217
+ lg: {
218
+ colSpan: 12,
219
+ },
220
+ },
221
+ },
222
+ },
223
+ ],
224
+ actions: [],
225
+ },
226
+ list: {
227
+ actions: [
228
+ {
229
+ title: 'Create New',
230
+ command: 'create-entity',
231
+ priority: 'primary',
232
+ type: 'create',
233
+ scope: AXPEntityCommandScope.TypeLevel,
234
+ },
235
+ {
236
+ title: 'Delete Items',
237
+ command: 'delete-entity',
238
+ priority: 'primary',
239
+ type: 'delete',
240
+ scope: AXPEntityCommandScope.Selected,
241
+ },
242
+ {
243
+ title: 'Details',
244
+ command: 'open-entity',
245
+ priority: 'primary',
246
+ type: 'view',
247
+ scope: AXPEntityCommandScope.Individual,
248
+ },
249
+ {
250
+ title: 'Delete',
251
+ command: 'delete-entity',
252
+ priority: 'primary',
253
+ type: 'delete',
254
+ scope: AXPEntityCommandScope.Individual,
255
+ },
256
+ ],
257
+ views: [
258
+ {
259
+ name: 'all',
260
+ title: 'All Items',
261
+ fixed: true,
262
+ columns: [],
263
+ conditions: [],
264
+ sorts: [],
265
+ },
266
+ ],
267
+ },
268
+ },
269
+ },
270
+ };
271
+ return entityDef;
272
+ }
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbW9kdWxlLmVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvYXBwbGljYXRpb24tbW9kdWxlLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEYsTUFBTSxDQUFDLEtBQUssVUFBVSw4QkFBOEIsQ0FBQyxRQUFrQjtJQUNyRSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFFbEUsTUFBTSxTQUFTLEdBQWM7UUFDM0IsTUFBTSxFQUFFLHdCQUF3QjtRQUNoQyxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLE1BQU0sRUFBRSwyQ0FBMkM7UUFDbkQsS0FBSyxFQUFFLFNBQVM7UUFDaEIsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxNQUFNLEVBQUUsb0JBQW9CO1NBQzdCO1FBQ0QsZUFBZSxFQUFFLEVBQUU7UUFDbkIsTUFBTSxFQUFFO1lBQ047Z0JBQ0UsRUFBRSxFQUFFLG9CQUFvQjtnQkFDeEIsS0FBSyxFQUFFLG9CQUFvQjthQUM1QjtTQUNGO1FBQ0QsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsT0FBTyxFQUFFLG9CQUFvQjtnQkFDN0IsTUFB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b3IsIEFYUEVudGl0eSwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBFbnRpdHlRdWVyeVR5cGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBhcHBseUZpbHRlckFycmF5LCBhcHBseVNvcnRBcnJheSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEFwcGxpY2F0aW9uTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbGljYXRpb25Nb2R1bGVFbnRpdHlGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWFBBcHBsaWNhdGlvbk1hbmFnZW1lbnRTZXJ2aWNlKTtcblxuICBjb25zdCBlbnRpdHlEZWY6IEFYUEVudGl0eSA9IHtcbiAgICBtb2R1bGU6ICdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50JyxcbiAgICBuYW1lOiAnYXBwbGljYXRpb24tbW9kdWxlJyxcbiAgICBzb3VyY2U6ICdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LmFwcGxpY2F0aW9uLW1vZHVsZScsXG4gICAgdGl0bGU6ICdNb2R1bGVzJyxcbiAgICBmb3JtYXRzOiB7XG4gICAgICBpbmRpdmlkdWFsOiAnQXBwbGljYXRpb24gTW9kdWxlJyxcbiAgICAgIHBsdXJhbDogJ0FwcGxpY2F0aW9uIE1vZHVsZScsXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ2FwcGxpY2F0aW9uLW1vZHVsZScsXG4gICAgICAgIHRpdGxlOiAnQXBwbGljYXRpb24gTW9kdWxlJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhcHBsaWNhdGlvbi50aXRsZScsXG4gICAgICAgIHRpdGxlOiAnQXBwbGljYXRpb24gVGl0bGUnLFxuICAgICAgICBncm91cElkOiAnYXBwbGljYXRpb24tbW9kdWxlJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtb2R1bGUudGl0bGUnLFxuICAgICAgICB0aXRsZTogJ01vZHVsZSBUaXRsZScsXG4gICAgICAgIGdyb3VwSWQ6ICdhcHBsaWNhdGlvbi1tb2R1bGUnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3RleHQnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNvbHVtbnM6IFt7IG5hbWU6ICdhcHBsaWNhdGlvbi50aXRsZScgfSwgeyBuYW1lOiAnbW9kdWxlLnRpdGxlJyB9LCB7IG5hbWU6ICdpc0FyY2hpdmVkJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBlbnRpdHkgPSBPYmplY3QuYXNzaWduKGRhdGEsIHsgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpIH0pO1xuICAgICAgICAgIGRhdGFTZXJ2aWNlLmFwcGxpY2F0aW9uTW9kdWxlRGF0YVByb3ZpZGVyLmluc2VydE9uZShlbnRpdHkpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZWxldGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGlkOiBhbnkpID0+IHtcbiAgICAgICAgICBhd2FpdCBhd2FpdCBkYXRhU2VydmljZS5hcHBsaWNhdGlvbk1vZHVsZURhdGFQcm92aWRlci5kZWxldGVPbmUoaWQpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IGRhdGFTZXJ2aWNlLmFwcGxpY2F0aW9uTW9kdWxlRGF0YVByb3ZpZGVyLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZW50aXR5ID0gYXdhaXQgZGF0YVNlcnZpY2UuYXBwbGljYXRpb25Nb2R1bGVEYXRhUHJvdmlkZXIuZ2V0T25lKGlkKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShlbnRpdHkpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLlNpbmdsZSxcbiAgICAgIH0sXG4gICAgICBsaXN0OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgZGF0YVNlcnZpY2UuYXBwbGljYXRpb25Nb2R1bGVEYXRhUHJvdmlkZXIuZ2V0QWxsKCk7XG4gICAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSBhcHBseVNvcnRBcnJheShsaXN0LCBlLnNvcnQpO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBhcHBseUZpbHRlckFycmF5KHNvcnRlZEl0ZW1zLCBlLmZpbHRlciA/IFtlLmZpbHRlcl0gOiBbXSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0b3RhbDogZmlsdGVyZWRJdGVtcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtczogZmlsdGVyZWRJdGVtcy5zbGljZShlLnNraXAsIChlLnNraXAgPz8gMCkgKyAoZS50YWtlID8/IDApKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLkxpc3QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnaXNBcmNoaXZlZCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnaXNBcmNoaXZlZCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2lzQXJjaGl2ZWQnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFjdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ0NyZWF0ZSBOZXcnLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnRGVsZXRlIEl0ZW1zJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnRGV0YWlscycsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdvcGVuLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUnLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2FsbCcsXG4gICAgICAgICAgICAgIHRpdGxlOiAnQWxsIEl0ZW1zJyxcbiAgICAgICAgICAgICAgZml4ZWQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IFtdLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiBbXSxcbiAgICAgICAgICAgICAgc29ydHM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbnRpdHlEZWY7XG59XG4iXX0=
@@ -0,0 +1,311 @@
1
+ import { AXPDataGenerator, AXPEntityCommandScope, AXPEntityQueryType } from '@acorex/platform/common';
2
+ import { applyFilterArray, applySortArray } from '@acorex/platform/core';
3
+ import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
4
+ import { AXPApplicationManagementService } from '../application-management.service';
5
+ export async function applicationEntityFactory(injector) {
6
+ const dataService = injector.get(AXPApplicationManagementService);
7
+ const applicationEntityDef = {
8
+ module: 'application-management',
9
+ name: 'application',
10
+ source: 'application-management.application',
11
+ title: 'Application',
12
+ formats: {
13
+ individual: 'Application',
14
+ plural: 'Application',
15
+ },
16
+ relatedEntities: [
17
+ {
18
+ entity: 'application-management.application-module',
19
+ columns: ['application.title', 'module.title'],
20
+ conditions: [
21
+ {
22
+ name: 'application.id',
23
+ operator: {
24
+ type: 'equal',
25
+ },
26
+ value: 'id',
27
+ },
28
+ ],
29
+ },
30
+ {
31
+ entity: 'application-management.edition',
32
+ columns: ['name', 'title', 'isArchived'],
33
+ conditions: [
34
+ {
35
+ name: 'application.id',
36
+ operator: {
37
+ type: 'equal',
38
+ },
39
+ value: 'id',
40
+ },
41
+ ],
42
+ },
43
+ ],
44
+ groups: [
45
+ {
46
+ id: 'application',
47
+ title: 'Application',
48
+ },
49
+ ],
50
+ properties: [
51
+ {
52
+ name: 'name',
53
+ title: 'Name',
54
+ groupId: 'application',
55
+ schema: {
56
+ dataType: 'string',
57
+ interface: {
58
+ type: AXPWidgetsCatalog.text,
59
+ },
60
+ },
61
+ },
62
+ {
63
+ name: 'title',
64
+ title: 'Title',
65
+ groupId: 'application',
66
+ schema: {
67
+ dataType: 'string',
68
+ interface: {
69
+ type: AXPWidgetsCatalog.text,
70
+ },
71
+ },
72
+ },
73
+ {
74
+ name: 'isArchived',
75
+ title: 'Archived',
76
+ groupId: 'application',
77
+ schema: {
78
+ dataType: 'boolean',
79
+ interface: {
80
+ type: AXPWidgetsCatalog.toggle,
81
+ },
82
+ },
83
+ },
84
+ ],
85
+ columns: [{ name: 'name' }, { name: 'title' }, { name: 'isArchived' }],
86
+ commands: {
87
+ create: {
88
+ execute: async (data) => {
89
+ const entity = Object.assign(data, { id: AXPDataGenerator.uuid() });
90
+ dataService.applicationDataProvider.insertOne(entity);
91
+ return Promise.resolve(entity);
92
+ },
93
+ },
94
+ delete: {
95
+ execute: async (id) => {
96
+ await await dataService.applicationDataProvider.deleteOne(id);
97
+ return Promise.resolve();
98
+ },
99
+ },
100
+ update: {
101
+ execute: async (data) => {
102
+ return new Promise((resolve) => {
103
+ setTimeout(async () => {
104
+ await dataService.applicationDataProvider.updateOne(data.id, data);
105
+ resolve(data);
106
+ }, 1000);
107
+ });
108
+ },
109
+ },
110
+ },
111
+ queries: {
112
+ byKey: {
113
+ execute: async (id) => {
114
+ return new Promise((resolve) => {
115
+ setTimeout(async () => {
116
+ const entity = await dataService.applicationDataProvider.getOne(id);
117
+ resolve(entity);
118
+ }, 500);
119
+ });
120
+ },
121
+ type: AXPEntityQueryType.Single,
122
+ },
123
+ list: {
124
+ execute: async (e) => {
125
+ const list = await dataService.applicationDataProvider.getAll();
126
+ const sortedItems = applySortArray(list, e.sort);
127
+ const filteredItems = applyFilterArray(sortedItems, e.filter ? [e.filter] : []);
128
+ return Promise.resolve({
129
+ total: filteredItems.length,
130
+ items: filteredItems.slice(e.skip, (e.skip ?? 0) + (e.take ?? 0)),
131
+ });
132
+ },
133
+ type: AXPEntityQueryType.List,
134
+ },
135
+ },
136
+ interfaces: {
137
+ master: {
138
+ create: {
139
+ sections: [
140
+ {
141
+ id: 'application',
142
+ },
143
+ ],
144
+ properties: [
145
+ {
146
+ name: 'name',
147
+ layout: {
148
+ positions: {
149
+ lg: {
150
+ colSpan: 6,
151
+ },
152
+ },
153
+ },
154
+ },
155
+ {
156
+ name: 'title',
157
+ layout: {
158
+ positions: {
159
+ lg: {
160
+ colSpan: 6,
161
+ },
162
+ },
163
+ },
164
+ },
165
+ {
166
+ name: 'isArchived',
167
+ layout: {
168
+ positions: {
169
+ lg: {
170
+ colSpan: 12,
171
+ },
172
+ },
173
+ },
174
+ },
175
+ ],
176
+ },
177
+ update: {
178
+ sections: [
179
+ {
180
+ id: 'application',
181
+ },
182
+ ],
183
+ properties: [
184
+ {
185
+ name: 'name',
186
+ layout: {
187
+ positions: {
188
+ lg: {
189
+ colSpan: 6,
190
+ },
191
+ },
192
+ },
193
+ },
194
+ {
195
+ name: 'title',
196
+ layout: {
197
+ positions: {
198
+ lg: {
199
+ colSpan: 6,
200
+ },
201
+ },
202
+ },
203
+ },
204
+ {
205
+ name: 'isArchived',
206
+ layout: {
207
+ positions: {
208
+ lg: {
209
+ colSpan: 12,
210
+ },
211
+ },
212
+ },
213
+ },
214
+ ],
215
+ },
216
+ single: {
217
+ title: '{{title}}',
218
+ sections: [
219
+ {
220
+ id: 'application',
221
+ layout: {
222
+ positions: {
223
+ lg: {
224
+ colSpan: 12,
225
+ },
226
+ },
227
+ },
228
+ },
229
+ ],
230
+ properties: [
231
+ {
232
+ name: 'name',
233
+ layout: {
234
+ positions: {
235
+ lg: {
236
+ colSpan: 6,
237
+ },
238
+ },
239
+ },
240
+ },
241
+ {
242
+ name: 'title',
243
+ layout: {
244
+ positions: {
245
+ lg: {
246
+ colSpan: 6,
247
+ },
248
+ },
249
+ },
250
+ },
251
+ {
252
+ name: 'isArchived',
253
+ layout: {
254
+ positions: {
255
+ lg: {
256
+ colSpan: 12,
257
+ },
258
+ },
259
+ },
260
+ },
261
+ ],
262
+ actions: [],
263
+ },
264
+ list: {
265
+ actions: [
266
+ {
267
+ title: 'Create New',
268
+ command: 'create-entity',
269
+ priority: 'primary',
270
+ type: 'create',
271
+ scope: AXPEntityCommandScope.TypeLevel,
272
+ },
273
+ {
274
+ title: 'Delete Items',
275
+ command: 'delete-entity',
276
+ priority: 'primary',
277
+ type: 'delete',
278
+ scope: AXPEntityCommandScope.Selected,
279
+ },
280
+ {
281
+ title: 'Details',
282
+ command: 'open-entity',
283
+ priority: 'primary',
284
+ type: 'view',
285
+ scope: AXPEntityCommandScope.Individual,
286
+ },
287
+ {
288
+ title: 'Delete',
289
+ command: 'delete-entity',
290
+ priority: 'primary',
291
+ type: 'delete',
292
+ scope: AXPEntityCommandScope.Individual,
293
+ },
294
+ ],
295
+ views: [
296
+ {
297
+ name: 'all',
298
+ title: 'All Items',
299
+ fixed: true,
300
+ columns: [],
301
+ conditions: [],
302
+ sorts: [],
303
+ },
304
+ ],
305
+ },
306
+ },
307
+ },
308
+ };
309
+ return applicationEntityDef;
310
+ }
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLmVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvYXBwbGljYXRpb25zLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEYsTUFBTSxDQUFDLEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxRQUFrQjtJQUMvRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFFbEUsTUFBTSxvQkFBb0IsR0FBYztRQUN0QyxNQUFNLEVBQUUsd0JBQXdCO1FBQ2hDLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRSxvQ0FBb0M7UUFDNUMsS0FBSyxFQUFFLGFBQWE7UUFDcEIsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLGFBQWE7WUFDekIsTUFBTSxFQUFFLGFBQWE7U0FDdEI7UUFDRCxlQUFlLEVBQUU7WUFDZjtnQkFDRSxNQUFNLEVBQUUsMkNBQTJDO2dCQUNuRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUM7Z0JBQzlDLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixRQUFRLEVBQUU7NEJBQ1IsSUFBSSxFQUFFLE9BQU87eUJBQ2Q7d0JBQ0QsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLE1BQU0sRUFBRSxnQ0FBZ0M7Z0JBQ3hDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDO2dCQUN4QyxVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsUUFBUSxFQUFFOzRCQUNSLElBQUksRUFBRSxPQUFPO3lCQUNkO3dCQUNELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLEVBQUUsRUFBRSxhQUFhO2dCQUNqQixLQUFLLEVBQUUsYUFBYTthQUNyQjtTQUNGO1FBQ0QsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3FCQUM3QjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3FCQUM3QjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxVQUFVO2dCQUNqQixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxTQUFTO29CQUNuQixTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07cUJBQy9CO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQ3RFLFFBQVEsRUFBRTtZQUNSLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQVMsRUFBRSxFQUFFO29CQUMzQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBRXBFLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3RELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakMsQ0FBQzthQUNGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBTyxFQUFFLEVBQUU7b0JBQ3pCLE1BQU0sTUFBTSxXQUFXLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM5RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQzthQUNGO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7b0JBQzNCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTt3QkFDN0IsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUNwQixNQUFNLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQzthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQUU7WUFDUCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFVLEVBQUUsRUFBRTtvQkFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUM3QixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7NEJBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNsQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ1YsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLEVBQUUsa0JBQWtCLENBQUMsTUFBTTthQUNoQztZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFO29CQUN4QixNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEUsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2hGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQzt3QkFDckIsS0FBSyxFQUFFLGFBQWEsQ0FBQyxNQUFNO3dCQUMzQixLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ2xFLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJO2FBQzlCO1NBQ0Y7UUFDRCxVQUFVLEVBQUU7WUFDVixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxFQUFFLEVBQUUsYUFBYTt5QkFDbEI7cUJBQ0Y7b0JBQ0QsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLElBQUksRUFBRSxNQUFNOzRCQUNaLE1BQU0sRUFBRTtnQ0FDTixTQUFTLEVBQUU7b0NBQ1QsRUFBRSxFQUFFO3dDQUNGLE9BQU8sRUFBRSxDQUFDO3FDQUNYO2lDQUNGOzZCQUNGO3lCQUNGO3dCQUNEOzRCQUNFLElBQUksRUFBRSxPQUFPOzRCQUNiLE1BQU0sRUFBRTtnQ0FDTixTQUFTLEVBQUU7b0NBQ1QsRUFBRSxFQUFFO3dDQUNGLE9BQU8sRUFBRSxDQUFDO3FDQUNYO2lDQUNGOzZCQUNGO3lCQUNGO3dCQUNEOzRCQUNFLElBQUksRUFBRSxZQUFZOzRCQUNsQixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFO3dCQUNSOzRCQUNFLEVBQUUsRUFBRSxhQUFhO3lCQUNsQjtxQkFDRjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLE9BQU87NEJBQ2IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLE1BQU0sRUFBRTtnQ0FDTixTQUFTLEVBQUU7b0NBQ1QsRUFBRSxFQUFFO3dDQUNGLE9BQU8sRUFBRSxFQUFFO3FDQUNaO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsV0FBVztvQkFDbEIsUUFBUSxFQUFFO3dCQUNSOzRCQUNFLEVBQUUsRUFBRSxhQUFhOzRCQUNqQixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLE9BQU87NEJBQ2IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLE1BQU0sRUFBRTtnQ0FDTixTQUFTLEVBQUU7b0NBQ1QsRUFBRSxFQUFFO3dDQUNGLE9BQU8sRUFBRSxFQUFFO3FDQUNaO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO29CQUNELE9BQU8sRUFBRSxFQUFFO2lCQUNaO2dCQUNELElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsS0FBSyxFQUFFLFlBQVk7NEJBQ25CLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsU0FBUzs0QkFDbkIsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLHFCQUFxQixDQUFDLFNBQVM7eUJBQ3ZDO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxjQUFjOzRCQUNyQixPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFNBQVM7NEJBQ25CLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxRQUFRO3lCQUN0Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsU0FBUzs0QkFDaEIsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFFBQVEsRUFBRSxTQUFTOzRCQUNuQixJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLFFBQVE7NEJBQ2YsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxTQUFTOzRCQUNuQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMOzRCQUNFLElBQUksRUFBRSxLQUFLOzRCQUNYLEtBQUssRUFBRSxXQUFXOzRCQUNsQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxPQUFPLEVBQUUsRUFBRTs0QkFDWCxVQUFVLEVBQUUsRUFBRTs0QkFDZCxLQUFLLEVBQUUsRUFBRTt5QkFDVjtxQkFDRjtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRGF0YUdlbmVyYXRvciwgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IGFwcGx5RmlsdGVyQXJyYXksIGFwcGx5U29ydEFycmF5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQXBwbGljYXRpb25NYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQuc2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBsaWNhdGlvbkVudGl0eUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFYUEFwcGxpY2F0aW9uTWFuYWdlbWVudFNlcnZpY2UpO1xuXG4gIGNvbnN0IGFwcGxpY2F0aW9uRW50aXR5RGVmOiBBWFBFbnRpdHkgPSB7XG4gICAgbW9kdWxlOiAnYXBwbGljYXRpb24tbWFuYWdlbWVudCcsXG4gICAgbmFtZTogJ2FwcGxpY2F0aW9uJyxcbiAgICBzb3VyY2U6ICdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LmFwcGxpY2F0aW9uJyxcbiAgICB0aXRsZTogJ0FwcGxpY2F0aW9uJyxcbiAgICBmb3JtYXRzOiB7XG4gICAgICBpbmRpdmlkdWFsOiAnQXBwbGljYXRpb24nLFxuICAgICAgcGx1cmFsOiAnQXBwbGljYXRpb24nLFxuICAgIH0sXG4gICAgcmVsYXRlZEVudGl0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIGVudGl0eTogJ2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQuYXBwbGljYXRpb24tbW9kdWxlJyxcbiAgICAgICAgY29sdW1uczogWydhcHBsaWNhdGlvbi50aXRsZScsICdtb2R1bGUudGl0bGUnXSxcbiAgICAgICAgY29uZGl0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdhcHBsaWNhdGlvbi5pZCcsXG4gICAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgICB0eXBlOiAnZXF1YWwnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiAnaWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbnRpdHk6ICdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LmVkaXRpb24nLFxuICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAndGl0bGUnLCAnaXNBcmNoaXZlZCddLFxuICAgICAgICBjb25kaXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2FwcGxpY2F0aW9uLmlkJyxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcXVhbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFsdWU6ICdpZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBncm91cHM6IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIHRpdGxlOiAnQXBwbGljYXRpb24nLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICB0aXRsZTogJ05hbWUnLFxuICAgICAgICBncm91cElkOiAnYXBwbGljYXRpb24nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogJ1RpdGxlJyxcbiAgICAgICAgZ3JvdXBJZDogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2lzQXJjaGl2ZWQnLFxuICAgICAgICB0aXRsZTogJ0FyY2hpdmVkJyxcbiAgICAgICAgZ3JvdXBJZDogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNvbHVtbnM6IFt7IG5hbWU6ICduYW1lJyB9LCB7IG5hbWU6ICd0aXRsZScgfSwgeyBuYW1lOiAnaXNBcmNoaXZlZCcgfV0sXG4gICAgY29tbWFuZHM6IHtcbiAgICAgIGNyZWF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50aXR5ID0gT2JqZWN0LmFzc2lnbihkYXRhLCB7IGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSB9KTtcblxuICAgICAgICAgIGRhdGFTZXJ2aWNlLmFwcGxpY2F0aW9uRGF0YVByb3ZpZGVyLmluc2VydE9uZShlbnRpdHkpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZWxldGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGlkOiBhbnkpID0+IHtcbiAgICAgICAgICBhd2FpdCBhd2FpdCBkYXRhU2VydmljZS5hcHBsaWNhdGlvbkRhdGFQcm92aWRlci5kZWxldGVPbmUoaWQpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IGRhdGFTZXJ2aWNlLmFwcGxpY2F0aW9uRGF0YVByb3ZpZGVyLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZW50aXR5ID0gYXdhaXQgZGF0YVNlcnZpY2UuYXBwbGljYXRpb25EYXRhUHJvdmlkZXIuZ2V0T25lKGlkKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShlbnRpdHkpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLlNpbmdsZSxcbiAgICAgIH0sXG4gICAgICBsaXN0OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgZGF0YVNlcnZpY2UuYXBwbGljYXRpb25EYXRhUHJvdmlkZXIuZ2V0QWxsKCk7XG4gICAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSBhcHBseVNvcnRBcnJheShsaXN0LCBlLnNvcnQpO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBhcHBseUZpbHRlckFycmF5KHNvcnRlZEl0ZW1zLCBlLmZpbHRlciA/IFtlLmZpbHRlcl0gOiBbXSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0b3RhbDogZmlsdGVyZWRJdGVtcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtczogZmlsdGVyZWRJdGVtcy5zbGljZShlLnNraXAsIChlLnNraXAgPz8gMCkgKyAoZS50YWtlID8/IDApKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLkxpc3QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnaXNBcmNoaXZlZCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnaXNBcmNoaXZlZCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2lzQXJjaGl2ZWQnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFjdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ0NyZWF0ZSBOZXcnLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnRGVsZXRlIEl0ZW1zJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnRGV0YWlscycsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdvcGVuLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUnLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2FsbCcsXG4gICAgICAgICAgICAgIHRpdGxlOiAnQWxsIEl0ZW1zJyxcbiAgICAgICAgICAgICAgZml4ZWQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IFtdLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiBbXSxcbiAgICAgICAgICAgICAgc29ydHM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBhcHBsaWNhdGlvbkVudGl0eURlZjtcbn1cbiJdfQ==