ngx-edu-sharing-ui 10.0.20 → 10.0.22

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 (131) hide show
  1. package/assets/scss/material-theme.scss +3 -3
  2. package/assets/scss/mixins.scss +1 -1
  3. package/assets/scss/variables-root.scss +2 -0
  4. package/assets/scss/variables-scss.scss +3 -4
  5. package/assets/scss/variables.scss +1 -1
  6. package/fesm2022/ngx-edu-sharing-ui.mjs +376 -319
  7. package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
  8. package/lib/index.d.ts +1 -0
  9. package/lib/list-items/list-widget.d.ts +1 -1
  10. package/lib/mds-viewer/mds-editor-instance-service.abstract.d.ts +14 -0
  11. package/lib/mds-viewer/widget/mds-widget.component.d.ts +6 -4
  12. package/package.json +8 -9
  13. package/esm2022/lib/actionbar/actionbar.component.mjs +0 -206
  14. package/esm2022/lib/common/edu-sharing-ui-common.module.mjs +0 -170
  15. package/esm2022/lib/directives/border-box-observer.directive.mjs +0 -71
  16. package/esm2022/lib/directives/check-text-overflow.directive.mjs +0 -71
  17. package/esm2022/lib/directives/drag-nodes/drag-nodes.mjs +0 -14
  18. package/esm2022/lib/directives/drag-nodes/nodes-drag-source.directive.mjs +0 -79
  19. package/esm2022/lib/directives/drag-nodes/nodes-drag.directive.mjs +0 -49
  20. package/esm2022/lib/directives/drag-nodes/nodes-drop-target.directive.mjs +0 -105
  21. package/esm2022/lib/directives/focus-state.directive.mjs +0 -44
  22. package/esm2022/lib/directives/icon.directive.mjs +0 -184
  23. package/esm2022/lib/directives/infinite-scroll.directive.mjs +0 -85
  24. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -83
  25. package/esm2022/lib/edu-sharing-ui-configuration.mjs +0 -48
  26. package/esm2022/lib/edu-sharing-ui.module.mjs +0 -82
  27. package/esm2022/lib/index.mjs +0 -96
  28. package/esm2022/lib/list-items/available-widgets.mjs +0 -27
  29. package/esm2022/lib/list-items/format-duration.pipe.mjs +0 -20
  30. package/esm2022/lib/list-items/list-base/list-base.component.mjs +0 -46
  31. package/esm2022/lib/list-items/list-collection-info/list-collection-info.component.mjs +0 -29
  32. package/esm2022/lib/list-items/list-counts/list-counts.component.mjs +0 -56
  33. package/esm2022/lib/list-items/list-items.module.mjs +0 -50
  34. package/esm2022/lib/list-items/list-node-license/list-node-license.component.mjs +0 -41
  35. package/esm2022/lib/list-items/list-node-replication-source/list-node-replication-source.component.mjs +0 -47
  36. package/esm2022/lib/list-items/list-node-workflow/list-node-workflow.component.mjs +0 -24
  37. package/esm2022/lib/list-items/list-text/list-text.component.mjs +0 -106
  38. package/esm2022/lib/list-items/list-widget.mjs +0 -49
  39. package/esm2022/lib/list-items/node-row/node-row.component.mjs +0 -24
  40. package/esm2022/lib/list-items/node-source.pipe.mjs +0 -49
  41. package/esm2022/lib/mds/mds-helper.service.mjs +0 -167
  42. package/esm2022/lib/mds/mds.module.mjs +0 -16
  43. package/esm2022/lib/mds-viewer/mds-viewer.component.mjs +0 -170
  44. package/esm2022/lib/mds-viewer/mds-viewer.service.mjs +0 -18
  45. package/esm2022/lib/mds-viewer/replace-element-with-div.mjs +0 -47
  46. package/esm2022/lib/mds-viewer/view-instance.service.mjs +0 -27
  47. package/esm2022/lib/mds-viewer/widget/mds-widget.component.mjs +0 -379
  48. package/esm2022/lib/node-entries/combined-data-source.mjs +0 -41
  49. package/esm2022/lib/node-entries/custom-templates-data-source.mjs +0 -7
  50. package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +0 -21
  51. package/esm2022/lib/node-entries/entries-model.mjs +0 -24
  52. package/esm2022/lib/node-entries/items-cap.mjs +0 -47
  53. package/esm2022/lib/node-entries/list-item-label.pipe.mjs +0 -37
  54. package/esm2022/lib/node-entries/node-cache.mjs +0 -73
  55. package/esm2022/lib/node-entries/node-data-source-remote.mjs +0 -4
  56. package/esm2022/lib/node-entries/node-data-source.mjs +0 -117
  57. package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +0 -117
  58. package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +0 -329
  59. package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +0 -44
  60. package/esm2022/lib/node-entries/node-entries-global-options/node-entries-global-options.component.mjs +0 -27
  61. package/esm2022/lib/node-entries/node-entries-global.service.mjs +0 -71
  62. package/esm2022/lib/node-entries/node-entries-table/column-chooser/column-chooser.component.mjs +0 -42
  63. package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +0 -294
  64. package/esm2022/lib/node-entries/node-entries-templates.service.mjs +0 -11
  65. package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +0 -369
  66. package/esm2022/lib/node-entries/node-entries.component.mjs +0 -132
  67. package/esm2022/lib/node-entries/node-entries.module.mjs +0 -161
  68. package/esm2022/lib/node-entries/node-rating/node-rating.component.mjs +0 -125
  69. package/esm2022/lib/node-entries/node-stats-badges/node-stats-badges.component.mjs +0 -48
  70. package/esm2022/lib/node-entries/node-type-badge/node-type-badge.component.mjs +0 -36
  71. package/esm2022/lib/node-entries/option-button/option-button.component.mjs +0 -75
  72. package/esm2022/lib/node-entries/preview-image/preview-image.component.mjs +0 -53
  73. package/esm2022/lib/node-entries/sort-select-panel/sort-select-panel.component.mjs +0 -41
  74. package/esm2022/lib/node-url/node-url.component.mjs +0 -132
  75. package/esm2022/lib/pipes/file-size.pipe.mjs +0 -32
  76. package/esm2022/lib/pipes/format-date.pipe.mjs +0 -38
  77. package/esm2022/lib/pipes/mds-duration.pipe.mjs +0 -25
  78. package/esm2022/lib/pipes/node-icon.pipe.mjs +0 -18
  79. package/esm2022/lib/pipes/node-image-size.pipe.mjs +0 -24
  80. package/esm2022/lib/pipes/node-image.pipe.mjs +0 -55
  81. package/esm2022/lib/pipes/node-license.pipe.mjs +0 -24
  82. package/esm2022/lib/pipes/node-person-name.pipe.mjs +0 -50
  83. package/esm2022/lib/pipes/node-title.pipe.mjs +0 -35
  84. package/esm2022/lib/pipes/option-tooltip.pipe.mjs +0 -33
  85. package/esm2022/lib/pipes/property-slug.pipe.mjs +0 -16
  86. package/esm2022/lib/pipes/replace-chars.pipe.mjs +0 -29
  87. package/esm2022/lib/pipes/vcard-name.pipe.mjs +0 -25
  88. package/esm2022/lib/services/abstract/app.service.mjs +0 -3
  89. package/esm2022/lib/services/abstract/keyboard-shortcuts.service.mjs +0 -10
  90. package/esm2022/lib/services/abstract/options-helper.service.mjs +0 -3
  91. package/esm2022/lib/services/abstract/toast.service.mjs +0 -3
  92. package/esm2022/lib/services/accessibility.service.mjs +0 -73
  93. package/esm2022/lib/services/app-container.service.mjs +0 -69
  94. package/esm2022/lib/services/local-events.service.mjs +0 -43
  95. package/esm2022/lib/services/node-entries.service.mjs +0 -201
  96. package/esm2022/lib/services/node-helper.service.mjs +0 -330
  97. package/esm2022/lib/services/nodes-drag-drop.service.mjs +0 -155
  98. package/esm2022/lib/services/options-helper-data.service.mjs +0 -142
  99. package/esm2022/lib/services/render-helper.service.mjs +0 -114
  100. package/esm2022/lib/services/repo-url.service.mjs +0 -50
  101. package/esm2022/lib/services/search-helper.service.mjs +0 -52
  102. package/esm2022/lib/services/temporary-storage.service.mjs +0 -48
  103. package/esm2022/lib/services/ui.service.mjs +0 -327
  104. package/esm2022/lib/sort-dropdown/sort-dropdown.component.mjs +0 -50
  105. package/esm2022/lib/spinner/spinner.component.mjs +0 -19
  106. package/esm2022/lib/spinner-small/spinner-small.component.mjs +0 -18
  107. package/esm2022/lib/translations/fallback-translation-handler.mjs +0 -6
  108. package/esm2022/lib/translations/translation-loader.mjs +0 -219
  109. package/esm2022/lib/translations/translation-source.mjs +0 -11
  110. package/esm2022/lib/translations/translations.module.mjs +0 -82
  111. package/esm2022/lib/translations/translations.service.mjs +0 -238
  112. package/esm2022/lib/types/accessibillity.mjs +0 -19
  113. package/esm2022/lib/types/api-models.mjs +0 -2
  114. package/esm2022/lib/types/drag-drop.mjs +0 -2
  115. package/esm2022/lib/types/injection-tokens.mjs +0 -31
  116. package/esm2022/lib/types/keyboard-shortcuts.mjs +0 -11
  117. package/esm2022/lib/types/list-item.mjs +0 -41
  118. package/esm2022/lib/types/option-item.mjs +0 -192
  119. package/esm2022/lib/types/workflow.mjs +0 -25
  120. package/esm2022/lib/util/DateHelper.mjs +0 -200
  121. package/esm2022/lib/util/VCard.mjs +0 -278
  122. package/esm2022/lib/util/color-helper.mjs +0 -124
  123. package/esm2022/lib/util/duration-helper.mjs +0 -102
  124. package/esm2022/lib/util/functions.mjs +0 -13
  125. package/esm2022/lib/util/helper.mjs +0 -64
  126. package/esm2022/lib/util/isNumeric.mjs +0 -11
  127. package/esm2022/lib/util/rest-helper.mjs +0 -42
  128. package/esm2022/lib/util/ui-animation.mjs +0 -146
  129. package/esm2022/lib/util/ui-constants.mjs +0 -21
  130. package/esm2022/ngx-edu-sharing-ui.mjs +0 -5
  131. package/esm2022/public-api.mjs +0 -2
@@ -1,379 +0,0 @@
1
- import { DatePipe } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, computed, Input, signal, ViewChild, } from '@angular/core';
3
- import { MatRipple } from '@angular/material/core';
4
- import { filter, first, map } from 'rxjs/operators';
5
- import { RestConstants } from 'ngx-edu-sharing-api';
6
- import { UIConstants } from '../../util/ui-constants';
7
- import { DateHelper } from '../../util/DateHelper';
8
- import { RestHelper } from '../../util/rest-helper';
9
- import { FormatSizePipe } from '../../pipes/file-size.pipe';
10
- import { BehaviorSubject, of } from 'rxjs';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@ngx-translate/core";
13
- import * as i2 from "../../services/ui.service";
14
- import * as i3 from "../view-instance.service";
15
- import * as i4 from "../mds-viewer.service";
16
- import * as i5 from "../../services/node-helper.service";
17
- import * as i6 from "@angular/common";
18
- import * as i7 from "@angular/material/core";
19
- import * as i8 from "@angular/router";
20
- import * as i9 from "../../directives/icon.directive";
21
- import * as i10 from "../../pipes/mds-duration.pipe";
22
- import * as i11 from "../../pipes/vcard-name.pipe";
23
- export var MdsType;
24
- (function (MdsType) {
25
- MdsType["Io"] = "io";
26
- MdsType["IoBulk"] = "io_bulk";
27
- MdsType["Map"] = "map";
28
- MdsType["MapRef"] = "map_ref";
29
- MdsType["IoChildObject"] = "io_childobject";
30
- MdsType["Collection"] = "collection";
31
- MdsType["ToolDefinition"] = "tool_definition";
32
- MdsType["ToolInstance"] = "tool_instance";
33
- MdsType["SavedSearch"] = "saved_search";
34
- })(MdsType || (MdsType = {}));
35
- export var MdsWidgetType;
36
- (function (MdsWidgetType) {
37
- MdsWidgetType["Text"] = "text";
38
- MdsWidgetType["Number"] = "number";
39
- MdsWidgetType["Email"] = "email";
40
- MdsWidgetType["Date"] = "date";
41
- MdsWidgetType["Month"] = "month";
42
- MdsWidgetType["Color"] = "color";
43
- MdsWidgetType["Textarea"] = "textarea";
44
- MdsWidgetType["TinyMCE"] = "tinyMCE";
45
- MdsWidgetType["VCard"] = "vcard";
46
- MdsWidgetType["Checkbox"] = "checkbox";
47
- MdsWidgetType["RadioHorizontal"] = "radioHorizontal";
48
- MdsWidgetType["RadioVertical"] = "radioVertical";
49
- MdsWidgetType["CheckboxHorizontal"] = "checkboxHorizontal";
50
- MdsWidgetType["CheckboxVertical"] = "checkboxVertical";
51
- MdsWidgetType["MultiValueBadges"] = "multivalueBadges";
52
- MdsWidgetType["MultiValueFixedBadges"] = "multivalueFixedBadges";
53
- MdsWidgetType["MultiValueSuggestBadges"] = "multivalueSuggestBadges";
54
- MdsWidgetType["MultiValueAuthorityBadges"] = "multivalueAuthorityBadges";
55
- MdsWidgetType["Singleoption"] = "singleoption";
56
- MdsWidgetType["Slider"] = "slider";
57
- MdsWidgetType["Range"] = "range";
58
- MdsWidgetType["Duration"] = "duration";
59
- MdsWidgetType["SingleValueTree"] = "singlevalueTree";
60
- MdsWidgetType["SingleValueSuggestBadges"] = "singlevalueSuggestBadges";
61
- MdsWidgetType["MultiValueTree"] = "multivalueTree";
62
- MdsWidgetType["DefaultValue"] = "defaultvalue";
63
- MdsWidgetType["FacetList"] = "facetList";
64
- })(MdsWidgetType || (MdsWidgetType = {}));
65
- export var ValueType;
66
- (function (ValueType) {
67
- ValueType[ValueType["String"] = 0] = "String";
68
- ValueType[ValueType["MultiValue"] = 1] = "MultiValue";
69
- ValueType[ValueType["Range"] = 2] = "Range";
70
- })(ValueType || (ValueType = {}));
71
- export class MdsWidgetComponent {
72
- static { this.inlineEditing = [
73
- MdsWidgetType.Text,
74
- MdsWidgetType.Number,
75
- MdsWidgetType.Date,
76
- MdsWidgetType.Email,
77
- MdsWidgetType.Textarea,
78
- MdsWidgetType.Singleoption,
79
- MdsWidgetType.SingleValueTree,
80
- MdsWidgetType.SingleValueSuggestBadges,
81
- MdsWidgetType.MultiValueBadges,
82
- MdsWidgetType.MultiValueFixedBadges,
83
- MdsWidgetType.MultiValueSuggestBadges,
84
- MdsWidgetType.MultiValueTree,
85
- ]; }
86
- get headingLevel() {
87
- return this.viewInstance.headingLevel;
88
- }
89
- constructor(
90
- // public mdsEditorInstance: MdsEditorInstanceService,
91
- translate, ui, viewInstance, mdsViewerService, nodeHelper) {
92
- this.translate = translate;
93
- this.ui = ui;
94
- this.viewInstance = viewInstance;
95
- this.mdsViewerService = mdsViewerService;
96
- this.nodeHelper = nodeHelper;
97
- this.ROUTER_PREFIX = UIConstants.ROUTER_PREFIX;
98
- this.valueType = ValueType.String;
99
- this.showCaption = true;
100
- /**
101
- * allow inline editing
102
- */
103
- this.inlineEditing = 'auto';
104
- this.basicType = signal(null);
105
- this.isEmpty = computed(() => {
106
- if (this.basicType() === 'license') {
107
- return false;
108
- }
109
- return this.value()?.every((v) => !v) || this.value()?.length === 0 || !this.value();
110
- });
111
- this.license$ = new BehaviorSubject(null);
112
- this.value = signal(undefined);
113
- this.temporaryValue = undefined;
114
- // super(toast, null, translate);
115
- }
116
- async ngOnChanges(changes) {
117
- this.value.set(await this.getNodeValue());
118
- }
119
- async ngOnInit() {
120
- this.value.set(await this.getNodeValue());
121
- this.widget
122
- .getInitialDisplayValues()
123
- .pipe(filter((v) => !!v))
124
- .subscribe(async (value) => {
125
- this.value.set(value.values.map((v) => v.displayString));
126
- });
127
- this.basicType.set(this.getBasicType());
128
- this.rawValue = await this.getRawValue().toPromise();
129
- }
130
- getDefinition() {
131
- return this.widget?.definition || this.definition;
132
- }
133
- getBasicType() {
134
- switch (this.getDefinition().id) {
135
- case 'license':
136
- return 'license';
137
- }
138
- switch (this.getDefinition().type) {
139
- case 'text':
140
- case 'email':
141
- case 'month':
142
- case 'color':
143
- case 'textarea':
144
- case 'singleoption':
145
- return 'text';
146
- case 'number':
147
- return 'number';
148
- case 'date':
149
- return 'date';
150
- case 'vcard':
151
- return 'vcard';
152
- case 'multivalueFixedBadges':
153
- case 'multivalueSuggestBadges':
154
- case 'singlevalueSuggestBadges':
155
- case 'multivalueBadges':
156
- case 'singlevalueTree':
157
- case 'multivalueTree':
158
- return this.viewInstance.treeDisplay === 'flat' ? 'array' : 'tree';
159
- case 'slider':
160
- return 'slider';
161
- case 'duration':
162
- return 'duration';
163
- case 'range':
164
- return 'range';
165
- }
166
- return 'unknown';
167
- }
168
- supportsInlineEditing() {
169
- return MdsWidgetComponent.inlineEditing.includes(this.widget?.definition.type);
170
- }
171
- getNodeValues() {
172
- if (this.mdsEditorInstance) {
173
- return (this.mdsEditorInstance.values$.value ||
174
- this.mdsEditorInstance.nodes$.value.map((n) => n.properties));
175
- }
176
- else {
177
- return this.mdsViewerService.values$.value;
178
- }
179
- }
180
- async getNodeValue() {
181
- if (this.temporaryValue !== undefined) {
182
- return this.getValue(this.temporaryValue);
183
- }
184
- const id = this.getDefinition().id;
185
- const values = this.getNodeValues();
186
- if (this.getBasicType() === 'license') {
187
- this.license$.next({
188
- icon: await this.nodeHelper.getLicenseIcon({
189
- properties: this.getNodeValues(),
190
- }),
191
- name: this.nodeHelper.getLicenseName({ properties: this.getNodeValues() }),
192
- });
193
- }
194
- if (this.getDefinition().type === 'range') {
195
- if (values) {
196
- return [values[id + '_from']?.[0], values[id + '_to']?.[0]];
197
- }
198
- return null;
199
- }
200
- else if (values?.[id]) {
201
- // support on the fly changes+updates of the values
202
- return this.getValue(values[id]);
203
- }
204
- else if ((await this.widget.getInitalValuesAsync())?.jointValues) {
205
- return (await this.widget.getInitalValuesAsync()).jointValues;
206
- }
207
- else {
208
- return null;
209
- }
210
- }
211
- getValue(data) {
212
- let value = data;
213
- if (!value || value.every((v) => !v)) {
214
- return null;
215
- }
216
- if (this.getDefinition().values) {
217
- const mapping = this.widget.definition.values
218
- .filter((v) => data.filter((d) => d === v.id).length > 0)
219
- .map((v) => v.caption);
220
- if (mapping) {
221
- return mapping;
222
- }
223
- }
224
- return data;
225
- }
226
- click() {
227
- if (this.getDefinition().link === '_BLANK') {
228
- window.open(this.formatText()[0]);
229
- }
230
- else if (this.getDefinition().link === '_SELF') {
231
- window.location.href = this.formatText()[0];
232
- }
233
- else {
234
- console.warn('Unsupported link type ' + this.getDefinition().link);
235
- }
236
- }
237
- formatDate() {
238
- return this.value().map((v) => {
239
- if (this.getDefinition().format) {
240
- try {
241
- return new DatePipe('en').transform(v, this.getDefinition().format);
242
- }
243
- catch (e) {
244
- console.warn('Could not format date', e, this.getDefinition());
245
- return DateHelper.formatDate(this.translate, v, {
246
- showAlwaysTime: true,
247
- });
248
- }
249
- }
250
- else {
251
- return DateHelper.formatDate(this.translate, v, {
252
- showAlwaysTime: true,
253
- });
254
- }
255
- });
256
- }
257
- formatNumber() {
258
- return this.value().map((v) => {
259
- if (this.widget.definition.format === 'bytes') {
260
- return new FormatSizePipe(this.translate).transform(v);
261
- }
262
- return v;
263
- });
264
- }
265
- formatText() {
266
- return this.value().map((v) => {
267
- if (this.widget.definition.format) {
268
- return this.widget.definition.format.replace('${value}', v);
269
- }
270
- return v;
271
- });
272
- }
273
- // instance: MdsEditorWidgetBase
274
- async finishEdit(instance, store = false) {
275
- if (store) {
276
- await this.mdsEditorInstance.saveWidgetValue(instance.widget);
277
- }
278
- this.temporaryValue = instance.widget.getValue();
279
- this.value.set(await this.getNodeValue());
280
- this.editWrapper.nativeElement.children[0].innerHTML = null;
281
- await this.mdsEditorInstance.fetchDisplayValues(this.widget);
282
- }
283
- isEditable() {
284
- if (!this.mdsEditorInstance) {
285
- return false;
286
- }
287
- if (this.inlineEditing === 'always') {
288
- return this.supportsInlineEditing();
289
- }
290
- const nodes = this.mdsEditorInstance.nodes$.value;
291
- return (this.mdsEditorInstance.editorMode === 'inline' &&
292
- this.widget.definition.interactionType === 'Input' &&
293
- nodes?.length === 1 &&
294
- RestHelper.hasAccessPermission(nodes[0], RestConstants.ACCESS_WRITE) &&
295
- this.supportsInlineEditing());
296
- }
297
- async focus() {
298
- // this.matRipple.launch({});
299
- await this.ui.scrollSmoothElementToChild(this.editWrapper.nativeElement);
300
- this.matRipple.launch({});
301
- //const result = await this.view.injectEditField(this, this.editWrapper.nativeElement.children[0]);
302
- //await this.ui.scrollSmoothElementToChild(result.htmlElement);
303
- }
304
- /**
305
- * return the path for a given value in a tree
306
- */
307
- getPath(v) {
308
- if (!this.getDefinition().values) {
309
- return [
310
- {
311
- id: v,
312
- caption: v,
313
- },
314
- ];
315
- }
316
- const path = [];
317
- let pointer = v;
318
- for (let i = 0; i < 100; i++) {
319
- const mapped = this.getDefinition().values.find((w) => w.id === pointer);
320
- if (mapped) {
321
- path.push(mapped);
322
- pointer = mapped.parent;
323
- }
324
- else {
325
- break;
326
- }
327
- }
328
- return path.reverse();
329
- }
330
- /**
331
- * fetch the raw node value
332
- * Note: Will not work in a bulk state!
333
- */
334
- getRawValue() {
335
- return (this.mdsEditorInstance?.nodes$.pipe(first(), map((v) => v?.[0]?.properties[this.widget.definition.id]?.map((id) => {
336
- return {
337
- id,
338
- path: this.getPath(id),
339
- };
340
- }))) || of(null));
341
- }
342
- getSearchParams(key) {
343
- const params = {};
344
- const mds = {};
345
- mds[this.widget.definition.id] = [key.id];
346
- params.mds = this.mdsEditorInstance.mdsId;
347
- params.sidenav = true;
348
- params.repo = this.mdsEditorInstance.nodes$.value?.[0].ref.repo;
349
- params.filters = JSON.stringify(mds);
350
- return params;
351
- }
352
- startEdit(event) {
353
- event.stopPropagation();
354
- void this.view.injectEditField(this, this.editWrapper.nativeElement.children[0]);
355
- }
356
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, deps: [{ token: i1.TranslateService }, { token: i2.UIService }, { token: i3.ViewInstanceService }, { token: i4.MdsViewerService }, { token: i5.NodeHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
357
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: MdsWidgetComponent, selector: "es-mds-widget", inputs: { widget: "widget", showCaption: "showCaption", inlineEditing: "inlineEditing", definition: "definition", view: "view" }, viewQueries: [{ propertyName: "editWrapper", first: true, predicate: ["editWrapper"], descendants: true }, { propertyName: "matRipple", first: true, predicate: MatRipple, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType() }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType() }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType() === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType() === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType() === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType() === 'license' && (license$ | async) as license\">\n <img alt=\"\" [src]=\"license.icon\" /> {{ license.name }}\n </div>\n <div *ngIf=\"basicType() === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType() === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType() === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType() === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType() === 'duration'\">\n <span class=\"duration-value\">{{ value()[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType() === 'range'\">\n <span class=\"slider-value\">{{ value()[0] }}</span\n >-<span class=\"slider-value\">{{ value()[1] }}</span>\n </div>\n <div *ngIf=\"basicType() === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i10.MdsDurationPipe, name: "appMdsDuration" }, { kind: "pipe", type: i11.VCardNamePipe, name: "vcardName" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
358
- }
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, decorators: [{
360
- type: Component,
361
- args: [{ selector: 'es-mds-widget', changeDetection: ChangeDetectionStrategy.Default, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType() }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType() }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType() === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType() === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType() === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType() === 'license' && (license$ | async) as license\">\n <img alt=\"\" [src]=\"license.icon\" /> {{ license.name }}\n </div>\n <div *ngIf=\"basicType() === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType() === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType() === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType() === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType() === 'duration'\">\n <span class=\"duration-value\">{{ value()[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType() === 'range'\">\n <span class=\"slider-value\">{{ value()[0] }}</span\n >-<span class=\"slider-value\">{{ value()[1] }}</span>\n </div>\n <div *ngIf=\"basicType() === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"] }]
362
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.UIService }, { type: i3.ViewInstanceService }, { type: i4.MdsViewerService }, { type: i5.NodeHelperService }], propDecorators: { widget: [{
363
- type: Input
364
- }], showCaption: [{
365
- type: Input
366
- }], inlineEditing: [{
367
- type: Input
368
- }], definition: [{
369
- type: Input
370
- }], view: [{
371
- type: Input
372
- }], editWrapper: [{
373
- type: ViewChild,
374
- args: ['editWrapper']
375
- }], matRipple: [{
376
- type: ViewChild,
377
- args: [MatRipple]
378
- }] } });
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvd2lkZ2V0L21kcy13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9tZHMtdmlld2VyL3dpZGdldC9tZHMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBRVIsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBNkIsYUFBYSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBSzNDLE1BQU0sQ0FBTixJQUFZLE9BVVg7QUFWRCxXQUFZLE9BQU87SUFDZixvQkFBUyxDQUFBO0lBQ1QsNkJBQWtCLENBQUE7SUFDbEIsc0JBQVcsQ0FBQTtJ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QUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDOytHQWxVUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwrVEErQmhCLFNBQVMscUVDcEl4QixvcElBc0dBOzs0RkREYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxPQUFPOzhNQXVCdkMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFb0IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNGLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBzaWduYWwsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0UmlwcGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZHNWYWx1ZSwgTWRzV2lkZ2V0LCBOb2RlLCBSZXN0Q29uc3RhbnRzLCBTdWdnZXN0aW9uIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQgeyBVSUNvbnN0YW50cyB9IGZyb20gJy4uLy4uL3V0aWwvdWktY29uc3RhbnRzJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlsL0RhdGVIZWxwZXInO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdWkuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3SW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vdmlldy1pbnN0YW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3RIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlsL3Jlc3QtaGVscGVyJztcbmltcG9ydCB7IEZvcm1hdFNpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZmlsZS1zaXplLnBpcGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWRzVmlld2VyU2VydmljZSB9IGZyb20gJy4uL21kcy12aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWYWx1ZXMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWFyY2gtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLWhlbHBlci5zZXJ2aWNlJztcblxuZXhwb3J0IGVudW0gTWRzVHlwZSB7XG4gICAgSW8gPSAnaW8nLFxuICAgIElvQnVsayA9ICdpb19idWxrJyxcbiAgICBNYXAgPSAnbWFwJyxcbiAgICBNYXBSZWYgPSAnbWFwX3JlZicsXG4gICAgSW9DaGlsZE9iamVjdCA9ICdpb19jaGlsZG9iamVjdCcsXG4gICAgQ29sbGVjdGlvbiA9ICdjb2xsZWN0aW9uJyxcbiAgICBUb29sRGVmaW5pdGlvbiA9ICd0b29sX2RlZmluaXRpb24nLFxuICAgIFRvb2xJbnN0YW5jZSA9ICd0b29sX2luc3RhbmNlJyxcbiAgICBTYXZlZFNlYXJjaCA9ICdzYXZlZF9zZWFyY2gnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kc1ZhbHVlTGlzdCB7XG4gICAgdmFsdWVzOiBTdWdnZXN0aW9uW107XG59XG5leHBvcnQgaW50ZXJmYWNlIE1kc1ZpZXdlcldpZGdldCB7XG4gICAgZGVmaW5pdGlvbjogTWRzV2lkZ2V0O1xuICAgIGdldEluaXRhbFZhbHVlc0FzeW5jKCk6IFByb21pc2U8SW5pdGlhbFZhbHVlcz47XG4gICAgZ2V0SW5pdGlhbERpc3BsYXlWYWx1ZXMoKTogQmVoYXZpb3JTdWJqZWN0PE1kc1ZhbHVlTGlzdD47XG59XG5leHBvcnQgZW51bSBNZHNXaWRnZXRUeXBlIHtcbiAgICBUZXh0ID0gJ3RleHQnLFxuICAgIE51bWJlciA9ICdudW1iZXInLFxuICAgIEVtYWlsID0gJ2VtYWlsJyxcbiAgICBEYXRlID0gJ2RhdGUnLFxuICAgIE1vbnRoID0gJ21vbnRoJyxcbiAgICBDb2xvciA9ICdjb2xvcicsXG4gICAgVGV4dGFyZWEgPSAndGV4dGFyZWEnLFxuICAgIFRpbnlNQ0UgPSAndGlueU1DRScsXG4gICAgVkNhcmQgPSAndmNhcmQnLFxuICAgIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcbiAgICBSYWRpb0hvcml6b250YWwgPSAncmFkaW9Ib3Jpem9udGFsJyxcbiAgICBSYWRpb1ZlcnRpY2FsID0gJ3JhZGlvVmVydGljYWwnLFxuICAgIENoZWNrYm94SG9yaXpvbnRhbCA9ICdjaGVja2JveEhvcml6b250YWwnLFxuICAgIENoZWNrYm94VmVydGljYWwgPSAnY2hlY2tib3hWZXJ0aWNhbCcsXG4gICAgTXVsdGlWYWx1ZUJhZGdlcyA9ICdtdWx0aXZhbHVlQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlRml4ZWRCYWRnZXMgPSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdtdWx0aXZhbHVlU3VnZ2VzdEJhZGdlcycsXG4gICAgTXVsdGlWYWx1ZUF1dGhvcml0eUJhZGdlcyA9ICdtdWx0aXZhbHVlQXV0aG9yaXR5QmFkZ2VzJyxcbiAgICBTaW5nbGVvcHRpb24gPSAnc2luZ2xlb3B0aW9uJyxcbiAgICBTbGlkZXIgPSAnc2xpZGVyJyxcbiAgICBSYW5nZSA9ICdyYW5nZScsXG4gICAgRHVyYXRpb24gPSAnZHVyYXRpb24nLFxuICAgIFNpbmdsZVZhbHVlVHJlZSA9ICdzaW5nbGV2YWx1ZVRyZWUnLFxuICAgIFNpbmdsZVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdzaW5nbGV2YWx1ZVN1Z2dlc3RCYWRnZXMnLFxuICAgIE11bHRpVmFsdWVUcmVlID0gJ211bHRpdmFsdWVUcmVlJyxcbiAgICBEZWZhdWx0VmFsdWUgPSAnZGVmYXVsdHZhbHVlJyxcbiAgICBGYWNldExpc3QgPSAnZmFjZXRMaXN0Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsVmFsdWVzIHtcbiAgICAvKiogVmFsdWVzIHRoYXQgYXJlIGluaXRpYWxseSBwcmVzZW50IGluIGFsbCBub2Rlcy4gKi9cbiAgICByZWFkb25seSBqb2ludFZhbHVlczogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogVmFsdWVzIHRoYXQgYXJlIGluaXRpYWxseSBwcmVzZW50IGluIHNvbWUgYnV0IG5vdCBhbGwgbm9kZXMuXG4gICAgICpcbiAgICAgKiBDYW4gYmUgbnVsbCBidXQgd2lsbCBuZXZlciBiZSBzZXQgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5kaXZpZHVhbFZhbHVlcz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGVudW0gVmFsdWVUeXBlIHtcbiAgICBTdHJpbmcsXG4gICAgTXVsdGlWYWx1ZSxcbiAgICBSYW5nZSxcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1tZHMtd2lkZ2V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJ21kcy13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydtZHMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIC8vIHJlcXVpcmVkIGZvciBleHRlcm5hbCBlZGl0b3IgaW5qZWN0aW9uXG59KVxuZXhwb3J0IGNsYXNzIE1kc1dpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICByZWFkb25seSBST1VURVJfUFJFRklYID0gVUlDb25zdGFudHMuUk9VVEVSX1BSRUZJWDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBpbmxpbmVFZGl0aW5nOiBNZHNXaWRnZXRUeXBlW10gPSBbXG4gICAgICAgIE1kc1dpZGdldFR5cGUuVGV4dCxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5OdW1iZXIsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuRGF0ZSxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5FbWFpbCxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5UZXh0YXJlYSxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5TaW5nbGVvcHRpb24sXG4gICAgICAgIE1kc1dpZGdldFR5cGUuU2luZ2xlVmFsdWVUcmVlLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlNpbmdsZVZhbHVlU3VnZ2VzdEJhZGdlcyxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5NdWx0aVZhbHVlQmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVGaXhlZEJhZGdlcyxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5NdWx0aVZhbHVlU3VnZ2VzdEJhZGdlcyxcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5NdWx0aVZhbHVlVHJlZSxcbiAgICBdO1xuXG4gICAgcmVhZG9ubHkgdmFsdWVUeXBlID0gVmFsdWVUeXBlLlN0cmluZztcblxuICAgIC8vIHVzZSBhbnkgaW5zdGVhZCBvZiBgV2lkZ2V0YCBjYXVzZSBvZiBleHRlcm5hbCB0eXBlXG4gICAgQElucHV0KCkgd2lkZ2V0OiBNZHNWaWV3ZXJXaWRnZXQ7XG4gICAgQElucHV0KCkgc2hvd0NhcHRpb24gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIGFsbG93IGlubGluZSBlZGl0aW5nXG4gICAgICovXG4gICAgQElucHV0KCkgaW5saW5lRWRpdGluZzogJ2F1dG8nIHwgJ2Fsd2F5cycgPSAnYXV0byc7XG4gICAgQElucHV0KCkgZGVmaW5pdGlvbjogTWRzV2lkZ2V0O1xuICAgIC8vIHVzZSBhbnkgaW5zdGVhZCBvZiBNZHNFZGl0b3JWaWV3Q29tcG9uZW50IGNhdXNlIG9mIGV4dGVybmFsIHR5cGVcbiAgICBASW5wdXQoKSB2aWV3OiBhbnk7XG5cbiAgICBAVmlld0NoaWxkKCdlZGl0V3JhcHBlcicpIGVkaXRXcmFwcGVyOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoTWF0UmlwcGxlKSBtYXRSaXBwbGU6IE1hdFJpcHBsZTtcbiAgICBiYXNpY1R5cGUgPSBzaWduYWw8c3RyaW5nPihudWxsKTtcbiAgICByYXdWYWx1ZTogeyBwYXRoOiBNZHNWYWx1ZVtdOyBpZDogc3RyaW5nIH1bXTtcblxuICAgIGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmJhc2ljVHlwZSgpID09PSAnbGljZW5zZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSgpPy5ldmVyeSgodikgPT4gIXYpIHx8IHRoaXMudmFsdWUoKT8ubGVuZ3RoID09PSAwIHx8ICF0aGlzLnZhbHVlKCk7XG4gICAgfSk7XG4gICAgcHJpdmF0ZSBtZHNFZGl0b3JJbnN0YW5jZTogYW55O1xuICAgIGxpY2Vuc2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IG5hbWU6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+KG51bGwpO1xuXG4gICAgZ2V0IGhlYWRpbmdMZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLmhlYWRpbmdMZXZlbDtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHNpZ25hbDxzdHJpbmdbXT4odW5kZWZpbmVkKTtcbiAgICBwcml2YXRlIHRlbXBvcmFyeVZhbHVlOiBzdHJpbmdbXSA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvLyBwdWJsaWMgbWRzRWRpdG9ySW5zdGFuY2U6IE1kc0VkaXRvckluc3RhbmNlU2VydmljZSxcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1aTogVUlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZpZXdJbnN0YW5jZTogVmlld0luc3RhbmNlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtZHNWaWV3ZXJTZXJ2aWNlOiBNZHNWaWV3ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vZGVIZWxwZXI6IE5vZGVIZWxwZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICAvLyBzdXBlcih0b2FzdCwgbnVsbCwgdHJhbnNsYXRlKTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KGF3YWl0IHRoaXMuZ2V0Tm9kZVZhbHVlKCkpO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnZhbHVlLnNldChhd2FpdCB0aGlzLmdldE5vZGVWYWx1ZSgpKTtcbiAgICAgICAgdGhpcy53aWRnZXRcbiAgICAgICAgICAgIC5nZXRJbml0aWFsRGlzcGxheVZhbHVlcygpXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIoKHY6IE1kc1ZhbHVlTGlzdCkgPT4gISF2KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHZhbHVlOiBNZHNWYWx1ZUxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZS52YWx1ZXMubWFwKCh2KSA9PiB2LmRpc3BsYXlTdHJpbmcpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmJhc2ljVHlwZS5zZXQodGhpcy5nZXRCYXNpY1R5cGUoKSk7XG4gICAgICAgIHRoaXMucmF3VmFsdWUgPSBhd2FpdCB0aGlzLmdldFJhd1ZhbHVlKCkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0RGVmaW5pdGlvbigpOiBNZHNXaWRnZXQge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ/LmRlZmluaXRpb24gfHwgdGhpcy5kZWZpbml0aW9uO1xuICAgIH1cblxuICAgIGdldEJhc2ljVHlwZSgpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmdldERlZmluaXRpb24oKS5pZCkge1xuICAgICAgICAgICAgY2FzZSAnbGljZW5zZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdsaWNlbnNlJztcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuZ2V0RGVmaW5pdGlvbigpLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xlb3B0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgICAgICAgY2FzZSAndmNhcmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAndmNhcmQnO1xuICAgICAgICAgICAgY2FzZSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ211bHRpdmFsdWVTdWdnZXN0QmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZXZhbHVlU3VnZ2VzdEJhZGdlcyc6XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlQmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZXZhbHVlVHJlZSc6XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlVHJlZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLnRyZWVEaXNwbGF5ID09PSAnZmxhdCcgPyAnYXJyYXknIDogJ3RyZWUnO1xuICAgICAgICAgICAgY2FzZSAnc2xpZGVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NsaWRlcic7XG4gICAgICAgICAgICBjYXNlICdkdXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkdXJhdGlvbic7XG4gICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYW5nZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG5cbiAgICBzdXBwb3J0c0lubGluZUVkaXRpbmcoKSB7XG4gICAgICAgIHJldHVybiBNZHNXaWRnZXRDb21wb25lbnQuaW5saW5lRWRpdGluZy5pbmNsdWRlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Py5kZWZpbml0aW9uLnR5cGUgYXMgTWRzV2lkZ2V0VHlwZSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXROb2RlVmFsdWVzKCkge1xuICAgICAgICBpZiAodGhpcy5tZHNFZGl0b3JJbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAodGhpcy5tZHNFZGl0b3JJbnN0YW5jZS52YWx1ZXMkLnZhbHVlIGFzIFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICB0aGlzLm1kc0VkaXRvckluc3RhbmNlLm5vZGVzJC52YWx1ZS5tYXAoKG46IE5vZGUpID0+IG4ucHJvcGVydGllcylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZHNWaWV3ZXJTZXJ2aWNlLnZhbHVlcyQudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBhc3luYyBnZXROb2RlVmFsdWUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBvcmFyeVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMudGVtcG9yYXJ5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXREZWZpbml0aW9uKCkuaWQ7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0Tm9kZVZhbHVlcygpO1xuICAgICAgICBpZiAodGhpcy5nZXRCYXNpY1R5cGUoKSA9PT0gJ2xpY2Vuc2UnKSB7XG4gICAgICAgICAgICB0aGlzLmxpY2Vuc2UkLm5leHQoe1xuICAgICAgICAgICAgICAgIGljb246IGF3YWl0IHRoaXMubm9kZUhlbHBlci5nZXRMaWNlbnNlSWNvbih7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMuZ2V0Tm9kZVZhbHVlcygpLFxuICAgICAgICAgICAgICAgIH0gYXMgTm9kZSksXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5ub2RlSGVscGVyLmdldExpY2Vuc2VOYW1lKHsgcHJvcGVydGllczogdGhpcy5nZXROb2RlVmFsdWVzKCkgfSBhcyBOb2RlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZXNbaWQgKyAnX2Zyb20nXT8uWzBdLCB2YWx1ZXNbaWQgKyAnX3RvJ10/LlswXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZXM/LltpZF0pIHtcbiAgICAgICAgICAgIC8vIHN1cHBvcnQgb24gdGhlIGZseSBjaGFuZ2VzK3VwZGF0ZXMgb2YgdGhlIHZhbHVlc1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodmFsdWVzW2lkXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGF3YWl0IHRoaXMud2lkZ2V0LmdldEluaXRhbFZhbHVlc0FzeW5jKCkpPy5qb2ludFZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLndpZGdldC5nZXRJbml0YWxWYWx1ZXNBc3luYygpKS5qb2ludFZhbHVlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VmFsdWUoZGF0YTogc3RyaW5nW10pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gZGF0YTtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5ldmVyeSgodikgPT4gIXYpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS52YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBpbmcgPSB0aGlzLndpZGdldC5kZWZpbml0aW9uLnZhbHVlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHY6IGFueSkgPT4gZGF0YS5maWx0ZXIoKGQpID0+IGQgPT09IHYuaWQpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgLm1hcCgodjogYW55KSA9PiB2LmNhcHRpb24pO1xuICAgICAgICAgICAgaWYgKG1hcHBpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGNsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5nZXREZWZpbml0aW9uKCkubGluayA9PT0gJ19CTEFOSycpIHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMuZm9ybWF0VGV4dCgpWzBdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldERlZmluaXRpb24oKS5saW5rID09PSAnX1NFTEYnKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZm9ybWF0VGV4dCgpWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbnN1cHBvcnRlZCBsaW5rIHR5cGUgJyArIHRoaXMuZ2V0RGVmaW5pdGlvbigpLmxpbmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUoKS5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGVQaXBlKCdlbicpLnRyYW5zZm9ybSh2LCB0aGlzLmdldERlZmluaXRpb24oKS5mb3JtYXQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3QgZm9ybWF0IGRhdGUnLCBlLCB0aGlzLmdldERlZmluaXRpb24oKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRlSGVscGVyLmZvcm1hdERhdGUodGhpcy50cmFuc2xhdGUsIHYsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbHdheXNUaW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlSGVscGVyLmZvcm1hdERhdGUodGhpcy50cmFuc2xhdGUsIHYsIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5c1RpbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvcm1hdE51bWJlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUoKS5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZGdldC5kZWZpbml0aW9uLmZvcm1hdCA9PT0gJ2J5dGVzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybWF0U2l6ZVBpcGUodGhpcy50cmFuc2xhdGUpLnRyYW5zZm9ybSh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3JtYXRUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSgpLm1hcCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMud2lkZ2V0LmRlZmluaXRpb24uZm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0LmRlZmluaXRpb24uZm9ybWF0LnJlcGxhY2UoJyR7dmFsdWV9Jywgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGluc3RhbmNlOiBNZHNFZGl0b3JXaWRnZXRCYXNlXG4gICAgYXN5bmMgZmluaXNoRWRpdChpbnN0YW5jZTogYW55LCBzdG9yZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChzdG9yZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5zYXZlV2lkZ2V0VmFsdWUoaW5zdGFuY2Uud2lkZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRlbXBvcmFyeVZhbHVlID0gaW5zdGFuY2Uud2lkZ2V0LmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KGF3YWl0IHRoaXMuZ2V0Tm9kZVZhbHVlKCkpO1xuICAgICAgICB0aGlzLmVkaXRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgICAgYXdhaXQgdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5mZXRjaERpc3BsYXlWYWx1ZXModGhpcy53aWRnZXQpO1xuICAgIH1cblxuICAgIGlzRWRpdGFibGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5tZHNFZGl0b3JJbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXRpbmcgPT09ICdhbHdheXMnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0c0lubGluZUVkaXRpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMubWRzRWRpdG9ySW5zdGFuY2Uubm9kZXMkLnZhbHVlO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5lZGl0b3JNb2RlID09PSAnaW5saW5lJyAmJlxuICAgICAgICAgICAgdGhpcy53aWRnZXQuZGVmaW5pdGlvbi5pbnRlcmFjdGlvblR5cGUgPT09ICdJbnB1dCcgJiZcbiAgICAgICAgICAgIG5vZGVzPy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgIFJlc3RIZWxwZXIuaGFzQWNjZXNzUGVybWlzc2lvbihub2Rlc1swXSwgUmVzdENvbnN0YW50cy5BQ0NFU1NfV1JJVEUpICYmXG4gICAgICAgICAgICB0aGlzLnN1cHBvcnRzSW5saW5lRWRpdGluZygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgZm9jdXMoKSB7XG4gICAgICAgIC8vIHRoaXMubWF0UmlwcGxlLmxhdW5jaCh7fSk7XG4gICAgICAgIGF3YWl0IHRoaXMudWkuc2Nyb2xsU21vb3RoRWxlbWVudFRvQ2hpbGQodGhpcy5lZGl0V3JhcHBlci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5tYXRSaXBwbGUubGF1bmNoKHt9KTtcbiAgICAgICAgLy9jb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnZpZXcuaW5qZWN0RWRpdEZpZWxkKHRoaXMsIHRoaXMuZWRpdFdyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSk7XG4gICAgICAgIC8vYXdhaXQgdGhpcy51aS5zY3JvbGxTbW9vdGhFbGVtZW50VG9DaGlsZChyZXN1bHQuaHRtbEVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0aGUgcGF0aCBmb3IgYSBnaXZlbiB2YWx1ZSBpbiBhIHRyZWVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFBhdGgodjogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5nZXREZWZpbml0aW9uKCkudmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHYsXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb246IHYsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF0aDogTWRzVmFsdWVbXSA9IFtdO1xuICAgICAgICBsZXQgcG9pbnRlcjogc3RyaW5nID0gdjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkID0gdGhpcy5nZXREZWZpbml0aW9uKCkudmFsdWVzLmZpbmQoKHcpID0+IHcuaWQgPT09IHBvaW50ZXIpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZCkge1xuICAgICAgICAgICAgICAgIHBhdGgucHVzaChtYXBwZWQpO1xuICAgICAgICAgICAgICAgIHBvaW50ZXIgPSBtYXBwZWQucGFyZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF0aC5yZXZlcnNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmV0Y2ggdGhlIHJhdyBub2RlIHZhbHVlXG4gICAgICogTm90ZTogV2lsbCBub3Qgd29yayBpbiBhIGJ1bGsgc3RhdGUhXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRSYXdWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubWRzRWRpdG9ySW5zdGFuY2U/Lm5vZGVzJC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgbWFwKCh2OiBOb2RlW10pID0+XG4gICAgICAgICAgICAgICAgICAgICh2Py5bMF0/LnByb3BlcnRpZXNbdGhpcy53aWRnZXQuZGVmaW5pdGlvbi5pZF0gYXMgc3RyaW5nW10pPy5tYXAoKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMuZ2V0UGF0aChpZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fCBvZihudWxsKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFNlYXJjaFBhcmFtcyhrZXk6IE1kc1ZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XG4gICAgICAgIGNvbnN0IG1kczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gICAgICAgIG1kc1t0aGlzLndpZGdldC5kZWZpbml0aW9uLmlkXSA9IFtrZXkuaWRdO1xuICAgICAgICBwYXJhbXMubWRzID0gdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5tZHNJZDtcbiAgICAgICAgcGFyYW1zLnNpZGVuYXYgPSB0cnVlO1xuICAgICAgICBwYXJhbXMucmVwbyA9IHRoaXMubWRzRWRpdG9ySW5zdGFuY2Uubm9kZXMkLnZhbHVlPy5bMF0ucmVmLnJlcG87XG4gICAgICAgIHBhcmFtcy5maWx0ZXJzID0gSlNPTi5zdHJpbmdpZnkobWRzKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBzdGFydEVkaXQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHZvaWQgdGhpcy52aWV3LmluamVjdEVkaXRGaWVsZCh0aGlzLCB0aGlzLmVkaXRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0pO1xuICAgIH1cbn1cbiIsIjxlcy1tZHMtZWRpdG9yLXdpZGdldC1jb250YWluZXJcbiAgKm5nSWY9XCIhZWRpdFdyYXBwZXIuaW5uZXJUZXh0LnRyaW0oKVwiXG4gIFtpbmplY3RlZFZpZXddPVwidGhpc1wiXG4gIFt3aWRnZXRdPVwid2lkZ2V0XCJcbiAgW2xhYmVsXT1cImZhbHNlXCJcbiAgW3dyYXBJbkZvcm1GaWVsZF09XCJmYWxzZVwiXG4gIFt3cmFwSW5Hcm91cF09XCJmYWxzZVwiXG4gIFt2YWx1ZVR5cGVdPVwidmFsdWVUeXBlXCJcbiAgbWF0UmlwcGxlXG4gIFttYXRSaXBwbGVEaXNhYmxlZF09XCJ0cnVlXCJcbj5cbiAgPGRpdiBjbGFzcz1cImVkaXQtd3JhcHBlclwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiIWlzRW1wdHkoKSB8fCAhd2lkZ2V0LmRlZmluaXRpb24uaGlkZUlmRW1wdHkgfHwgaXNFZGl0YWJsZSgpXCJcbiAgICAgIGNsYXNzPVwid2lkZ2V0LXdyYXBwZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ3aWRnZXQtbGFiZWxcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cImhlYWRpbmdMZXZlbCA/ICdoZWFkaW5nJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxldmVsXT1cImhlYWRpbmdMZXZlbFwiXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0LmRlZmluaXRpb24uY2FwdGlvbiAmJiBzaG93Q2FwdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IHdpZGdldC5kZWZpbml0aW9uLmNhcHRpb25cbiAgICAgICAgfX08c3BhbiAqbmdJZj1cIiFoZWFkaW5nTGV2ZWxcIiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj46IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInZhbHVlLXdyYXBwZXJcIlxuICAgICAgICBbY2xhc3MudmFsdWUtd3JhcHBlci1lZGl0XT1cImlzRWRpdGFibGUoKVwiXG4gICAgICAgIChjbGljayk9XCJpc0VkaXRhYmxlKCkgPyBzdGFydEVkaXQoJGV2ZW50KSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFbXB0eSgpXCIgY2xhc3M9XCJ3aWRnZXQtZGF0YSB3aWRnZXQtbm8tZGF0YSB3aWRnZXQtdHlwZS17eyBiYXNpY1R5cGUoKSB9fVwiPlxuICAgICAgICAgIC1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiFpc0VtcHR5KClcIlxuICAgICAgICAgIGNsYXNzPVwid2lkZ2V0LWRhdGEgd2lkZ2V0LXR5cGUte3sgYmFzaWNUeXBlKCkgfX0ge3tcbiAgICAgICAgICAgIHdpZGdldC5kZWZpbml0aW9uLmxpbmsgPyAnd2lkZ2V0LWxpbmsnIDogJydcbiAgICAgICAgICB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSgpID09PSAndGV4dCdcIj57eyBmb3JtYXRUZXh0KCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlKCkgPT09ICdudW1iZXInXCI+e3sgZm9ybWF0TnVtYmVyKCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlKCkgPT09ICdkYXRlJ1wiPnt7IGZvcm1hdERhdGUoKSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUoKSA9PT0gJ2xpY2Vuc2UnICYmIChsaWNlbnNlJCB8IGFzeW5jKSBhcyBsaWNlbnNlXCI+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIFtzcmNdPVwibGljZW5zZS5pY29uXCIgLz4ge3sgbGljZW5zZS5uYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSgpID09PSAnYXJyYXknXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyYXktZW50cnlcIiAqbmdGb3I9XCJsZXQgdiBvZiB2YWx1ZSgpXCI+e3sgdiB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUoKSA9PT0gJ3RyZWUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZS1lbnRyeVwiICpuZ0Zvcj1cImxldCB2IG9mIHJhd1ZhbHVlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlRW50cnk7IGNvbnRleHQ6IHsgcGF0aDogdi5wYXRoIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUoKSA9PT0gJ3ZjYXJkJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycmF5LWVudHJ5XCIgKm5nRm9yPVwibGV0IHYgb2YgdmFsdWUoKVwiPnt7IHYgfCB2Y2FyZE5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlKCkgPT09ICdzbGlkZXInXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlci12YWx1ZVwiPnt7IHZhbHVlIH19PC9zcGFuXG4gICAgICAgICAgICA+PHNwYW4+IC8gPC9zcGFuPjxzcGFuIGNsYXNzPVwic2xpZGVyLW1heFwiPnt7IHdpZGdldC5kZWZpbml0aW9uLm1heCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlKCkgPT09ICdkdXJhdGlvbidcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHVyYXRpb24tdmFsdWVcIj57eyB2YWx1ZSgpWzBdIHwgYXBwTWRzRHVyYXRpb24gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSgpID09PSAncmFuZ2UnXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlci12YWx1ZVwiPnt7IHZhbHVlKClbMF0gfX08L3NwYW5cbiAgICAgICAgICAgID4tPHNwYW4gY2xhc3M9XCJzbGlkZXItdmFsdWVcIj57eyB2YWx1ZSgpWzFdIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUoKSA9PT0gJ3Vua25vd24nXCI+XG4gICAgICAgICAgICBUaGUgd2lkZ2V0IHR5cGUge3sgd2lkZ2V0LmRlZmluaXRpb24udHlwZSB9fSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCB2aWEgYW5ndWxhclxuICAgICAgICAgICAgcmVuZGVyaW5nXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLTxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1kc0VkaXRvckluc3RhbmNlLmVkaXRvck1vZGUgPT09ICdpbmxpbmUnICYmIHdpZGdldC5kZWZpbml0aW9uLmludGVyYWN0aW9uVHlwZSA9PT0gJ0lucHV0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidmlldy5pbmplY3RFZGl0RmllbGQodGhpcywgZWRpdClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4tZWRpdFwiPlxuICAgICAgPGkgZXNJY29uPVwiZWRpdFwiPjwvaT5cbiAgICA8L2J1dHRvbj4tLT5cbiAgPC9kaXY+XG48L2VzLW1kcy1lZGl0b3Itd2lkZ2V0LWNvbnRhaW5lcj5cbjxkaXYgY2xhc3M9XCJlZGl0LXdyYXBwZXJcIj5cbiAgPGRpdiAjZWRpdFdyYXBwZXI+PGRpdiAjZWRpdD48L2Rpdj48L2Rpdj5cbiAgPCEtLTxidXR0b24gKm5nSWY9XCIhIWVkaXRXcmFwcGVyLmlubmVyVGV4dC50cmltKClcIiBtYXQtaWNvbi1idXR0b24+PGkgZXNJY29uPVwic2F2ZVwiPjwvaT48L2J1dHRvbj4tLT5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0cmVlRW50cnkgbGV0LXBhdGg9XCJwYXRoXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHQgb2YgcGF0aDsgbGV0IGZpcnN0ID0gZmlyc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyAnU1VCX0NBVEVHT1JZX0FSSUEnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPGkgZXNJY29uPVwia2V5Ym9hcmRfYXJyb3dfcmlnaHRcIiBbYXJpYV09XCJmYWxzZVwiPjwvaT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YVxuICAgICAgW3JvdXRlckxpbmtdPVwiJy8nICsgUk9VVEVSX1BSRUZJWCArICdzZWFyY2gnXCJcbiAgICAgIFtxdWVyeVBhcmFtc109XCJnZXRTZWFyY2hQYXJhbXModClcIlxuICAgICAgKm5nSWY9XCJ3aWRnZXQuZGVmaW5pdGlvbi5pc1NlYXJjaGFibGVcIlxuICAgICAgPnt7IHQuY2FwdGlvbiB9fTwvYVxuICAgID5cbiAgICA8c3BhbiAqbmdJZj1cIiF3aWRnZXQuZGVmaW5pdGlvbi5pc1NlYXJjaGFibGVcIj57eyB0LmNhcHRpb24gfX08L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { NodeDataSource } from './node-data-source';
3
- /**
4
- * data source which joins multiple underlying data sources
5
- * used for the "all" search
6
- */
7
- export class CombinedDataSource extends NodeDataSource {
8
- constructor(dataSources) {
9
- super();
10
- this.dataSources = dataSources;
11
- }
12
- connect() {
13
- // @TODO: Using a forkJoin and real connect would be better
14
- return of(this.getData());
15
- /*
16
- return forkJoin(this.dataSources.map(ds => ds.connect())).pipe(
17
- switchMap(d => d)
18
- ) as Observable<T[]>;
19
- */
20
- }
21
- disconnect() { }
22
- hasMore() {
23
- return this.dataSources.filter((ds) => ds.hasMore()).length > 0;
24
- }
25
- getData() {
26
- return [].concat.apply([], this.dataSources.map((ds) => ds.getData()));
27
- }
28
- isEmpty() {
29
- return this.getData()?.length === 0;
30
- }
31
- getTotal() {
32
- return this.dataSources.map((ds) => ds.getTotal()).reduce((a, b) => a + b);
33
- }
34
- isFullyLoaded() {
35
- return this.getTotal() <= this.getData()?.length;
36
- }
37
- getDatasource(position) {
38
- return this.dataSources[position];
39
- }
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL25vZGUtZW50cmllcy9jb21iaW5lZC1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdwRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQXNELFNBQVEsY0FBaUI7SUFDeEYsWUFBb0IsV0FBZ0M7UUFDaEQsS0FBSyxFQUFFLENBQUM7UUFEUSxnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7SUFFcEQsQ0FBQztJQUVELE9BQU87UUFDSCwyREFBMkQ7UUFDM0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUI7Ozs7V0FJRztJQUNQLENBQUM7SUFFRCxVQUFVLEtBQUksQ0FBQztJQUNmLE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDbEIsRUFBRSxFQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FDN0MsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsYUFBYTtRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDckQsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVEYXRhU291cmNlIH0gZnJvbSAnLi9ub2RlLWRhdGEtc291cmNlJztcbmltcG9ydCB7IE5vZGUsIEdlbmVyaWNBdXRob3JpdHkgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcblxuLyoqXG4gKiBkYXRhIHNvdXJjZSB3aGljaCBqb2lucyBtdWx0aXBsZSB1bmRlcmx5aW5nIGRhdGEgc291cmNlc1xuICogdXNlZCBmb3IgdGhlIFwiYWxsXCIgc2VhcmNoXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21iaW5lZERhdGFTb3VyY2U8VCBleHRlbmRzIE5vZGUgfCBHZW5lcmljQXV0aG9yaXR5PiBleHRlbmRzIE5vZGVEYXRhU291cmNlPFQ+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTb3VyY2VzOiBOb2RlRGF0YVNvdXJjZTxUPltdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICAvLyBAVE9ETzogVXNpbmcgYSBmb3JrSm9pbiBhbmQgcmVhbCBjb25uZWN0IHdvdWxkIGJlIGJldHRlclxuICAgICAgICByZXR1cm4gb2YodGhpcy5nZXREYXRhKCkpO1xuICAgICAgICAvKlxuICAgICAgICByZXR1cm4gZm9ya0pvaW4odGhpcy5kYXRhU291cmNlcy5tYXAoZHMgPT4gZHMuY29ubmVjdCgpKSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChkID0+IGQpXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxUW10+O1xuICAgICAgICAgKi9cbiAgICB9XG5cbiAgICBkaXNjb25uZWN0KCkge31cbiAgICBoYXNNb3JlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlcy5maWx0ZXIoKGRzKSA9PiBkcy5oYXNNb3JlKCkpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0RGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlcy5tYXAoKGRzKSA9PiBkcy5nZXREYXRhKCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGEoKT8ubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGdldFRvdGFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlcy5tYXAoKGRzKSA9PiBkcy5nZXRUb3RhbCgpKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKTtcbiAgICB9XG5cbiAgICBpc0Z1bGx5TG9hZGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUb3RhbCgpIDw9IHRoaXMuZ2V0RGF0YSgpPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0RGF0YXNvdXJjZShwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG59XG4iXX0=
@@ -1,7 +0,0 @@
1
- import { NodeDataSource } from './node-data-source';
2
- /**
3
- * this is a special data source to provide custom card layouts into the node-entries components
4
- */
5
- export class CustomTemplatesDataSource extends NodeDataSource {
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRlbXBsYXRlcy1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvbm9kZS1lbnRyaWVzL2N1c3RvbS10ZW1wbGF0ZXMtZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGNBQW1CO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlRGF0YVNvdXJjZSB9IGZyb20gJy4vbm9kZS1kYXRhLXNvdXJjZSc7XG5cbi8qKlxuICogdGhpcyBpcyBhIHNwZWNpYWwgZGF0YSBzb3VyY2UgdG8gcHJvdmlkZSBjdXN0b20gY2FyZCBsYXlvdXRzIGludG8gdGhlIG5vZGUtZW50cmllcyBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21UZW1wbGF0ZXNEYXRhU291cmNlIGV4dGVuZHMgTm9kZURhdGFTb3VyY2U8YW55PiB7fVxuIl19
@@ -1,21 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../../list-items/list-text/list-text.component";
5
- import * as i3 from "@angular/material/badge";
6
- import * as i4 from "../../pipes/node-icon.pipe";
7
- export class DragPreviewComponent {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DragPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: DragPreviewComponent, selector: "es-drag-preview", inputs: { node: "node", selected: "selected", item: "item" }, ngImport: i0, template: "<div class=\"drag-preview\" [matBadge]=\"selected.length > 1 ? selected.length : null\">\n <div class=\"drag-preview-icon\">\n <img *ngIf=\"node.iconURL\" [src]=\"node | esNodeIcon | async\" />\n </div>\n <es-list-text class=\"drag-preview-text\" [node]=\"node\" [item]=\"item\"></es-list-text>\n</div>\n", styles: [".drag-preview{display:flex;align-items:center;gap:16px;height:48px;padding:0 12px;background-color:var(--palette-primary-50)}.drag-preview-icon{width:30px;height:30px;padding:3px;margin:1px 0;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 3px #0000004d}.drag-preview-icon>img{width:18px;height:auto}.drag-preview-text{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ListTextComponent, selector: "es-list-text" }, { kind: "directive", type: i3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.NodeIconPipe, name: "esNodeIcon" }] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DragPreviewComponent, decorators: [{
12
- type: Component,
13
- args: [{ selector: 'es-drag-preview', template: "<div class=\"drag-preview\" [matBadge]=\"selected.length > 1 ? selected.length : null\">\n <div class=\"drag-preview-icon\">\n <img *ngIf=\"node.iconURL\" [src]=\"node | esNodeIcon | async\" />\n </div>\n <es-list-text class=\"drag-preview-text\" [node]=\"node\" [item]=\"item\"></es-list-text>\n</div>\n", styles: [".drag-preview{display:flex;align-items:center;gap:16px;height:48px;padding:0 12px;background-color:var(--palette-primary-50)}.drag-preview-icon{width:30px;height:30px;padding:3px;margin:1px 0;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 3px #0000004d}.drag-preview-icon>img{width:18px;height:auto}.drag-preview-text{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
14
- }], propDecorators: { node: [{
15
- type: Input
16
- }], selected: [{
17
- type: Input
18
- }], item: [{
19
- type: Input
20
- }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvbm9kZS1lbnRyaWVzL2RyYWctcHJldmlldy9kcmFnLXByZXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9ub2RlLWVudHJpZXMvZHJhZy1wcmV2aWV3L2RyYWctcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVWpELE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFIQ1ZqQyx3VEFNQTs7NEZESWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLGlCQUFpQjs4QkFLbEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcy9saXN0LWl0ZW0nO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgTm9kZUVudHJpZXNEYXRhVHlwZSB9IGZyb20gJy4uL2VudHJpZXMtbW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLWRyYWctcHJldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYWctcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJhZy1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyYWdQcmV2aWV3Q29tcG9uZW50PFQgZXh0ZW5kcyBOb2RlRW50cmllc0RhdGFUeXBlPiB7XG4gICAgQElucHV0KCkgbm9kZTogTm9kZTtcbiAgICBASW5wdXQoKSBzZWxlY3RlZDogVFtdO1xuICAgIEBJbnB1dCgpIGl0ZW06IExpc3RJdGVtO1xufVxuIiwiPGRpdiBjbGFzcz1cImRyYWctcHJldmlld1wiIFttYXRCYWRnZV09XCJzZWxlY3RlZC5sZW5ndGggPiAxID8gc2VsZWN0ZWQubGVuZ3RoIDogbnVsbFwiPlxuICA8ZGl2IGNsYXNzPVwiZHJhZy1wcmV2aWV3LWljb25cIj5cbiAgICA8aW1nICpuZ0lmPVwibm9kZS5pY29uVVJMXCIgW3NyY109XCJub2RlIHwgZXNOb2RlSWNvbiB8IGFzeW5jXCIgLz5cbiAgPC9kaXY+XG4gIDxlcy1saXN0LXRleHQgY2xhc3M9XCJkcmFnLXByZXZpZXctdGV4dFwiIFtub2RlXT1cIm5vZGVcIiBbaXRlbV09XCJpdGVtXCI+PC9lcy1saXN0LXRleHQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,24 +0,0 @@
1
- export var NodeEntriesDisplayType;
2
- (function (NodeEntriesDisplayType) {
3
- NodeEntriesDisplayType[NodeEntriesDisplayType["Table"] = 0] = "Table";
4
- NodeEntriesDisplayType[NodeEntriesDisplayType["Grid"] = 1] = "Grid";
5
- NodeEntriesDisplayType[NodeEntriesDisplayType["SmallGrid"] = 2] = "SmallGrid";
6
- })(NodeEntriesDisplayType || (NodeEntriesDisplayType = {}));
7
- export var InteractionType;
8
- (function (InteractionType) {
9
- // create router link
10
- InteractionType[InteractionType["DefaultActionLink"] = 0] = "DefaultActionLink";
11
- // emit an event
12
- InteractionType[InteractionType["Emitter"] = 1] = "Emitter";
13
- InteractionType[InteractionType["None"] = 2] = "None";
14
- })(InteractionType || (InteractionType = {}));
15
- export var ClickSource;
16
- (function (ClickSource) {
17
- ClickSource[ClickSource["Preview"] = 0] = "Preview";
18
- ClickSource[ClickSource["Icon"] = 1] = "Icon";
19
- ClickSource[ClickSource["Metadata"] = 2] = "Metadata";
20
- ClickSource[ClickSource["Comments"] = 3] = "Comments";
21
- ClickSource[ClickSource["Overlay"] = 4] = "Overlay";
22
- ClickSource[ClickSource["Dropdown"] = 5] = "Dropdown";
23
- })(ClickSource || (ClickSource = {}));
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cmllcy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvbm9kZS1lbnRyaWVzL2VudHJpZXMtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLE1BQU0sQ0FBTixJQUFZLHNCQUlYO0FBSkQsV0FBWSxzQkFBc0I7SUFDOUIscUVBQUssQ0FBQTtJQUNMLG1FQUFJLENBQUE7SUFDSiw2RUFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFJakM7QUFFRCxNQUFNLENBQU4sSUFBWSxlQU1YO0FBTkQsV0FBWSxlQUFlO0lBQ3ZCLHFCQUFxQjtJQUNyQiwrRUFBaUIsQ0FBQTtJQUNqQixnQkFBZ0I7SUFDaEIsMkRBQU8sQ0FBQTtJQUNQLHFEQUFJLENBQUE7QUFDUixDQUFDLEVBTlcsZUFBZSxLQUFmLGVBQWUsUUFNMUI7QUE2QkQsTUFBTSxDQUFOLElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNuQixtREFBTyxDQUFBO0lBQ1AsNkNBQUksQ0FBQTtJQUNKLHFEQUFRLENBQUE7SUFDUixxREFBUSxDQUFBO0lBQ1IsbURBQU8sQ0FBQTtJQUNQLHFEQUFRLENBQUE7QUFDWixDQUFDLEVBUFcsV0FBVyxLQUFYLFdBQVcsUUFPdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5cbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEN1c3RvbU9wdGlvbnMsIE9wdGlvbkl0ZW0sIFRhcmdldCB9IGZyb20gJy4uL3R5cGVzL29wdGlvbi1pdGVtJztcbmltcG9ydCB7IExpc3RJdGVtLCBMaXN0SXRlbVNvcnQgfSBmcm9tICcuLi90eXBlcy9saXN0LWl0ZW0nO1xuaW1wb3J0IHsgQ2FuRHJvcCwgRHJhZ0RhdGEsIERyb3BBY3Rpb24gfSBmcm9tICcuLi90eXBlcy9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTm9kZSwgR2VuZXJpY0F1dGhvcml0eSB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgQWN0aW9uYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uYmFyL2FjdGlvbmJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBOb2RlUm9vdCA9XG4gICAgfCAnTVlfRklMRVMnXG4gICAgfCAnQ09MTEVDVElPTl9IT01FJ1xuICAgIHwgJ1NIQVJFRF9GSUxFUydcbiAgICB8ICdNWV9TSEFSRURfRklMRVMnXG4gICAgfCAnVE9fTUVfU0hBUkVEX0ZJTEVTJ1xuICAgIHwgJ1dPUktGTE9XX1JFQ0VJVkUnXG4gICAgfCAnUkVDWUNMRSdcbiAgICB8ICdBTExfRklMRVMnO1xuXG5leHBvcnQgZW51bSBOb2RlRW50cmllc0Rpc3BsYXlUeXBlIHtcbiAgICBUYWJsZSxcbiAgICBHcmlkLFxuICAgIFNtYWxsR3JpZCxcbn1cblxuZXhwb3J0IGVudW0gSW50ZXJhY3Rpb25UeXBlIHtcbiAgICAvLyBjcmVhdGUgcm91dGVyIGxpbmtcbiAgICBEZWZhdWx0QWN0aW9uTGluayxcbiAgICAvLyBlbWl0IGFuIGV2ZW50XG4gICAgRW1pdHRlcixcbiAgICBOb25lLFxufVxuXG5leHBvcnQgdHlwZSBMaXN0T3B0aW9ucyA9IHsgW2tleSBpbiBUYXJnZXRdPzogT3B0aW9uSXRlbVtdIH07XG5leHBvcnQgdHlwZSBMaXN0T3B0aW9uc0NvbmZpZyA9IHtcbiAgICBhY3Rpb25iYXI/OiBBY3Rpb25iYXJDb21wb25lbnQ7XG4gICAgcGFyZW50PzogTm9kZTtcbiAgICBjdXN0b21PcHRpb25zPzogQ3VzdG9tT3B0aW9ucztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFNvcnRDb25maWcgZXh0ZW5kcyBTb3J0IHtcbiAgICBjb2x1bW5zOiBMaXN0SXRlbVNvcnRbXTtcbiAgICBhbGxvd2VkPzogYm9vbGVhbjtcbiAgICBjdXN0b21Tb3J0aW5nSW5Qcm9ncmVzcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERyb3BUYXJnZXQgPSBOb2RlIHwgTm9kZVJvb3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcFNvdXJjZTxUIGV4dGVuZHMgTm9kZUVudHJpZXNEYXRhVHlwZT4ge1xuICAgIGVsZW1lbnQ6IFRbXTtcbiAgICAvLyBzb3VyY2VMaXN0OiBMaXN0RXZlbnRJbnRlcmZhY2U8VD47XG4gICAgbW9kZTogRHJvcEFjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0RHJhZ0dyb3BDb25maWc8VCBleHRlbmRzIE5vZGVFbnRyaWVzRGF0YVR5cGU+IHtcbiAgICBkcmFnQWxsb3dlZDogYm9vbGVhbjtcbiAgICBkcm9wQWxsb3dlZD86IChkcmFnRGF0YTogRHJhZ0RhdGE8VD4pID0+IENhbkRyb3A7XG4gICAgZHJvcHBlZD86ICh0YXJnZXQ6IE5vZGUsIHNvdXJjZTogRHJvcFNvdXJjZTxOb2RlRW50cmllc0RhdGFUeXBlPikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGVudW0gQ2xpY2tTb3VyY2Uge1xuICAgIFByZXZpZXcsXG4gICAgSWNvbixcbiAgICBNZXRhZGF0YSxcbiAgICBDb21tZW50cyxcbiAgICBPdmVybGF5LFxuICAgIERyb3Bkb3duLCAvLyBrZWVwOiB1c2VkIGluIGV4dGVuc2lvbnNcbn1cblxuZXhwb3J0IHR5cGUgTm9kZUNsaWNrRXZlbnQ8VCBleHRlbmRzIE5vZGVFbnRyaWVzRGF0YVR5cGU+ID0ge1xuICAgIGVsZW1lbnQ6IFQ7XG4gICAgc291cmNlOiBDbGlja1NvdXJjZTtcbiAgICBhdHRyaWJ1dGU/OiBMaXN0SXRlbTsgLy8gb25seSB3aGVuIHNvdXJjZSA9PT0gTWV0YWRhdGFcbn07XG5leHBvcnQgdHlwZSBGZXRjaEV2ZW50ID0ge1xuICAgIG9mZnNldDogbnVtYmVyO1xuICAgIGFtb3VudD86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBpcyBhIHJlc2V0IG9mIHRoZSBjdXJyZW50IGRhdGEgcmVxdWlyZWQ/XG4gICAgICogdGhpcyBzaG91bGQgYmUgdHJ1ZSBpZiB0aGlzIHdhcyBhIHBhZ2luYXRpb24gcmVxdWVzdFxuICAgICAqL1xuICAgIHJlc2V0PzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBOb2RlRW50cmllc0RhdGFUeXBlID0gTm9kZSB8IEdlbmVyaWNBdXRob3JpdHk7XG5leHBvcnQgdHlwZSBHcmlkTGF5b3V0ID0gJ2dyaWQnIHwgJ3Njcm9sbCc7XG5leHBvcnQgdHlwZSBHcmlkQ29uZmlnID0ge1xuICAgIC8qKlxuICAgICAqIG1heCBhbW91bnQgb2Ygcm93cyB0aGF0IHNob3VsZCBiZSB2aXNpYmxlLCB1bnNldCBmb3Igbm8gbGltaXRcbiAgICAgKi9cbiAgICBtYXhSb3dzPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIGxheW91dCwgZGVmYXVsdHMgdG8gJ2dyaWQnXG4gICAgICogJ3Njcm9sbCcgbWF5IG9ubHkgYmUgdXNlZCB3aGVuIG1heFJvd3MgaXMgbm90IHNldFxuICAgICAqL1xuICAgIGxheW91dD86IEdyaWRMYXlvdXQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RFdmVudEludGVyZmFjZTxUIGV4dGVuZHMgTm9kZUVudHJpZXNEYXRhVHlwZT4ge1xuICAgIHVwZGF0ZU5vZGVzKG5vZGVzOiB2b2lkIHwgVFtdKTogdm9pZDtcblxuICAgIG9uRGlzcGxheVR5cGVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxOb2RlRW50cmllc0Rpc3BsYXlUeXBlPjtcblxuICAgIGdldERpc3BsYXlUeXBlKCk6IE5vZGVFbnRyaWVzRGlzcGxheVR5cGU7XG5cbiAgICBzZXREaXNwbGF5VHlwZShkaXNwbGF5VHlwZTogTm9kZUVudHJpZXNEaXNwbGF5VHlwZSk6IHZvaWQ7XG5cbiAgICBzaG93UmVvcmRlckNvbHVtbnNEaWFsb2coKTogdm9pZDtcblxuICAgIGFkZFZpcnR1YWxOb2Rlcyh2aXJ0dWFsOiBUW10pOiB2b2lkO1xuXG4gICAgc2V0T3B0aW9ucyhvcHRpb25zOiBMaXN0T3B0aW9ucyk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBhY3RpdmF0ZSBvcHRpb24gKGRyb3Bkb3duKSBnZW5lcmF0aW9uXG4gICAgICovXG4gICAgaW5pdE9wdGlvbnNHZW5lcmF0b3IoY29uZmlnOiBMaXN0T3B0aW9uc0NvbmZpZyk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gICAgc2VsZWN0QWxsKCk6IHZvaWQ7XG5cbiAgICBnZXRTZWxlY3Rpb24oKTogU2VsZWN0aW9uTW9kZWw8VD47XG5cbiAgICAvKipcbiAgICAgKiB0cmlnZ2VyZWQgd2hlbiBub2Rlcy9vYmplY3RzIGFyZSBkZWxldGVkIGFuZCBzaG91bGQgbm90IGJlIHNob3duIGluIHRoZSBsaXN0IGFueW1vcmVcbiAgICAgKi9cbiAgICBkZWxldGVOb2RlcyhvYmplY3RzOiBUW10pOiB2b2lkO1xufVxuIl19