ngx-vflow 0.2.2 → 0.4.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 (60) hide show
  1. package/esm2022/lib/vflow/components/edge/edge.component.mjs +18 -6
  2. package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +13 -10
  3. package/esm2022/lib/vflow/components/handle/handle.component.mjs +21 -24
  4. package/esm2022/lib/vflow/components/node/node.component.mjs +69 -20
  5. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +35 -22
  6. package/esm2022/lib/vflow/decorators/microtask.decorator.mjs +11 -0
  7. package/esm2022/lib/vflow/decorators/run-in-injection-context.decorator.mjs +18 -0
  8. package/esm2022/lib/vflow/directives/handle-size-controller.directive.mjs +38 -0
  9. package/esm2022/lib/vflow/directives/map-context.directive.mjs +31 -4
  10. package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +1 -1
  11. package/esm2022/lib/vflow/directives/selectable.directive.mjs +39 -0
  12. package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +2 -0
  13. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +1 -1
  14. package/esm2022/lib/vflow/models/edge.model.mjs +17 -11
  15. package/esm2022/lib/vflow/models/handle.model.mjs +32 -3
  16. package/esm2022/lib/vflow/models/node.model.mjs +11 -33
  17. package/esm2022/lib/vflow/services/edge-changes.service.mjs +7 -3
  18. package/esm2022/lib/vflow/services/flow-entities.service.mjs +6 -2
  19. package/esm2022/lib/vflow/services/flow-settings.service.mjs +25 -0
  20. package/esm2022/lib/vflow/services/handle.service.mjs +3 -4
  21. package/esm2022/lib/vflow/services/node-changes.service.mjs +7 -3
  22. package/esm2022/lib/vflow/services/node-rendering.service.mjs +22 -0
  23. package/esm2022/lib/vflow/services/selection.service.mjs +45 -0
  24. package/esm2022/lib/vflow/types/edge-change.type.mjs +1 -1
  25. package/esm2022/lib/vflow/types/node-change.type.mjs +1 -1
  26. package/esm2022/lib/vflow/utils/add-nodes-to-edges.mjs +3 -3
  27. package/esm2022/lib/vflow/utils/resizable.mjs +11 -0
  28. package/esm2022/lib/vflow/vflow.module.mjs +11 -3
  29. package/esm2022/public-api.mjs +2 -1
  30. package/fesm2022/ngx-vflow.mjs +536 -253
  31. package/fesm2022/ngx-vflow.mjs.map +1 -1
  32. package/lib/vflow/components/edge/edge.component.d.ts +5 -2
  33. package/lib/vflow/components/handle/handle.component.d.ts +6 -4
  34. package/lib/vflow/components/node/node.component.d.ts +13 -6
  35. package/lib/vflow/components/vflow/vflow.component.d.ts +13 -7
  36. package/lib/vflow/decorators/microtask.decorator.d.ts +1 -0
  37. package/lib/vflow/decorators/run-in-injection-context.decorator.d.ts +5 -0
  38. package/lib/vflow/directives/handle-size-controller.directive.d.ts +10 -0
  39. package/lib/vflow/directives/map-context.directive.d.ts +5 -0
  40. package/lib/vflow/directives/selectable.directive.d.ts +11 -0
  41. package/lib/vflow/interfaces/flow-entity.interface.d.ts +4 -0
  42. package/lib/vflow/interfaces/template-context.interface.d.ts +1 -0
  43. package/lib/vflow/models/edge.model.d.ts +7 -3
  44. package/lib/vflow/models/handle.model.d.ts +30 -2
  45. package/lib/vflow/models/node.model.d.ts +8 -11
  46. package/lib/vflow/services/edge-changes.service.d.ts +5 -0
  47. package/lib/vflow/services/flow-entities.service.d.ts +5 -2
  48. package/lib/vflow/services/flow-settings.service.d.ts +20 -0
  49. package/lib/vflow/services/handle.service.d.ts +3 -6
  50. package/lib/vflow/services/node-changes.service.d.ts +5 -0
  51. package/lib/vflow/services/node-rendering.service.d.ts +9 -0
  52. package/lib/vflow/services/selection.service.d.ts +19 -0
  53. package/lib/vflow/types/edge-change.type.d.ts +5 -1
  54. package/lib/vflow/types/node-change.type.d.ts +5 -1
  55. package/lib/vflow/utils/resizable.d.ts +3 -0
  56. package/lib/vflow/vflow.module.d.ts +5 -3
  57. package/package.json +3 -3
  58. package/public-api.d.ts +1 -0
  59. package/esm2022/lib/vflow/models/flow.model.mjs +0 -18
  60. package/lib/vflow/models/flow.model.d.ts +0 -16
@@ -1,11 +1,10 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, Injector, Input, ViewChild, inject, runInInjectionContext } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChild, Injector, Input, ViewChild, computed, inject, runInInjectionContext } from '@angular/core';
2
2
  import { MapContextDirective } from '../../directives/map-context.directive';
3
3
  import { DraggableService } from '../../services/draggable.service';
4
4
  import { ViewportService } from '../../services/viewport.service';
5
5
  import { toObservable, toSignal } from '@angular/core/rxjs-interop';
6
6
  import { ConnectionTemplateDirective, EdgeLabelHtmlTemplateDirective, EdgeTemplateDirective, NodeHtmlTemplateDirective } from '../../directives/template.directive';
7
7
  import { addNodesToEdges } from '../../utils/add-nodes-to-edges';
8
- import { FlowModel } from '../../models/flow.model';
9
8
  import { skip } from 'rxjs';
10
9
  import { FlowStatusService } from '../../services/flow-status.service';
11
10
  import { ConnectionControllerDirective } from '../../directives/connection-controller.directive';
@@ -15,6 +14,9 @@ import { ReferenceKeeper } from '../../utils/reference-keeper';
15
14
  import { NodesChangeService } from '../../services/node-changes.service';
16
15
  import { EdgeChangesService } from '../../services/edge-changes.service';
17
16
  import { ChangesControllerDirective } from '../../directives/changes-controller.directive';
17
+ import { NodeRenderingService } from '../../services/node-rendering.service';
18
+ import { SelectionService } from '../../services/selection.service';
19
+ import { FlowSettingsService } from '../../services/flow-settings.service';
18
20
  import * as i0 from "@angular/core";
19
21
  import * as i1 from "../../directives/connection-controller.directive";
20
22
  import * as i2 from "../../directives/changes-controller.directive";
@@ -42,6 +44,8 @@ export class VflowComponent {
42
44
  this.flowEntitiesService = inject(FlowEntitiesService);
43
45
  this.nodesChangeService = inject(NodesChangeService);
44
46
  this.edgesChangeService = inject(EdgeChangesService);
47
+ this.nodeRenderingService = inject(NodeRenderingService);
48
+ this.flowSettingsService = inject(FlowSettingsService);
45
49
  this.injector = inject(Injector);
46
50
  /**
47
51
  * Minimum zoom value
@@ -55,6 +59,8 @@ export class VflowComponent {
55
59
  * Background color for flow
56
60
  */
57
61
  this.background = '#FFFFFF';
62
+ this.nodeModels = computed(() => this.nodeRenderingService.nodes());
63
+ this.edgeModels = computed(() => this.flowEntitiesService.validEdges());
58
64
  // #endregion
59
65
  // #region SIGNAL_API
60
66
  /**
@@ -85,8 +91,8 @@ export class VflowComponent {
85
91
  */
86
92
  this.edgesChange$ = this.edgesChangeService.changes$;
87
93
  // #endregion
88
- // TODO: probably better to make it injectable
89
- this.flowModel = new FlowModel();
94
+ this.flowWidth = this.flowSettingsService.flowWidth;
95
+ this.flowHeight = this.flowSettingsService.flowHeight;
90
96
  this.markers = this.flowEntitiesService.markers;
91
97
  }
92
98
  // #endregion
@@ -99,7 +105,7 @@ export class VflowComponent {
99
105
  * - 'auto' to compute size based on parent element size
100
106
  */
101
107
  set view(view) {
102
- this.flowModel.view.set(view);
108
+ this.flowSettingsService.view.set(view);
103
109
  }
104
110
  /**
105
111
  * Object that controls flow direction.
@@ -110,7 +116,13 @@ export class VflowComponent {
110
116
  * @deprecated
111
117
  */
112
118
  set handlePositions(handlePositions) {
113
- this.flowModel.handlePositions.set(handlePositions);
119
+ this.flowSettingsService.handlePositions.set(handlePositions);
120
+ }
121
+ /**
122
+ * Global rule if you can or can't select entities
123
+ */
124
+ set entitiesSelectable(value) {
125
+ this.flowSettingsService.entitiesSelectable.set(value);
114
126
  }
115
127
  /**
116
128
  * Settings for connection (it renders when user tries to create edge between nodes)
@@ -126,23 +138,19 @@ export class VflowComponent {
126
138
  */
127
139
  set nodes(newNodes) {
128
140
  const newModels = runInInjectionContext(this.injector, () => ReferenceKeeper.nodes(newNodes, this.flowEntitiesService.nodes()));
129
- // TODO better to solve this by DI
130
- bindFlowToNodes(this.flowModel, newModels);
131
141
  // quick and dirty binding nodes to edges
132
142
  addNodesToEdges(newModels, this.flowEntitiesService.edges());
133
143
  this.flowEntitiesService.nodes.set(newModels);
134
144
  }
135
- get nodeModels() { return this.flowEntitiesService.nodes(); }
136
145
  /**
137
146
  * Edges to render
138
147
  */
139
148
  set edges(newEdges) {
140
149
  const newModels = runInInjectionContext(this.injector, () => ReferenceKeeper.edges(newEdges, this.flowEntitiesService.edges()));
141
150
  // quick and dirty binding nodes to edges
142
- addNodesToEdges(this.nodeModels, newModels);
151
+ addNodesToEdges(this.nodeModels(), newModels);
143
152
  this.flowEntitiesService.edges.set(newModels);
144
153
  }
145
- get edgeModels() { return this.flowEntitiesService.validEdges(); }
146
154
  // #region METHODS_API
147
155
  /**
148
156
  * Change viewport to specified state
@@ -184,20 +192,23 @@ export class VflowComponent {
184
192
  }
185
193
  // #endregion
186
194
  trackNodes(idx, { node }) {
187
- return node.id;
195
+ return node;
188
196
  }
189
197
  trackEdges(idx, { edge }) {
190
- return edge.id;
198
+ return edge;
191
199
  }
192
200
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: VflowComponent, selector: "vflow", inputs: { view: "view", minZoom: "minZoom", maxZoom: "maxZoom", handlePositions: "handlePositions", background: "background", connection: ["connection", "connection", (settings) => new ConnectionModel(settings)], nodes: "nodes", edges: "edges" }, providers: [
201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: VflowComponent, selector: "vflow", inputs: { view: "view", minZoom: "minZoom", maxZoom: "maxZoom", handlePositions: "handlePositions", background: "background", entitiesSelectable: "entitiesSelectable", connection: ["connection", "connection", (settings) => new ConnectionModel(settings)], nodes: "nodes", edges: "edges" }, providers: [
194
202
  DraggableService,
195
203
  ViewportService,
196
204
  FlowStatusService,
197
205
  FlowEntitiesService,
198
206
  NodesChangeService,
199
- EdgeChangesService
200
- ], queries: [{ propertyName: "nodeHtmlDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateDirective, descendants: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateDirective, descendants: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true }], hostDirectives: [{ directive: i1.ConnectionControllerDirective, outputs: ["onConnect", "onConnect"] }, { directive: i2.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onEdgesChange", "onEdgesChange"] }], ngImport: i0, template: "<svg:svg\n rootSvgRef\n rootSvgContext\n class=\"root-svg\"\n #flow\n [style.backgroundColor]=\"background\"\n [attr.width]=\"flowModel.flowWidth()\"\n [attr.height]=\"flowModel.flowHeight()\"\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <svg:g\n mapContext\n spacePointContext\n [minZoom]=\"minZoom\"\n [maxZoom]=\"maxZoom\"\n >\n <!-- Connection -->\n <svg:g\n connection\n [model]=\"connection\"\n [template]=\"connectionTemplateDirective?.templateRef\"\n />\n\n <!-- Edges -->\n <svg:g\n *ngFor=\"let model of edgeModels; trackBy: trackEdges\"\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective?.templateRef\"\n />\n\n <!-- Nodes -->\n <svg:g\n *ngFor=\"let model of nodeModels; trackBy: trackNodes\"\n node\n [nodeModel]=\"model\"\n [nodeHtmlTemplate]=\"nodeHtmlDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.NodeComponent, selector: "g[node]", inputs: ["nodeModel", "nodeHtmlTemplate"] }, { kind: "component", type: i5.EdgeComponent, selector: "g[edge]", inputs: ["model", "edgeTemplate", "edgeLabelHtmlTemplate"] }, { kind: "component", type: i6.ConnectionComponent, selector: "g[connection]", inputs: ["model", "template"] }, { kind: "component", type: i7.DefsComponent, selector: "defs[flowDefs]", inputs: ["markers"] }, { kind: "directive", type: i8.SpacePointContextDirective, selector: "g[spacePointContext]" }, { kind: "directive", type: i9.MapContextDirective, selector: "g[mapContext]", inputs: ["minZoom", "maxZoom"] }, { kind: "directive", type: i10.RootSvgReferenceDirective, selector: "svg[rootSvgRef]" }, { kind: "directive", type: i11.RootSvgContextDirective, selector: "svg[rootSvgContext]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
207
+ EdgeChangesService,
208
+ NodeRenderingService,
209
+ SelectionService,
210
+ FlowSettingsService
211
+ ], queries: [{ propertyName: "nodeHtmlDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateDirective, descendants: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateDirective, descendants: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true }], hostDirectives: [{ directive: i1.ConnectionControllerDirective, outputs: ["onConnect", "onConnect"] }, { directive: i2.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onEdgesChange", "onEdgesChange"] }], ngImport: i0, template: "<svg:svg\n rootSvgRef\n rootSvgContext\n class=\"root-svg\"\n #flow\n [style.backgroundColor]=\"background\"\n [attr.width]=\"flowWidth()\"\n [attr.height]=\"flowHeight()\"\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <svg:g\n mapContext\n spacePointContext\n [minZoom]=\"minZoom\"\n [maxZoom]=\"maxZoom\"\n >\n <!-- Connection -->\n <svg:g\n connection\n [model]=\"connection\"\n [template]=\"connectionTemplateDirective?.templateRef\"\n />\n\n <!-- Edges -->\n <svg:g\n *ngFor=\"let model of edgeModels(); trackBy: trackEdges\"\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective?.templateRef\"\n />\n\n <!-- Nodes -->\n <svg:g\n *ngFor=\"let model of nodeModels(); trackBy: trackNodes\"\n node\n [nodeModel]=\"model\"\n [nodeHtmlTemplate]=\"nodeHtmlDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.NodeComponent, selector: "g[node]", inputs: ["nodeModel", "nodeHtmlTemplate"] }, { kind: "component", type: i5.EdgeComponent, selector: "g[edge]", inputs: ["model", "edgeTemplate", "edgeLabelHtmlTemplate"] }, { kind: "component", type: i6.ConnectionComponent, selector: "g[connection]", inputs: ["model", "template"] }, { kind: "component", type: i7.DefsComponent, selector: "defs[flowDefs]", inputs: ["markers"] }, { kind: "directive", type: i8.SpacePointContextDirective, selector: "g[spacePointContext]" }, { kind: "directive", type: i9.MapContextDirective, selector: "g[mapContext]", inputs: ["minZoom", "maxZoom"] }, { kind: "directive", type: i10.RootSvgReferenceDirective, selector: "svg[rootSvgRef]" }, { kind: "directive", type: i11.RootSvgContextDirective, selector: "svg[rootSvgContext]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
201
212
  }
202
213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowComponent, decorators: [{
203
214
  type: Component,
@@ -207,11 +218,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
207
218
  FlowStatusService,
208
219
  FlowEntitiesService,
209
220
  NodesChangeService,
210
- EdgeChangesService
221
+ EdgeChangesService,
222
+ NodeRenderingService,
223
+ SelectionService,
224
+ FlowSettingsService
211
225
  ], hostDirectives: [
212
226
  connectionControllerHostDirective,
213
227
  changesControllerHostDirective
214
- ], template: "<svg:svg\n rootSvgRef\n rootSvgContext\n class=\"root-svg\"\n #flow\n [style.backgroundColor]=\"background\"\n [attr.width]=\"flowModel.flowWidth()\"\n [attr.height]=\"flowModel.flowHeight()\"\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <svg:g\n mapContext\n spacePointContext\n [minZoom]=\"minZoom\"\n [maxZoom]=\"maxZoom\"\n >\n <!-- Connection -->\n <svg:g\n connection\n [model]=\"connection\"\n [template]=\"connectionTemplateDirective?.templateRef\"\n />\n\n <!-- Edges -->\n <svg:g\n *ngFor=\"let model of edgeModels; trackBy: trackEdges\"\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective?.templateRef\"\n />\n\n <!-- Nodes -->\n <svg:g\n *ngFor=\"let model of nodeModels; trackBy: trackNodes\"\n node\n [nodeModel]=\"model\"\n [nodeHtmlTemplate]=\"nodeHtmlDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}\n"] }]
228
+ ], template: "<svg:svg\n rootSvgRef\n rootSvgContext\n class=\"root-svg\"\n #flow\n [style.backgroundColor]=\"background\"\n [attr.width]=\"flowWidth()\"\n [attr.height]=\"flowHeight()\"\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <svg:g\n mapContext\n spacePointContext\n [minZoom]=\"minZoom\"\n [maxZoom]=\"maxZoom\"\n >\n <!-- Connection -->\n <svg:g\n connection\n [model]=\"connection\"\n [template]=\"connectionTemplateDirective?.templateRef\"\n />\n\n <!-- Edges -->\n <svg:g\n *ngFor=\"let model of edgeModels(); trackBy: trackEdges\"\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective?.templateRef\"\n />\n\n <!-- Nodes -->\n <svg:g\n *ngFor=\"let model of nodeModels(); trackBy: trackNodes\"\n node\n [nodeModel]=\"model\"\n [nodeHtmlTemplate]=\"nodeHtmlDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}\n"] }]
215
229
  }], propDecorators: { view: [{
216
230
  type: Input
217
231
  }], minZoom: [{
@@ -222,6 +236,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
222
236
  type: Input
223
237
  }], background: [{
224
238
  type: Input
239
+ }], entitiesSelectable: [{
240
+ type: Input
225
241
  }], connection: [{
226
242
  type: Input,
227
243
  args: [{ transform: (settings) => new ConnectionModel(settings) }]
@@ -246,7 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
246
262
  type: ViewChild,
247
263
  args: [MapContextDirective]
248
264
  }] } });
249
- function bindFlowToNodes(flow, nodes) {
250
- nodes.forEach(n => n.bindFlow(flow));
251
- }
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFnQixRQUFRLEVBQUUsS0FBSyxFQUE0QyxTQUFTLEVBQW9CLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4TyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdwRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwSyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUczRixNQUFNLGlDQUFpQyxHQUFHO0lBQ3hDLFNBQVMsRUFBRSw2QkFBNkI7SUFDeEMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO0NBQ3ZCLENBQUE7QUFFRCxNQUFNLDhCQUE4QixHQUFHO0lBQ3JDLFNBQVMsRUFBRSwwQkFBMEI7SUFDckMsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztDQUM1QyxDQUFBO0FBb0JELE1BQU0sT0FBTyxjQUFjO0lBbEIzQjtRQW1CRSxhQUFhO1FBQ0wsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDekMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDakQsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQWlCbkM7O1dBRUc7UUFFSSxZQUFPLEdBQUcsR0FBRyxDQUFBO1FBRXBCOztXQUVHO1FBRUksWUFBTyxHQUFHLENBQUMsQ0FBQTtRQWVsQjs7V0FFRztRQUVJLGVBQVUsR0FBVyxTQUFTLENBQUE7UUFxRXJDLGFBQWE7UUFFYixxQkFBcUI7UUFDckI7O1dBRUc7UUFDYSxhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUU3RTs7V0FFRztRQUNhLGdCQUFXLEdBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBRWxGOztXQUVHO1FBQ2EsZ0JBQVcsR0FDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBa0IsRUFBRSxDQUFDLENBQUE7UUFDbEYsYUFBYTtRQUViLGlCQUFpQjtRQUNqQjs7V0FFRztRQUNhLG9CQUFlLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7YUFDbEYsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsd0NBQXdDO1FBRXpEOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFBO1FBRS9EOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFBO1FBQy9ELGFBQWE7UUFFYiw4Q0FBOEM7UUFDcEMsY0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7UUFFM0IsWUFBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUE7S0FzRHJEO0lBbE5DLGFBQWE7SUFFYixtQkFBbUI7SUFFbkI7Ozs7OztPQU1HO0lBQ0gsSUFDVyxJQUFJLENBQUMsSUFBK0I7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFjRDs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxlQUFlLENBQUMsZUFBZ0M7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFRRDs7OztPQUlHO0lBQ0gsSUFDVyxVQUFVLENBQUMsVUFBMkIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFMUcsSUFBVyxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQ3hFLGFBQWE7SUFFYixzQkFBc0I7SUFDdEI7O09BRUc7SUFDSCxJQUNXLEtBQUssQ0FBQyxRQUFnQjtRQUMvQixNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUNuRCxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDeEUsQ0FBQTtRQUVELGtDQUFrQztRQUNsQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUUxQyx5Q0FBeUM7UUFDekMsZUFBZSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUU1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsSUFBYyxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRXRFOztPQUVHO0lBQ0gsSUFDVyxLQUFLLENBQUMsUUFBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDbkQsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQ3hFLENBQUE7UUFFRCx5Q0FBeUM7UUFDekMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFFM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELElBQWMsVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFBLENBQUMsQ0FBQztJQWdFM0Usc0JBQXNCO0lBQ3RCOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsUUFBdUI7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3hGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLElBQVk7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN4RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxLQUFZO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBYyxFQUFVO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUE7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFDRCxhQUFhO0lBRUgsVUFBVSxDQUFDLEdBQVcsRUFBRSxFQUFFLElBQUksRUFBYTtRQUNuRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUE7SUFDaEIsQ0FBQztJQUVTLFVBQVUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxJQUFJLEVBQWE7UUFDbkQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFBO0lBQ2hCLENBQUM7K0dBeE5VLGNBQWM7bUdBQWQsY0FBYyw0TEEyREwsQ0FBQyxRQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsZ0RBeEV4RTtZQUNULGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsa0JBQWtCO1NBQ25CLHlFQStHYSx5QkFBeUIsd0ZBR3pCLHFCQUFxQix5RkFHckIsOEJBQThCLDhGQUc5QiwyQkFBMkIsNEZBSzlCLG1CQUFtQixxUkMvS2hDLG9qQ0E0Q0E7OzRGRFlhLGNBQWM7a0JBbEIxQixTQUFTOytCQUNFLE9BQU8sbUJBR0EsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3FCQUNuQixrQkFDZTt3QkFDZCxpQ0FBaUM7d0JBQ2pDLDhCQUE4QjtxQkFDL0I7OEJBcUJVLElBQUk7c0JBRGQsS0FBSztnQkFTQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixLQUFLO2dCQVlLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBU0MsVUFBVTtzQkFEaEIsS0FBSztnQkFTSyxVQUFVO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsUUFBNEIsRUFBRSxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBVzFFLEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBcUJkLEtBQUs7c0JBRGYsS0FBSztnQkFpQkksaUJBQWlCO3NCQUQxQixZQUFZO3VCQUFDLHlCQUF5QjtnQkFJN0IscUJBQXFCO3NCQUQ5QixZQUFZO3VCQUFDLHFCQUFxQjtnQkFJekIsc0JBQXNCO3NCQUQvQixZQUFZO3VCQUFDLDhCQUE4QjtnQkFJbEMsMkJBQTJCO3NCQURwQyxZQUFZO3VCQUFDLDJCQUEyQjtnQkFNL0IsVUFBVTtzQkFEbkIsU0FBUzt1QkFBQyxtQkFBbUI7O0FBb0doQyxTQUFTLGVBQWUsQ0FBQyxJQUFlLEVBQUUsS0FBa0I7SUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpZ25hbCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWFwQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyYWdnYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kcmFnZ2FibGUuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBFZGdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGdlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBDb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZSwgRWRnZVRlbXBsYXRlRGlyZWN0aXZlLCBOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSGFuZGxlUG9zaXRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9oYW5kbGUtcG9zaXRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBhZGROb2Rlc1RvRWRnZXMgfSBmcm9tICcuLi8uLi91dGlscy9hZGQtbm9kZXMtdG8tZWRnZXMnO1xuaW1wb3J0IHsgRmxvd01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zsb3cubW9kZWwnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25Db250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25uZWN0aW9uLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25uZWN0aW9uLXNldHRpbmdzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29ubmVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VLZWVwZXIgfSBmcm9tICcuLi8uLi91dGlscy9yZWZlcmVuY2Uta2VlcGVyJztcbmltcG9ydCB7IE5vZGVzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkZ2UtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVDaGFuZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IENoYW5nZXNDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jaGFuZ2VzLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9lZGdlLWNoYW5nZS50eXBlJztcblxuY29uc3QgY29ubmVjdGlvbkNvbnRyb2xsZXJIb3N0RGlyZWN0aXZlID0ge1xuICBkaXJlY3RpdmU6IENvbm5lY3Rpb25Db250cm9sbGVyRGlyZWN0aXZlLFxuICBvdXRwdXRzOiBbJ29uQ29ubmVjdCddXG59XG5cbmNvbnN0IGNoYW5nZXNDb250cm9sbGVySG9zdERpcmVjdGl2ZSA9IHtcbiAgZGlyZWN0aXZlOiBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgb3V0cHV0czogWydvbk5vZGVzQ2hhbmdlJywgJ29uRWRnZXNDaGFuZ2UnXVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZmxvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi92Zmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZmbG93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBEcmFnZ2FibGVTZXJ2aWNlLFxuICAgIFZpZXdwb3J0U2VydmljZSxcbiAgICBGbG93U3RhdHVzU2VydmljZSxcbiAgICBGbG93RW50aXRpZXNTZXJ2aWNlLFxuICAgIE5vZGVzQ2hhbmdlU2VydmljZSxcbiAgICBFZGdlQ2hhbmdlc1NlcnZpY2VcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBjb25uZWN0aW9uQ29udHJvbGxlckhvc3REaXJlY3RpdmUsXG4gICAgY2hhbmdlc0NvbnRyb2xsZXJIb3N0RGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVmZsb3dDb21wb25lbnQge1xuICAvLyAjcmVnaW9uIERJXG4gIHByaXZhdGUgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcbiAgcHJpdmF0ZSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpXG4gIHByaXZhdGUgbm9kZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KE5vZGVzQ2hhbmdlU2VydmljZSlcbiAgcHJpdmF0ZSBlZGdlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoRWRnZUNoYW5nZXNTZXJ2aWNlKVxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBTRVRUSU5HU1xuXG4gIC8qKlxuICAgKiBTaXplIGZvciBmbG93IHZpZXdcbiAgICpcbiAgICogYWNjZXB0c1xuICAgKiAtIGFic29sdXRlIHNpemUgaW4gZm9ybWF0IFt3aWR0aCwgaGVpZ2h0XSBvclxuICAgKiAtICdhdXRvJyB0byBjb21wdXRlIHNpemUgYmFzZWQgb24gcGFyZW50IGVsZW1lbnQgc2l6ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2aWV3KHZpZXc6IFtudW1iZXIsIG51bWJlcl0gfCAnYXV0bycpIHtcbiAgICB0aGlzLmZsb3dNb2RlbC52aWV3LnNldCh2aWV3KVxuICB9XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gem9vbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pblpvb20gPSAwLjVcblxuICAvKipcbiAgICogTWF4aW11bSB6b29tIHZhbHVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4Wm9vbSA9IDNcblxuICAvKipcbiAgICogT2JqZWN0IHRoYXQgY29udHJvbHMgZmxvdyBkaXJlY3Rpb24uXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBhcmNoaWV2ZSByaWdodCB0byBsZWZ0IGRpcmVjdGlvblxuICAgKiB0aGVuIHlvdSBuZWVkIHRvIHBhc3MgdGhlc2UgcG9zaXRpb25zIHsgc291cmNlOiAnbGVmdCcsIHRhcmdldDogJ3JpZ2h0JyB9XG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGhhbmRsZVBvc2l0aW9ucyhoYW5kbGVQb3NpdGlvbnM6IEhhbmRsZVBvc2l0aW9ucykge1xuICAgIHRoaXMuZmxvd01vZGVsLmhhbmRsZVBvc2l0aW9ucy5zZXQoaGFuZGxlUG9zaXRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEJhY2tncm91bmQgY29sb3IgZm9yIGZsb3dcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBiYWNrZ3JvdW5kOiBzdHJpbmcgPSAnI0ZGRkZGRidcblxuICAvKipcbiAgICogU2V0dGluZ3MgZm9yIGNvbm5lY3Rpb24gKGl0IHJlbmRlcnMgd2hlbiB1c2VyIHRyaWVzIHRvIGNyZWF0ZSBlZGdlIGJldHdlZW4gbm9kZXMpXG4gICAqXG4gICAqIFlvdSBuZWVkIHRvIHBhc3MgYENvbm5lY3Rpb25TZXR0aW5nc2AgaW4gdGhpcyBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHNldHRpbmdzOiBDb25uZWN0aW9uU2V0dGluZ3MpID0+IG5ldyBDb25uZWN0aW9uTW9kZWwoc2V0dGluZ3MpIH0pXG4gIHB1YmxpYyBzZXQgY29ubmVjdGlvbihjb25uZWN0aW9uOiBDb25uZWN0aW9uTW9kZWwpIHsgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24uc2V0KGNvbm5lY3Rpb24pIH1cblxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb24oKSB7IHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuY29ubmVjdGlvbigpIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gTUFJTl9JTlBVVFNcbiAgLyoqXG4gICAqIE5vZGVzIHRvIHJlbmRlclxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHNldCBub2RlcyhuZXdOb2RlczogTm9kZVtdKSB7XG4gICAgY29uc3QgbmV3TW9kZWxzID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsXG4gICAgICAoKSA9PiBSZWZlcmVuY2VLZWVwZXIubm9kZXMobmV3Tm9kZXMsIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpKVxuICAgIClcblxuICAgIC8vIFRPRE8gYmV0dGVyIHRvIHNvbHZlIHRoaXMgYnkgRElcbiAgICBiaW5kRmxvd1RvTm9kZXModGhpcy5mbG93TW9kZWwsIG5ld01vZGVscylcblxuICAgIC8vIHF1aWNrIGFuZCBkaXJ0eSBiaW5kaW5nIG5vZGVzIHRvIGVkZ2VzXG4gICAgYWRkTm9kZXNUb0VkZ2VzKG5ld01vZGVscywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzKCkpXG5cbiAgICB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMuc2V0KG5ld01vZGVscylcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgbm9kZU1vZGVscygpIHsgcmV0dXJuIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpIH1cblxuICAvKipcbiAgICogRWRnZXMgdG8gcmVuZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVkZ2VzKG5ld0VkZ2VzOiBFZGdlW10pIHtcbiAgICBjb25zdCBuZXdNb2RlbHMgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvcixcbiAgICAgICgpID0+IFJlZmVyZW5jZUtlZXBlci5lZGdlcyhuZXdFZGdlcywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzKCkpXG4gICAgKVxuXG4gICAgLy8gcXVpY2sgYW5kIGRpcnR5IGJpbmRpbmcgbm9kZXMgdG8gZWRnZXNcbiAgICBhZGROb2Rlc1RvRWRnZXModGhpcy5ub2RlTW9kZWxzLCBuZXdNb2RlbHMpXG5cbiAgICB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZWRnZXMuc2V0KG5ld01vZGVscylcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZWRnZU1vZGVscygpIHsgcmV0dXJuIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS52YWxpZEVkZ2VzKCkgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBURU1QTEFURVNcbiAgQENvbnRlbnRDaGlsZChOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgbm9kZUh0bWxEaXJlY3RpdmU/OiBOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlXG5cbiAgQENvbnRlbnRDaGlsZChFZGdlVGVtcGxhdGVEaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBlZGdlVGVtcGxhdGVEaXJlY3RpdmU/OiBFZGdlVGVtcGxhdGVEaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIGVkZ2VMYWJlbEh0bWxEaXJlY3RpdmU/OiBFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKENvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIGNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZT86IENvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBESVJFQ1RJVkVTXG4gIEBWaWV3Q2hpbGQoTWFwQ29udGV4dERpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIG1hcENvbnRleHQhOiBNYXBDb250ZXh0RGlyZWN0aXZlXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFNJR05BTF9BUElcbiAgLyoqXG4gICAqIFNpZ25hbCBmb3IgcmVhZGluZyB2aWV3cG9ydCBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuYXNSZWFkb25seSgpXG5cbiAgLyoqXG4gICAqIFNpZ25hbCBmb3IgcmVhZGluZyBub2RlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub2Rlc0NoYW5nZSA9XG4gICAgdG9TaWduYWwodGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQsIHsgaW5pdGlhbFZhbHVlOiBbXSBhcyBOb2RlQ2hhbmdlW10gfSlcblxuICAvKipcbiAgICogU2lnbmFsIHRvIHJlYWRpbmcgZWRnZXMgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZWRnZXNDaGFuZ2UgPVxuICAgIHRvU2lnbmFsKHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLCB7IGluaXRpYWxWYWx1ZTogW10gYXMgRWRnZUNoYW5nZVtdIH0pXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFJYX0FQSVxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIHZpZXdwb3J0IGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZpZXdwb3J0Q2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0KVxuICAgIC5waXBlKHNraXAoMSkpIC8vIHNraXAgZGVmYXVsdCB2YWx1ZSB0aGF0IHNldCBieSBzaWduYWxcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIG5vZGVzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzQ2hhbmdlJCA9IHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkXG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgd2l0aCBub2RlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZGdlc0NoYW5nZSQgPSB0aGlzLmVkZ2VzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJFxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gVE9ETzogcHJvYmFibHkgYmV0dGVyIHRvIG1ha2UgaXQgaW5qZWN0YWJsZVxuICBwcm90ZWN0ZWQgZmxvd01vZGVsID0gbmV3IEZsb3dNb2RlbCgpXG5cbiAgcHJvdGVjdGVkIG1hcmtlcnMgPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UubWFya2Vyc1xuXG4gIC8vICNyZWdpb24gTUVUSE9EU19BUElcbiAgLyoqXG4gICAqIENoYW5nZSB2aWV3cG9ydCB0byBzcGVjaWZpZWQgc3RhdGVcbiAgICpcbiAgICogQHBhcmFtIHZpZXdwb3J0IHZpZXdwb3J0IHN0YXRlXG4gICAqL1xuICBwdWJsaWMgdmlld3BvcnRUbyh2aWV3cG9ydDogVmlld3BvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQuc2V0KHsgY2hhbmdlVHlwZTogJ2Fic29sdXRlJywgc3RhdGU6IHZpZXdwb3J0IH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHpvb21cbiAgICpcbiAgICogQHBhcmFtIHpvb20gem9vbSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHpvb21Ubyh6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7IGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsIHN0YXRlOiB7IHpvb20gfSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdG8gc3BlY2lmaWVkIGNvb3JkaW5hdGVcbiAgICpcbiAgICogQHBhcmFtIHBvaW50IHBvaW50IHdoZXJlIHRvIG1vdmVcbiAgICovXG4gIHB1YmxpYyBwYW5Ubyhwb2ludDogUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7IGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsIHN0YXRlOiBwb2ludCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBub2RlIGJ5IGlkXG4gICAqXG4gICAqIEBwYXJhbSBpZCBub2RlIGlkXG4gICAqL1xuICBwdWJsaWMgZ2V0Tm9kZTxUID0gdW5rbm93bj4oaWQ6IHN0cmluZyk6IE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZ2V0Tm9kZTxUPihpZCk/Lm5vZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIG1ldGhvZCB0byBnZXQgZGV0YWNoZWQgZWRnZXNcbiAgICovXG4gIHB1YmxpYyBnZXREZXRhY2hlZEVkZ2VzKCk6IEVkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5nZXREZXRhY2hlZEVkZ2VzKCkubWFwKGUgPT4gZS5lZGdlKVxuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgdHJhY2tOb2RlcyhpZHg6IG51bWJlciwgeyBub2RlIH06IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBub2RlLmlkXG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tFZGdlcyhpZHg6IG51bWJlciwgeyBlZGdlIH06IEVkZ2VNb2RlbCkge1xuICAgIHJldHVybiBlZGdlLmlkXG4gIH1cbn1cblxuZnVuY3Rpb24gYmluZEZsb3dUb05vZGVzKGZsb3c6IEZsb3dNb2RlbCwgbm9kZXM6IE5vZGVNb2RlbFtdKSB7XG4gIG5vZGVzLmZvckVhY2gobiA9PiBuLmJpbmRGbG93KGZsb3cpKVxufVxuXG4iLCI8c3ZnOnN2Z1xuICByb290U3ZnUmVmXG4gIHJvb3RTdmdDb250ZXh0XG4gIGNsYXNzPVwicm9vdC1zdmdcIlxuICAjZmxvd1xuICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRcIlxuICBbYXR0ci53aWR0aF09XCJmbG93TW9kZWwuZmxvd1dpZHRoKClcIlxuICBbYXR0ci5oZWlnaHRdPVwiZmxvd01vZGVsLmZsb3dIZWlnaHQoKVwiXG4+XG4gIDxkZWZzIFttYXJrZXJzXT1cIm1hcmtlcnMoKVwiIGZsb3dEZWZzIC8+XG5cbiAgPHN2ZzpnXG4gICAgbWFwQ29udGV4dFxuICAgIHNwYWNlUG9pbnRDb250ZXh0XG4gICAgW21pblpvb21dPVwibWluWm9vbVwiXG4gICAgW21heFpvb21dPVwibWF4Wm9vbVwiXG4gID5cbiAgICA8IS0tIENvbm5lY3Rpb24gLS0+XG4gICAgPHN2ZzpnXG4gICAgICBjb25uZWN0aW9uXG4gICAgICBbbW9kZWxdPVwiY29ubmVjdGlvblwiXG4gICAgICBbdGVtcGxhdGVdPVwiY29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlPy50ZW1wbGF0ZVJlZlwiXG4gICAgLz5cblxuICAgIDwhLS0gRWRnZXMgIC0tPlxuICAgIDxzdmc6Z1xuICAgICAgKm5nRm9yPVwibGV0IG1vZGVsIG9mIGVkZ2VNb2RlbHM7IHRyYWNrQnk6IHRyYWNrRWRnZXNcIlxuICAgICAgZWRnZVxuICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgIFtlZGdlVGVtcGxhdGVdPVwiZWRnZVRlbXBsYXRlRGlyZWN0aXZlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICBbZWRnZUxhYmVsSHRtbFRlbXBsYXRlXT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmU/LnRlbXBsYXRlUmVmXCJcbiAgICAvPlxuXG4gICAgPCEtLSBOb2RlcyAtLT5cbiAgICA8c3ZnOmdcbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBub2RlTW9kZWxzOyB0cmFja0J5OiB0cmFja05vZGVzXCJcbiAgICAgIG5vZGVcbiAgICAgIFtub2RlTW9kZWxdPVwibW9kZWxcIlxuICAgICAgW25vZGVIdG1sVGVtcGxhdGVdPVwibm9kZUh0bWxEaXJlY3RpdmU/LnRlbXBsYXRlUmVmXCJcbiAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJtb2RlbC5wb2ludFRyYW5zZm9ybSgpXCJcbiAgICAvPlxuICA8L3N2ZzpnPlxuXG48L3N2Zzpzdmc+XG4iXX0=
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFnQixRQUFRLEVBQUUsS0FBSyxFQUE0QyxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4TyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdwRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwSyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztB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d0JBQ2hCLG1CQUFtQjtxQkFDcEIsa0JBQ2U7d0JBQ2QsaUNBQWlDO3dCQUNqQyw4QkFBOEI7cUJBQy9COzhCQXVCVSxJQUFJO3NCQURkLEtBQUs7Z0JBU0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFZSyxlQUFlO3NCQUR6QixLQUFLO2dCQVNDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0ssa0JBQWtCO3NCQUQ1QixLQUFLO2dCQVdLLFVBQVU7c0JBRHBCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxRQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFXMUUsS0FBSztzQkFEZixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFrQmQsS0FBSztzQkFEZixLQUFLO2dCQWlCSSxpQkFBaUI7c0JBRDFCLFlBQVk7dUJBQUMseUJBQXlCO2dCQUk3QixxQkFBcUI7c0JBRDlCLFlBQVk7dUJBQUMscUJBQXFCO2dCQUl6QixzQkFBc0I7c0JBRC9CLFlBQVk7dUJBQUMsOEJBQThCO2dCQUlsQywyQkFBMkI7c0JBRHBDLFlBQVk7dUJBQUMsMkJBQTJCO2dCQU0vQixVQUFVO3NCQURuQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaWduYWwsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hcENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL21hcC1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcmFnZ2FibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRWRnZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlLCBFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmUsIEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSwgTm9kZUh0bWxUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhhbmRsZVBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaGFuZGxlLXBvc2l0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYWRkTm9kZXNUb0VkZ2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWRkLW5vZGVzLXRvLWVkZ2VzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlS2VlcGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVmZXJlbmNlLWtlZXBlcic7XG5pbXBvcnQgeyBOb2Rlc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGdlLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBOb2RlUmVuZGVyaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtcmVuZGVyaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuXG5jb25zdCBjb25uZWN0aW9uQ29udHJvbGxlckhvc3REaXJlY3RpdmUgPSB7XG4gIGRpcmVjdGl2ZTogQ29ubmVjdGlvbkNvbnRyb2xsZXJEaXJlY3RpdmUsXG4gIG91dHB1dHM6IFsnb25Db25uZWN0J11cbn1cblxuY29uc3QgY2hhbmdlc0NvbnRyb2xsZXJIb3N0RGlyZWN0aXZlID0ge1xuICBkaXJlY3RpdmU6IENoYW5nZXNDb250cm9sbGVyRGlyZWN0aXZlLFxuICBvdXRwdXRzOiBbJ29uTm9kZXNDaGFuZ2UnLCAnb25FZGdlc0NoYW5nZSddXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZmbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZmbG93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmZsb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIERyYWdnYWJsZVNlcnZpY2UsXG4gICAgVmlld3BvcnRTZXJ2aWNlLFxuICAgIEZsb3dTdGF0dXNTZXJ2aWNlLFxuICAgIEZsb3dFbnRpdGllc1NlcnZpY2UsXG4gICAgTm9kZXNDaGFuZ2VTZXJ2aWNlLFxuICAgIEVkZ2VDaGFuZ2VzU2VydmljZSxcbiAgICBOb2RlUmVuZGVyaW5nU2VydmljZSxcbiAgICBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIEZsb3dTZXR0aW5nc1NlcnZpY2VcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBjb25uZWN0aW9uQ29udHJvbGxlckhvc3REaXJlY3RpdmUsXG4gICAgY2hhbmdlc0NvbnRyb2xsZXJIb3N0RGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVmZsb3dDb21wb25lbnQge1xuICAvLyAjcmVnaW9uIERJXG4gIHByaXZhdGUgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcbiAgcHJpdmF0ZSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpXG4gIHByaXZhdGUgbm9kZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KE5vZGVzQ2hhbmdlU2VydmljZSlcbiAgcHJpdmF0ZSBlZGdlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoRWRnZUNoYW5nZXNTZXJ2aWNlKVxuICBwcml2YXRlIG5vZGVSZW5kZXJpbmdTZXJ2aWNlID0gaW5qZWN0KE5vZGVSZW5kZXJpbmdTZXJ2aWNlKVxuICBwcml2YXRlIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSlcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3RvcilcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gU0VUVElOR1NcblxuICAvKipcbiAgICogU2l6ZSBmb3IgZmxvdyB2aWV3XG4gICAqXG4gICAqIGFjY2VwdHNcbiAgICogLSBhYnNvbHV0ZSBzaXplIGluIGZvcm1hdCBbd2lkdGgsIGhlaWdodF0gb3JcbiAgICogLSAnYXV0bycgdG8gY29tcHV0ZSBzaXplIGJhc2VkIG9uIHBhcmVudCBlbGVtZW50IHNpemVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmlldyh2aWV3OiBbbnVtYmVyLCBudW1iZXJdIHwgJ2F1dG8nKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLnZpZXcuc2V0KHZpZXcpXG4gIH1cblxuICAvKipcbiAgICogTWluaW11bSB6b29tIHZhbHVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluWm9vbSA9IDAuNVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHpvb20gdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhab29tID0gM1xuXG4gIC8qKlxuICAgKiBPYmplY3QgdGhhdCBjb250cm9scyBmbG93IGRpcmVjdGlvbi5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGFyY2hpZXZlIHJpZ2h0IHRvIGxlZnQgZGlyZWN0aW9uXG4gICAqIHRoZW4geW91IG5lZWQgdG8gcGFzcyB0aGVzZSBwb3NpdGlvbnMgeyBzb3VyY2U6ICdsZWZ0JywgdGFyZ2V0OiAncmlnaHQnIH1cbiAgICpcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaGFuZGxlUG9zaXRpb25zKGhhbmRsZVBvc2l0aW9uczogSGFuZGxlUG9zaXRpb25zKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmhhbmRsZVBvc2l0aW9ucy5zZXQoaGFuZGxlUG9zaXRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEJhY2tncm91bmQgY29sb3IgZm9yIGZsb3dcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBiYWNrZ3JvdW5kOiBzdHJpbmcgPSAnI0ZGRkZGRidcblxuICAvKipcbiAgICogR2xvYmFsIHJ1bGUgaWYgeW91IGNhbiBvciBjYW4ndCBzZWxlY3QgZW50aXRpZXNcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXRpZXNTZWxlY3RhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZS5zZXQodmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogU2V0dGluZ3MgZm9yIGNvbm5lY3Rpb24gKGl0IHJlbmRlcnMgd2hlbiB1c2VyIHRyaWVzIHRvIGNyZWF0ZSBlZGdlIGJldHdlZW4gbm9kZXMpXG4gICAqXG4gICAqIFlvdSBuZWVkIHRvIHBhc3MgYENvbm5lY3Rpb25TZXR0aW5nc2AgaW4gdGhpcyBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHNldHRpbmdzOiBDb25uZWN0aW9uU2V0dGluZ3MpID0+IG5ldyBDb25uZWN0aW9uTW9kZWwoc2V0dGluZ3MpIH0pXG4gIHB1YmxpYyBzZXQgY29ubmVjdGlvbihjb25uZWN0aW9uOiBDb25uZWN0aW9uTW9kZWwpIHsgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24uc2V0KGNvbm5lY3Rpb24pIH1cblxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb24oKSB7IHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuY29ubmVjdGlvbigpIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gTUFJTl9JTlBVVFNcbiAgLyoqXG4gICAqIE5vZGVzIHRvIHJlbmRlclxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHNldCBub2RlcyhuZXdOb2RlczogTm9kZVtdKSB7XG4gICAgY29uc3QgbmV3TW9kZWxzID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsXG4gICAgICAoKSA9PiBSZWZlcmVuY2VLZWVwZXIubm9kZXMobmV3Tm9kZXMsIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpKVxuICAgIClcblxuICAgIC8vIHF1aWNrIGFuZCBkaXJ0eSBiaW5kaW5nIG5vZGVzIHRvIGVkZ2VzXG4gICAgYWRkTm9kZXNUb0VkZ2VzKG5ld01vZGVscywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzKCkpXG5cbiAgICB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMuc2V0KG5ld01vZGVscylcbiAgfVxuXG4gIHByb3RlY3RlZCBub2RlTW9kZWxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ub2RlUmVuZGVyaW5nU2VydmljZS5ub2RlcygpKVxuXG4gIC8qKlxuICAgKiBFZGdlcyB0byByZW5kZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZWRnZXMobmV3RWRnZXM6IEVkZ2VbXSkge1xuICAgIGNvbnN0IG5ld01vZGVscyA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLFxuICAgICAgKCkgPT4gUmVmZXJlbmNlS2VlcGVyLmVkZ2VzKG5ld0VkZ2VzLCB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZWRnZXMoKSlcbiAgICApXG5cbiAgICAvLyBxdWljayBhbmQgZGlydHkgYmluZGluZyBub2RlcyB0byBlZGdlc1xuICAgIGFkZE5vZGVzVG9FZGdlcyh0aGlzLm5vZGVNb2RlbHMoKSwgbmV3TW9kZWxzKVxuXG4gICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzLnNldChuZXdNb2RlbHMpXG4gIH1cblxuICBwcm90ZWN0ZWQgZWRnZU1vZGVscyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS52YWxpZEVkZ2VzKCkpXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFRFTVBMQVRFU1xuICBAQ29udGVudENoaWxkKE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBub2RlSHRtbERpcmVjdGl2ZT86IE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIGVkZ2VUZW1wbGF0ZURpcmVjdGl2ZT86IEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIEBDb250ZW50Q2hpbGQoRWRnZUxhYmVsSHRtbFRlbXBsYXRlRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgZWRnZUxhYmVsSHRtbERpcmVjdGl2ZT86IEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIEBDb250ZW50Q2hpbGQoQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgY29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlPzogQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIERJUkVDVElWRVNcbiAgQFZpZXdDaGlsZChNYXBDb250ZXh0RGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgbWFwQ29udGV4dCE6IE1hcENvbnRleHREaXJlY3RpdmVcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gU0lHTkFMX0FQSVxuICAvKipcbiAgICogU2lnbmFsIGZvciByZWFkaW5nIHZpZXdwb3J0IGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydC5hc1JlYWRvbmx5KClcblxuICAvKipcbiAgICogU2lnbmFsIGZvciByZWFkaW5nIG5vZGVzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzQ2hhbmdlID1cbiAgICB0b1NpZ25hbCh0aGlzLm5vZGVzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6IFtdIGFzIE5vZGVDaGFuZ2VbXSB9KVxuXG4gIC8qKlxuICAgKiBTaWduYWwgdG8gcmVhZGluZyBlZGdlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZGdlc0NoYW5nZSA9XG4gICAgdG9TaWduYWwodGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQsIHsgaW5pdGlhbFZhbHVlOiBbXSBhcyBFZGdlQ2hhbmdlW10gfSlcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUlhfQVBJXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHdpdGggdmlld3BvcnQgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmlld3BvcnRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQpXG4gICAgLnBpcGUoc2tpcCgxKSkgLy8gc2tpcCBkZWZhdWx0IHZhbHVlIHRoYXQgc2V0IGJ5IHNpZ25hbFxuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHdpdGggbm9kZXMgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZXNDaGFuZ2UkID0gdGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyRcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIG5vZGVzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVkZ2VzQ2hhbmdlJCA9IHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkXG4gIC8vICNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgZmxvd1dpZHRoID0gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmZsb3dXaWR0aFxuICBwcm90ZWN0ZWQgZmxvd0hlaWdodCA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5mbG93SGVpZ2h0XG5cbiAgcHJvdGVjdGVkIG1hcmtlcnMgPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UubWFya2Vyc1xuXG4gIC8vICNyZWdpb24gTUVUSE9EU19BUElcbiAgLyoqXG4gICAqIENoYW5nZSB2aWV3cG9ydCB0byBzcGVjaWZpZWQgc3RhdGVcbiAgICpcbiAgICogQHBhcmFtIHZpZXdwb3J0IHZpZXdwb3J0IHN0YXRlXG4gICAqL1xuICBwdWJsaWMgdmlld3BvcnRUbyh2aWV3cG9ydDogVmlld3BvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQuc2V0KHsgY2hhbmdlVHlwZTogJ2Fic29sdXRlJywgc3RhdGU6IHZpZXdwb3J0IH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHpvb21cbiAgICpcbiAgICogQHBhcmFtIHpvb20gem9vbSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHpvb21Ubyh6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7IGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsIHN0YXRlOiB7IHpvb20gfSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdG8gc3BlY2lmaWVkIGNvb3JkaW5hdGVcbiAgICpcbiAgICogQHBhcmFtIHBvaW50IHBvaW50IHdoZXJlIHRvIG1vdmVcbiAgICovXG4gIHB1YmxpYyBwYW5Ubyhwb2ludDogUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7IGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsIHN0YXRlOiBwb2ludCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBub2RlIGJ5IGlkXG4gICAqXG4gICAqIEBwYXJhbSBpZCBub2RlIGlkXG4gICAqL1xuICBwdWJsaWMgZ2V0Tm9kZTxUID0gdW5rbm93bj4oaWQ6IHN0cmluZyk6IE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZ2V0Tm9kZTxUPihpZCk/Lm5vZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIG1ldGhvZCB0byBnZXQgZGV0YWNoZWQgZWRnZXNcbiAgICovXG4gIHB1YmxpYyBnZXREZXRhY2hlZEVkZ2VzKCk6IEVkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5nZXREZXRhY2hlZEVkZ2VzKCkubWFwKGUgPT4gZS5lZGdlKVxuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgdHJhY2tOb2RlcyhpZHg6IG51bWJlciwgeyBub2RlIH06IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBub2RlXG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tFZGdlcyhpZHg6IG51bWJlciwgeyBlZGdlIH06IEVkZ2VNb2RlbCkge1xuICAgIHJldHVybiBlZGdlXG4gIH1cbn1cblxuXG4iLCI8c3ZnOnN2Z1xuICByb290U3ZnUmVmXG4gIHJvb3RTdmdDb250ZXh0XG4gIGNsYXNzPVwicm9vdC1zdmdcIlxuICAjZmxvd1xuICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRcIlxuICBbYXR0ci53aWR0aF09XCJmbG93V2lkdGgoKVwiXG4gIFthdHRyLmhlaWdodF09XCJmbG93SGVpZ2h0KClcIlxuPlxuICA8ZGVmcyBbbWFya2Vyc109XCJtYXJrZXJzKClcIiBmbG93RGVmcyAvPlxuXG4gIDxzdmc6Z1xuICAgIG1hcENvbnRleHRcbiAgICBzcGFjZVBvaW50Q29udGV4dFxuICAgIFttaW5ab29tXT1cIm1pblpvb21cIlxuICAgIFttYXhab29tXT1cIm1heFpvb21cIlxuICA+XG4gICAgPCEtLSBDb25uZWN0aW9uIC0tPlxuICAgIDxzdmc6Z1xuICAgICAgY29ubmVjdGlvblxuICAgICAgW21vZGVsXT1cImNvbm5lY3Rpb25cIlxuICAgICAgW3RlbXBsYXRlXT1cImNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZT8udGVtcGxhdGVSZWZcIlxuICAgIC8+XG5cbiAgICA8IS0tIEVkZ2VzICAtLT5cbiAgICA8c3ZnOmdcbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBlZGdlTW9kZWxzKCk7IHRyYWNrQnk6IHRyYWNrRWRnZXNcIlxuICAgICAgZWRnZVxuICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgIFtlZGdlVGVtcGxhdGVdPVwiZWRnZVRlbXBsYXRlRGlyZWN0aXZlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICBbZWRnZUxhYmVsSHRtbFRlbXBsYXRlXT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmU/LnRlbXBsYXRlUmVmXCJcbiAgICAvPlxuXG4gICAgPCEtLSBOb2RlcyAtLT5cbiAgICA8c3ZnOmdcbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBub2RlTW9kZWxzKCk7IHRyYWNrQnk6IHRyYWNrTm9kZXNcIlxuICAgICAgbm9kZVxuICAgICAgW25vZGVNb2RlbF09XCJtb2RlbFwiXG4gICAgICBbbm9kZUh0bWxUZW1wbGF0ZV09XCJub2RlSHRtbERpcmVjdGl2ZT8udGVtcGxhdGVSZWZcIlxuICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIm1vZGVsLnBvaW50VHJhbnNmb3JtKClcIlxuICAgIC8+XG4gIDwvc3ZnOmc+XG5cbjwvc3ZnOnN2Zz5cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export function Microtask(target, key, descriptor) {
2
+ const originalMethod = descriptor.value;
3
+ descriptor.value = function (...args) {
4
+ queueMicrotask(() => {
5
+ originalMethod?.apply(this, args);
6
+ });
7
+ };
8
+ // Return the modified descriptor
9
+ return descriptor;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm90YXNrLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kZWNvcmF0b3JzL21pY3JvdGFzay5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFXLEVBQUUsR0FBVyxFQUFFLFVBQTZEO0lBQy9HLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFFeEMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztRQUN6QyxjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2xCLGNBQWMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDO0lBRUYsaUNBQWlDO0lBQ2pDLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gTWljcm90YXNrKHRhcmdldDogYW55LCBrZXk6IHN0cmluZywgZGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8KC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPikge1xuICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG5cbiAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIG9yaWdpbmFsTWV0aG9kPy5hcHBseSh0aGlzLCBhcmdzKVxuICAgIH0pXG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBkZXNjcmlwdG9yXG4gIHJldHVybiBkZXNjcmlwdG9yO1xufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { runInInjectionContext } from "@angular/core";
2
+ export function InjectionContext(target, key, descriptor) {
3
+ const originalMethod = descriptor.value;
4
+ descriptor.value = function (...args) {
5
+ if (implementsWithInjector(this)) {
6
+ return runInInjectionContext(this.injector, () => originalMethod.apply(this, args));
7
+ }
8
+ else {
9
+ throw new Error('Class that contains decorated method must extends WithInjectorDirective class');
10
+ }
11
+ };
12
+ // Return the modified descriptor
13
+ return descriptor;
14
+ }
15
+ const implementsWithInjector = (instance) => {
16
+ return 'injector' in instance && 'get' in instance.injector;
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWluLWluamVjdGlvbi1jb250ZXh0LmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kZWNvcmF0b3JzL3J1bi1pbi1pbmplY3Rpb24tY29udGV4dC5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQixxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBVyxFQUFFLEdBQVcsRUFBRSxVQUE4QjtJQUN2RixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBRXhDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLElBQVc7UUFDekMsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUNwRjthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFBO1NBQ2pHO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsaUNBQWlDO0lBQ2pDLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFNRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsUUFBWSxFQUE0QixFQUFFO0lBQ3hFLE9BQU8sVUFBVSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUssUUFBUSxDQUFDLFFBQXFCLENBQUM7QUFDNUUsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgaW5qZWN0LCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gSW5qZWN0aW9uQ29udGV4dCh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG5cbiAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChpbXBsZW1lbnRzV2l0aEluamVjdG9yKHRoaXMpKSB7XG4gICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NsYXNzIHRoYXQgY29udGFpbnMgZGVjb3JhdGVkIG1ldGhvZCBtdXN0IGV4dGVuZHMgV2l0aEluamVjdG9yRGlyZWN0aXZlIGNsYXNzJylcbiAgICB9XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBkZXNjcmlwdG9yXG4gIHJldHVybiBkZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhJbmplY3RvciB7XG4gIGluamVjdG9yOiBJbmplY3RvclxufVxuXG5jb25zdCBpbXBsZW1lbnRzV2l0aEluamVjdG9yID0gKGluc3RhbmNlOiB7fSk6IGluc3RhbmNlIGlzIFdpdGhJbmplY3RvciA9PiB7XG4gIHJldHVybiAnaW5qZWN0b3InIGluIGluc3RhbmNlICYmICdnZXQnIGluIChpbnN0YW5jZS5pbmplY3RvciBhcyBJbmplY3Rvcik7XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { Directive, ElementRef, Input, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class HandleSizeControllerDirective {
4
+ constructor() {
5
+ this.handleWrapper = inject(ElementRef);
6
+ }
7
+ ngAfterViewInit() {
8
+ const element = this.handleWrapper.nativeElement;
9
+ const rect = element.getBBox();
10
+ const stroke = getChildStrokeWidth(element);
11
+ this.handleModel.size.set({
12
+ width: rect.width + stroke,
13
+ height: rect.height + stroke
14
+ });
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HandleSizeControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HandleSizeControllerDirective, selector: "[handleSizeController]", inputs: { handleModel: ["handleSizeController", "handleModel"] }, ngImport: i0 }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HandleSizeControllerDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{ selector: '[handleSizeController]' }]
22
+ }], propDecorators: { handleModel: [{
23
+ type: Input,
24
+ args: [{ required: true, alias: 'handleSizeController' }]
25
+ }] } });
26
+ function getChildStrokeWidth(element) {
27
+ const child = element.firstElementChild;
28
+ if (child) {
29
+ const stroke = getComputedStyle(child).strokeWidth;
30
+ const strokeAsNumber = Number(stroke.replace('px', ''));
31
+ if (isNaN(strokeAsNumber)) {
32
+ return 0;
33
+ }
34
+ return strokeAsNumber;
35
+ }
36
+ return 0;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9oYW5kbGUtc2l6ZS1jb250cm9sbGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJcEYsTUFBTSxPQUFPLDZCQUE2QjtJQUQxQztRQUtVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBNEIsQ0FBQTtLQVl0RTtJQVZRLGVBQWU7UUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUE7UUFDaEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTlCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU07U0FDN0IsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0FmVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFEekMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRTs4QkFHeEMsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFOztBQWlCMUQsU0FBUyxtQkFBbUIsQ0FBQyxPQUFvQjtJQUMvQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUE7SUFFdkMsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUE7UUFDbEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFdkQsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUE7U0FDVDtRQUVELE9BQU8sY0FBYyxDQUFBO0tBQ3RCO0lBRUQsT0FBTyxDQUFDLENBQUE7QUFDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaGFuZGxlU2l6ZUNvbnRyb2xsZXJdJyB9KVxuZXhwb3J0IGNsYXNzIEhhbmRsZVNpemVDb250cm9sbGVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2hhbmRsZVNpemVDb250cm9sbGVyJyB9KVxuICBwdWJsaWMgaGFuZGxlTW9kZWwhOiBIYW5kbGVNb2RlbFxuXG4gIHByaXZhdGUgaGFuZGxlV3JhcHBlciA9IGluamVjdChFbGVtZW50UmVmKSBhcyBFbGVtZW50UmVmPFNWR0dFbGVtZW50PlxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuaGFuZGxlV3JhcHBlci5uYXRpdmVFbGVtZW50XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0QkJveCgpXG5cbiAgICBjb25zdCBzdHJva2UgPSBnZXRDaGlsZFN0cm9rZVdpZHRoKGVsZW1lbnQpXG4gICAgdGhpcy5oYW5kbGVNb2RlbC5zaXplLnNldCh7XG4gICAgICB3aWR0aDogcmVjdC53aWR0aCArIHN0cm9rZSxcbiAgICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKyBzdHJva2VcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldENoaWxkU3Ryb2tlV2lkdGgoZWxlbWVudDogU1ZHR0VsZW1lbnQpIHtcbiAgY29uc3QgY2hpbGQgPSBlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkXG5cbiAgaWYgKGNoaWxkKSB7XG4gICAgY29uc3Qgc3Ryb2tlID0gZ2V0Q29tcHV0ZWRTdHlsZShjaGlsZCkuc3Ryb2tlV2lkdGhcbiAgICBjb25zdCBzdHJva2VBc051bWJlciA9IE51bWJlcihzdHJva2UucmVwbGFjZSgncHgnLCAnJykpXG5cbiAgICBpZiAoaXNOYU4oc3Ryb2tlQXNOdW1iZXIpKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHJldHVybiBzdHJva2VBc051bWJlclxuICB9XG5cbiAgcmV0dXJuIDBcbn1cbiJdfQ==
@@ -4,14 +4,17 @@ import { zoom, zoomIdentity } from 'd3-zoom';
4
4
  import { ViewportService } from '../services/viewport.service';
5
5
  import { isDefined } from '../utils/is-defined';
6
6
  import { RootSvgReferenceDirective } from './reference.directive';
7
+ import { SelectionService } from '../services/selection.service';
7
8
  import * as i0 from "@angular/core";
8
9
  export class MapContextDirective {
9
10
  constructor() {
10
11
  this.rootSvg = inject(RootSvgReferenceDirective).element;
11
12
  this.host = inject(ElementRef).nativeElement;
13
+ this.selectionService = inject(SelectionService);
12
14
  this.viewportService = inject(ViewportService);
13
15
  this.rootSvgSelection = select(this.rootSvg);
14
16
  this.zoomableSelection = select(this.host);
17
+ this.viewportForSelection = {};
15
18
  // under the hood this effect triggers handleZoom, so error throws without this flag
16
19
  // TODO: hack with timer fixes wrong node scaling (handle positions not matched with content size)
17
20
  this.manualViewportChangeEffect = effect(() => setTimeout(() => {
@@ -38,15 +41,32 @@ export class MapContextDirective {
38
41
  }), { allowSignalWrites: true });
39
42
  this.handleZoom = ({ transform }) => {
40
43
  // update public signal for user to read
41
- this.viewportService.readableViewport.set({ zoom: transform.k, x: transform.x, y: transform.y });
44
+ this.viewportService.readableViewport.set(mapTransformToViewportState(transform));
42
45
  this.zoomableSelection.attr('transform', transform.toString());
43
46
  };
44
47
  }
45
48
  ngOnInit() {
46
49
  this.zoomBehavior = zoom()
47
50
  .scaleExtent([this.minZoom, this.maxZoom])
48
- .on('zoom', this.handleZoom);
49
- this.rootSvgSelection.call(this.zoomBehavior);
51
+ .on('start', (event) => this.onD3zoomStart(event))
52
+ .on('zoom', (event) => this.handleZoom(event))
53
+ .on('end', (event) => this.onD3zoomEnd(event));
54
+ this.rootSvgSelection
55
+ .call(this.zoomBehavior)
56
+ .on('dblclick.zoom', null);
57
+ }
58
+ onD3zoomStart({ transform }) {
59
+ this.viewportForSelection = {
60
+ start: mapTransformToViewportState(transform)
61
+ };
62
+ }
63
+ onD3zoomEnd({ transform, sourceEvent }) {
64
+ this.viewportForSelection = {
65
+ ...this.viewportForSelection,
66
+ end: mapTransformToViewportState(transform),
67
+ target: evTarget(sourceEvent)
68
+ };
69
+ this.selectionService.setViewport(this.viewportForSelection);
50
70
  }
51
71
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
72
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: MapContextDirective, selector: "g[mapContext]", inputs: { minZoom: "minZoom", maxZoom: "maxZoom" }, ngImport: i0 }); }
@@ -59,4 +79,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
59
79
  }], maxZoom: [{
60
80
  type: Input
61
81
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBNkIsSUFBSSxFQUFFLFlBQVksRUFBaUIsTUFBTSxTQUFTLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLbEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQVFZLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ2hFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUvQyxvRkFBb0Y7UUFDcEYsa0dBQWtHO1FBQ3hGLCtCQUEwQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFBO1lBRTVCLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLE9BQU07YUFDUDtZQUVELHdCQUF3QjtZQUN4QixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUVqRSxPQUFNO2FBQ1A7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFFM0UsT0FBTTthQUNQO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQ3BELFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDM0QsQ0FBQTtnQkFFRCxPQUFNO2FBQ1A7UUFDSCxDQUFDLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFZeEIsZUFBVSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQWEsRUFBRSxFQUFFO1lBQ2hELHdDQUF3QztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUVoRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxDQUFDLENBQUE7S0FDRjtJQWRRLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBMEI7YUFDL0MsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQzsrR0F4RFUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFOzhCQUcvQixPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzWm9vbUV2ZW50LCBab29tQmVoYXZpb3IsIHpvb20sIHpvb21JZGVudGl0eSwgem9vbVRyYW5zZm9ybSB9IGZyb20gJ2QzLXpvb20nO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlscy9pcy1kZWZpbmVkJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuXG50eXBlIFpvb21FdmVudCA9IEQzWm9vbUV2ZW50PFNWR1NWR0VsZW1lbnQsIHVua25vd24+XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2dbbWFwQ29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5ab29tITogbnVtYmVyXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heFpvb20hOiBudW1iZXJcblxuICBwcm90ZWN0ZWQgcm9vdFN2ZyA9IGluamVjdChSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlKS5lbGVtZW50XG4gIHByb3RlY3RlZCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG4gIHByb3RlY3RlZCB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKVxuXG4gIHByb3RlY3RlZCByb290U3ZnU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMucm9vdFN2ZylcbiAgcHJvdGVjdGVkIHpvb21hYmxlU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMuaG9zdClcblxuICAvLyB1bmRlciB0aGUgaG9vZCB0aGlzIGVmZmVjdCB0cmlnZ2VycyBoYW5kbGVab29tLCBzbyBlcnJvciB0aHJvd3Mgd2l0aG91dCB0aGlzIGZsYWdcbiAgLy8gVE9ETzogaGFjayB3aXRoIHRpbWVyIGZpeGVzIHdyb25nIG5vZGUgc2NhbGluZyAoaGFuZGxlIHBvc2l0aW9ucyBub3QgbWF0Y2hlZCB3aXRoIGNvbnRlbnQgc2l6ZSlcbiAgcHJvdGVjdGVkIG1hbnVhbFZpZXdwb3J0Q2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2Uud3JpdGFibGVWaWV3cG9ydCgpXG4gICAgY29uc3Qgc3RhdGUgPSB2aWV3cG9ydC5zdGF0ZVxuXG4gICAgaWYgKHZpZXdwb3J0LmNoYW5nZVR5cGUgPT09ICdpbml0aWFsJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSB6b29tIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS56b29tKSAmJiAoIWlzRGVmaW5lZChzdGF0ZS54KSAmJiAhaXNEZWZpbmVkKHN0YXRlLnkpKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3Iuc2NhbGVUbywgc3RhdGUuem9vbSlcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSBwYW4gcHJvdmlkZWRcbiAgICBpZiAoKGlzRGVmaW5lZChzdGF0ZS54KSAmJiBpc0RlZmluZWQoc3RhdGUueSkpICYmICFpc0RlZmluZWQoc3RhdGUuem9vbSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zbGF0ZVRvLCBzdGF0ZS54LCBzdGF0ZS55KVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBJZiB3aG9sZSB2aWV3b3J0IHN0YXRlIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS54KSAmJiBpc0RlZmluZWQoc3RhdGUueSkgJiYgaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICB0aGlzLnJvb3RTdmdTZWxlY3Rpb24uY2FsbCh0aGlzLnpvb21CZWhhdmlvci50cmFuc2Zvcm0sXG4gICAgICAgIHpvb21JZGVudGl0eS50cmFuc2xhdGUoc3RhdGUueCwgc3RhdGUueSkuc2NhbGUoc3RhdGUuem9vbSlcbiAgICAgIClcblxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9KSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuXG4gIHByb3RlY3RlZCB6b29tQmVoYXZpb3IhOiBab29tQmVoYXZpb3I8U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj47XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbUJlaGF2aW9yID0gem9vbTxTVkdTVkdFbGVtZW50LCB1bmtub3duPigpXG4gICAgICAuc2NhbGVFeHRlbnQoW3RoaXMubWluWm9vbSwgdGhpcy5tYXhab29tXSlcbiAgICAgIC5vbignem9vbScsIHRoaXMuaGFuZGxlWm9vbSlcblxuICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yKVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVab29tID0gKHsgdHJhbnNmb3JtIH06IFpvb21FdmVudCkgPT4ge1xuICAgIC8vIHVwZGF0ZSBwdWJsaWMgc2lnbmFsIGZvciB1c2VyIHRvIHJlYWRcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0LnNldCh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuICAgIHRoaXMuem9vbWFibGVTZWxlY3Rpb24uYXR0cigndHJhbnNmb3JtJywgdHJhbnNmb3JtLnRvU3RyaW5nKCkpXG4gIH1cbn1cbiJdfQ==
82
+ const mapTransformToViewportState = (transform) => ({ zoom: transform.k, x: transform.x, y: transform.y });
83
+ const evTarget = (anyEvent) => {
84
+ if (anyEvent instanceof Event && anyEvent.target instanceof Element) {
85
+ return anyEvent.target;
86
+ }
87
+ return undefined;
88
+ };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUE0QyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUF3QixNQUFNLCtCQUErQixDQUFDOztBQUt2RixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBUVksWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUNuRCxTQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFDaEUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFekMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXJDLHlCQUFvQixHQUFrQyxFQUFFLENBQUE7UUFF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U0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCBab29tVHJhbnNmb3JtLCB6b29tLCB6b29tSWRlbnRpdHkgfSBmcm9tICdkMy16b29tJztcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaXMtZGVmaW5lZCc7XG5pbXBvcnQgeyBSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9yZWZlcmVuY2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZpZXdwb3J0U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlLCBWaWV3cG9ydEZvclNlbGVjdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcblxudHlwZSBab29tRXZlbnQgPSBEM1pvb21FdmVudDxTVkdTVkdFbGVtZW50LCB1bmtub3duPlxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdnW21hcENvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluWm9vbSE6IG51bWJlclxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhab29tITogbnVtYmVyXG5cbiAgcHJvdGVjdGVkIHJvb3RTdmcgPSBpbmplY3QoUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSkuZWxlbWVudFxuICBwcm90ZWN0ZWQgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPFNWR0dFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudFxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKVxuICBwcm90ZWN0ZWQgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcblxuICBwcm90ZWN0ZWQgcm9vdFN2Z1NlbGVjdGlvbiA9IHNlbGVjdCh0aGlzLnJvb3RTdmcpXG4gIHByb3RlY3RlZCB6b29tYWJsZVNlbGVjdGlvbiA9IHNlbGVjdCh0aGlzLmhvc3QpXG5cbiAgcHJvdGVjdGVkIHZpZXdwb3J0Rm9yU2VsZWN0aW9uOiBQYXJ0aWFsPFZpZXdwb3J0Rm9yU2VsZWN0aW9uPiA9IHt9XG5cbiAgLy8gdW5kZXIgdGhlIGhvb2QgdGhpcyBlZmZlY3QgdHJpZ2dlcnMgaGFuZGxlWm9vbSwgc28gZXJyb3IgdGhyb3dzIHdpdGhvdXQgdGhpcyBmbGFnXG4gIC8vIFRPRE86IGhhY2sgd2l0aCB0aW1lciBmaXhlcyB3cm9uZyBub2RlIHNjYWxpbmcgKGhhbmRsZSBwb3NpdGlvbnMgbm90IG1hdGNoZWQgd2l0aCBjb250ZW50IHNpemUpXG4gIHByb3RlY3RlZCBtYW51YWxWaWV3cG9ydENoYW5nZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQoKVxuICAgIGNvbnN0IHN0YXRlID0gdmlld3BvcnQuc3RhdGVcblxuICAgIGlmICh2aWV3cG9ydC5jaGFuZ2VUeXBlID09PSAnaW5pdGlhbCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgem9vbSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUuem9vbSkgJiYgKCFpc0RlZmluZWQoc3RhdGUueCkgJiYgIWlzRGVmaW5lZChzdGF0ZS55KSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnNjYWxlVG8sIHN0YXRlLnpvb20pXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgcGFuIHByb3ZpZGVkXG4gICAgaWYgKChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpKSAmJiAhaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICB0aGlzLnJvb3RTdmdTZWxlY3Rpb24uY2FsbCh0aGlzLnpvb21CZWhhdmlvci50cmFuc2xhdGVUbywgc3RhdGUueCwgc3RhdGUueSlcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2hvbGUgdmlld29ydCBzdGF0ZSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpICYmIGlzRGVmaW5lZChzdGF0ZS56b29tKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3IudHJhbnNmb3JtLFxuICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHN0YXRlLnpvb20pXG4gICAgICApXG5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSksIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcblxuICBwcm90ZWN0ZWQgem9vbUJlaGF2aW9yITogWm9vbUJlaGF2aW9yPFNWR1NWR0VsZW1lbnQsIHVua25vd24+O1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21CZWhhdmlvciA9IHpvb208U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj4oKVxuICAgICAgLnNjYWxlRXh0ZW50KFt0aGlzLm1pblpvb20sIHRoaXMubWF4Wm9vbV0pXG4gICAgICAub24oJ3N0YXJ0JywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21TdGFydChldmVudCkpXG4gICAgICAub24oJ3pvb20nLCAoZXZlbnQ6IFpvb21FdmVudCkgPT4gdGhpcy5oYW5kbGVab29tKGV2ZW50KSlcbiAgICAgIC5vbignZW5kJywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21FbmQoZXZlbnQpKVxuXG4gICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAuY2FsbCh0aGlzLnpvb21CZWhhdmlvcilcbiAgICAgIC5vbignZGJsY2xpY2suem9vbScsIG51bGwpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb20gPSAoeyB0cmFuc2Zvcm0gfTogWm9vbUV2ZW50KSA9PiB7XG4gICAgLy8gdXBkYXRlIHB1YmxpYyBzaWduYWwgZm9yIHVzZXIgdG8gcmVhZFxuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuc2V0KG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pKVxuXG4gICAgdGhpcy56b29tYWJsZVNlbGVjdGlvbi5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2Zvcm0udG9TdHJpbmcoKSlcbiAgfVxuXG4gIHByaXZhdGUgb25EM3pvb21TdGFydCh7IHRyYW5zZm9ybSB9OiBab29tRXZlbnQpIHtcbiAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uID0ge1xuICAgICAgc3RhcnQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkQzem9vbUVuZCh7IHRyYW5zZm9ybSwgc291cmNlRXZlbnQgfTogWm9vbUV2ZW50KSB7XG4gICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24sXG4gICAgICBlbmQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pLFxuICAgICAgdGFyZ2V0OiBldlRhcmdldChzb3VyY2VFdmVudClcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2V0Vmlld3BvcnQoXG4gICAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uIGFzIFZpZXdwb3J0Rm9yU2VsZWN0aW9uXG4gICAgKVxuICB9XG59XG5cbmNvbnN0IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSA9ICh0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pOiBWaWV3cG9ydFN0YXRlID0+XG4gICh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuY29uc3QgZXZUYXJnZXQgPSAoYW55RXZlbnQ6IGFueSk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoYW55RXZlbnQgaW5zdGFuY2VvZiBFdmVudCAmJiBhbnlFdmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgcmV0dXJuIGFueUV2ZW50LnRhcmdldFxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
23
23
  type: HostListener,
24
24
  args: ['document:mouseup']
25
25
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRXBFLGlDQUFpQztBQUVqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FXdEQ7SUFUQyw2Q0FBNkM7SUFFbkMsZUFBZTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGtCQUFrQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7K0dBWFUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7OEJBTWxDLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlJztcblxuLy8gVE9ETzogdG9vIGdlbmVyYWwgcHVycG9zZSBuYW5lXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdzdmdbcm9vdFN2Z0NvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIFJvb3RTdmdDb250ZXh0RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBmbG93U3RhdHVzU2VydmljZSA9IGluamVjdChGbG93U3RhdHVzU2VydmljZSlcblxuICAvLyBUT0RPOiBjaGVjayBmb3IgbXVsdGlwbGUgaW5zdGFuY2VzIG9uIHBhZ2VcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcpXG4gIHByb3RlY3RlZCByZXNldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKVxuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tc3RhcnQnKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnNldElkbGVTdGF0dXMoKVxuICAgIH1cbiAgfVxufVxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBR3BFLGlDQUFpQztBQUVqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FXdEQ7SUFUQyw2Q0FBNkM7SUFFbkMsZUFBZTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGtCQUFrQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7K0dBWFUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7OEJBTWxDLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlJztcblxuXG4vLyBUT0RPOiB0b28gZ2VuZXJhbCBwdXJwb3NlIG5hbmVcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ3N2Z1tyb290U3ZnQ29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgUm9vdFN2Z0NvbnRleHREaXJlY3RpdmUge1xuICBwcml2YXRlIGZsb3dTdGF0dXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dTdGF0dXNTZXJ2aWNlKVxuXG4gIC8vIFRPRE86IGNoZWNrIGZvciBtdWx0aXBsZSBpbnN0YW5jZXMgb24gcGFnZVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJylcbiAgcHJvdGVjdGVkIHJlc2V0Q29ubmVjdGlvbigpIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnN0YXR1cygpXG5cbiAgICBpZiAoc3RhdHVzLnN0YXRlID09PSAnY29ubmVjdGlvbi1zdGFydCcpIHtcbiAgICAgIHRoaXMuZmxvd1N0YXR1c1NlcnZpY2Uuc2V0SWRsZVN0YXR1cygpXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { Directive, HostListener, inject } from '@angular/core';
2
+ import { SelectionService } from '../services/selection.service';
3
+ import { EdgeComponent } from '../components/edge/edge.component';
4
+ import { NodeComponent } from '../components/node/node.component';
5
+ import { FlowSettingsService } from '../services/flow-settings.service';
6
+ import * as i0 from "@angular/core";
7
+ export class SelectableDirective {
8
+ constructor() {
9
+ this.flowSettingsService = inject(FlowSettingsService);
10
+ this.selectionService = inject(SelectionService);
11
+ this.parentEdge = inject(EdgeComponent, { optional: true });
12
+ this.parentNode = inject(NodeComponent, { optional: true });
13
+ }
14
+ onMousedown() {
15
+ const entity = this.entity();
16
+ if (entity && this.flowSettingsService.entitiesSelectable()) {
17
+ this.selectionService.select(entity);
18
+ }
19
+ }
20
+ entity() {
21
+ if (this.parentNode) {
22
+ return this.parentNode.nodeModel;
23
+ }
24
+ else if (this.parentEdge) {
25
+ return this.parentEdge.model;
26
+ }
27
+ return null;
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SelectableDirective, selector: "[selectable]", host: { listeners: { "mousedown": "onMousedown()" } }, ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{ selector: '[selectable]' }]
35
+ }], propDecorators: { onMousedown: [{
36
+ type: HostListener,
37
+ args: ['mousedown']
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ2pELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzNDLGVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDdEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtLQW9CL0Q7SUFoQlcsV0FBVztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNyQztJQUNILENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUE7U0FDakM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQTtTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzsrR0F2QlUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFOzhCQVMzQixXQUFXO3NCQURwQixZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRnZS9lZGdlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9ub2RlL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbc2VsZWN0YWJsZV0nIH0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKVxuICBwcml2YXRlIHNlbGVjdGlvblNlcnZpY2UgPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSlcbiAgcHJpdmF0ZSBwYXJlbnRFZGdlID0gaW5qZWN0KEVkZ2VDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgcHJpdmF0ZSBwYXJlbnROb2RlID0gaW5qZWN0KE5vZGVDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSlcblxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicpXG4gIHByb3RlY3RlZCBvbk1vdXNlZG93bigpIHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0eSgpXG4gICAgaWYgKGVudGl0eSAmJiB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuZW50aXRpZXNTZWxlY3RhYmxlKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3QoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW50aXR5KCk6IEZsb3dFbnRpdHkgfCBudWxsIHtcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlLm5vZGVNb2RlbFxuICAgIH0gZWxzZSBpZiAodGhpcy5wYXJlbnRFZGdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRFZGdlLm1vZGVsXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1lbnRpdHkuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGbG93RW50aXR5IHtcbiAgc2VsZWN0ZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgRWRnZSB9IGZyb20gXCIuL2VkZ2UuaW50ZXJmYWNlXCJcblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQ29udGV4dCB7XG4gICRpbXBsaWNpdDoge1xuICAgIGVkZ2U6IEVkZ2VcbiAgICBwYXRoOiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlclN0YXJ0OiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlckVuZDogU2lnbmFsPHN0cmluZz5cbiAgfVxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgRWRnZSB9IGZyb20gXCIuL2VkZ2UuaW50ZXJmYWNlXCJcblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQ29udGV4dCB7XG4gICRpbXBsaWNpdDoge1xuICAgIGVkZ2U6IEVkZ2VcbiAgICBwYXRoOiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlclN0YXJ0OiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlckVuZDogU2lnbmFsPHN0cmluZz5cbiAgICBzZWxlY3RlZDogU2lnbmFsPGJvb2xlYW4+XG4gIH1cbn1cbiJdfQ==