@tetacom/svg-charts 1.2.28 → 1.3.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 (35) hide show
  1. package/chart/chart/chart.component.d.ts +5 -2
  2. package/chart/chart-container/chart-container.component.d.ts +1 -1
  3. package/chart/chart-container/series/linear-series-base.d.ts +0 -3
  4. package/chart/core/axis/axis.d.ts +2 -2
  5. package/chart/directives/brushable.directive.d.ts +15 -5
  6. package/chart/directives/zoomable.directive.d.ts +6 -11
  7. package/chart/model/i-broadcast-message.d.ts +18 -19
  8. package/chart/model/marker-options.d.ts +1 -1
  9. package/chart/service/broadcast.service.d.ts +1 -4
  10. package/chart/service/brush.service.d.ts +6 -13
  11. package/chart/service/chart.service.d.ts +0 -4
  12. package/chart/service/scale.service.d.ts +1 -1
  13. package/chart/service/zoom.service.d.ts +15 -15
  14. package/esm2020/chart/chart/chart.component.mjs +17 -17
  15. package/esm2020/chart/chart-container/chart-container.component.mjs +3 -3
  16. package/esm2020/chart/chart-container/crosshair/crosshair.component.mjs +1 -2
  17. package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +4 -2
  18. package/esm2020/chart/chart-container/series/line/line-series.component.mjs +4 -4
  19. package/esm2020/chart/chart-container/series/linear-series-base.mjs +4 -72
  20. package/esm2020/chart/core/axis/axis.mjs +2 -2
  21. package/esm2020/chart/directives/brushable.directive.mjs +120 -10
  22. package/esm2020/chart/directives/draggable-point.directive.mjs +2 -1
  23. package/esm2020/chart/directives/zoomable.directive.mjs +90 -197
  24. package/esm2020/chart/model/i-broadcast-message.mjs +4 -6
  25. package/esm2020/chart/model/marker-options.mjs +1 -1
  26. package/esm2020/chart/service/broadcast.service.mjs +4 -17
  27. package/esm2020/chart/service/brush.service.mjs +11 -147
  28. package/esm2020/chart/service/chart.service.mjs +17 -9
  29. package/esm2020/chart/service/scale.service.mjs +19 -21
  30. package/esm2020/chart/service/zoom.service.mjs +48 -53
  31. package/fesm2015/tetacom-svg-charts.mjs +373 -586
  32. package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
  33. package/fesm2020/tetacom-svg-charts.mjs +356 -566
  34. package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
  35. package/package.json +1 -1
@@ -1,18 +1,15 @@
1
+ import { combineLatest, BehaviorSubject, shareReplay, filter, } from 'rxjs';
2
+ import { AxisOrientation } from '../model/enum/axis-orientation';
1
3
  import { Injectable } from '@angular/core';
2
- import { BehaviorSubject, shareReplay, } from 'rxjs';
3
- import { zoomIdentity } from "d3";
4
- import { AxisOrientation } from "../model/enum/axis-orientation";
5
- import { ScaleType } from "../model/enum/scale-type";
6
- import objectHash from 'object-hash';
4
+ import { zoomIdentity } from 'd3';
7
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "./broadcast.service";
7
+ import * as i2 from "./chart.service";
8
8
  export class ZoomService {
9
- constructor() {
10
- this.broadcastSubscription = [];
11
- this.axisHashMap = new Map();
12
- this.scaleHashMap = new Map();
13
- this.elementHashMap = new Map();
14
- this.zoomHashMap = new Map();
15
- this.zoomed$ = new BehaviorSubject({});
9
+ constructor(_broadcast, _chart) {
10
+ this._broadcast = _broadcast;
11
+ this._chart = _chart;
12
+ this.zoomed$ = new BehaviorSubject(null);
16
13
  this.zoomed = this.zoomed$.asObservable().pipe(shareReplay({
17
14
  bufferSize: 1,
18
15
  refCount: true
@@ -21,62 +18,60 @@ export class ZoomService {
21
18
  fireZoom(zoom) {
22
19
  this.zoomed$.next(zoom);
23
20
  }
21
+ broadcastZoom(zoom) {
22
+ if (this.broadcastChannel?.length) {
23
+ this._broadcast.broadcastZoom({
24
+ channel: this.broadcastChannel,
25
+ message: zoom
26
+ });
27
+ }
28
+ }
24
29
  setBroadcastChannel(channel) {
30
+ if (this.broadcastSub) {
31
+ this.broadcastSub?.unsubscribe();
32
+ }
25
33
  this.broadcastChannel = channel;
26
- }
27
- setZoom(from, to, axisIndex = 0, axisOrientation = AxisOrientation.x) {
28
- const hash = objectHash.sha1({ index: axisIndex, orientation: axisOrientation });
29
- if (!this.zoomHashMap.has(hash)) {
30
- return;
34
+ if (this.broadcastChannel?.length) {
35
+ this.broadcastSub = combineLatest([this._broadcast.subscribeToZoom(this.broadcastChannel), this._chart.config])
36
+ .pipe(filter(([zoom, config]) => {
37
+ return zoom.message?.chartId !== config.id;
38
+ }))
39
+ .subscribe(([zoom, config]) => {
40
+ this.fireZoom(zoom.message);
41
+ });
31
42
  }
32
- const currentAxis = this.axisHashMap.get(hash);
33
- const currentScale = this.scaleHashMap.get(hash);
34
- const currentElement = this.elementHashMap.get(hash);
35
- const currentZoom = this.zoomHashMap.get(hash);
36
- currentScale.domain(currentAxis.originDomain);
37
- if (axisOrientation === AxisOrientation.x) {
38
- if (currentAxis.options.scaleType.type === ScaleType.log) {
39
- currentScale.domain(currentAxis.options.inverted ? [...currentAxis.originDomain].reverse() : currentAxis.originDomain);
43
+ }
44
+ getD3Transform(targetDomain, originalDomain, scale, orientation, inverted) {
45
+ const zoomScale = Math.abs(originalDomain[1] - originalDomain[0]) / Math.abs(targetDomain[1] - targetDomain[0]);
46
+ let transform = zoomIdentity.scale(zoomScale);
47
+ if (orientation === AxisOrientation.x) {
48
+ if (!!inverted) {
49
+ transform = transform.translate(-scale(Math.max(...targetDomain)), 0);
40
50
  }
41
- }
42
- if (axisOrientation === AxisOrientation.y) {
43
- if (currentAxis.options.scaleType.type === ScaleType.log) {
44
- currentScale.domain(currentAxis.options.inverted ? currentAxis.originDomain : [...currentAxis.originDomain].reverse());
51
+ else {
52
+ transform = transform.translate(-scale(Math.min(...targetDomain)), 0);
45
53
  }
46
54
  }
47
- const delta = Math.abs(currentScale(to) - currentScale(from));
48
- const scale = currentScale.range()[1] / delta;
49
- let transform = zoomIdentity.scale(scale);
50
- if (currentAxis.orientation === AxisOrientation.x) {
51
- if (currentAxis.options.scaleType.type === ScaleType.log) {
52
- currentScale.domain(currentAxis.options.inverted ? [...currentScale.domain()].reverse() : currentScale.domain());
55
+ if (orientation === AxisOrientation.y) {
56
+ if (!!inverted) {
57
+ transform = transform.translate(0, -scale(Math.min(...targetDomain)));
53
58
  }
54
- transform = transform.translate(-currentScale(from), 0);
55
- }
56
- if (currentAxis.orientation === AxisOrientation.y) {
57
- if (currentAxis.options.scaleType.type === ScaleType.log) {
58
- currentScale.domain(currentAxis.options.inverted ? currentScale.domain() : [...currentScale.domain()].reverse());
59
+ else {
60
+ transform = transform.translate(0, -scale(Math.max(...targetDomain)));
59
61
  }
60
- transform = transform.translate(0, -currentScale(from));
61
62
  }
62
- currentElement.transition().call(currentZoom.transform, transform, null, new MouseEvent('setZoom'));
63
+ return transform;
63
64
  }
64
- resetZoom(axisIndex = 0, axisOrientation = AxisOrientation.x) {
65
- const hash = objectHash.sha1({ index: axisIndex, orientation: axisOrientation });
66
- if (!this.zoomHashMap.has(hash)) {
67
- return;
68
- }
69
- const currentElement = this.elementHashMap.get(hash);
70
- const currentZoom = this.zoomHashMap.get(hash);
71
- currentElement.transition().call(currentZoom.transform, zoomIdentity, null, new MouseEvent('resetZoom'));
65
+ ngOnDestroy() {
66
+ this.broadcastSub?.unsubscribe();
72
67
  }
73
68
  }
74
- ZoomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ZoomService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
69
+ ZoomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ZoomService, deps: [{ token: i1.BroadcastService }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Injectable });
75
70
  ZoomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ZoomService, providedIn: 'root' });
76
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ZoomService, decorators: [{
77
72
  type: Injectable,
78
73
  args: [{
79
74
  providedIn: 'root',
80
75
  }]
81
- }], ctorParameters: function () { return []; } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L3NlcnZpY2Uvem9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBYyxXQUFXLEdBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0QsT0FBTyxFQUFlLFlBQVksRUFBQyxNQUFNLElBQUksQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQzs7QUFLckMsTUFBTSxPQUFPLFdBQVc7SUFXdEI7UUFWQSwwQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFM0IsZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFFaEQsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUkzRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN6RCxVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQXVCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFlO1FBQ2pD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QUFFLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQzs7d0dBbEZVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHtab29tQmVoYXZpb3IsIHpvb21JZGVudGl0eX0gZnJvbSBcImQzXCI7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSBcIi4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvblwiO1xuaW1wb3J0IHtTY2FsZVR5cGV9IGZyb20gXCIuLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGVcIjtcbmltcG9ydCBvYmplY3RIYXNoIGZyb20gJ29iamVjdC1oYXNoJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFpvb21TZXJ2aWNlIHtcbiAgYnJvYWRjYXN0U3Vic2NyaXB0aW9uID0gW107XG4gIHpvb21lZDogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxBeGlzPj47XG4gIGF4aXNIYXNoTWFwID0gbmV3IE1hcDxzdHJpbmcsIEF4aXM+KCk7XG4gIHNjYWxlSGFzaE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGVsZW1lbnRIYXNoTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgem9vbUhhc2hNYXAgPSBuZXcgTWFwPHN0cmluZywgWm9vbUJlaGF2aW9yPGFueSwgYW55Pj4oKTtcblxuICBwcml2YXRlIHpvb21lZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDaGFydEV2ZW50PEF4aXM+Pih7fSk7XG4gIHByaXZhdGUgYnJvYWRjYXN0Q2hhbm5lbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuem9vbWVkID0gdGhpcy56b29tZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoe1xuICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgIHJlZkNvdW50OiB0cnVlXG4gICAgfSkpO1xuICB9XG5cbiAgZmlyZVpvb20oem9vbTogSUNoYXJ0RXZlbnQ8QXhpcz4pIHtcbiAgICB0aGlzLnpvb21lZCQubmV4dCh6b29tKTtcbiAgfVxuXG4gIHNldEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgdGhpcy5icm9hZGNhc3RDaGFubmVsID0gY2hhbm5lbDtcbiAgfVxuXG4gIHNldFpvb20oZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCBheGlzSW5kZXggPSAwLCBheGlzT3JpZW50YXRpb24gPSBBeGlzT3JpZW50YXRpb24ueCkge1xuXG4gICAgY29uc3QgaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IGF4aXNJbmRleCwgb3JpZW50YXRpb246IGF4aXNPcmllbnRhdGlvbn0pO1xuXG4gICAgaWYgKCF0aGlzLnpvb21IYXNoTWFwLmhhcyhoYXNoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRBeGlzID0gdGhpcy5heGlzSGFzaE1hcC5nZXQoaGFzaCk7XG4gICAgY29uc3QgY3VycmVudFNjYWxlID0gdGhpcy5zY2FsZUhhc2hNYXAuZ2V0KGhhc2gpO1xuICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50SGFzaE1hcC5nZXQoaGFzaCk7XG4gICAgY29uc3QgY3VycmVudFpvb20gPSB0aGlzLnpvb21IYXNoTWFwLmdldChoYXNoKTtcblxuICAgIGN1cnJlbnRTY2FsZS5kb21haW4oY3VycmVudEF4aXMub3JpZ2luRG9tYWluKVxuXG4gICAgaWYgKGF4aXNPcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgIGlmIChjdXJyZW50QXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUubG9nKSB7XG4gICAgICAgIGN1cnJlbnRTY2FsZS5kb21haW4oY3VycmVudEF4aXMub3B0aW9ucy5pbnZlcnRlZCA/IFsuLi5jdXJyZW50QXhpcy5vcmlnaW5Eb21haW5dLnJldmVyc2UoKSA6IGN1cnJlbnRBeGlzLm9yaWdpbkRvbWFpbilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXhpc09yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgaWYgKGN1cnJlbnRBeGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgY3VycmVudFNjYWxlLmRvbWFpbihjdXJyZW50QXhpcy5vcHRpb25zLmludmVydGVkID8gY3VycmVudEF4aXMub3JpZ2luRG9tYWluIDogWy4uLmN1cnJlbnRBeGlzLm9yaWdpbkRvbWFpbl0ucmV2ZXJzZSgpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlbHRhID0gTWF0aC5hYnMoY3VycmVudFNjYWxlKHRvKSAtIGN1cnJlbnRTY2FsZShmcm9tKSk7XG4gICAgY29uc3Qgc2NhbGUgPSBjdXJyZW50U2NhbGUucmFuZ2UoKVsxXSAvIGRlbHRhO1xuXG4gICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICBpZiAoY3VycmVudEF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICBpZiAoY3VycmVudEF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSA9PT0gU2NhbGVUeXBlLmxvZykge1xuICAgICAgICBjdXJyZW50U2NhbGUuZG9tYWluKGN1cnJlbnRBeGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBbLi4uY3VycmVudFNjYWxlLmRvbWFpbigpXS5yZXZlcnNlKCkgOiBjdXJyZW50U2NhbGUuZG9tYWluKCkpXG4gICAgICB9XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKC1jdXJyZW50U2NhbGUoZnJvbSksIDApO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50QXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgIGlmIChjdXJyZW50QXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUubG9nKSB7XG4gICAgICAgIGN1cnJlbnRTY2FsZS5kb21haW4oY3VycmVudEF4aXMub3B0aW9ucy5pbnZlcnRlZCA/IGN1cnJlbnRTY2FsZS5kb21haW4oKSA6IFsuLi5jdXJyZW50U2NhbGUuZG9tYWluKCldLnJldmVyc2UoKSlcbiAgICAgIH1cbiAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLWN1cnJlbnRTY2FsZShmcm9tKSk7XG4gICAgfVxuICAgIGN1cnJlbnRFbGVtZW50LnRyYW5zaXRpb24oKS5jYWxsKGN1cnJlbnRab29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtLCBudWxsLCBuZXcgTW91c2VFdmVudCgnc2V0Wm9vbScpKVxuICB9XG5cbiAgcmVzZXRab29tKGF4aXNJbmRleCA9IDAsIGF4aXNPcmllbnRhdGlvbiA9IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgY29uc3QgaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IGF4aXNJbmRleCwgb3JpZW50YXRpb246IGF4aXNPcmllbnRhdGlvbn0pO1xuICAgIGlmICghdGhpcy56b29tSGFzaE1hcC5oYXMoaGFzaCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRIYXNoTWFwLmdldChoYXNoKTtcbiAgICBjb25zdCBjdXJyZW50Wm9vbSA9IHRoaXMuem9vbUhhc2hNYXAuZ2V0KGhhc2gpO1xuICAgIGN1cnJlbnRFbGVtZW50LnRyYW5zaXRpb24oKS5jYWxsKGN1cnJlbnRab29tLnRyYW5zZm9ybSwgem9vbUlkZW50aXR5LCBudWxsLCBuZXcgTW91c2VFdmVudCgncmVzZXRab29tJykpO1xuICB9XG5cbn1cbiJdfQ==
76
+ }], ctorParameters: function () { return [{ type: i1.BroadcastService }, { type: i2.ChartService }]; } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L3NlcnZpY2Uvem9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUUsZUFBZSxFQUFjLFdBQVcsRUFBZ0IsTUFBTSxHQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxJQUFJLENBQUM7Ozs7QUFPaEMsTUFBTSxPQUFPLFdBQVc7SUFPdEIsWUFBb0IsVUFBNEIsRUFBVSxNQUFvQjtRQUExRCxlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWM7UUFKdEUsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFjLElBQUksQ0FBQyxDQUFDO1FBS3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3pELFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBaUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFpQjtRQUM3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUM5QixPQUFPLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWU7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRTtZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzVHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO2dCQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7aUJBQ0YsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsWUFBOEIsRUFDOUIsY0FBZ0MsRUFDaEMsS0FBSyxFQUNMLFdBQTRCLEVBQzVCLFFBQWlCO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkU7aUJBQU07Z0JBQ0wsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkU7U0FDRjtRQUVELElBQUksV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUNkLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO2lCQUFNO2dCQUNMLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZFO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7d0dBdEVVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbWJpbmVMYXRlc3QsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YnNjcmlwdGlvbiwgZmlsdGVyLH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Wm9vbU1lc3NhZ2V9IGZyb20gJy4uL21vZGVsL2ktYnJvYWRjYXN0LW1lc3NhZ2UnO1xuaW1wb3J0IHt6b29tSWRlbnRpdHl9IGZyb20gJ2QzJztcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSAnLi9icm9hZGNhc3Quc2VydmljZSc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi9jaGFydC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFpvb21TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgem9vbWVkOiBPYnNlcnZhYmxlPFpvb21NZXNzYWdlPjtcblxuICBwcml2YXRlIHpvb21lZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFpvb21NZXNzYWdlPihudWxsKTtcbiAgcHJpdmF0ZSBicm9hZGNhc3RDaGFubmVsOiBzdHJpbmc7XG4gIHByaXZhdGUgYnJvYWRjYXN0U3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYnJvYWRjYXN0OiBCcm9hZGNhc3RTZXJ2aWNlLCBwcml2YXRlIF9jaGFydDogQ2hhcnRTZXJ2aWNlKSB7XG4gICAgdGhpcy56b29tZWQgPSB0aGlzLnpvb21lZCQuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSh7XG4gICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgcmVmQ291bnQ6IHRydWVcbiAgICB9KSk7XG4gIH1cblxuICBmaXJlWm9vbSh6b29tOiBab29tTWVzc2FnZSkge1xuICAgIHRoaXMuem9vbWVkJC5uZXh0KHpvb20pO1xuICB9XG5cbiAgYnJvYWRjYXN0Wm9vbSh6b29tOiBab29tTWVzc2FnZSkge1xuICAgIGlmICh0aGlzLmJyb2FkY2FzdENoYW5uZWw/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5fYnJvYWRjYXN0LmJyb2FkY2FzdFpvb20oe1xuICAgICAgICBjaGFubmVsOiB0aGlzLmJyb2FkY2FzdENoYW5uZWwsXG4gICAgICAgIG1lc3NhZ2U6IHpvb21cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuYnJvYWRjYXN0U3ViKSB7XG4gICAgICB0aGlzLmJyb2FkY2FzdFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5icm9hZGNhc3RDaGFubmVsID0gY2hhbm5lbDtcbiAgICBpZiAodGhpcy5icm9hZGNhc3RDaGFubmVsPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYnJvYWRjYXN0U3ViID0gY29tYmluZUxhdGVzdChbdGhpcy5fYnJvYWRjYXN0LnN1YnNjcmliZVRvWm9vbSh0aGlzLmJyb2FkY2FzdENoYW5uZWwpLCB0aGlzLl9jaGFydC5jb25maWddKVxuICAgICAgICAucGlwZShmaWx0ZXIoKFt6b29tLCBjb25maWddKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHpvb20ubWVzc2FnZT8uY2hhcnRJZCAhPT0gY29uZmlnLmlkO1xuICAgICAgICB9KSlcbiAgICAgICAgLnN1YnNjcmliZSgoW3pvb20sIGNvbmZpZ10pID0+IHtcbiAgICAgICAgICB0aGlzLmZpcmVab29tKHpvb20ubWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEQzVHJhbnNmb3JtKHRhcmdldERvbWFpbjogW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICAgICAgICAgb3JpZ2luYWxEb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gICAgICAgICAgICAgICAgIHNjYWxlLFxuICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogQXhpc09yaWVudGF0aW9uLFxuICAgICAgICAgICAgICAgICBpbnZlcnRlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IHpvb21TY2FsZSA9IE1hdGguYWJzKG9yaWdpbmFsRG9tYWluWzFdIC0gb3JpZ2luYWxEb21haW5bMF0pIC8gTWF0aC5hYnModGFyZ2V0RG9tYWluWzFdIC0gdGFyZ2V0RG9tYWluWzBdKTtcbiAgICBsZXQgdHJhbnNmb3JtID0gem9vbUlkZW50aXR5LnNjYWxlKHpvb21TY2FsZSk7XG4gICAgaWYgKG9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgaWYgKCEhaW52ZXJ0ZWQpIHtcbiAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2NhbGUoTWF0aC5tYXgoLi4udGFyZ2V0RG9tYWluKSksIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2NhbGUoTWF0aC5taW4oLi4udGFyZ2V0RG9tYWluKSksIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgIGlmICghIWludmVydGVkKSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXNjYWxlKE1hdGgubWluKC4uLnRhcmdldERvbWFpbikpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXNjYWxlKE1hdGgubWF4KC4uLnRhcmdldERvbWFpbikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYnJvYWRjYXN0U3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=