@skyux/tiles 5.0.3 → 5.5.0-alpha.0

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 (99) hide show
  1. package/README.md +6 -4
  2. package/documentation.json +94 -11
  3. package/esm2015/index.js +24 -0
  4. package/esm2015/index.js.map +1 -0
  5. package/esm2015/lib/modules/shared/sky-tiles-resources.module.js +60 -0
  6. package/esm2015/lib/modules/shared/sky-tiles-resources.module.js.map +1 -0
  7. package/esm2015/lib/modules/tiles/tile/tile-summary.component.js +19 -0
  8. package/esm2015/lib/modules/tiles/tile/tile-summary.component.js.map +1 -0
  9. package/esm2015/{modules → lib/modules}/tiles/tile/tile-title.component.js +1 -1
  10. package/esm2015/lib/modules/tiles/tile/tile-title.component.js.map +1 -0
  11. package/esm2015/lib/modules/tiles/tile/tile.component.js +165 -0
  12. package/esm2015/lib/modules/tiles/tile/tile.component.js.map +1 -0
  13. package/esm2015/lib/modules/tiles/tile/tile.module.js +53 -0
  14. package/esm2015/lib/modules/tiles/tile/tile.module.js.map +1 -0
  15. package/esm2015/{modules → lib/modules}/tiles/tile-content/tile-content-section.component.js +1 -1
  16. package/esm2015/lib/modules/tiles/tile-content/tile-content-section.component.js.map +1 -0
  17. package/esm2015/lib/modules/tiles/tile-content/tile-content.component.js +18 -0
  18. package/esm2015/lib/modules/tiles/tile-content/tile-content.component.js.map +1 -0
  19. package/esm2015/lib/modules/tiles/tile-content/tile-content.module.js +20 -0
  20. package/esm2015/lib/modules/tiles/tile-content/tile-content.module.js.map +1 -0
  21. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message-type.js +15 -0
  22. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message-type.js.map +1 -0
  23. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message.js +2 -0
  24. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard-message.js.map +1 -0
  25. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.component.js +133 -0
  26. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.component.js.map +1 -0
  27. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.module.js +32 -0
  28. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.module.js.map +1 -0
  29. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.service.js +523 -0
  30. package/esm2015/lib/modules/tiles/tile-dashboard/tile-dashboard.service.js.map +1 -0
  31. package/esm2015/{modules → lib/modules}/tiles/tile-dashboard-column/tile-dashboard-column.component.js +3 -2
  32. package/esm2015/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.component.js.map +1 -0
  33. package/esm2015/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.js +19 -0
  34. package/esm2015/lib/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.js.map +1 -0
  35. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.js +2 -0
  36. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.js.map +1 -0
  37. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.js +2 -0
  38. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.js.map +1 -0
  39. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout.js +2 -0
  40. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout.js.map +1 -0
  41. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.js +2 -0
  42. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.js.map +1 -0
  43. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-tile.js +2 -0
  44. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config-tile.js.map +1 -0
  45. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config.js +2 -0
  46. package/esm2015/lib/modules/tiles/tile-dashboard-config/tile-dashboard-config.js.map +1 -0
  47. package/esm2015/lib/modules/tiles/tiles.module.js +31 -0
  48. package/esm2015/lib/modules/tiles/tiles.module.js.map +1 -0
  49. package/esm2015/skyux-tiles.js +2 -2
  50. package/esm2015/skyux-tiles.js.map +1 -0
  51. package/fesm2015/skyux-tiles.js +2 -2
  52. package/fesm2015/skyux-tiles.js.map +1 -1
  53. package/index.d.ts +21 -0
  54. package/{modules → lib/modules}/shared/sky-tiles-resources.module.d.ts +0 -0
  55. package/{modules → lib/modules}/tiles/tile/tile-summary.component.d.ts +0 -0
  56. package/{modules → lib/modules}/tiles/tile/tile-title.component.d.ts +0 -0
  57. package/{modules → lib/modules}/tiles/tile/tile.component.d.ts +0 -0
  58. package/{modules → lib/modules}/tiles/tile/tile.module.d.ts +0 -0
  59. package/{modules → lib/modules}/tiles/tile-content/tile-content-section.component.d.ts +0 -0
  60. package/{modules → lib/modules}/tiles/tile-content/tile-content.component.d.ts +0 -0
  61. package/{modules → lib/modules}/tiles/tile-content/tile-content.module.d.ts +0 -0
  62. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard-message-type.d.ts +0 -0
  63. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard-message.d.ts +0 -0
  64. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard.component.d.ts +0 -0
  65. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard.module.d.ts +0 -0
  66. package/{modules → lib/modules}/tiles/tile-dashboard/tile-dashboard.service.d.ts +0 -0
  67. package/{modules → lib/modules}/tiles/tile-dashboard-column/tile-dashboard-column.component.d.ts +0 -0
  68. package/{modules → lib/modules}/tiles/tile-dashboard-column/tile-dashboard-column.module.d.ts +0 -0
  69. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.d.ts +0 -0
  70. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.d.ts +0 -0
  71. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-layout.d.ts +0 -0
  72. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.d.ts +0 -0
  73. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config-tile.d.ts +0 -0
  74. package/{modules → lib/modules}/tiles/tile-dashboard-config/tile-dashboard-config.d.ts +0 -0
  75. package/{modules → lib/modules}/tiles/tiles.module.d.ts +0 -0
  76. package/package.json +5 -5
  77. package/skyux-tiles.d.ts +1 -1
  78. package/LICENSE +0 -21
  79. package/esm2015/modules/shared/sky-tiles-resources.module.js +0 -60
  80. package/esm2015/modules/tiles/tile/tile-summary.component.js +0 -19
  81. package/esm2015/modules/tiles/tile/tile.component.js +0 -164
  82. package/esm2015/modules/tiles/tile/tile.module.js +0 -53
  83. package/esm2015/modules/tiles/tile-content/tile-content.component.js +0 -18
  84. package/esm2015/modules/tiles/tile-content/tile-content.module.js +0 -20
  85. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard-message-type.js +0 -15
  86. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard-message.js +0 -2
  87. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard.component.js +0 -132
  88. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard.module.js +0 -32
  89. package/esm2015/modules/tiles/tile-dashboard/tile-dashboard.service.js +0 -522
  90. package/esm2015/modules/tiles/tile-dashboard-column/tile-dashboard-column.module.js +0 -19
  91. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-column.js +0 -2
  92. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout-tile.js +0 -2
  93. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-layout.js +0 -2
  94. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-reorder-data.js +0 -2
  95. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config-tile.js +0 -2
  96. package/esm2015/modules/tiles/tile-dashboard-config/tile-dashboard-config.js +0 -2
  97. package/esm2015/modules/tiles/tiles.module.js +0 -31
  98. package/esm2015/public-api.js +0 -24
  99. package/public-api.d.ts +0 -21
@@ -1,522 +0,0 @@
1
- import { EventEmitter, Injectable, Output, Injector, } from '@angular/core';
2
- import { take } from 'rxjs/operators';
3
- import { SkyMediaBreakpoints, } from '@skyux/core';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "ng2-dragula";
6
- import * as i2 from "@skyux/core";
7
- const ATTR_TILE_ID = '_sky-tile-dashboard-tile-id';
8
- let bagIdIndex = 0;
9
- export class SkyTileDashboardService {
10
- constructor(dragulaService, mediaQuery, uiConfigService) {
11
- this.dragulaService = dragulaService;
12
- this.mediaQuery = mediaQuery;
13
- this.uiConfigService = uiConfigService;
14
- /**
15
- * @internal
16
- */
17
- this.configChange = new EventEmitter();
18
- /**
19
- * Fires when the tile dashboard's initialization is complete.
20
- */
21
- this.dashboardInitialized = new EventEmitter();
22
- this.bagId = 'sky-tile-dashboard-bag-' + ++bagIdIndex;
23
- this.initDragula();
24
- }
25
- /**
26
- * @internal
27
- */
28
- init(config, columns, singleColumn, settingsKey) {
29
- if (settingsKey) {
30
- // Clone this so changes to the config object outside of this class don't modify
31
- // the config used inside and vice versa.
32
- this.defaultConfig = this.config = Object.assign({}, config);
33
- this.settingsKey = settingsKey;
34
- this.uiConfigService
35
- .getConfig(settingsKey, config)
36
- .pipe(take(1))
37
- .subscribe((value) => {
38
- if (value.persisted) {
39
- this.config.layout = value.layout;
40
- this.checkForNewTiles(value.tileIds);
41
- this.configChange.emit(this.config);
42
- this.columns = columns;
43
- this.singleColumn = singleColumn;
44
- this.checkReadyAndLoadTiles();
45
- }
46
- else {
47
- // Bad data, or config is the default config.
48
- this.initToDefaults(config, columns, singleColumn);
49
- }
50
- }, (error) => {
51
- // Config setting key doesn't exist or other config service error
52
- this.initToDefaults(config, columns, singleColumn);
53
- });
54
- }
55
- else {
56
- this.initToDefaults(config, columns, singleColumn);
57
- }
58
- }
59
- /**
60
- * Adds a new tile to the tile dashboard.
61
- * @param tile Specifies the tile configuration.
62
- * @param component Specifies the tile component to add.
63
- */
64
- addTileComponent(tile, component) {
65
- this.tileComponents = this.tileComponents || [];
66
- this.tileComponents.push(component);
67
- component.location.nativeElement.setAttribute(ATTR_TILE_ID, tile.id);
68
- }
69
- /**
70
- * Checks whether a specified tile is collapsed.
71
- * @param tile Specifies the tile component to check.
72
- */
73
- tileIsCollapsed(tile) {
74
- let tileConfig = this.findTile(this.getTileId(tile));
75
- if (tileConfig) {
76
- return tileConfig.isCollapsed;
77
- }
78
- return undefined;
79
- }
80
- /**
81
- * Sets the collapsed state of all tiles.
82
- * @param isCollapsed Indicates whether tiles are collapsed.
83
- */
84
- setAllTilesCollapsed(isCollapsed) {
85
- /*istanbul ignore else */
86
- if (this.config && this.config.layout.multiColumn) {
87
- for (let column of this.config.layout.multiColumn) {
88
- for (let tile of column.tiles) {
89
- tile.isCollapsed = isCollapsed;
90
- }
91
- }
92
- for (let tile of this.config.layout.singleColumn.tiles) {
93
- tile.isCollapsed = isCollapsed;
94
- }
95
- }
96
- if (this.settingsKey) {
97
- this.setUserConfig(this.config);
98
- }
99
- this.configChange.emit(this.config);
100
- }
101
- /**
102
- * Sets the collapsed state of a specified tile.
103
- * @param tile Specifies the tile component.
104
- * @param isCollapsed Indicates whether the tile is collapsed.
105
- */
106
- setTileCollapsed(tile, isCollapsed) {
107
- let tileConfig = this.findTile(this.getTileId(tile));
108
- if (tileConfig) {
109
- tileConfig.isCollapsed = isCollapsed;
110
- if (this.settingsKey) {
111
- this.setUserConfig(this.config);
112
- }
113
- this.configChange.emit(this.config);
114
- }
115
- }
116
- /**
117
- * @internal
118
- */
119
- getTileComponentType(layoutTile) {
120
- if (layoutTile) {
121
- for (let tile of this.config.tiles) {
122
- if (tile.id === layoutTile.id) {
123
- return tile.componentType;
124
- }
125
- }
126
- }
127
- return undefined;
128
- }
129
- /**
130
- * @internal
131
- */
132
- changeColumnMode(isSingleColumn) {
133
- /*istanbul ignore else */
134
- if (this.config) {
135
- if (isSingleColumn) {
136
- this.moveTilesToSingleColumn();
137
- }
138
- else {
139
- this.moveTilesToMultiColumn();
140
- }
141
- }
142
- }
143
- /**
144
- * @internal
145
- */
146
- getTileComponent(tileId) {
147
- for (let tileComponent of this.tileComponents) {
148
- if (tileComponent.location.nativeElement.getAttribute(ATTR_TILE_ID) ===
149
- tileId) {
150
- return tileComponent;
151
- }
152
- }
153
- /*istanbul ignore next */
154
- return undefined;
155
- }
156
- /**
157
- * @internal
158
- */
159
- destroy() {
160
- /*istanbul ignore else */
161
- if (this.mediaSubscription) {
162
- this.mediaSubscription.unsubscribe();
163
- }
164
- }
165
- /**
166
- * @internal
167
- */
168
- moveTileOnKeyDown(tileCmp, direction, tileDescription) {
169
- const isSingleColumnMode = this.mediaQuery.current === SkyMediaBreakpoints.xs ||
170
- this.mediaQuery.current === SkyMediaBreakpoints.sm;
171
- let tileId = this.getTileId(tileCmp);
172
- let tile = this.findTile(tileId);
173
- let column;
174
- let colIndex;
175
- if (isSingleColumnMode) {
176
- column = this.config.layout.singleColumn;
177
- }
178
- else {
179
- column = this.findTileColumn(tileId);
180
- colIndex = this.config.layout.multiColumn.findIndex((value) => value === column);
181
- }
182
- if ((direction === 'left' || direction === 'right') &&
183
- !isSingleColumnMode) {
184
- let operator = direction === 'left' ? -1 : 1;
185
- let newColumn = this.config.layout.multiColumn[colIndex + operator];
186
- if (newColumn) {
187
- // Move the tile to the end of the new column
188
- newColumn.tiles.push(tile);
189
- column.tiles = column.tiles.filter((item) => item !== tile);
190
- this.moveTilesToColumn(this.columns.toArray()[colIndex + operator], [
191
- tile,
192
- ]);
193
- // Report the change in configuration
194
- let reportConfig = this.config;
195
- reportConfig.movedTile = {
196
- tileDescription: tileDescription || /* istanbul ignore next */ tile.id,
197
- column: colIndex + operator + 1,
198
- position: newColumn.tiles.length,
199
- };
200
- this.configChange.emit(reportConfig);
201
- }
202
- }
203
- else {
204
- let operator = direction === 'up' ? -1 : 1;
205
- let curIndex = column.tiles.findIndex((value) => value.id === tile.id);
206
- let tileComponentInstance = this.getTileComponent(tileId);
207
- if (tileComponentInstance && column.tiles[curIndex + operator]) {
208
- let temp = column.tiles[curIndex + operator];
209
- column.tiles[curIndex + operator] = tile;
210
- column.tiles[curIndex] = temp;
211
- // Get the column element
212
- let columnEl;
213
- if (isSingleColumnMode) {
214
- columnEl = this.getColumnEl(this.singleColumn);
215
- }
216
- else {
217
- columnEl = this.getColumnEl(this.columns.toArray()[colIndex]);
218
- }
219
- // Move the tile element in the document
220
- if (curIndex + operator === column.tiles.length - 1) {
221
- columnEl.appendChild(tileComponentInstance.location.nativeElement);
222
- }
223
- else {
224
- columnEl.insertBefore(tileComponentInstance.location.nativeElement, this.getTileComponent(column.tiles[curIndex + operator + 1].id)
225
- .location.nativeElement);
226
- }
227
- // Report the change in configuration
228
- let reportConfig = this.config;
229
- reportConfig.movedTile = {
230
- tileDescription: tileDescription || /* istanbul ignore next */ tile.id,
231
- column: isSingleColumnMode ? undefined : colIndex + 1,
232
- position: curIndex + operator + 1,
233
- };
234
- this.configChange.emit(reportConfig);
235
- }
236
- }
237
- }
238
- getTileId(tile) {
239
- if (tile) {
240
- let el = tile.elementRef.nativeElement;
241
- let tileId;
242
- while (el) {
243
- tileId = el.getAttribute(ATTR_TILE_ID);
244
- if (tileId) {
245
- return tileId;
246
- }
247
- el = el.parentElement;
248
- }
249
- }
250
- return undefined;
251
- }
252
- getTileOrRemoveFromLayout(layoutTile) {
253
- /*istanbul ignore else */
254
- if (layoutTile) {
255
- for (let tile of this.config.tiles) {
256
- if (tile.id === layoutTile.id) {
257
- return tile;
258
- }
259
- }
260
- // If the layout tile was not found in the list of tiles, it was removed since last the user updated settings
261
- /*istanbul ignore else */
262
- if (this.config.layout.singleColumn) {
263
- this.config.layout.singleColumn.tiles =
264
- this.config.layout.singleColumn.tiles.filter((elem) => elem.id !== layoutTile.id);
265
- }
266
- /*istanbul ignore else */
267
- if (this.config.layout.multiColumn) {
268
- this.config.layout.multiColumn.forEach((elem) => {
269
- elem.tiles = elem.tiles.filter((res) => res.id !== layoutTile.id);
270
- });
271
- }
272
- }
273
- /*istanbul ignore next */
274
- return undefined;
275
- }
276
- checkReadyAndLoadTiles() {
277
- if (this.config && this.columns) {
278
- this.loadTiles();
279
- this.initMediaQueries();
280
- this.dashboardInitialized.emit();
281
- }
282
- }
283
- loadTiles() {
284
- let layout = this.config.layout;
285
- if (this.mediaQuery.current === SkyMediaBreakpoints.xs ||
286
- this.mediaQuery.current === SkyMediaBreakpoints.sm) {
287
- for (let tile of layout.singleColumn.tiles) {
288
- this.loadTileIntoColumn(this.singleColumn, tile);
289
- }
290
- }
291
- else {
292
- let columns = this.columns.toArray();
293
- for (let i = 0, n = layout.multiColumn.length; i < n; i++) {
294
- let column = columns[i];
295
- for (let tile of layout.multiColumn[i].tiles) {
296
- this.loadTileIntoColumn(column, tile);
297
- }
298
- }
299
- }
300
- }
301
- loadTileIntoColumn(column, layoutTile) {
302
- let tile = this.getTileOrRemoveFromLayout(layoutTile);
303
- /*istanbul ignore else */
304
- if (tile) {
305
- let componentType = tile.componentType;
306
- let providers = tile.providers /* istanbul ignore next */ || [];
307
- const injector = Injector.create({
308
- providers,
309
- parent: column.injector,
310
- });
311
- const factory = column.resolver.resolveComponentFactory(componentType);
312
- const componentRef = column.content.createComponent(factory, undefined, injector);
313
- this.addTileComponent(layoutTile, componentRef);
314
- // Make sure the component is marked for changes in case the parent component uses
315
- // the OnPush change detection strategy.
316
- componentRef.changeDetectorRef.markForCheck();
317
- }
318
- }
319
- moveTilesToSingleColumn() {
320
- this.moveTilesToColumn(this.singleColumn, this.config.layout.singleColumn.tiles);
321
- }
322
- moveTilesToMultiColumn() {
323
- let layoutColumns = this.config.layout.multiColumn;
324
- let columns = this.columns.toArray();
325
- for (let i = 0, n = layoutColumns.length; i < n; i++) {
326
- this.moveTilesToColumn(columns[i], layoutColumns[i].tiles);
327
- }
328
- }
329
- moveTilesToColumn(column, layoutTiles) {
330
- let columnEl = this.getColumnEl(column);
331
- for (let layoutTile of layoutTiles) {
332
- let tileComponentInstance = this.getTileComponent(layoutTile.id);
333
- /*istanbul ignore else */
334
- if (tileComponentInstance) {
335
- columnEl.appendChild(tileComponentInstance.location.nativeElement);
336
- }
337
- }
338
- }
339
- getConfigForUIState() {
340
- /*istanbul ignore else */
341
- if (this.config) {
342
- this.config = {
343
- tiles: this.config.tiles,
344
- layout: {
345
- singleColumn: this.getSingleColumnLayoutForUIState(),
346
- multiColumn: this.getMultiColumnLayoutForUIState(),
347
- },
348
- };
349
- }
350
- return this.config;
351
- }
352
- getSingleColumnLayoutForUIState() {
353
- if (this.mediaQuery.current === SkyMediaBreakpoints.xs ||
354
- this.mediaQuery.current === SkyMediaBreakpoints.sm) {
355
- return {
356
- tiles: this.getTilesInEl(this.getColumnEl(this.singleColumn)),
357
- };
358
- }
359
- return this.config.layout.singleColumn;
360
- }
361
- getMultiColumnLayoutForUIState() {
362
- if (!(this.mediaQuery.current === SkyMediaBreakpoints.xs ||
363
- this.mediaQuery.current === SkyMediaBreakpoints.sm)) {
364
- let layoutColumns = [];
365
- let columns = this.columns.toArray();
366
- for (let column of columns) {
367
- if (column !== this.singleColumn) {
368
- let layoutColumn = {
369
- tiles: this.getTilesInEl(this.getColumnEl(column)),
370
- };
371
- layoutColumns.push(layoutColumn);
372
- }
373
- }
374
- return layoutColumns;
375
- }
376
- return this.config.layout.multiColumn;
377
- }
378
- getTilesInEl(el) {
379
- let tileEls = el.querySelectorAll('[' + ATTR_TILE_ID + ']');
380
- let layoutTiles = [];
381
- /*istanbul ignore else */
382
- if (tileEls) {
383
- for (let i = 0, n = tileEls.length; i < n; i++) {
384
- let tileEl = tileEls[i];
385
- let tileId = tileEl.getAttribute(ATTR_TILE_ID);
386
- let tile = this.findTile(tileId);
387
- /*istanbul ignore else */
388
- if (tile) {
389
- layoutTiles.push(tile);
390
- }
391
- }
392
- }
393
- return layoutTiles;
394
- }
395
- initMediaQueries() {
396
- /*istanbul ignore else */
397
- if (!this.mediaSubscription) {
398
- this.mediaSubscription = this.mediaQuery.subscribe((args) => {
399
- this.changeColumnMode(args === SkyMediaBreakpoints.xs || args === SkyMediaBreakpoints.sm);
400
- });
401
- }
402
- }
403
- initDragula() {
404
- this.dragulaService.setOptions(this.bagId, {
405
- moves: (el, container, handle) => {
406
- const target = el.querySelector('.sky-tile-grab-handle');
407
- return target.contains(handle);
408
- },
409
- });
410
- this.dragulaService.drop.subscribe((value) => {
411
- let config = this.getConfigForUIState();
412
- /*istanbul ignore else */
413
- if (config) {
414
- if (this.settingsKey) {
415
- this.setUserConfig(config);
416
- }
417
- this.configChange.emit(config);
418
- }
419
- });
420
- }
421
- getColumnEl(column) {
422
- return column.content.element.nativeElement.parentNode;
423
- }
424
- findTile(tileId) {
425
- /*istanbul ignore else */
426
- if (this.config && this.config.layout.multiColumn) {
427
- for (let column of this.config.layout.multiColumn) {
428
- /*istanbul ignore else */
429
- if (column.tiles) {
430
- for (let tile of column.tiles) {
431
- if (tile.id === tileId) {
432
- return tile;
433
- }
434
- }
435
- }
436
- }
437
- }
438
- return undefined;
439
- }
440
- findTileColumn(tileId) {
441
- /*istanbul ignore else */
442
- if (this.config && this.config.layout.multiColumn) {
443
- return this.config.layout.multiColumn.find((col) => col.tiles && !!col.tiles.find((tile) => tile.id === tileId));
444
- }
445
- /*istanbul ignore next */
446
- return undefined;
447
- }
448
- initToDefaults(config, columns, singleColumn) {
449
- this.config = config;
450
- this.columns = columns;
451
- this.singleColumn = singleColumn;
452
- this.checkReadyAndLoadTiles();
453
- }
454
- setUserConfig(config) {
455
- this.uiConfigService
456
- .setConfig(this.settingsKey, {
457
- layout: this.config.layout,
458
- persisted: true,
459
- tileIds: this.defaultConfig.tiles.map((elem) => elem.id),
460
- })
461
- .subscribe(() => { }, (err) => {
462
- console.warn('Could not save tile dashboard settings.');
463
- console.warn(err);
464
- });
465
- }
466
- checkForNewTiles(oldUserTiles) {
467
- // Get a list of tiles that are in the config's default list but not in the user's settings
468
- let newTiles = this.config.tiles.filter((elem) => {
469
- return oldUserTiles.indexOf(elem.id) === -1;
470
- });
471
- const { multiColumn, singleColumn } = this.config.layout;
472
- // Append new tiles to the end of the layouts
473
- /*istanbul ignore else */
474
- if (newTiles.length > 0) {
475
- /*istanbul ignore else */
476
- if (multiColumn) {
477
- newTiles.forEach((elem) => {
478
- let locationToAdd = 0;
479
- let smallest = multiColumn[0].tiles.length;
480
- multiColumn.forEach((item, index) => {
481
- if (item.tiles.length < smallest) {
482
- locationToAdd = index;
483
- smallest = item.tiles.length;
484
- }
485
- });
486
- multiColumn[locationToAdd].tiles.push({
487
- id: elem.id,
488
- isCollapsed: false,
489
- });
490
- });
491
- }
492
- /*istanbul ignore else */
493
- if (singleColumn) {
494
- newTiles.forEach((elem) => {
495
- singleColumn.tiles.push({ id: elem.id, isCollapsed: false });
496
- });
497
- }
498
- }
499
- /*istanbul ignore else */
500
- if (singleColumn) {
501
- for (let tile of singleColumn.tiles) {
502
- this.getTileOrRemoveFromLayout(tile);
503
- }
504
- }
505
- /*istanbul ignore else */
506
- if (multiColumn) {
507
- for (let i = 0, n = multiColumn.length; i < n; i++) {
508
- for (let tile of multiColumn[i].tiles) {
509
- this.getTileOrRemoveFromLayout(tile);
510
- }
511
- }
512
- }
513
- }
514
- }
515
- SkyTileDashboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardService, deps: [{ token: i1.DragulaService }, { token: i2.SkyMediaQueryService }, { token: i2.SkyUIConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
516
- SkyTileDashboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardService });
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardService, decorators: [{
518
- type: Injectable
519
- }], ctorParameters: function () { return [{ type: i1.DragulaService }, { type: i2.SkyMediaQueryService }, { type: i2.SkyUIConfigService }]; }, propDecorators: { dashboardInitialized: [{
520
- type: Output
521
- }] } });
522
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1kYXNoYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RpbGVzL3NyYy9tb2R1bGVzL3RpbGVzL3RpbGUtZGFzaGJvYXJkL3RpbGUtZGFzaGJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixVQUFVLEVBRVYsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUNMLG1CQUFtQixHQUdwQixNQUFNLGFBQWEsQ0FBQzs7OztBQWNyQixNQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUVuRCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFHbkIsTUFBTSxPQUFPLHVCQUF1QjtJQStCbEMsWUFDVSxjQUE4QixFQUM5QixVQUFnQyxFQUNoQyxlQUFtQztRQUZuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBNUI3Qzs7V0FFRztRQUNJLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFFakU7O1dBRUc7UUFFSSx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBcUJyRCxJQUFJLENBQUMsS0FBSyxHQUFHLHlCQUF5QixHQUFHLEVBQUUsVUFBVSxDQUFDO1FBRXRELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQ1QsTUFBOEIsRUFDOUIsT0FBb0QsRUFDcEQsWUFBOEMsRUFDOUMsV0FBb0I7UUFFcEIsSUFBSSxXQUFXLEVBQUU7WUFDZixnRkFBZ0Y7WUFDaEYseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUUvQixJQUFJLENBQUMsZUFBZTtpQkFDakIsU0FBUyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUM7aUJBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUNSLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO29CQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO29CQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRXBDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO29CQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztvQkFDakMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7aUJBQy9CO3FCQUFNO29CQUNMLDZDQUE2QztvQkFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUNwRDtZQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNiLGlFQUFpRTtnQkFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FDRixDQUFDO1NBQ0w7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQ3JCLElBQXNDLEVBQ3RDLFNBQTRCO1FBRTVCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7UUFFaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxJQUFzQjtRQUMzQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLFVBQVUsRUFBRTtZQUNkLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQztTQUMvQjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBQyxXQUFvQjtRQUM5Qyx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNqRCxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDakQsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztpQkFDaEM7YUFDRjtZQUNELEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7YUFDaEM7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdCQUFnQixDQUFDLElBQXNCLEVBQUUsV0FBb0I7UUFDbEUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFckQsSUFBSSxVQUFVLEVBQUU7WUFDZCxVQUFVLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUVyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CLENBQ3pCLFVBQTRDO1FBRTVDLElBQUksVUFBVSxFQUFFO1lBQ2QsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDbEMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEVBQUU7b0JBQzdCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDM0I7YUFDRjtTQUNGO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsY0FBdUI7UUFDN0MseUJBQXlCO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUMvQjtTQUNGO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsTUFBYztRQUNwQyxLQUFLLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDN0MsSUFDRSxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO2dCQUMvRCxNQUFNLEVBQ047Z0JBQ0EsT0FBTyxhQUFhLENBQUM7YUFDdEI7U0FDRjtRQUVELHlCQUF5QjtRQUN6QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1oseUJBQXlCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUN0QixPQUF5QixFQUN6QixTQUFpQixFQUNqQixlQUF1QjtRQUV2QixNQUFNLGtCQUFrQixHQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUVyRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakMsSUFBSSxNQUEwQyxDQUFDO1FBQy9DLElBQUksUUFBZ0IsQ0FBQztRQUNyQixJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7U0FDMUM7YUFBTTtZQUNMLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUNqRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FDNUIsQ0FBQztTQUNIO1FBRUQsSUFDRSxDQUFDLFNBQVMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLE9BQU8sQ0FBQztZQUMvQyxDQUFDLGtCQUFrQixFQUNuQjtZQUNBLElBQUksUUFBUSxHQUFHLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUVwRSxJQUFJLFNBQVMsRUFBRTtnQkFDYiw2Q0FBNkM7Z0JBQzdDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsRUFBRTtvQkFDbEUsSUFBSTtpQkFDTCxDQUFDLENBQUM7Z0JBRUgscUNBQXFDO2dCQUNyQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMvQixZQUFZLENBQUMsU0FBUyxHQUFHO29CQUN2QixlQUFlLEVBQ2IsZUFBZSxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN2RCxNQUFNLEVBQUUsUUFBUSxHQUFHLFFBQVEsR0FBRyxDQUFDO29CQUMvQixRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNO2lCQUNqQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7YUFBTTtZQUNMLElBQUksUUFBUSxHQUFHLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFELElBQUkscUJBQXFCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUU7Z0JBQzlELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUU5Qix5QkFBeUI7Z0JBQ3pCLElBQUksUUFBaUIsQ0FBQztnQkFDdEIsSUFBSSxrQkFBa0IsRUFBRTtvQkFDdEIsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNoRDtxQkFBTTtvQkFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQy9EO2dCQUVELHdDQUF3QztnQkFDeEMsSUFBSSxRQUFRLEdBQUcsUUFBUSxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbkQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3BFO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxZQUFZLENBQ25CLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUM1RCxRQUFRLENBQUMsYUFBYSxDQUMxQixDQUFDO2lCQUNIO2dCQUVELHFDQUFxQztnQkFDckMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDL0IsWUFBWSxDQUFDLFNBQVMsR0FBRztvQkFDdkIsZUFBZSxFQUNiLGVBQWUsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdkQsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDO29CQUNyRCxRQUFRLEVBQUUsUUFBUSxHQUFHLFFBQVEsR0FBRyxDQUFDO2lCQUNsQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLElBQXNCO1FBQ3RDLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDdkMsSUFBSSxNQUFjLENBQUM7WUFFbkIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1QsTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRXZDLElBQUksTUFBTSxFQUFFO29CQUNWLE9BQU8sTUFBTSxDQUFDO2lCQUNmO2dCQUVELEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ3ZCO1NBQ0Y7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8seUJBQXlCLENBQy9CLFVBQTRDO1FBRTVDLHlCQUF5QjtRQUN6QixJQUFJLFVBQVUsRUFBRTtZQUNkLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xDLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxFQUFFO29CQUM3QixPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1lBRUQsNkdBQTZHO1lBQzdHLHlCQUF5QjtZQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUs7b0JBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMxQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUNwQyxDQUFDO2FBQ0w7WUFFRCx5QkFBeUI7WUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELHlCQUF5QjtRQUN6QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRWhDLElBQ0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEtBQUssbUJBQW1CLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLEVBQ2xEO1lBQ0EsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDbEQ7U0FDRjthQUFNO1lBQ0wsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekQsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV4QixLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN2QzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQ3hCLE1BQXVDLEVBQ3ZDLFVBQTRDO1FBRTVDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV0RCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3ZDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLElBQUksRUFBRSxDQUFDO1lBRWhFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLFNBQVM7Z0JBQ1QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2FBQ3hCLENBQUMsQ0FBQztZQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQ2pELE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7WUFFRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRWhELGtGQUFrRjtZQUNsRix3Q0FBd0M7WUFDeEMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQ3RDLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUNuRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXJDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLE1BQXVDLEVBQ3ZDLFdBQStDO1FBRS9DLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsS0FBSyxJQUFJLFVBQVUsSUFBSSxXQUFXLEVBQUU7WUFDbEMsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWpFLHlCQUF5QjtZQUN6QixJQUFJLHFCQUFxQixFQUFFO2dCQUN6QixRQUFRLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNwRTtTQUNGO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6Qix5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN4QixNQUFNLEVBQUU7b0JBQ04sWUFBWSxFQUFFLElBQUksQ0FBQywrQkFBK0IsRUFBRTtvQkFDcEQsV0FBVyxFQUFFLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtpQkFDbkQ7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLG1CQUFtQixDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEtBQUssbUJBQW1CLENBQUMsRUFBRSxFQUNsRDtZQUNBLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDOUQsQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVPLDhCQUE4QjtRQUNwQyxJQUNFLENBQUMsQ0FDQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FDbkQsRUFDRDtZQUNBLElBQUksYUFBYSxHQUF5QyxFQUFFLENBQUM7WUFDN0QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVyQyxLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDaEMsSUFBSSxZQUFZLEdBQXVDO3dCQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNuRCxDQUFDO29CQUVGLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7WUFFRCxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxZQUFZLENBQUMsRUFBVztRQUM5QixJQUFJLE9BQU8sR0FBUSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLFdBQVcsR0FBdUMsRUFBRSxDQUFDO1FBRXpELHlCQUF5QjtRQUN6QixJQUFJLE9BQU8sRUFBRTtZQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFakMseUJBQXlCO2dCQUN6QixJQUFJLElBQUksRUFBRTtvQkFDUixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QjthQUNGO1NBQ0Y7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FDaEQsQ0FBQyxJQUF5QixFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbkIsSUFBSSxLQUFLLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxJQUFJLEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUNuRSxDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDekMsS0FBSyxFQUFFLENBQUMsRUFBZSxFQUFFLFNBQXNCLEVBQUUsTUFBbUIsRUFBRSxFQUFFO2dCQUN0RSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3pELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFFeEMseUJBQXlCO1lBQ3pCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDNUI7Z0JBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsTUFBdUM7UUFDekQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQ3pELENBQUM7SUFFTyxRQUFRLENBQUMsTUFBYztRQUM3Qix5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNqRCxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDakQseUJBQXlCO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ2hCLEtBQUssSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTt3QkFDN0IsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sRUFBRTs0QkFDdEIsT0FBTyxJQUFJLENBQUM7eUJBQ2I7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjO1FBQ25DLHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ2pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDeEMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUNyRSxDQUFDO1NBQ0g7UUFFRCx5QkFBeUI7UUFDekIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGNBQWMsQ0FDcEIsTUFBOEIsRUFDOUIsT0FBbUQsRUFDbkQsWUFBNkM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUE4QjtRQUNsRCxJQUFJLENBQUMsZUFBZTthQUNqQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQzFCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUN6RCxDQUFDO2FBQ0QsU0FBUyxDQUNSLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFDUixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsWUFBc0I7UUFDN0MsMkZBQTJGO1FBQzNGLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRXpELDZDQUE2QztRQUM3Qyx5QkFBeUI7UUFDekIsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2Qix5QkFBeUI7WUFDekIsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUN4QixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7b0JBQ3RCLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO29CQUMzQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsRUFBRTs0QkFDaEMsYUFBYSxHQUFHLEtBQUssQ0FBQzs0QkFDdEIsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO3lCQUM5QjtvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDSCxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDcEMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO3dCQUNYLFdBQVcsRUFBRSxLQUFLO3FCQUNuQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELHlCQUF5QjtZQUN6QixJQUFJLFlBQVksRUFBRTtnQkFDaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUN4QixZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxZQUFZLEVBQUU7WUFDaEIsS0FBSyxJQUFJLElBQUksSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUNuQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEM7U0FDRjtRQUVELHlCQUF5QjtRQUN6QixJQUFJLFdBQVcsRUFBRTtZQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xELEtBQUssSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtvQkFDckMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN0QzthQUNGO1NBQ0Y7SUFDSCxDQUFDOztxSEFycUJVLHVCQUF1Qjt5SEFBdkIsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7eUtBZ0JGLG9CQUFvQjtzQkFEMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RhYmxlLFxuICBRdWVyeUxpc3QsXG4gIE91dHB1dCxcbiAgSW5qZWN0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEcmFndWxhU2VydmljZSB9IGZyb20gJ25nMi1kcmFndWxhJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreU1lZGlhQnJlYWtwb2ludHMsXG4gIFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxuICBTa3lVSUNvbmZpZ1NlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU2t5VGlsZUNvbXBvbmVudCB9IGZyb20gJy4uL3RpbGUvdGlsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBTa3lUaWxlRGFzaGJvYXJkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vdGlsZS1kYXNoYm9hcmQtY29sdW1uL3RpbGUtZGFzaGJvYXJkLWNvbHVtbi5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnIH0gZnJvbSAnLi4vdGlsZS1kYXNoYm9hcmQtY29uZmlnL3RpbGUtZGFzaGJvYXJkLWNvbmZpZyc7XG5cbmltcG9ydCB7IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRDb2x1bW4gfSBmcm9tICcuLi90aWxlLWRhc2hib2FyZC1jb25maWcvdGlsZS1kYXNoYm9hcmQtY29uZmlnLWxheW91dC1jb2x1bW4nO1xuXG5pbXBvcnQgeyBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0VGlsZSB9IGZyb20gJy4uL3RpbGUtZGFzaGJvYXJkLWNvbmZpZy90aWxlLWRhc2hib2FyZC1jb25maWctbGF5b3V0LXRpbGUnO1xuXG5pbXBvcnQgeyBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnVGlsZSB9IGZyb20gJy4uL3RpbGUtZGFzaGJvYXJkLWNvbmZpZy90aWxlLWRhc2hib2FyZC1jb25maWctdGlsZSc7XG5cbmNvbnN0IEFUVFJfVElMRV9JRCA9ICdfc2t5LXRpbGUtZGFzaGJvYXJkLXRpbGUtaWQnO1xuXG5sZXQgYmFnSWRJbmRleCA9IDA7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUaWxlRGFzaGJvYXJkU2VydmljZSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBiYWdJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBjb25maWdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRpbGVEYXNoYm9hcmRDb25maWc+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHRpbGUgZGFzaGJvYXJkJ3MgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGRhc2hib2FyZEluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgdGlsZUNvbXBvbmVudHM6IENvbXBvbmVudFJlZjxhbnk+W107XG5cbiAgcHJpdmF0ZSBjb25maWc6IFNreVRpbGVEYXNoYm9hcmRDb25maWc7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0Q29uZmlnOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnO1xuXG4gIHByaXZhdGUgY29sdW1uczogUXVlcnlMaXN0PFNreVRpbGVEYXNoYm9hcmRDb2x1bW5Db21wb25lbnQ+O1xuXG4gIHByaXZhdGUgc2luZ2xlQ29sdW1uOiBTa3lUaWxlRGFzaGJvYXJkQ29sdW1uQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgbWVkaWFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHNldHRpbmdzS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkcmFndWxhU2VydmljZTogRHJhZ3VsYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYVF1ZXJ5OiBTa3lNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICBwcml2YXRlIHVpQ29uZmlnU2VydmljZTogU2t5VUlDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYmFnSWQgPSAnc2t5LXRpbGUtZGFzaGJvYXJkLWJhZy0nICsgKytiYWdJZEluZGV4O1xuXG4gICAgdGhpcy5pbml0RHJhZ3VsYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGluaXQoXG4gICAgY29uZmlnOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnLFxuICAgIGNvbHVtbnM/OiBRdWVyeUxpc3Q8U2t5VGlsZURhc2hib2FyZENvbHVtbkNvbXBvbmVudD4sXG4gICAgc2luZ2xlQ29sdW1uPzogU2t5VGlsZURhc2hib2FyZENvbHVtbkNvbXBvbmVudCxcbiAgICBzZXR0aW5nc0tleT86IHN0cmluZ1xuICApIHtcbiAgICBpZiAoc2V0dGluZ3NLZXkpIHtcbiAgICAgIC8vIENsb25lIHRoaXMgc28gY2hhbmdlcyB0byB0aGUgY29uZmlnIG9iamVjdCBvdXRzaWRlIG9mIHRoaXMgY2xhc3MgZG9uJ3QgbW9kaWZ5XG4gICAgICAvLyB0aGUgY29uZmlnIHVzZWQgaW5zaWRlIGFuZCB2aWNlIHZlcnNhLlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuXG4gICAgICB0aGlzLnNldHRpbmdzS2V5ID0gc2V0dGluZ3NLZXk7XG5cbiAgICAgIHRoaXMudWlDb25maWdTZXJ2aWNlXG4gICAgICAgIC5nZXRDb25maWcoc2V0dGluZ3NLZXksIGNvbmZpZylcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLnBlcnNpc3RlZCkge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5sYXlvdXQgPSB2YWx1ZS5sYXlvdXQ7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JOZXdUaWxlcyh2YWx1ZS50aWxlSWRzKTtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG5cbiAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDb2x1bW4gPSBzaW5nbGVDb2x1bW47XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tSZWFkeUFuZExvYWRUaWxlcygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gQmFkIGRhdGEsIG9yIGNvbmZpZyBpcyB0aGUgZGVmYXVsdCBjb25maWcuXG4gICAgICAgICAgICAgIHRoaXMuaW5pdFRvRGVmYXVsdHMoY29uZmlnLCBjb2x1bW5zLCBzaW5nbGVDb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIENvbmZpZyBzZXR0aW5nIGtleSBkb2Vzbid0IGV4aXN0IG9yIG90aGVyIGNvbmZpZyBzZXJ2aWNlIGVycm9yXG4gICAgICAgICAgICB0aGlzLmluaXRUb0RlZmF1bHRzKGNvbmZpZywgY29sdW1ucywgc2luZ2xlQ29sdW1uKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdFRvRGVmYXVsdHMoY29uZmlnLCBjb2x1bW5zLCBzaW5nbGVDb2x1bW4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHRpbGUgdG8gdGhlIHRpbGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gdGlsZSBTcGVjaWZpZXMgdGhlIHRpbGUgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIGNvbXBvbmVudCBTcGVjaWZpZXMgdGhlIHRpbGUgY29tcG9uZW50IHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRUaWxlQ29tcG9uZW50KFxuICAgIHRpbGU6IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRUaWxlLFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50UmVmPGFueT5cbiAgKSB7XG4gICAgdGhpcy50aWxlQ29tcG9uZW50cyA9IHRoaXMudGlsZUNvbXBvbmVudHMgfHwgW107XG5cbiAgICB0aGlzLnRpbGVDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcblxuICAgIGNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX1RJTEVfSUQsIHRpbGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgc3BlY2lmaWVkIHRpbGUgaXMgY29sbGFwc2VkLlxuICAgKiBAcGFyYW0gdGlsZSBTcGVjaWZpZXMgdGhlIHRpbGUgY29tcG9uZW50IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIHRpbGVJc0NvbGxhcHNlZCh0aWxlOiBTa3lUaWxlQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgbGV0IHRpbGVDb25maWcgPSB0aGlzLmZpbmRUaWxlKHRoaXMuZ2V0VGlsZUlkKHRpbGUpKTtcblxuICAgIGlmICh0aWxlQ29uZmlnKSB7XG4gICAgICByZXR1cm4gdGlsZUNvbmZpZy5pc0NvbGxhcHNlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbGxhcHNlZCBzdGF0ZSBvZiBhbGwgdGlsZXMuXG4gICAqIEBwYXJhbSBpc0NvbGxhcHNlZCBJbmRpY2F0ZXMgd2hldGhlciB0aWxlcyBhcmUgY29sbGFwc2VkLlxuICAgKi9cbiAgcHVibGljIHNldEFsbFRpbGVzQ29sbGFwc2VkKGlzQ29sbGFwc2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5sYXlvdXQubXVsdGlDb2x1bW4pIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiBvZiB0aGlzLmNvbmZpZy5sYXlvdXQubXVsdGlDb2x1bW4pIHtcbiAgICAgICAgZm9yIChsZXQgdGlsZSBvZiBjb2x1bW4udGlsZXMpIHtcbiAgICAgICAgICB0aWxlLmlzQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAobGV0IHRpbGUgb2YgdGhpcy5jb25maWcubGF5b3V0LnNpbmdsZUNvbHVtbi50aWxlcykge1xuICAgICAgICB0aWxlLmlzQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3NLZXkpIHtcbiAgICAgIHRoaXMuc2V0VXNlckNvbmZpZyh0aGlzLmNvbmZpZyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29sbGFwc2VkIHN0YXRlIG9mIGEgc3BlY2lmaWVkIHRpbGUuXG4gICAqIEBwYXJhbSB0aWxlIFNwZWNpZmllcyB0aGUgdGlsZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBpc0NvbGxhcHNlZCBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdGlsZSBpcyBjb2xsYXBzZWQuXG4gICAqL1xuICBwdWJsaWMgc2V0VGlsZUNvbGxhcHNlZCh0aWxlOiBTa3lUaWxlQ29tcG9uZW50LCBpc0NvbGxhcHNlZDogYm9vbGVhbikge1xuICAgIGxldCB0aWxlQ29uZmlnID0gdGhpcy5maW5kVGlsZSh0aGlzLmdldFRpbGVJZCh0aWxlKSk7XG5cbiAgICBpZiAodGlsZUNvbmZpZykge1xuICAgICAgdGlsZUNvbmZpZy5pc0NvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xuXG4gICAgICBpZiAodGhpcy5zZXR0aW5nc0tleSkge1xuICAgICAgICB0aGlzLnNldFVzZXJDb25maWcodGhpcy5jb25maWcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbmZpZ0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0VGlsZUNvbXBvbmVudFR5cGUoXG4gICAgbGF5b3V0VGlsZTogU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dFRpbGVcbiAgKTogYW55IHtcbiAgICBpZiAobGF5b3V0VGlsZSkge1xuICAgICAgZm9yIChsZXQgdGlsZSBvZiB0aGlzLmNvbmZpZy50aWxlcykge1xuICAgICAgICBpZiAodGlsZS5pZCA9PT0gbGF5b3V0VGlsZS5pZCkge1xuICAgICAgICAgIHJldHVybiB0aWxlLmNvbXBvbmVudFR5cGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGNoYW5nZUNvbHVtbk1vZGUoaXNTaW5nbGVDb2x1bW46IGJvb2xlYW4pIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICBpZiAoaXNTaW5nbGVDb2x1bW4pIHtcbiAgICAgICAgdGhpcy5tb3ZlVGlsZXNUb1NpbmdsZUNvbHVtbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlVGlsZXNUb011bHRpQ29sdW1uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGdldFRpbGVDb21wb25lbnQodGlsZUlkOiBzdHJpbmcpOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgZm9yIChsZXQgdGlsZUNvbXBvbmVudCBvZiB0aGlzLnRpbGVDb21wb25lbnRzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRpbGVDb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoQVRUUl9USUxFX0lEKSA9PT1cbiAgICAgICAgdGlsZUlkXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRpbGVDb21wb25lbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMubWVkaWFTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubWVkaWFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbW92ZVRpbGVPbktleURvd24oXG4gICAgdGlsZUNtcDogU2t5VGlsZUNvbXBvbmVudCxcbiAgICBkaXJlY3Rpb246IHN0cmluZyxcbiAgICB0aWxlRGVzY3JpcHRpb246IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBpc1NpbmdsZUNvbHVtbk1vZGUgPVxuICAgICAgdGhpcy5tZWRpYVF1ZXJ5LmN1cnJlbnQgPT09IFNreU1lZGlhQnJlYWtwb2ludHMueHMgfHxcbiAgICAgIHRoaXMubWVkaWFRdWVyeS5jdXJyZW50ID09PSBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtO1xuXG4gICAgbGV0IHRpbGVJZCA9IHRoaXMuZ2V0VGlsZUlkKHRpbGVDbXApO1xuICAgIGxldCB0aWxlID0gdGhpcy5maW5kVGlsZSh0aWxlSWQpO1xuXG4gICAgbGV0IGNvbHVtbjogU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dENvbHVtbjtcbiAgICBsZXQgY29sSW5kZXg6IG51bWJlcjtcbiAgICBpZiAoaXNTaW5nbGVDb2x1bW5Nb2RlKSB7XG4gICAgICBjb2x1bW4gPSB0aGlzLmNvbmZpZy5sYXlvdXQuc2luZ2xlQ29sdW1uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2x1bW4gPSB0aGlzLmZpbmRUaWxlQ29sdW1uKHRpbGVJZCk7XG4gICAgICBjb2xJbmRleCA9IHRoaXMuY29uZmlnLmxheW91dC5tdWx0aUNvbHVtbi5maW5kSW5kZXgoXG4gICAgICAgICh2YWx1ZSkgPT4gdmFsdWUgPT09IGNvbHVtblxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoZGlyZWN0aW9uID09PSAnbGVmdCcgfHwgZGlyZWN0aW9uID09PSAncmlnaHQnKSAmJlxuICAgICAgIWlzU2luZ2xlQ29sdW1uTW9kZVxuICAgICkge1xuICAgICAgbGV0IG9wZXJhdG9yID0gZGlyZWN0aW9uID09PSAnbGVmdCcgPyAtMSA6IDE7XG4gICAgICBsZXQgbmV3Q29sdW1uID0gdGhpcy5jb25maWcubGF5b3V0Lm11bHRpQ29sdW1uW2NvbEluZGV4ICsgb3BlcmF0b3JdO1xuXG4gICAgICBpZiAobmV3Q29sdW1uKSB7XG4gICAgICAgIC8vIE1vdmUgdGhlIHRpbGUgdG8gdGhlIGVuZCBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4udGlsZXMucHVzaCh0aWxlKTtcbiAgICAgICAgY29sdW1uLnRpbGVzID0gY29sdW1uLnRpbGVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gdGlsZSk7XG4gICAgICAgIHRoaXMubW92ZVRpbGVzVG9Db2x1bW4odGhpcy5jb2x1bW5zLnRvQXJyYXkoKVtjb2xJbmRleCArIG9wZXJhdG9yXSwgW1xuICAgICAgICAgIHRpbGUsXG4gICAgICAgIF0pO1xuXG4gICAgICAgIC8vIFJlcG9ydCB0aGUgY2hhbmdlIGluIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgbGV0IHJlcG9ydENvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgICByZXBvcnRDb25maWcubW92ZWRUaWxlID0ge1xuICAgICAgICAgIHRpbGVEZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIHRpbGVEZXNjcmlwdGlvbiB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB0aWxlLmlkLFxuICAgICAgICAgIGNvbHVtbjogY29sSW5kZXggKyBvcGVyYXRvciArIDEsXG4gICAgICAgICAgcG9zaXRpb246IG5ld0NvbHVtbi50aWxlcy5sZW5ndGgsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQocmVwb3J0Q29uZmlnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG9wZXJhdG9yID0gZGlyZWN0aW9uID09PSAndXAnID8gLTEgOiAxO1xuICAgICAgbGV0IGN1ckluZGV4ID0gY29sdW1uLnRpbGVzLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlLmlkID09PSB0aWxlLmlkKTtcbiAgICAgIGxldCB0aWxlQ29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLmdldFRpbGVDb21wb25lbnQodGlsZUlkKTtcblxuICAgICAgaWYgKHRpbGVDb21wb25lbnRJbnN0YW5jZSAmJiBjb2x1bW4udGlsZXNbY3VySW5kZXggKyBvcGVyYXRvcl0pIHtcbiAgICAgICAgbGV0IHRlbXAgPSBjb2x1bW4udGlsZXNbY3VySW5kZXggKyBvcGVyYXRvcl07XG4gICAgICAgIGNvbHVtbi50aWxlc1tjdXJJbmRleCArIG9wZXJhdG9yXSA9IHRpbGU7XG4gICAgICAgIGNvbHVtbi50aWxlc1tjdXJJbmRleF0gPSB0ZW1wO1xuXG4gICAgICAgIC8vIEdldCB0aGUgY29sdW1uIGVsZW1lbnRcbiAgICAgICAgbGV0IGNvbHVtbkVsOiBFbGVtZW50O1xuICAgICAgICBpZiAoaXNTaW5nbGVDb2x1bW5Nb2RlKSB7XG4gICAgICAgICAgY29sdW1uRWwgPSB0aGlzLmdldENvbHVtbkVsKHRoaXMuc2luZ2xlQ29sdW1uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW5FbCA9IHRoaXMuZ2V0Q29sdW1uRWwodGhpcy5jb2x1bW5zLnRvQXJyYXkoKVtjb2xJbmRleF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTW92ZSB0aGUgdGlsZSBlbGVtZW50IGluIHRoZSBkb2N1bWVudFxuICAgICAgICBpZiAoY3VySW5kZXggKyBvcGVyYXRvciA9PT0gY29sdW1uLnRpbGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBjb2x1bW5FbC5hcHBlbmRDaGlsZCh0aWxlQ29tcG9uZW50SW5zdGFuY2UubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sdW1uRWwuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgdGlsZUNvbXBvbmVudEluc3RhbmNlLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLmdldFRpbGVDb21wb25lbnQoY29sdW1uLnRpbGVzW2N1ckluZGV4ICsgb3BlcmF0b3IgKyAxXS5pZClcbiAgICAgICAgICAgICAgLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwb3J0IHRoZSBjaGFuZ2UgaW4gY29uZmlndXJhdGlvblxuICAgICAgICBsZXQgcmVwb3J0Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICAgIHJlcG9ydENvbmZpZy5tb3ZlZFRpbGUgPSB7XG4gICAgICAgICAgdGlsZURlc2NyaXB0aW9uOlxuICAgICAgICAgICAgdGlsZURlc2NyaXB0aW9uIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHRpbGUuaWQsXG4gICAgICAgICAgY29sdW1uOiBpc1NpbmdsZUNvbHVtbk1vZGUgPyB1bmRlZmluZWQgOiBjb2xJbmRleCArIDEsXG4gICAgICAgICAgcG9zaXRpb246IGN1ckluZGV4ICsgb3BlcmF0b3IgKyAxLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbmZpZ0NoYW5nZS5lbWl0KHJlcG9ydENvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaWxlSWQodGlsZTogU2t5VGlsZUNvbXBvbmVudCk6IHN0cmluZyB7XG4gICAgaWYgKHRpbGUpIHtcbiAgICAgIGxldCBlbCA9IHRpbGUuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgbGV0IHRpbGVJZDogc3RyaW5nO1xuXG4gICAgICB3aGlsZSAoZWwpIHtcbiAgICAgICAgdGlsZUlkID0gZWwuZ2V0QXR0cmlidXRlKEFUVFJfVElMRV9JRCk7XG5cbiAgICAgICAgaWYgKHRpbGVJZCkge1xuICAgICAgICAgIHJldHVybiB0aWxlSWQ7XG4gICAgICAgIH1cblxuICAgICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGlsZU9yUmVtb3ZlRnJvbUxheW91dChcbiAgICBsYXlvdXRUaWxlOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0VGlsZVxuICApOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnVGlsZSB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChsYXlvdXRUaWxlKSB7XG4gICAgICBmb3IgKGxldCB0aWxlIG9mIHRoaXMuY29uZmlnLnRpbGVzKSB7XG4gICAgICAgIGlmICh0aWxlLmlkID09PSBsYXlvdXRUaWxlLmlkKSB7XG4gICAgICAgICAgcmV0dXJuIHRpbGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIGxheW91dCB0aWxlIHdhcyBub3QgZm91bmQgaW4gdGhlIGxpc3Qgb2YgdGlsZXMsIGl0IHdhcyByZW1vdmVkIHNpbmNlIGxhc3QgdGhlIHVzZXIgdXBkYXRlZCBzZXR0aW5nc1xuICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmxheW91dC5zaW5nbGVDb2x1bW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcubGF5b3V0LnNpbmdsZUNvbHVtbi50aWxlcyA9XG4gICAgICAgICAgdGhpcy5jb25maWcubGF5b3V0LnNpbmdsZUNvbHVtbi50aWxlcy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlbSkgPT4gZWxlbS5pZCAhPT0gbGF5b3V0VGlsZS5pZFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5sYXlvdXQubXVsdGlDb2x1bW4pIHtcbiAgICAgICAgdGhpcy5jb25maWcubGF5b3V0Lm11bHRpQ29sdW1uLmZvckVhY2goKGVsZW0pID0+IHtcbiAgICAgICAgICBlbGVtLnRpbGVzID0gZWxlbS50aWxlcy5maWx0ZXIoKHJlcykgPT4gcmVzLmlkICE9PSBsYXlvdXRUaWxlLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUmVhZHlBbmRMb2FkVGlsZXMoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29sdW1ucykge1xuICAgICAgdGhpcy5sb2FkVGlsZXMoKTtcbiAgICAgIHRoaXMuaW5pdE1lZGlhUXVlcmllcygpO1xuICAgICAgdGhpcy5kYXNoYm9hcmRJbml0aWFsaXplZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkVGlsZXMoKSB7XG4gICAgbGV0IGxheW91dCA9IHRoaXMuY29uZmlnLmxheW91dDtcblxuICAgIGlmIChcbiAgICAgIHRoaXMubWVkaWFRdWVyeS5jdXJyZW50ID09PSBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzIHx8XG4gICAgICB0aGlzLm1lZGlhUXVlcnkuY3VycmVudCA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy5zbVxuICAgICkge1xuICAgICAgZm9yIChsZXQgdGlsZSBvZiBsYXlvdXQuc2luZ2xlQ29sdW1uLnRpbGVzKSB7XG4gICAgICAgIHRoaXMubG9hZFRpbGVJbnRvQ29sdW1uKHRoaXMuc2luZ2xlQ29sdW1uLCB0aWxlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMudG9BcnJheSgpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxheW91dC5tdWx0aUNvbHVtbi5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgbGV0IGNvbHVtbiA9IGNvbHVtbnNbaV07XG5cbiAgICAgICAgZm9yIChsZXQgdGlsZSBvZiBsYXlvdXQubXVsdGlDb2x1bW5baV0udGlsZXMpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaWxlSW50b0NvbHVtbihjb2x1bW4sIHRpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkVGlsZUludG9Db2x1bW4oXG4gICAgY29sdW1uOiBTa3lUaWxlRGFzaGJvYXJkQ29sdW1uQ29tcG9uZW50LFxuICAgIGxheW91dFRpbGU6IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRUaWxlXG4gICkge1xuICAgIGxldCB0aWxlID0gdGhpcy5nZXRUaWxlT3JSZW1vdmVGcm9tTGF5b3V0KGxheW91dFRpbGUpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aWxlKSB7XG4gICAgICBsZXQgY29tcG9uZW50VHlwZSA9IHRpbGUuY29tcG9uZW50VHlwZTtcbiAgICAgIGxldCBwcm92aWRlcnMgPSB0aWxlLnByb3ZpZGVycyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB8fCBbXTtcblxuICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgIHBhcmVudDogY29sdW1uLmluamVjdG9yLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBjb2x1bW4ucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50VHlwZSk7XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb2x1bW4uY29udGVudC5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIGZhY3RvcnksXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgaW5qZWN0b3JcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuYWRkVGlsZUNvbXBvbmVudChsYXlvdXRUaWxlLCBjb21wb25lbnRSZWYpO1xuXG4gICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbXBvbmVudCBpcyBtYXJrZWQgZm9yIGNoYW5nZXMgaW4gY2FzZSB0aGUgcGFyZW50IGNvbXBvbmVudCB1c2VzXG4gICAgICAvLyB0aGUgT25QdXNoIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kuXG4gICAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlVGlsZXNUb1NpbmdsZUNvbHVtbigpIHtcbiAgICB0aGlzLm1vdmVUaWxlc1RvQ29sdW1uKFxuICAgICAgdGhpcy5zaW5nbGVDb2x1bW4sXG4gICAgICB0aGlzLmNvbmZpZy5sYXlvdXQuc2luZ2xlQ29sdW1uLnRpbGVzXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZVRpbGVzVG9NdWx0aUNvbHVtbigpIHtcbiAgICBsZXQgbGF5b3V0Q29sdW1ucyA9IHRoaXMuY29uZmlnLmxheW91dC5tdWx0aUNvbHVtbjtcbiAgICBsZXQgY29sdW1ucyA9IHRoaXMuY29sdW1ucy50b0FycmF5KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxheW91dENvbHVtbnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICB0aGlzLm1vdmVUaWxlc1RvQ29sdW1uKGNvbHVtbnNbaV0sIGxheW91dENvbHVtbnNbaV0udGlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW92ZVRpbGVzVG9Db2x1bW4oXG4gICAgY29sdW1uOiBTa3lUaWxlRGFzaGJvYXJkQ29sdW1uQ29tcG9uZW50LFxuICAgIGxheW91dFRpbGVzOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0VGlsZVtdXG4gICkge1xuICAgIGxldCBjb2x1bW5FbCA9IHRoaXMuZ2V0Q29sdW1uRWwoY29sdW1uKTtcblxuICAgIGZvciAobGV0IGxheW91dFRpbGUgb2YgbGF5b3V0VGlsZXMpIHtcbiAgICAgIGxldCB0aWxlQ29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLmdldFRpbGVDb21wb25lbnQobGF5b3V0VGlsZS5pZCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aWxlQ29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgICAgY29sdW1uRWwuYXBwZW5kQ2hpbGQodGlsZUNvbXBvbmVudEluc3RhbmNlLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnRm9yVUlTdGF0ZSgpOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgdGlsZXM6IHRoaXMuY29uZmlnLnRpbGVzLFxuICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICBzaW5nbGVDb2x1bW46IHRoaXMuZ2V0U2luZ2xlQ29sdW1uTGF5b3V0Rm9yVUlTdGF0ZSgpLFxuICAgICAgICAgIG11bHRpQ29sdW1uOiB0aGlzLmdldE11bHRpQ29sdW1uTGF5b3V0Rm9yVUlTdGF0ZSgpLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cblxuICBwcml2YXRlIGdldFNpbmdsZUNvbHVtbkxheW91dEZvclVJU3RhdGUoKTogU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dENvbHVtbiB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tZWRpYVF1ZXJ5LmN1cnJlbnQgPT09IFNreU1lZGlhQnJlYWtwb2ludHMueHMgfHxcbiAgICAgIHRoaXMubWVkaWFRdWVyeS5jdXJyZW50ID09PSBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aWxlczogdGhpcy5nZXRUaWxlc0luRWwodGhpcy5nZXRDb2x1bW5FbCh0aGlzLnNpbmdsZUNvbHVtbikpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWcubGF5b3V0LnNpbmdsZUNvbHVtbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TXVsdGlDb2x1bW5MYXlvdXRGb3JVSVN0YXRlKCk6IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRDb2x1bW5bXSB7XG4gICAgaWYgKFxuICAgICAgIShcbiAgICAgICAgdGhpcy5tZWRpYVF1ZXJ5LmN1cnJlbnQgPT09IFNreU1lZGlhQnJlYWtwb2ludHMueHMgfHxcbiAgICAgICAgdGhpcy5tZWRpYVF1ZXJ5LmN1cnJlbnQgPT09IFNreU1lZGlhQnJlYWtwb2ludHMuc21cbiAgICAgIClcbiAgICApIHtcbiAgICAgIGxldCBsYXlvdXRDb2x1bW5zOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0Q29sdW1uW10gPSBbXTtcbiAgICAgIGxldCBjb2x1bW5zID0gdGhpcy5jb2x1bW5zLnRvQXJyYXkoKTtcblxuICAgICAgZm9yIChsZXQgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbiAhPT0gdGhpcy5zaW5nbGVDb2x1bW4pIHtcbiAgICAgICAgICBsZXQgbGF5b3V0Q29sdW1uOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0Q29sdW1uID0ge1xuICAgICAgICAgICAgdGlsZXM6IHRoaXMuZ2V0VGlsZXNJbkVsKHRoaXMuZ2V0Q29sdW1uRWwoY29sdW1uKSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGxheW91dENvbHVtbnMucHVzaChsYXlvdXRDb2x1bW4pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsYXlvdXRDb2x1bW5zO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYXlvdXQubXVsdGlDb2x1bW47XG4gIH1cblxuICBwcml2YXRlIGdldFRpbGVzSW5FbChlbDogRWxlbWVudCk6IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRUaWxlW10ge1xuICAgIGxldCB0aWxlRWxzOiBhbnkgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKCdbJyArIEFUVFJfVElMRV9JRCArICddJyk7XG4gICAgbGV0IGxheW91dFRpbGVzOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0VGlsZVtdID0gW107XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRpbGVFbHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gdGlsZUVscy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgbGV0IHRpbGVFbCA9IHRpbGVFbHNbaV07XG4gICAgICAgIGxldCB0aWxlSWQgPSB0aWxlRWwuZ2V0QXR0cmlidXRlKEFUVFJfVElMRV9JRCk7XG4gICAgICAgIGxldCB0aWxlID0gdGhpcy5maW5kVGlsZSh0aWxlSWQpO1xuXG4gICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRpbGUpIHtcbiAgICAgICAgICBsYXlvdXRUaWxlcy5wdXNoKHRpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheW91dFRpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0TWVkaWFRdWVyaWVzKCkge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMubWVkaWFTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubWVkaWFTdWJzY3JpcHRpb24gPSB0aGlzLm1lZGlhUXVlcnkuc3Vic2NyaWJlKFxuICAgICAgICAoYXJnczogU2t5TWVkaWFCcmVha3BvaW50cykgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlQ29sdW1uTW9kZShcbiAgICAgICAgICAgIGFyZ3MgPT09IFNreU1lZGlhQnJlYWtwb2ludHMueHMgfHwgYXJncyA9PT0gU2t5TWVkaWFCcmVha3BvaW50cy5zbVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0RHJhZ3VsYSgpIHtcbiAgICB0aGlzLmRyYWd1bGFTZXJ2aWNlLnNldE9wdGlvbnModGhpcy5iYWdJZCwge1xuICAgICAgbW92ZXM6IChlbDogSFRNTEVsZW1lbnQsIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGhhbmRsZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZWwucXVlcnlTZWxlY3RvcignLnNreS10aWxlLWdyYWItaGFuZGxlJyk7XG4gICAgICAgIHJldHVybiB0YXJnZXQuY29udGFpbnMoaGFuZGxlKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmRyYWd1bGFTZXJ2aWNlLmRyb3Auc3Vic2NyaWJlKCh2YWx1ZTogYW55W10pID0+IHtcbiAgICAgIGxldCBjb25maWcgPSB0aGlzLmdldENvbmZpZ0ZvclVJU3RhdGUoKTtcblxuICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc0tleSkge1xuICAgICAgICAgIHRoaXMuc2V0VXNlckNvbmZpZyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdChjb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5FbChjb2x1bW46IFNreVRpbGVEYXNoYm9hcmRDb2x1bW5Db21wb25lbnQpOiBFbGVtZW50IHtcbiAgICByZXR1cm4gY29sdW1uLmNvbnRlbnQuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gIH1cblxuICBwcml2YXRlIGZpbmRUaWxlKHRpbGVJZDogc3RyaW5nKTogU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dFRpbGUge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcubGF5b3V0Lm11bHRpQ29sdW1uKSB7XG4gICAgICBmb3IgKGxldCBjb2x1bW4gb2YgdGhpcy5jb25maWcubGF5b3V0Lm11bHRpQ29sdW1uKSB7XG4gICAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGNvbHVtbi50aWxlcykge1xuICAgICAgICAgIGZvciAobGV0IHRpbGUgb2YgY29sdW1uLnRpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGlsZS5pZCA9PT0gdGlsZUlkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGZpbmRUaWxlQ29sdW1uKHRpbGVJZDogc3RyaW5nKTogU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dENvbHVtbiB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5sYXlvdXQubXVsdGlDb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYXlvdXQubXVsdGlDb2x1bW4uZmluZChcbiAgICAgICAgKGNvbCkgPT4gY29sLnRpbGVzICYmICEhY29sLnRpbGVzLmZpbmQoKHRpbGUpID0+IHRpbGUuaWQgPT09IHRpbGVJZClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRUb0RlZmF1bHRzKFxuICAgIGNvbmZpZzogU2t5VGlsZURhc2hib2FyZENvbmZpZyxcbiAgICBjb2x1bW5zOiBRdWVyeUxpc3Q8U2t5VGlsZURhc2hib2FyZENvbHVtbkNvbXBvbmVudD4sXG4gICAgc2luZ2xlQ29sdW1uOiBTa3lUaWxlRGFzaGJvYXJkQ29sdW1uQ29tcG9uZW50XG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5zaW5nbGVDb2x1bW4gPSBzaW5nbGVDb2x1bW47XG4gICAgdGhpcy5jaGVja1JlYWR5QW5kTG9hZFRpbGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFVzZXJDb25maWcoY29uZmlnOiBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnKSB7XG4gICAgdGhpcy51aUNvbmZpZ1NlcnZpY2VcbiAgICAgIC5zZXRDb25maWcodGhpcy5zZXR0aW5nc0tleSwge1xuICAgICAgICBsYXlvdXQ6IHRoaXMuY29uZmlnLmxheW91dCxcbiAgICAgICAgcGVyc2lzdGVkOiB0cnVlLFxuICAgICAgICB0aWxlSWRzOiB0aGlzLmRlZmF1bHRDb25maWcudGlsZXMubWFwKChlbGVtKSA9PiBlbGVtLmlkKSxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IHNhdmUgdGlsZSBkYXNoYm9hcmQgc2V0dGluZ3MuJyk7XG4gICAgICAgICAgY29uc29sZS53YXJuKGVycik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yTmV3VGlsZXMob2xkVXNlclRpbGVzOiBzdHJpbmdbXSkge1xuICAgIC8vIEdldCBhIGxpc3Qgb2YgdGlsZXMgdGhhdCBhcmUgaW4gdGhlIGNvbmZpZydzIGRlZmF1bHQgbGlzdCBidXQgbm90IGluIHRoZSB1c2VyJ3Mgc2V0dGluZ3NcbiAgICBsZXQgbmV3VGlsZXMgPSB0aGlzLmNvbmZpZy50aWxlcy5maWx0ZXIoKGVsZW0pID0+IHtcbiAgICAgIHJldHVybiBvbGRVc2VyVGlsZXMuaW5kZXhPZihlbGVtLmlkKSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgICBjb25zdCB7IG11bHRpQ29sdW1uLCBzaW5nbGVDb2x1bW4gfSA9IHRoaXMuY29uZmlnLmxheW91dDtcblxuICAgIC8vIEFwcGVuZCBuZXcgdGlsZXMgdG8gdGhlIGVuZCBvZiB0aGUgbGF5b3V0c1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAobmV3VGlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG11bHRpQ29sdW1uKSB7XG4gICAgICAgIG5ld1RpbGVzLmZvckVhY2goKGVsZW0pID0+IHtcbiAgICAgICAgICBsZXQgbG9jYXRpb25Ub0FkZCA9IDA7XG4gICAgICAgICAgbGV0IHNtYWxsZXN0ID0gbXVsdGlDb2x1bW5bMF0udGlsZXMubGVuZ3RoO1xuICAgICAgICAgIG11bHRpQ29sdW1uLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS50aWxlcy5sZW5ndGggPCBzbWFsbGVzdCkge1xuICAgICAgICAgICAgICBsb2NhdGlvblRvQWRkID0gaW5kZXg7XG4gICAgICAgICAgICAgIHNtYWxsZXN0ID0gaXRlbS50aWxlcy5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbXVsdGlDb2x1bW5bbG9jYXRpb25Ub0FkZF0udGlsZXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZWxlbS5pZCxcbiAgICAgICAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChzaW5nbGVDb2x1bW4pIHtcbiAgICAgICAgbmV3VGlsZXMuZm9yRWFjaCgoZWxlbSkgPT4ge1xuICAgICAgICAgIHNpbmdsZUNvbHVtbi50aWxlcy5wdXNoKHsgaWQ6IGVsZW0uaWQsIGlzQ29sbGFwc2VkOiBmYWxzZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChzaW5nbGVDb2x1bW4pIHtcbiAgICAgIGZvciAobGV0IHRpbGUgb2Ygc2luZ2xlQ29sdW1uLnRpbGVzKSB7XG4gICAgICAgIHRoaXMuZ2V0VGlsZU9yUmVtb3ZlRnJvbUxheW91dCh0aWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKG11bHRpQ29sdW1uKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbiA9IG11bHRpQ29sdW1uLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICBmb3IgKGxldCB0aWxlIG9mIG11bHRpQ29sdW1uW2ldLnRpbGVzKSB7XG4gICAgICAgICAgdGhpcy5nZXRUaWxlT3JSZW1vdmVGcm9tTGF5b3V0KHRpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { DragulaModule } from 'ng2-dragula';
4
- import { SkyTileDashboardColumnComponent } from './tile-dashboard-column.component';
5
- import * as i0 from "@angular/core";
6
- export class SkyTileDashboardColumnModule {
7
- }
8
- SkyTileDashboardColumnModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- SkyTileDashboardColumnModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, declarations: [SkyTileDashboardColumnComponent], imports: [CommonModule, DragulaModule], exports: [SkyTileDashboardColumnComponent] });
10
- SkyTileDashboardColumnModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, imports: [[CommonModule, DragulaModule]] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyTileDashboardColumnModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- declarations: [SkyTileDashboardColumnComponent],
15
- imports: [CommonModule, DragulaModule],
16
- exports: [SkyTileDashboardColumnComponent],
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1kYXNoYm9hcmQtY29sdW1uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RpbGVzL3NyYy9tb2R1bGVzL3RpbGVzL3RpbGUtZGFzaGJvYXJkLWNvbHVtbi90aWxlLWRhc2hib2FyZC1jb2x1bW4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBT3BGLE1BQU0sT0FBTyw0QkFBNEI7OzBIQUE1Qiw0QkFBNEI7MkhBQTVCLDRCQUE0QixpQkFKeEIsK0JBQStCLGFBQ3BDLFlBQVksRUFBRSxhQUFhLGFBQzNCLCtCQUErQjsySEFFOUIsNEJBQTRCLFlBSDlCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQzs0RkFHM0IsNEJBQTRCO2tCQUx4QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRHJhZ3VsYU1vZHVsZSB9IGZyb20gJ25nMi1kcmFndWxhJztcblxuaW1wb3J0IHsgU2t5VGlsZURhc2hib2FyZENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGlsZS1kYXNoYm9hcmQtY29sdW1uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVRpbGVEYXNoYm9hcmRDb2x1bW5Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEcmFndWxhTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreVRpbGVEYXNoYm9hcmRDb2x1bW5Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaWxlRGFzaGJvYXJkQ29sdW1uTW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1kYXNoYm9hcmQtY29uZmlnLWxheW91dC1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aWxlcy9zcmMvbW9kdWxlcy90aWxlcy90aWxlLWRhc2hib2FyZC1jb25maWcvdGlsZS1kYXNoYm9hcmQtY29uZmlnLWxheW91dC1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRUaWxlIH0gZnJvbSAnLi90aWxlLWRhc2hib2FyZC1jb25maWctbGF5b3V0LXRpbGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRDb2x1bW4ge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYFNreVRpbGVEYXNoYm9hcmRDb25maWdUaWxlYCBvYmplY3RzIHRoYXQgc3BlY2lmaWVzIHRoZVxuICAgKiB0aWxlcyB0byBpbmNsdWRlIGluIHRoZSBkYXNoYm9hcmQuXG4gICAqL1xuICB0aWxlczogU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dFRpbGVbXTtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1kYXNoYm9hcmQtY29uZmlnLWxheW91dC10aWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGlsZXMvc3JjL21vZHVsZXMvdGlsZXMvdGlsZS1kYXNoYm9hcmQtY29uZmlnL3RpbGUtZGFzaGJvYXJkLWNvbmZpZy1sYXlvdXQtdGlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0VGlsZSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIElEIG9mIGEgdGlsZSB0byBkaXNwbGF5IGluIHRoZSBkYXNoYm9hcmQuXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRpbGUgaXMgaW4gYSBjb2xsYXBzZWQgc3RhdGUuXG4gICAqL1xuICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1kYXNoYm9hcmQtY29uZmlnLWxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RpbGVzL3NyYy9tb2R1bGVzL3RpbGVzL3RpbGUtZGFzaGJvYXJkLWNvbmZpZy90aWxlLWRhc2hib2FyZC1jb25maWctbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0Q29sdW1uIH0gZnJvbSAnLi90aWxlLWRhc2hib2FyZC1jb25maWctbGF5b3V0LWNvbHVtbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dCB7XG4gIC8qKlxuICAgKiBBIGBTa3lUaWxlRGFzaGJvYXJkQ29uZmlnTGF5b3V0Q29sdW1uYCBvYmplY3QgdGhhdCBkZXNjcmliZXMgaG93IHRvXG4gICAqIGRpc3BsYXkgdGlsZXMgaW4gYSBzaW5nbGUgY29sdW1uIG9uIHNtYWxsIHNjcmVlbnMuXG4gICAqL1xuICBzaW5nbGVDb2x1bW46IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRDb2x1bW47XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBgU2t5VGlsZURhc2hib2FyZENvbmZpZ0xheW91dENvbHVtbmAgb2JqZWN0cyB0aGF0IGRlc2NyaWJlc1xuICAgKiBob3cgdG8gZGlzcGxheSB0aWxlcyBpbiBtdWx0aXBsZSBjb2x1bW5zIG9uIGxhcmdlciBzY3JlZW5zLlxuICAgKi9cbiAgbXVsdGlDb2x1bW46IFNreVRpbGVEYXNoYm9hcmRDb25maWdMYXlvdXRDb2x1bW5bXTtcbn1cbiJdfQ==