@tetacom/svg-charts 1.1.10 → 1.1.13
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.
- package/chart/base/series-base.component.d.ts +4 -6
- package/chart/chart/chart.component.d.ts +10 -3
- package/chart/chart-container/annotation/annotation.component.d.ts +22 -13
- package/chart/chart-container/chart-container.component.d.ts +3 -3
- package/chart/chart-container/gridlines/gridlines.component.d.ts +3 -1
- package/chart/chart-container/plotband/plot-band.component.d.ts +5 -2
- package/chart/chart-container/plotline/plotline.component.d.ts +4 -2
- package/chart/chart-container/series/area-series/area-series.component.d.ts +6 -14
- package/chart/chart-container/series/line/line-series.component.d.ts +3 -14
- package/chart/chart-container/series/linear-series-base.d.ts +30 -0
- package/chart/chart-container/series-host/series-host.component.d.ts +4 -8
- package/chart/chart-container/tooltip/tooltip.component.d.ts +1 -1
- package/chart/chart.module.d.ts +18 -17
- package/chart/directives/zoomable.directive.d.ts +9 -4
- package/chart/model/annotation.d.ts +8 -18
- package/chart/model/i-chart-config.d.ts +9 -1
- package/chart/service/brush.service.d.ts +3 -2
- package/chart/service/chart.service.d.ts +8 -0
- package/esm2020/chart/base/series-base.component.mjs +8 -6
- package/esm2020/chart/chart/chart.component.mjs +75 -19
- package/esm2020/chart/chart-container/annotation/annotation.component.mjs +66 -44
- package/esm2020/chart/chart-container/chart-container.component.mjs +11 -7
- package/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +5 -3
- package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +12 -6
- package/esm2020/chart/chart-container/plotline/plotline.component.mjs +7 -3
- package/esm2020/chart/chart-container/series/area-series/area-series.component.mjs +13 -138
- package/esm2020/chart/chart-container/series/block-series/block-series.component.mjs +2 -2
- package/esm2020/chart/chart-container/series/line/line-series.component.mjs +3 -159
- package/esm2020/chart/chart-container/series/linear-series-base.mjs +188 -0
- package/esm2020/chart/chart-container/series-host/series-host.component.mjs +9 -24
- package/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +5 -5
- package/esm2020/chart/chart.module.mjs +4 -1
- package/esm2020/chart/default/default-chart-config.mjs +4 -2
- package/esm2020/chart/directives/brushable.directive.mjs +3 -2
- package/esm2020/chart/directives/zoomable.directive.mjs +79 -54
- package/esm2020/chart/model/annotation.mjs +2 -13
- package/esm2020/chart/model/i-broadcast-message.mjs +1 -1
- package/esm2020/chart/model/i-chart-config.mjs +1 -1
- package/esm2020/chart/service/broadcast.service.mjs +9 -3
- package/esm2020/chart/service/brush.service.mjs +58 -19
- package/esm2020/chart/service/chart.service.mjs +17 -3
- package/esm2020/chart/service/scale.service.mjs +9 -3
- package/esm2020/chart/service/zoom.service.mjs +5 -2
- package/fesm2015/tetacom-svg-charts.mjs +416 -354
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +399 -334
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -2,22 +2,51 @@ import { Directive, HostBinding, Input, } from '@angular/core';
|
|
|
2
2
|
import { Axis } from '../core/axis/axis';
|
|
3
3
|
import * as d3 from 'd3';
|
|
4
4
|
import { zoomIdentity } from 'd3';
|
|
5
|
-
import { ZoomType } from
|
|
6
|
-
import { AxisOrientation } from
|
|
7
|
-
import { ZoomMessage } from
|
|
8
|
-
import { BrushType } from
|
|
9
|
-
import {
|
|
10
|
-
import { filter, takeWhile } from
|
|
5
|
+
import { ZoomType } from '../model/enum/zoom-type';
|
|
6
|
+
import { AxisOrientation } from '../model/enum/axis-orientation';
|
|
7
|
+
import { ZoomMessage } from '../model/i-broadcast-message';
|
|
8
|
+
import { BrushType } from '../model/enum/brush-type';
|
|
9
|
+
import { debounceTime, tap } from 'rxjs/operators';
|
|
10
|
+
import { filter, takeWhile } from 'rxjs';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "../service/zoom.service";
|
|
13
13
|
import * as i2 from "../service/broadcast.service";
|
|
14
14
|
export class ZoomableDirective {
|
|
15
|
-
constructor(elementRef, zoomService, broadcastService) {
|
|
15
|
+
constructor(elementRef, zoomService, broadcastService, zone) {
|
|
16
16
|
this.elementRef = elementRef;
|
|
17
17
|
this.zoomService = zoomService;
|
|
18
18
|
this.broadcastService = broadcastService;
|
|
19
|
+
this.zone = zone;
|
|
19
20
|
this.zoomable = false;
|
|
20
21
|
this.alive = true;
|
|
22
|
+
this.currentTransform = zoomIdentity;
|
|
23
|
+
this.zoomed = (event) => {
|
|
24
|
+
if (event.sourceEvent) {
|
|
25
|
+
if (Object.keys(event.sourceEvent).length !== 0) {
|
|
26
|
+
if (this.currentTransform === event.transform && event.type !== 'end') {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const origin = this.brushScale.copy().domain(this.zoomAxis.extremes);
|
|
30
|
+
let domain = this.config.zoom?.type === ZoomType.y ?
|
|
31
|
+
event.transform.rescaleY(origin).domain() :
|
|
32
|
+
event.transform.rescaleX(origin).domain();
|
|
33
|
+
const message = new ZoomMessage({
|
|
34
|
+
event,
|
|
35
|
+
axis: this.zoomAxis,
|
|
36
|
+
brushDomain: domain
|
|
37
|
+
});
|
|
38
|
+
this.broadcastService.broadcastZoom({
|
|
39
|
+
channel: this.config?.zoom?.syncChannel,
|
|
40
|
+
message,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
this.zoomService.setZoom({
|
|
44
|
+
event,
|
|
45
|
+
target: this.zoomAxis
|
|
46
|
+
});
|
|
47
|
+
this.currentTransform = event.transform;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
21
50
|
}
|
|
22
51
|
ngOnInit() {
|
|
23
52
|
if (this.axis?.options?.zoom || this.config?.zoom?.enable) {
|
|
@@ -25,84 +54,80 @@ export class ZoomableDirective {
|
|
|
25
54
|
}
|
|
26
55
|
}
|
|
27
56
|
ngAfterViewInit() {
|
|
28
|
-
const enable = this.axis?.options?.zoom || this.config?.zoom?.enable;
|
|
57
|
+
const enable = this.axis?.options?.zoom && this.axis?.options.visible || this.config?.zoom?.enable;
|
|
29
58
|
if (!enable) {
|
|
30
59
|
return;
|
|
31
60
|
}
|
|
32
61
|
this._element = d3.select(this.elementRef.nativeElement);
|
|
33
62
|
this.zoom = d3
|
|
34
63
|
.zoom()
|
|
35
|
-
.scaleExtent([0, Infinity])
|
|
36
64
|
.extent([
|
|
37
65
|
[0, 0],
|
|
38
66
|
[this.size.width, this.size.height],
|
|
39
67
|
]);
|
|
40
68
|
const commonZoomAxis = Axis.createAxis(this.config?.zoom.type === ZoomType.x ? AxisOrientation.x : AxisOrientation.y, this.config, 0, true);
|
|
41
69
|
this.zoomAxis = this.axis ?? commonZoomAxis;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
event,
|
|
51
|
-
axis: this.zoomAxis,
|
|
52
|
-
brushDomain: this.config.brush?.type === BrushType.x
|
|
53
|
-
? this.brushScale.domain()
|
|
54
|
-
: this.brushScale.domain(),
|
|
55
|
-
});
|
|
56
|
-
this.broadcastService.broadcastZoom({
|
|
57
|
-
channel: this.config?.zoom?.syncChannel,
|
|
58
|
-
message,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
this.zoom.on('start zoom end', zoomed);
|
|
64
|
-
this._element.call(this.zoom);
|
|
70
|
+
if (enable) {
|
|
71
|
+
const maxZoom = this.config.zoom?.max ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / this.config.zoom?.max : 0;
|
|
72
|
+
const minZoom = this.config.zoom?.min ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / this.config.zoom?.min : Infinity;
|
|
73
|
+
this.zoom.scaleExtent([maxZoom, minZoom]);
|
|
74
|
+
console.log(this.zoom.scaleExtent());
|
|
75
|
+
this.zoom.on('start zoom end', this.zoomed);
|
|
76
|
+
this._element.call(this.zoom);
|
|
77
|
+
}
|
|
65
78
|
// Subscribe to zoom events
|
|
66
|
-
this.broadcastService.subscribeToZoom(this.config?.zoom.syncChannel).pipe(
|
|
79
|
+
this.broadcastService.subscribeToZoom(this.config?.zoom.syncChannel).pipe(filter((m) => m.message.event.sourceEvent instanceof MouseEvent || m.message.event.sourceEvent instanceof WheelEvent), debounceTime(30), filter((m) => {
|
|
67
80
|
return this.zoomAxis.index === m.message?.axis?.index && this.zoomAxis.orientation === m.message?.axis?.orientation;
|
|
68
81
|
}), tap((m) => {
|
|
69
82
|
const currentTransform = d3.zoomTransform(this.elementRef.nativeElement);
|
|
70
83
|
if (currentTransform !== m.message.event.transform) {
|
|
71
84
|
this._element.call(this.zoom.transform, m.message.event.transform, null, {});
|
|
72
85
|
}
|
|
73
|
-
})).subscribe();
|
|
86
|
+
}), takeWhile((_) => this.alive)).subscribe();
|
|
74
87
|
// Subscribe to brush events x or y
|
|
75
|
-
if ((this.config.brush?.type === BrushType.x && this.zoomAxis.orientation === AxisOrientation.x) ||
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
let transform = zoomIdentity.scale(scale);
|
|
82
|
-
if (m.message?.brushType === BrushType.x) {
|
|
83
|
-
transform = transform.translate(-this.brushScale(s[0]), 0);
|
|
88
|
+
if ((this.config.brush?.type === BrushType.x && this.zoomAxis.orientation === AxisOrientation.x) ||
|
|
89
|
+
(this.config.brush?.type === BrushType.y && this.zoomAxis.orientation === AxisOrientation.y)) {
|
|
90
|
+
this.broadcastService.subscribeToBrush(this.config?.zoom.syncChannel).pipe(debounceTime(30), filter((m) => Boolean(m.message.selection)), tap((m) => {
|
|
91
|
+
const currentTransform = d3.zoomTransform(this.elementRef.nativeElement);
|
|
92
|
+
if (!m.message.event && this.currentSelection && currentTransform.k !== 1) {
|
|
93
|
+
return;
|
|
84
94
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
95
|
+
this.currentSelection = m.message.selection;
|
|
96
|
+
this.zone.runOutsideAngular(() => {
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
this.updateZoom(m);
|
|
99
|
+
}, 100);
|
|
100
|
+
});
|
|
101
|
+
}), takeWhile((_) => this.alive)).subscribe();
|
|
90
102
|
}
|
|
91
103
|
}
|
|
92
|
-
ngOnChanges(changes) {
|
|
93
|
-
}
|
|
94
104
|
ngOnDestroy() {
|
|
105
|
+
this.zoom?.on('start zoom end', null);
|
|
95
106
|
this.alive = false;
|
|
96
107
|
}
|
|
108
|
+
updateZoom(m) {
|
|
109
|
+
const s = m.message.selection;
|
|
110
|
+
this.brushScale.domain(this.zoomAxis.extremes);
|
|
111
|
+
const domain = this.brushScale.domain();
|
|
112
|
+
const scale = (domain[1] - domain[0]) / (s[1] - s[0]);
|
|
113
|
+
let transform = zoomIdentity.scale(scale);
|
|
114
|
+
if (m.message?.brushType === BrushType.x) {
|
|
115
|
+
transform = transform.translate(-this.brushScale(s[0]), 0);
|
|
116
|
+
}
|
|
117
|
+
if (m.message?.brushType === BrushType.y) {
|
|
118
|
+
transform = transform.translate(0, -this.brushScale(s[0]));
|
|
119
|
+
}
|
|
120
|
+
this._element.transition().duration(150).call(this.zoom.transform, transform, null, {});
|
|
121
|
+
}
|
|
97
122
|
}
|
|
98
|
-
ZoomableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: i1.ZoomService }, { token: i2.BroadcastService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
99
|
-
ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } },
|
|
123
|
+
ZoomableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: i1.ZoomService }, { token: i2.BroadcastService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
124
|
+
ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, ngImport: i0 });
|
|
100
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, decorators: [{
|
|
101
126
|
type: Directive,
|
|
102
127
|
args: [{
|
|
103
128
|
selector: '[tetaZoomable]',
|
|
104
129
|
}]
|
|
105
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ZoomService }, { type: i2.BroadcastService }]; }, propDecorators: { config: [{
|
|
130
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ZoomService }, { type: i2.BroadcastService }, { type: i0.NgZone }]; }, propDecorators: { config: [{
|
|
106
131
|
type: Input
|
|
107
132
|
}], axis: [{
|
|
108
133
|
type: Input
|
|
@@ -114,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
114
139
|
type: HostBinding,
|
|
115
140
|
args: ['class.zoomable']
|
|
116
141
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssR0FBNEIsTUFBTSxlQUFlLENBQUM7QUFHbkcsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRXZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNEIsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUt2QyxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDO1FBRmxDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVZMLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLaEQsVUFBSyxHQUFHLElBQUksQ0FBQztJQU9yQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFN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QyxDQUFDLENBQUM7aUJBQzVEO2dCQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsRUFBRTtvQkFDeEMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RDtnQkFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQ25CLFNBQVMsRUFDVCxJQUFJLEVBQ0osRUFBRSxDQUNILENBQUM7WUFFSixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFBO1NBQ2Q7SUFHSCxDQUFDO0lBR0QsV0FBVyxDQUFDLE9BQXNCO0lBRWxDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7OEdBMUpVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7MEpBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFaUMsUUFBUTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcblxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCB6b29tSWRlbnRpdHl9IGZyb20gJ2QzJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gXCIuLi9tb2RlbC9lbnVtL3pvb20tdHlwZVwiO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gXCIuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb25cIjtcbmltcG9ydCB7QnJ1c2hNZXNzYWdlLCBJQnJvYWRjYXN0TWVzc2FnZSwgWm9vbU1lc3NhZ2V9IGZyb20gXCIuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlXCI7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSBcIi4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZVwiO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZS9icm9hZGNhc3Quc2VydmljZVwiO1xuaW1wb3J0IHt0YXAsIHRocm90dGxlVGltZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge2ZpbHRlciwgdGFrZVdoaWxlfSBmcm9tIFwicnhqc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YVpvb21hYmxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFpvb21hYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY29uZmlnPzogSUNoYXJ0Q29uZmlnO1xuICBASW5wdXQoKSBheGlzPzogQXhpcztcbiAgQElucHV0KCkgc2l6ZT86IERPTVJlY3Q7XG4gIEBJbnB1dCgpIGJydXNoU2NhbGU/OiBhbnk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9lbGVtZW50OiBkMy5TZWxlY3Rpb248U1ZHRWxlbWVudCwgYW55LCBhbnksIGFueT47XG4gIHByaXZhdGUgem9vbUF4aXM6IEF4aXM7XG4gIHByaXZhdGUgem9vbTogWm9vbUJlaGF2aW9yPGFueSwgYW55PjtcbiAgcHJpdmF0ZSBhbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZVxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gfHwgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZSkge1xuICAgICAgdGhpcy56b29tYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gICAgY29uc3QgZW5hYmxlID0gdGhpcy5heGlzPy5vcHRpb25zPy56b29tIHx8IHRoaXMuY29uZmlnPy56b29tPy5lbmFibGU7XG5cbiAgICBpZiAoIWVuYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQgPSBkMy5zZWxlY3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgdGhpcy56b29tID0gZDNcbiAgICAgIC56b29tKClcbiAgICAgIC5zY2FsZUV4dGVudChbMCwgSW5maW5pdHldKVxuICAgICAgLmV4dGVudChbXG4gICAgICAgIFswLCAwXSxcbiAgICAgICAgW3RoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodF0sXG4gICAgICBdKTtcblxuXG4gICAgY29uc3QgY29tbW9uWm9vbUF4aXMgPSBBeGlzLmNyZWF0ZUF4aXMoXG4gICAgICB0aGlzLmNvbmZpZz8uem9vbS50eXBlID09PSBab29tVHlwZS54ID8gQXhpc09yaWVudGF0aW9uLnggOiBBeGlzT3JpZW50YXRpb24ueSxcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgMCxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy56b29tQXhpcyA9IHRoaXMuYXhpcyA/PyBjb21tb25ab29tQXhpcztcblxuICAgIGNvbnN0IHpvb21lZCA9IChldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+KSA9PiB7XG5cbiAgICAgIGlmIChlbmFibGUpIHtcbiAgICAgICAgaWYgKGV2ZW50LnNvdXJjZUV2ZW50KSB7XG5cbiAgICAgICAgICB0aGlzLnpvb21TZXJ2aWNlLnNldFpvb20oe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuem9vbUF4aXNcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIGF4aXM6IHRoaXMuem9vbUF4aXMsXG4gICAgICAgICAgICBicnVzaERvbWFpbjpcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54XG4gICAgICAgICAgICAgICAgPyB0aGlzLmJydXNoU2NhbGUuZG9tYWluKClcbiAgICAgICAgICAgICAgICA6IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKSxcbiAgICAgICAgICB9KTtcblxuXG4gICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdFpvb20oe1xuICAgICAgICAgICAgY2hhbm5lbDogdGhpcy5jb25maWc/Lnpvb20/LnN5bmNDaGFubmVsLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICB9KTtcblxuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy56b29tLm9uKCdzdGFydCB6b29tIGVuZCcsIHpvb21lZCk7XG4gICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbSk7XG5cblxuICAgIC8vIFN1YnNjcmliZSB0byB6b29tIGV2ZW50c1xuICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zdWJzY3JpYmVUb1pvb20odGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuYWxpdmUpLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudCksXG4gICAgICB0aHJvdHRsZVRpbWUoNTAsIHVuZGVmaW5lZCwge3RyYWlsaW5nOiB0cnVlfSksXG4gICAgICBmaWx0ZXIoKG06IElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy56b29tQXhpcy5pbmRleCA9PT0gbS5tZXNzYWdlPy5heGlzPy5pbmRleCAmJiB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9uID09PSBtLm1lc3NhZ2U/LmF4aXM/Lm9yaWVudGF0aW9uXG4gICAgICB9KSxcbiAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybShcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjdXJyZW50VHJhbnNmb3JtICE9PSBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0sIG51bGwsIHt9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKClcblxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGJydXNoIGV2ZW50cyB4IG9yIHlcblxuICAgIGlmICgodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB8fCAodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS55ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSkge1xuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnN1YnNjcmliZVRvQnJ1c2godGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5hbGl2ZSksXG4gICAgICAgIHRocm90dGxlVGltZSg1MCwgdW5kZWZpbmVkLCB7dHJhaWxpbmc6IHRydWV9KSxcbiAgICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+KSA9PiBCb29sZWFuKG0ubWVzc2FnZS5zZWxlY3Rpb24pKSxcbiAgICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+KSA9PiB7XG5cbiAgICAgICAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgIHRoaXMuYnJ1c2hTY2FsZS5kb21haW4obS5tZXNzYWdlLmJydXNoU2NhbGUuZG9tYWluKCkpO1xuICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgICAgICAgIGNvbnN0IHNjYWxlID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyAoc1sxXSAtIHNbMF0pO1xuICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHkuc2NhbGUoc2NhbGUpO1xuXG4gICAgICAgICAgaWYgKG0ubWVzc2FnZT8uYnJ1c2hUeXBlID09PSBCcnVzaFR5cGUueCkge1xuICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtdGhpcy5icnVzaFNjYWxlKHNbMF0pLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG0ubWVzc2FnZT8uYnJ1c2hUeXBlID09PSBCcnVzaFR5cGUueSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGhpcy5icnVzaFNjYWxlKHNbMF0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwoXG4gICAgICAgICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcblxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKVxuICAgIH1cblxuXG4gIH1cblxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssR0FBb0MsTUFBTSxlQUFlLENBQUM7QUFHM0csT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNEIsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLE1BQU0sRUFBa0IsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBS2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFnQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLElBQVk7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWRpQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2hELFVBQUssR0FBRyxJQUFJLENBQUM7UUFFYixxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUFrQnhDLFdBQU0sR0FBRyxD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QUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUNuQixTQUFTLEVBQ1QsSUFBSSxFQUNKLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7OEdBL0xVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7K0tBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFaUMsUUFBUTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCB6b29tSWRlbnRpdHl9IGZyb20gJ2QzJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtCcnVzaE1lc3NhZ2UsIElCcm9hZGNhc3RNZXNzYWdlLCBab29tTWVzc2FnZX0gZnJvbSAnLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icm9hZGNhc3Quc2VydmljZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7YW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZpbHRlciwgcXVldWVTY2hlZHVsZXIsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWc/OiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM/OiBBeGlzO1xuICBASW5wdXQoKSBzaXplPzogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnpvb21hYmxlJykgcHJpdmF0ZSB6b29tYWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tQXhpczogQXhpcztcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gIHByaXZhdGUgY3VycmVudFNlbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBCcm9hZGNhc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuXG4gIHpvb21lZCA9IChldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+KSA9PiB7XG4gICAgaWYgKGV2ZW50LnNvdXJjZUV2ZW50KSB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPT09IGV2ZW50LnRyYW5zZm9ybSAmJiBldmVudC50eXBlICE9PSAnZW5kJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnJ1c2hTY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuXG4gICAgICAgIGxldCBkb21haW4gPSB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55ID9cbiAgICAgICAgICBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkob3JpZ2luKS5kb21haW4oKSA6XG4gICAgICAgICAgZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgYXhpczogdGhpcy56b29tQXhpcyxcbiAgICAgICAgICBicnVzaERvbWFpbjogZG9tYWluXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIH1cblxuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRab29tKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRhcmdldDogdGhpcy56b29tQXhpc1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IGV2ZW50LnRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVuYWJsZSA9IHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSAmJiB0aGlzLmF4aXM/Lm9wdGlvbnMudmlzaWJsZSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlO1xuXG4gICAgaWYgKCFlbmFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMuem9vbSA9IGQzXG4gICAgICAuem9vbSgpXG4gICAgICAuZXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgIF0pO1xuXG5cbiAgICBjb25zdCBjb21tb25ab29tQXhpcyA9IEF4aXMuY3JlYXRlQXhpcyhcbiAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnggPyBBeGlzT3JpZW50YXRpb24ueCA6IEF4aXNPcmllbnRhdGlvbi55LFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgICAwLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLnpvb21BeGlzID0gdGhpcy5heGlzID8/IGNvbW1vblpvb21BeGlzO1xuXG4gICAgaWYgKGVuYWJsZSkge1xuXG5cbiAgICAgIGNvbnN0IG1heFpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5tYXggPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWF4IDogMDtcbiAgICAgIGNvbnN0IG1pblpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5taW4gPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWluIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnpvb20uc2NhbGVFeHRlbnQoKSlcblxuXG4gICAgICB0aGlzLnpvb20ub24oJ3N0YXJ0IHpvb20gZW5kJywgdGhpcy56b29tZWQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbSk7XG4gICAgfVxuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudCksXG4gICAgICBkZWJvdW5jZVRpbWUoMzApLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gbS5tZXNzYWdlPy5heGlzPy5vcmllbnRhdGlvbjtcbiAgICAgIH0pLFxuICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcblxuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybShcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjdXJyZW50VHJhbnNmb3JtICE9PSBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgfVxuXG4gICAgICB9KSxcbiAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5hbGl2ZSlcbiAgICApLnN1YnNjcmliZSgpO1xuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKCh0aGlzLmNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHx8XG4gICAgICAodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS55ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSkge1xuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnN1YnNjcmliZVRvQnJ1c2godGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMCksXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4gQm9vbGVhbihtLm1lc3NhZ2Uuc2VsZWN0aW9uKSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4ge1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IGQzLnpvb21UcmFuc2Zvcm0oXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIW0ubWVzc2FnZS5ldmVudCAmJiB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVab29tKG0pO1xuICAgICAgICAgICAgfSwgMTAwKVxuICAgICAgICAgIH0pXG5cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVab29tKG06IElCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4pIHtcbiAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICB0aGlzLmJydXNoU2NhbGUuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHNjYWxlID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyAoc1sxXSAtIHNbMF0pO1xuXG4gICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS54KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKC10aGlzLmJydXNoU2NhbGUoc1swXSksIDApO1xuICAgIH1cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUoc1swXSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDE1MCkuY2FsbChcbiAgICAgIHRoaXMuem9vbS50cmFuc2Zvcm0sXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBudWxsLFxuICAgICAge31cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
annotationBadge,
|
|
4
|
-
annotationLabel,
|
|
5
|
-
annotationCallout,
|
|
6
|
-
annotationCalloutCircle,
|
|
7
|
-
annotationCalloutCurve,
|
|
8
|
-
annotationCalloutElbow,
|
|
9
|
-
annotationCalloutRect,
|
|
10
|
-
annotationCustomType,
|
|
11
|
-
annotationXYThreshold,
|
|
12
|
-
];
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9tb2RlbC9hbm5vdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLHFCQUFxQixHQUV0QixNQUFNLG1CQUFtQixDQUFDO0FBSzNCLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLGVBQWU7SUFDZixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIscUJBQXFCO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFubm90YXRpb25CYWRnZSxcbiAgYW5ub3RhdGlvbkNhbGxvdXQsXG4gIGFubm90YXRpb25DYWxsb3V0Q2lyY2xlLFxuICBhbm5vdGF0aW9uQ2FsbG91dEN1cnZlLFxuICBhbm5vdGF0aW9uQ2FsbG91dEVsYm93LFxuICBhbm5vdGF0aW9uQ2FsbG91dFJlY3QsXG4gIGFubm90YXRpb25DdXN0b21UeXBlLFxuICBhbm5vdGF0aW9uTGFiZWwsXG4gIGFubm90YXRpb25YWVRocmVzaG9sZCxcbiAgVHlwZSxcbn0gZnJvbSAnZDMtc3ZnLWFubm90YXRpb24nO1xuXG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU3ZnQXR0cmlidXRlcyB9IGZyb20gJy4vc3ZnLWF0dHJpYnV0ZXMnO1xuXG5jb25zdCBhbm5vdGF0aW9uTWFwID0gW1xuICBhbm5vdGF0aW9uQmFkZ2UsXG4gIGFubm90YXRpb25MYWJlbCxcbiAgYW5ub3RhdGlvbkNhbGxvdXQsXG4gIGFubm90YXRpb25DYWxsb3V0Q2lyY2xlLFxuICBhbm5vdGF0aW9uQ2FsbG91dEN1cnZlLFxuICBhbm5vdGF0aW9uQ2FsbG91dEVsYm93LFxuICBhbm5vdGF0aW9uQ2FsbG91dFJlY3QsXG4gIGFubm90YXRpb25DdXN0b21UeXBlLFxuICBhbm5vdGF0aW9uWFlUaHJlc2hvbGQsXG5dIGFzIGNvbnN0O1xuXG50eXBlIEFubm90YXRpb25UeXBlcyA9IHR5cGVvZiBhbm5vdGF0aW9uTWFwW251bWJlcl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbiB7XG4gIHBvaW50OiBCYXNlUG9pbnQ7XG4gIHlBeGlzSW5kZXg6IG51bWJlcjtcbiAgeEF4aXNJbmRleDogbnVtYmVyO1xuICB0eXBlPzogQW5ub3RhdGlvblR5cGVzO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZHg/OiBudW1iZXI7XG4gIGR5PzogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNvbm5lY3Rvcj86IHtcbiAgICBlbmQ6IHN0cmluZztcbiAgfTtcbiAgbm90ZT86IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBiZ1BhZGRpbmc/OiB7XG4gICAgICB0b3A/OiBudW1iZXI7XG4gICAgICByaWdodD86IG51bWJlcjtcbiAgICAgIGJvdHRvbT86IG51bWJlcjtcbiAgICAgIGxlZnQ/OiBudW1iZXI7XG4gICAgfTtcbiAgICBiZ1JhZGl1cz86IGJvb2xlYW47XG4gIH07XG4gIHN0eWxlPzogU3ZnQXR0cmlidXRlcztcbn1cbiJdfQ==
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9tb2RlbC9hbm5vdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi9iYXNlLXBvaW50JztcbmltcG9ydCB7U3ZnQXR0cmlidXRlc30gZnJvbSAnLi9zdmctYXR0cmlidXRlcyc7XG5pbXBvcnQge1RlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBbm5vdGF0aW9uIHtcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHBvaW50OiBCYXNlUG9pbnQ7XG4gIGRyYWdnYWJsZT86IGJvb2xlYW47XG4gIHlBeGlzSW5kZXg/OiBudW1iZXI7XG4gIHhBeGlzSW5kZXg/OiBudW1iZXI7XG4gIGR4PzogbnVtYmVyO1xuICBkeT86IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBub3RlPzoge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGhpbnQ/OiBzdHJpbmc7XG4gIH07XG4gIHN0eWxlPzogU3ZnQXR0cmlidXRlcztcbiAgZGF0YT86IGFueTtcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuIl19
|
|
@@ -13,4 +13,4 @@ export class BrushMessage {
|
|
|
13
13
|
this.brushScale = options?.brushScale;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1icm9hZGNhc3QtbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQVksT0FJWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQVksT0FLWDtRQUNDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0QzQnJ1c2hFdmVudCwgRDNab29tRXZlbnR9IGZyb20gJ2QzJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4vZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tIFwiLi9pLWNoYXJ0LWNvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgWm9vbU1lc3NhZ2Uge1xuICBldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+O1xuICBheGlzPzogQXhpcztcbiAgYnJ1c2hEb21haW4/OiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT47XG4gICAgYXhpcz86IEF4aXM7XG4gICAgYnJ1c2hEb21haW4/OiBudW1iZXJbXVxuICB9KSB7XG4gICAgdGhpcy5ldmVudCA9IG9wdGlvbnM/LmV2ZW50O1xuICAgIHRoaXMuYXhpcyA9IG9wdGlvbnM/LmF4aXM7XG4gICAgdGhpcy5icnVzaERvbWFpbiA9IG9wdGlvbnMuYnJ1c2hEb21haW47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJydXNoTWVzc2FnZSB7XG4gIGV2ZW50OiBEM0JydXNoRXZlbnQ8YW55PjtcbiAgYnJ1c2hUeXBlOiBCcnVzaFR5cGU7XG4gIHNlbGVjdGlvbjogbnVtYmVyW107XG4gIGJydXNoU2NhbGU/OiBhbnk7XG5cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIGV2ZW50OiBEM0JydXNoRXZlbnQ8YW55PjtcbiAgICBicnVzaFR5cGU6IEJydXNoVHlwZTtcbiAgICBzZWxlY3Rpb246IG51bWJlcltdO1xuICAgIGJydXNoU2NhbGU/OiBhbnk7XG4gIH0pIHtcbiAgICB0aGlzLmV2ZW50ID0gb3B0aW9ucz8uZXZlbnQ7XG4gICAgdGhpcy5icnVzaFR5cGUgPSBvcHRpb25zPy5icnVzaFR5cGU7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBvcHRpb25zPy5zZWxlY3Rpb247XG4gICAgdGhpcy5icnVzaFNjYWxlID0gb3B0aW9ucz8uYnJ1c2hTY2FsZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCcm9hZGNhc3RNZXNzYWdlPFQ+IHtcbiAgY2hhbm5lbDogc3RyaW5nO1xuICBtZXNzYWdlOiBUO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1jaGFydC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvbW9kZWwvaS1jaGFydC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4vc2VyaWVzJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4vYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBBeGlzT3B0aW9ucyB9IGZyb20gJy4vYXhpcy1vcHRpb25zJztcbmltcG9ydCB7IFpvb21UeXBlIH0gZnJvbSAnLi9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucyB9IGZyb20gJy4vdG9vbHRpcC1vcHRpb25zJztcbmltcG9ydCB7IENoYXJ0Qm91bmRzIH0gZnJvbSAnLi9jaGFydC1ib3VuZHMnO1xuaW1wb3J0IHsgQnJ1c2hUeXBlIH0gZnJvbSAnLi9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4vYW5ub3RhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNoYXJ0Q29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgc2VyaWVzPzogU2VyaWVzPEJhc2VQb2ludD5bXTtcbiAgem9vbT86IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgdHlwZTogWm9vbVR5cGU7XG4gICAgYXhpc0luZGV4PzogbnVtYmVyO1xuICAgIHN5bmNDaGFubmVsPzogc3RyaW5nO1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXJcbiAgfTtcbiAgYnJ1c2g/OiB7XG4gICAgZW5hYmxlPzogYm9vbGVhbjtcbiAgICB0eXBlOiBCcnVzaFR5cGU7XG4gICAgZnJvbT86IG51bWJlcjtcbiAgICB0bz86IG51bWJlcjtcbiAgICBtaW4/OiBudW1iZXI7XG4gICAgbWF4PzogbnVtYmVyXG4gIH07XG4gIGxlZ2VuZD86IHtcbiAgICBlbmFibGU/OiBib29sZWFuO1xuICB9O1xuICBib3VuZHM/OiBDaGFydEJvdW5kcztcbiAgaW52ZXJ0ZWQ/OiBib29sZWFuO1xuICB0b29sdGlwPzogVG9vbHRpcE9wdGlvbnM7XG4gIHhBeGlzOiBBeGlzT3B0aW9uc1tdO1xuICB5QXhpczogQXhpc09wdGlvbnNbXTtcbiAgYW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uW107XG4gIGdyaWRMaW5lcz86IHtcbiAgICBlbmFibGU/OiBib29sZWFuO1xuICAgIHNob3dYPzogYm9vbGVhbjtcbiAgICBzaG93WT86IGJvb2xlYW47XG4gIH07XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -13,10 +13,16 @@ export class BroadcastService {
|
|
|
13
13
|
this.brushEmitter.next(value);
|
|
14
14
|
}
|
|
15
15
|
subscribeToZoom(channel) {
|
|
16
|
-
return this.zoomEmitter.asObservable().pipe(filter((msg) => channel && msg.channel === channel), shareReplay(
|
|
16
|
+
return this.zoomEmitter.asObservable().pipe(filter((msg) => channel && msg.channel === channel), shareReplay({
|
|
17
|
+
bufferSize: 1,
|
|
18
|
+
refCount: true
|
|
19
|
+
}));
|
|
17
20
|
}
|
|
18
21
|
subscribeToBrush(channel) {
|
|
19
|
-
return this.brushEmitter.asObservable().pipe(filter((msg) => channel && msg.channel === channel), shareReplay(
|
|
22
|
+
return this.brushEmitter.asObservable().pipe(filter((msg) => channel && msg.channel === channel), shareReplay({
|
|
23
|
+
bufferSize: 1,
|
|
24
|
+
refCount: true
|
|
25
|
+
}));
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
BroadcastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: BroadcastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -27,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
27
33
|
providedIn: 'root',
|
|
28
34
|
}]
|
|
29
35
|
}], ctorParameters: function () { return []; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvYWRjYXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvc2VydmljZS9icm9hZGNhc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBQyxNQUFNLEVBQW1CLGFBQWEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUtsRixNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBa0MsQ0FBQztRQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksYUFBYSxDQUFrQyxDQUFDLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0M7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFlO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3pDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEVBQ25ELFdBQVcsQ0FBQztZQUNWLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEVBQ25ELFdBQVcsQ0FBQztZQUNWLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OzZHQW5DVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QnJ1c2hNZXNzYWdlLCBJQnJvYWRjYXN0TWVzc2FnZSwgWm9vbU1lc3NhZ2V9IGZyb20gJy4uL21vZGVsL2ktYnJvYWRjYXN0LW1lc3NhZ2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgc2hhcmVSZXBsYXksIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQnJvYWRjYXN0U2VydmljZSB7XG4gIHByaXZhdGUgem9vbUVtaXR0ZXI6IFN1YmplY3Q8SUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+PjtcbiAgcHJpdmF0ZSBicnVzaEVtaXR0ZXI6IFJlcGxheVN1YmplY3Q8SUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPj47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy56b29tRW1pdHRlciA9IG5ldyBTdWJqZWN0PElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPj4oKTtcbiAgICB0aGlzLmJydXNoRW1pdHRlciA9IG5ldyBSZXBsYXlTdWJqZWN0PElCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4+KDEpXG4gIH1cblxuICBicm9hZGNhc3Rab29tKHZhbHVlOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pIHtcbiAgICB0aGlzLnpvb21FbWl0dGVyLm5leHQodmFsdWUpO1xuICB9XG5cbiAgYnJvYWRjYXN0QnJ1c2godmFsdWU6IElCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4pIHtcbiAgICB0aGlzLmJydXNoRW1pdHRlci5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvWm9vbShjaGFubmVsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPj4ge1xuICAgIHJldHVybiB0aGlzLnpvb21FbWl0dGVyLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBmaWx0ZXIoKG1zZykgPT4gY2hhbm5lbCAmJiBtc2cuY2hhbm5lbCA9PT0gY2hhbm5lbCksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzdWJzY3JpYmVUb0JydXNoKGNoYW5uZWw6IHN0cmluZyk6IE9ic2VydmFibGU8SUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPj4ge1xuICAgIHJldHVybiB0aGlzLmJydXNoRW1pdHRlci5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgZmlsdGVyKChtc2cpID0+IGNoYW5uZWwgJiYgbXNnLmNoYW5uZWwgPT09IGNoYW5uZWwpLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { BrushType } from '../model/enum/brush-type';
|
|
3
3
|
import * as d3 from 'd3';
|
|
4
|
-
import { filter, tap } from 'rxjs';
|
|
4
|
+
import { animationFrameScheduler, filter, tap } from 'rxjs';
|
|
5
5
|
import { BrushMessage } from '../model/i-broadcast-message';
|
|
6
6
|
import { throttleTime } from 'rxjs/operators';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "./broadcast.service";
|
|
9
9
|
export class BrushService {
|
|
10
|
-
constructor(broadcastService) {
|
|
10
|
+
constructor(broadcastService, zone) {
|
|
11
11
|
this.broadcastService = broadcastService;
|
|
12
|
+
this.zone = zone;
|
|
12
13
|
this.brushMap = new Map()
|
|
13
14
|
.set(BrushType.x, d3.brushX())
|
|
14
15
|
.set(BrushType.y, d3.brushY());
|
|
15
16
|
}
|
|
16
17
|
applyBrush(svgElement, config, brushScale) {
|
|
17
18
|
this.broadcastSubscribtion?.unsubscribe();
|
|
19
|
+
this.brush?.on('start brush end', null);
|
|
18
20
|
if (config.brush?.enable) {
|
|
19
21
|
this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);
|
|
20
22
|
const container = d3.select(svgElement.nativeElement);
|
|
@@ -23,14 +25,37 @@ export class BrushService {
|
|
|
23
25
|
if (!_.selection)
|
|
24
26
|
return;
|
|
25
27
|
const [from, to] = _.selection;
|
|
26
|
-
if (
|
|
28
|
+
if (to - from === 0) {
|
|
29
|
+
const selection = this.selection?.map(brushScale) ?? [config.brush?.from, config.brush?.to].map(brushScale);
|
|
30
|
+
const halfBrushHeight = (selection[1] - selection[0]) / 2;
|
|
31
|
+
const invertedSelection = [from - halfBrushHeight, to + halfBrushHeight].map(brushScale.invert);
|
|
32
|
+
if (invertedSelection[1] - invertedSelection[0] > config.brush?.max) {
|
|
33
|
+
container.call(this.brush.move, [invertedSelection[0], invertedSelection[0] + config.brush?.max].map(brushScale));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (invertedSelection[1] - invertedSelection[0] < config.brush?.min) {
|
|
37
|
+
container.call(this.brush.move, [invertedSelection[0], invertedSelection[0] + config.brush?.min].map(brushScale));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
container.call(this.brush.move, [from - halfBrushHeight, to + halfBrushHeight]);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (brushScale.invert(to) - brushScale.invert(from) > config.brush?.max) {
|
|
44
|
+
container.call(this.brush.move, this.selection ? [this.selection[0], this.selection[0] + config.brush?.max].map(brushScale) : [config.brush?.from, config.brush?.to].map(brushScale));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (brushScale.invert(to) - brushScale.invert(from) < config.brush?.min) {
|
|
48
|
+
container.call(this.brush.move, this.selection ? [this.selection[0], this.selection[0] + config.brush?.min].map(brushScale) : [config.brush?.from, config.brush?.to].map(brushScale));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (_.sourceEvent instanceof MouseEvent) {
|
|
27
52
|
this.selection = _.selection.map(brushScale.invert);
|
|
28
53
|
}
|
|
29
54
|
const brushMessage = new BrushMessage({
|
|
30
55
|
event: _,
|
|
31
56
|
selection: [brushScale.invert(from), brushScale.invert(to)],
|
|
32
57
|
brushType: config?.brush?.type ?? BrushType.x,
|
|
33
|
-
brushScale
|
|
58
|
+
brushScale
|
|
34
59
|
});
|
|
35
60
|
this.broadcastService.broadcastBrush({
|
|
36
61
|
channel: config?.zoom?.syncChannel,
|
|
@@ -38,25 +63,39 @@ export class BrushService {
|
|
|
38
63
|
});
|
|
39
64
|
}
|
|
40
65
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
66
|
+
this.zone.runOutsideAngular(() => {
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
container.call(this.brush);
|
|
69
|
+
let domain = brushScale.domain();
|
|
70
|
+
if (config?.brush?.from) {
|
|
71
|
+
domain[0] = config.brush.from;
|
|
72
|
+
}
|
|
73
|
+
if (config?.brush?.to) {
|
|
74
|
+
domain[1] = config.brush.to;
|
|
75
|
+
}
|
|
76
|
+
container.call(this.brush.move, this.selection ? this.selection.map(brushScale) : domain.map(brushScale), {});
|
|
77
|
+
}, 0);
|
|
78
|
+
});
|
|
52
79
|
this.broadcastSubscribtion = this.broadcastService.subscribeToZoom(config?.zoom?.syncChannel).pipe(filter((m) => {
|
|
53
80
|
return m.message.event.sourceEvent instanceof MouseEvent || m.message.event.sourceEvent instanceof WheelEvent;
|
|
54
|
-
}), throttleTime(
|
|
81
|
+
}), throttleTime(0, animationFrameScheduler, { trailing: true }), tap((m) => {
|
|
55
82
|
const { message: { brushDomain } } = m;
|
|
56
83
|
container.call(this.brush.move, [
|
|
57
84
|
brushScale(brushDomain[0]),
|
|
58
85
|
brushScale(brushDomain[1]),
|
|
59
86
|
]);
|
|
87
|
+
if (m.message.event.type === 'end') {
|
|
88
|
+
const brushMessage = new BrushMessage({
|
|
89
|
+
event: null,
|
|
90
|
+
selection: brushDomain,
|
|
91
|
+
brushType: config?.brush?.type ?? BrushType.x,
|
|
92
|
+
brushScale,
|
|
93
|
+
});
|
|
94
|
+
this.broadcastService.broadcastBrush({
|
|
95
|
+
channel: config?.zoom?.syncChannel,
|
|
96
|
+
message: brushMessage,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
60
99
|
this.selection = brushDomain;
|
|
61
100
|
})).subscribe();
|
|
62
101
|
}
|
|
@@ -65,12 +104,12 @@ export class BrushService {
|
|
|
65
104
|
this.selection = null;
|
|
66
105
|
}
|
|
67
106
|
}
|
|
68
|
-
BrushService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: BrushService, deps: [{ token: i1.BroadcastService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
107
|
+
BrushService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: BrushService, deps: [{ token: i1.BroadcastService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
108
|
BrushService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: BrushService, providedIn: 'root' });
|
|
70
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: BrushService, decorators: [{
|
|
71
110
|
type: Injectable,
|
|
72
111
|
args: [{
|
|
73
112
|
providedIn: 'root',
|
|
74
113
|
}]
|
|
75
|
-
}], ctorParameters: function () { return [{ type: i1.BroadcastService }]; } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL2JydXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxNQUFNLEVBQWdCLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUcvQyxPQUFPLEVBQUMsWUFBWSxFQUFpQyxNQUFNLDhCQUE4QixDQUFDO0FBRTFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSzVDLE1BQU0sT0FBTyxZQUFZO0lBV3ZCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTjlDLGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBb0M7YUFDM0QsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBSXdCLENBQUM7SUFFMUQsVUFBVSxDQUNSLFVBQXNCLEVBQ3RCLE1BQW9CLEVBQ3BCLFVBQWU7UUFFZixJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFMUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVuRSxNQUFNLFNBQVMsR0FB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U0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDOUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDMUIsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDM0IsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUE7U0FDZDtJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7eUdBMUZVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QnJ1c2hUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtmaWx0ZXIsIFN1YnNjcmlwdGlvbiwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSAnLi9icm9hZGNhc3Quc2VydmljZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtCcnVzaE1lc3NhZ2UsIElCcm9hZGNhc3RNZXNzYWdlLCBab29tTWVzc2FnZX0gZnJvbSAnLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZSc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7dGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCcnVzaFNlcnZpY2Uge1xuICBicm9hZGNhc3RTdWJzY3JpYnRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGJydXNoOiBkMy5CcnVzaEJlaGF2aW9yPGFueT47XG5cbiAgcHJpdmF0ZSBicnVzaE1hcCA9IG5ldyBNYXA8QnJ1c2hUeXBlLCBkMy5CcnVzaEJlaGF2aW9yPGFueT4+KClcbiAgICAuc2V0KEJydXNoVHlwZS54LCBkMy5icnVzaFgoKSlcbiAgICAuc2V0KEJydXNoVHlwZS55LCBkMy5icnVzaFkoKSk7XG5cbiAgcHJpdmF0ZSBzZWxlY3Rpb246IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZSkge31cblxuICBhcHBseUJydXNoKFxuICAgIHN2Z0VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgY29uZmlnOiBJQ2hhcnRDb25maWcsXG4gICAgYnJ1c2hTY2FsZTogYW55XG4gICkge1xuICAgIHRoaXMuYnJvYWRjYXN0U3Vic2NyaWJ0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKGNvbmZpZy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICB0aGlzLmJydXNoID0gdGhpcy5icnVzaE1hcC5nZXQoY29uZmlnPy5icnVzaD8udHlwZSA/PyBCcnVzaFR5cGUueCk7XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGQzLnNlbGVjdChzdmdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICB0aGlzLmJydXNoLm9uKCdzdGFydCBicnVzaCBlbmQnLCAoXzogZDMuRDNCcnVzaEV2ZW50PGFueT4pID0+IHtcblxuICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCkge1xuICAgICAgICAgIGlmICghXy5zZWxlY3Rpb24pIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBfLnNlbGVjdGlvbiBhcyBudW1iZXJbXTtcblxuICAgICAgICAgIGlmKF8udHlwZSA9PT0gJ2VuZCcgJiYgXy5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gXy5zZWxlY3Rpb24ubWFwKGJydXNoU2NhbGUuaW52ZXJ0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBicnVzaE1lc3NhZ2UgPSBuZXcgQnJ1c2hNZXNzYWdlKHtcbiAgICAgICAgICAgIGV2ZW50OiBfLFxuICAgICAgICAgICAgc2VsZWN0aW9uOiBbYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSksIGJydXNoU2NhbGUuaW52ZXJ0KHRvKV0sXG4gICAgICAgICAgICBicnVzaFR5cGU6IGNvbmZpZz8uYnJ1c2g/LnR5cGUgPz8gQnJ1c2hUeXBlLngsXG4gICAgICAgICAgICBicnVzaFNjYWxlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdEJydXNoKHtcbiAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICBtZXNzYWdlOiBicnVzaE1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoKTtcblxuICAgICAgICBsZXQgZG9tYWluID0gYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuXG4gICAgICAgIGlmIChjb25maWc/LmJydXNoPy5mcm9tKSB7XG4gICAgICAgICAgZG9tYWluWzBdID0gY29uZmlnLmJydXNoLmZyb207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnPy5icnVzaD8udG8pIHtcbiAgICAgICAgICBkb21haW5bMV0gPSBjb25maWcuYnJ1c2gudG87XG4gICAgICAgIH1cblxuICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIHRoaXMuc2VsZWN0aW9uID8gdGhpcy5zZWxlY3Rpb24ubWFwKGJydXNoU2NhbGUpIDogZG9tYWluLm1hcChicnVzaFNjYWxlKSwge30pO1xuICAgICAgfSwgMCk7XG5cblxuICAgICAgdGhpcy5icm9hZGNhc3RTdWJzY3JpYnRpb24gPSB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSg1MCwgdW5kZWZpbmVkLCB7dHJhaWxpbmc6IHRydWV9KSxcbiAgICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgICBjb25zdCB7bWVzc2FnZToge2JydXNoRG9tYWlufX0gPSBtO1xuXG4gICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbXG4gICAgICAgICAgICBicnVzaFNjYWxlKGJydXNoRG9tYWluWzBdKSxcbiAgICAgICAgICAgIGJydXNoU2NhbGUoYnJ1c2hEb21haW5bMV0pLFxuICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBicnVzaERvbWFpbjtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cblxuICBjbGVhclByZXZpb3VzU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuIl19
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.BroadcastService }, { type: i0.NgZone }]; } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL2JydXNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBZ0IsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3hFLE9BQU8sRUFBQyxZQUFZLEVBQWlDLE1BQU0sOEJBQThCLENBQUM7QUFDMUYsT0FBTyxFQUFlLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLMUQsTUFBTSxPQUFPLFlBQVk7SUFZdkIsWUFBb0IsZ0JBQWtDLEVBQVUsSUFBWTtRQUF4RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVBwRSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW9DO2FBQzNELEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUM3QixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQU1qQyxDQUFDO0lBRUQsVUFBVSxDQUNSLFVBQXNCLEVBQ3RCLE1BQW9CLEVBQ3BCLFVBQWU7UUFFZixJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxH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QUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDdEwsT0FBTztxQkFDUjtvQkFFRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTt3QkFFdkUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUN0TCxPQUFPO3FCQUNSO29CQUVELElBQUksQ0FBQyxDQUFDLFdBQVcsWUFBWSxVQUFVLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNyRDtvQkFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQzt3QkFDcEMsS0FBSyxFQUFFLENBQUM7d0JBQ1IsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMzRCxTQUFTLEVB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O2dCQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7eUdBakpVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VsZW1lbnRSZWYsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7YW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZpbHRlciwgU3Vic2NyaXB0aW9uLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tICcuL2Jyb2FkY2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0JydXNoTWVzc2FnZSwgSUJyb2FkY2FzdE1lc3NhZ2UsIFpvb21NZXNzYWdlfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJydXNoU2VydmljZSB7XG4gIGJyb2FkY2FzdFN1YnNjcmlidGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgYnJ1c2g6IGQzLkJydXNoQmVoYXZpb3I8YW55PjtcblxuICBwcml2YXRlIGJydXNoTWFwID0gbmV3IE1hcDxCcnVzaFR5cGUsIGQzLkJydXNoQmVoYXZpb3I8YW55Pj4oKVxuICAgIC5zZXQoQnJ1c2hUeXBlLngsIGQzLmJydXNoWCgpKVxuICAgIC5zZXQoQnJ1c2hUeXBlLnksIGQzLmJydXNoWSgpKTtcblxuICBwcml2YXRlIHNlbGVjdGlvbjogbnVtYmVyW107XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2UsIHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gIH1cblxuICBhcHBseUJydXNoKFxuICAgIHN2Z0VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgY29uZmlnOiBJQ2hhcnRDb25maWcsXG4gICAgYnJ1c2hTY2FsZTogYW55XG4gICkge1xuICAgIHRoaXMuYnJvYWRjYXN0U3Vic2NyaWJ0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYnJ1c2g/Lm9uKCdzdGFydCBicnVzaCBlbmQnLCBudWxsKTtcbiAgICBpZiAoY29uZmlnLmJydXNoPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuYnJ1c2ggPSB0aGlzLmJydXNoTWFwLmdldChjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54KTtcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gZDMuc2VsZWN0KHN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIHRoaXMuYnJ1c2gub24oJ3N0YXJ0IGJydXNoIGVuZCcsIChfOiBkMy5EM0JydXNoRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCkge1xuICAgICAgICAgIGlmICghXy5zZWxlY3Rpb24pIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBfLnNlbGVjdGlvbiBhcyBudW1iZXJbXTtcblxuICAgICAgICAgIGlmICh0byAtIGZyb20gPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogbnVtYmVyW10gPSB0aGlzLnNlbGVjdGlvbj8ubWFwKGJydXNoU2NhbGUpID8/IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbGZCcnVzaEhlaWdodCA9IChzZWxlY3Rpb25bMV0gLSBzZWxlY3Rpb25bMF0pIC8gMjtcblxuICAgICAgICAgICAgY29uc3QgaW52ZXJ0ZWRTZWxlY3Rpb246IG51bWJlcltdID0gW2Zyb20gLSBoYWxmQnJ1c2hIZWlnaHQsIHRvICsgaGFsZkJydXNoSGVpZ2h0XS5tYXAoYnJ1c2hTY2FsZS5pbnZlcnQpXG5cbiAgICAgICAgICAgIGlmKGludmVydGVkU2VsZWN0aW9uWzFdIC0gaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gPiBjb25maWcuYnJ1c2g/Lm1heCkge1xuICAgICAgICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIFtpbnZlcnRlZFNlbGVjdGlvblswXSwgaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1heF0ubWFwKGJydXNoU2NhbGUpKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihpbnZlcnRlZFNlbGVjdGlvblsxXSAtIGludmVydGVkU2VsZWN0aW9uWzBdIDwgY29uZmlnLmJydXNoPy5taW4pIHtcbiAgICAgICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbaW52ZXJ0ZWRTZWxlY3Rpb25bMF0sIGludmVydGVkU2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5taW5dLm1hcChicnVzaFNjYWxlKSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbZnJvbSAtIGhhbGZCcnVzaEhlaWdodCwgdG8gKyBoYWxmQnJ1c2hIZWlnaHRdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgICBpZiAoYnJ1c2hTY2FsZS5pbnZlcnQodG8pIC0gYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSkgPiBjb25maWcuYnJ1c2g/Lm1heCkge1xuXG4gICAgICAgICAgICBjb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIHRoaXMuc2VsZWN0aW9uID8gW3RoaXMuc2VsZWN0aW9uWzBdLCB0aGlzLnNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWF4XS5tYXAoYnJ1c2hTY2FsZSkgOiBbY29uZmlnLmJydXNoPy5mcm9tLCBjb25maWcuYnJ1c2g/LnRvXS5tYXAoYnJ1c2hTY2FsZSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChicnVzaFNjYWxlLmludmVydCh0bykgLSBicnVzaFNjYWxlLmludmVydChmcm9tKSA8IGNvbmZpZy5icnVzaD8ubWluKSB7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgdGhpcy5zZWxlY3Rpb24gPyBbdGhpcy5zZWxlY3Rpb25bMF0sIHRoaXMuc2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5taW5dLm1hcChicnVzaFNjYWxlKSA6IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uc291cmNlRXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IF8uc2VsZWN0aW9uLm1hcChicnVzaFNjYWxlLmludmVydCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYnJ1c2hNZXNzYWdlID0gbmV3IEJydXNoTWVzc2FnZSh7XG4gICAgICAgICAgICBldmVudDogXyxcbiAgICAgICAgICAgIHNlbGVjdGlvbjogW2JydXNoU2NhbGUuaW52ZXJ0KGZyb20pLCBicnVzaFNjYWxlLmludmVydCh0byldLFxuICAgICAgICAgICAgYnJ1c2hUeXBlOiBjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54LFxuICAgICAgICAgICAgYnJ1c2hTY2FsZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdEJydXNoKHtcbiAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICBtZXNzYWdlOiBicnVzaE1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cblxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29udGFpbmVyLmNhbGwodGhpcy5icnVzaCk7XG5cbiAgICAgICAgICBsZXQgZG9tYWluID0gYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuXG4gICAgICAgICAgaWYgKGNvbmZpZz8uYnJ1c2g/LmZyb20pIHtcbiAgICAgICAgICAgIGRvbWFpblswXSA9IGNvbmZpZy5icnVzaC5mcm9tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb25maWc/LmJydXNoPy50bykge1xuICAgICAgICAgICAgZG9tYWluWzFdID0gY29uZmlnLmJydXNoLnRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5tYXAoYnJ1c2hTY2FsZSkgOiBkb21haW4ubWFwKGJydXNoU2NhbGUpLCB7fSk7XG5cbiAgICAgICAgfSwgMCk7XG4gICAgICB9KVxuXG5cblxuICAgICAgdGhpcy5icm9hZGNhc3RTdWJzY3JpYnRpb24gPSB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwge3RyYWlsaW5nOiB0cnVlfSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgY29uc3Qge21lc3NhZ2U6IHticnVzaERvbWFpbn19ID0gbTtcblxuICAgICAgICAgIGNvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgW1xuICAgICAgICAgICAgYnJ1c2hTY2FsZShicnVzaERvbWFpblswXSksXG4gICAgICAgICAgICBicnVzaFNjYWxlKGJydXNoRG9tYWluWzFdKSxcbiAgICAgICAgICBdKTtcblxuICAgICAgICAgIGlmIChtLm1lc3NhZ2UuZXZlbnQudHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGJydXNoTWVzc2FnZSA9IG5ldyBCcnVzaE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBldmVudDogbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0aW9uOiBicnVzaERvbWFpbixcbiAgICAgICAgICAgICAgYnJ1c2hUeXBlOiBjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54LFxuICAgICAgICAgICAgICBicnVzaFNjYWxlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3RCcnVzaCh7XG4gICAgICAgICAgICAgIGNoYW5uZWw6IGNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGJydXNoTWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gYnJ1c2hEb21haW47XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUHJldmlvdXNTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICB9XG59XG4iXX0=
|