@tetacom/svg-charts 1.2.5 → 1.2.8

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.
@@ -6,7 +6,7 @@ import { Axis } from '../core/axis/axis';
6
6
  import { ScaleService } from '../service/scale.service';
7
7
  import { ZoomService } from '../service/zoom.service';
8
8
  import { ZoomType } from '../model/enum/zoom-type';
9
- import { IScalesMap } from "../model/i-scales-map";
9
+ import { IScalesMap } from '../model/i-scales-map';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class ChartContainerComponent implements OnInit, OnDestroy {
12
12
  private _svc;
@@ -30,8 +30,8 @@ export declare class ChartContainerComponent implements OnInit, OnDestroy {
30
30
  private sumSize;
31
31
  getTranslate(axis?: Axis, size?: DOMRect): Observable<string>;
32
32
  identify(index: any, item: any): any;
33
- click(event: PointerEvent, xScales: Map<number, any>, yScales: Map<number, any>): void;
34
- contextMenu(event: MouseEvent, xScales: Map<number, any>, yScales: Map<number, any>): void;
33
+ click(event: PointerEvent, xScales: Map<number, Axis>, yScales: Map<number, Axis>): void;
34
+ contextMenu(event: MouseEvent, xScales: Map<number, Axis>, yScales: Map<number, Axis>): void;
35
35
  mouseMove(event: any): void;
36
36
  mouseLeave(event: any): void;
37
37
  static ɵfac: i0.ɵɵFactoryDeclaration<ChartContainerComponent, never>;
@@ -113,10 +113,10 @@ export class ChartContainerComponent {
113
113
  const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));
114
114
  const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));
115
115
  const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));
116
- const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, 0);
117
- const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, 0);
118
- const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
119
- const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
116
+ const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.top);
117
+ const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);
118
+ const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.right);
119
+ const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, config.bounds?.bottom);
120
120
  const left = yAxesArray
121
121
  .filter((_) => _.options.visible && _.options.opposite !== true)
122
122
  .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);
@@ -140,8 +140,8 @@ export class ChartContainerComponent {
140
140
  return item.value.index;
141
141
  }
142
142
  click(event, xScales, yScales) {
143
- const x = xScales.get(0);
144
- const y = yScales.get(0);
143
+ const x = xScales.get(0).scale;
144
+ const y = yScales.get(0).scale;
145
145
  this._svc.emitChartClick({
146
146
  event: event,
147
147
  target: {
@@ -151,8 +151,8 @@ export class ChartContainerComponent {
151
151
  });
152
152
  }
153
153
  contextMenu(event, xScales, yScales) {
154
- const x = xScales.get(0);
155
- const y = yScales.get(0);
154
+ const x = xScales.get(0).scale;
155
+ const y = yScales.get(0).scale;
156
156
  this._svc.emitChartContextMenu({
157
157
  event: event,
158
158
  target: {
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
174
174
  type: Component,
175
175
  args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n scales: scales | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x && data.scales.y\">\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.y | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.y.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.x | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible && data.scales.x && data.scales.y\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.x.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n </ng-container>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x && data.scales.y\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.brushScale\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <ng-container *ngFor=\"let series of data.config.series\">\n <g teta-series-host\n *ngIf=\"series.visible\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </ng-container>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n <g class=\"crosshair\" *ngIf=\"data.config.tooltip?.showCrosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}:host .crosshair{cursor:crosshair}\n"] }]
176
176
  }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUtWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCx1QkFBdUIsRUFDUixpQkFBaUIsRUFDaEMsR0FBRyxFQUNTLFNBQVMsRUFDckIsV0FBVyxFQUVYLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUcvRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXcEQsTUFBTSxPQUFPLHVCQUF1QjtJQXdCbEMsWUFDVSxJQUFrQixFQUNsQixJQUF1QixFQUN2QixhQUEyQixFQUMzQixZQUF5QixFQUN6QixXQUF1QixFQUN2QixLQUFhO1FBTGIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBeEJ2QixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBR1osc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQ007YUFD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Q0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUM3QixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRTtnQkFDTixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUMxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQzNCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7b0hBblBVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDREQ3JDcEMsbW1NQStJQTsyRkQxR2EsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsXG4gIGNvbWJpbmVMYXRlc3QsIGNvbWJpbmVMYXRlc3RXaXRoLFxuICBtYXAsXG4gIE9ic2VydmFibGUsIG9ic2VydmVPbixcbiAgc2hhcmVSZXBsYXksXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sIHppcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7dGV0YVpvbmVGdWxsfSBmcm9tICdAdGV0YWNvbS9uZy1jb21wb25lbnRzJztcbmltcG9ydCB7SVNjYWxlc01hcH0gZnJvbSBcIi4uL21vZGVsL2ktc2NhbGVzLW1hcFwiO1xuXG50eXBlIE9wcG9zaXRlID0gYm9vbGVhbjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1jaGFydC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY29uZmlnOiBPYnNlcnZhYmxlPElDaGFydENvbmZpZz47XG4gIHNjYWxlczogT2JzZXJ2YWJsZTxJU2NhbGVzTWFwPjtcbiAgc2l6ZTogT2JzZXJ2YWJsZTxET01SZWN0PjtcbiAgdmlzaWJsZVJlY3Q6IE9ic2VydmFibGU8YW55PjtcbiAgYnJ1c2hTY2FsZTogT2JzZXJ2YWJsZTxhbnk+O1xuICB6b29tVHlwZSA9IFpvb21UeXBlO1xuXG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBmaWx0ZXJQb3NpdGlvbk1hcCA9IG5ldyBNYXA8T3Bwb3NpdGUsXG4gICAgKGF4aXM6IEF4aXMpID0+IChfOiBBeGlzKSA9PiBib29sZWFuPigpXG4gICAgLnNldChcbiAgICAgIHRydWUsXG4gICAgICAoYXhpcykgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSAmJiBheGlzLmluZGV4IDw9IF8uaW5kZXhcbiAgICApXG4gICAgLnNldChcbiAgICAgIGZhbHNlLFxuICAgICAgKGF4aXMpID0+IChfOiBBeGlzKSA9PlxuICAgICAgICBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiZcbiAgICAgICAgXy5vcHRpb25zLnZpc2libGUgJiZcbiAgICAgICAgXy5pbmRleCA8PSBheGlzLmluZGV4XG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3NjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3pvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuX3N2Yy5jb25maWc7XG4gICAgdGhpcy5zaXplID0gdGhpcy5fc3ZjLnNpemVcblxuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7eCwgeX0sIGNvbmZpZ10gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiBjb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54IHx8IGNvbmZpZz8uem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCA/IHguZ2V0KDApLnNjYWxlIDogeS5nZXQoMCkuc2NhbGU7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnZpc2libGVSZWN0ID0gdGhpcy5zaXplLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnNjYWxlcylcbiAgICApLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbW0RPTVJlY3QsIElTY2FsZXNNYXBdLCBJQ2hhcnRDb25maWddXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwge3gsIHl9XSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0geUF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgYm90dG9tID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBsZWZ0ICsgY29uZmlnLmJvdW5kcz8ubGVmdCxcbiAgICAgICAgICAgIHk6IHRvcCArIGNvbmZpZy5ib3VuZHM/LnRvcCxcbiAgICAgICAgICAgIHdpZHRoOlxuICAgICAgICAgICAgICBzaXplLndpZHRoIC1cbiAgICAgICAgICAgICAgbGVmdCAtXG4gICAgICAgICAgICAgIHJpZ2h0IC1cbiAgICAgICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OlxuICAgICAgICAgICAgICBzaXplLmhlaWdodCAtXG4gICAgICAgICAgICAgIHRvcCAtXG4gICAgICAgICAgICAgIGJvdHRvbSAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnRvcCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgdGV0YVpvbmVGdWxsKHRoaXMuX3pvbmUpLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIUFycmF5LmlzQXJyYXkoZW50cmllcykgfHxcbiAgICAgICAgICAhZW50cmllcy5sZW5ndGggfHxcbiAgICAgICAgICBlbnRyaWVzWzBdLmNvbnRlbnRSZWN0LndpZHRoIDw9IDAgfHxcbiAgICAgICAgICBlbnRyaWVzWzBdLmNvbnRlbnRSZWN0LmhlaWdodCA8PSAwXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdmMuc2V0U2l6ZShlbnRyaWVzWzBdLmNvbnRlbnRSZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3VtU2l6ZSA9IChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemU7XG5cbiAgZ2V0VHJhbnNsYXRlKGF4aXM/OiBBeGlzLCBzaXplPzogRE9NUmVjdCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7eCwgeX0sIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCB4QXhlc0FycmF5ID0gQXJyYXkuZnJvbSh4LnZhbHVlcygpKTtcbiAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldCh0cnVlKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldChmYWxzZSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVPZmZzZXRZID0geUF4ZXNBcnJheS5maWx0ZXIob3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIob3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVZID0gb3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVkgPSBub25PcHBvc2l0ZU9mZnNldFkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlVHJhbnNsYXRlWCA9IG9wcG9zaXRlT2Zmc2V0WC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVggPSBub25PcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgY29uZmlnLmJvdW5kcz8ubGVmdCk7XG5cbiAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy52aXNpYmxlICYmIF8ub3B0aW9ucy5vcHBvc2l0ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsIGNvbmZpZy5ib3VuZHM/LnRvcCk7XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtsZWZ0fSwgJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgICAgICA6IHNpemUuaGVpZ2h0IC0gbm9uT3BwaXN0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICB9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gc2l6ZS53aWR0aCAtIG9wcG9zaXRlVHJhbnNsYXRlWVxuICAgICAgICAgICAgICA6IG5vbk9wcGlzdGVUcmFuc2xhdGVZXG4gICAgICAgICAgfSwgJHt0b3B9KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgwLCAwKSc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZGVudGlmeShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlLmluZGV4O1xuICB9XG5cbiAgY2xpY2soXG4gICAgZXZlbnQ6IFBvaW50ZXJFdmVudCxcbiAgICB4U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+LFxuICAgIHlTY2FsZXM6IE1hcDxudW1iZXIsIGFueT5cbiAgKSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApO1xuICAgIGNvbnN0IHkgPSB5U2NhbGVzLmdldCgwKTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q2xpY2soe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBjb250ZXh0TWVudShcbiAgICBldmVudDogTW91c2VFdmVudCxcbiAgICB4U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+LFxuICAgIHlTY2FsZXM6IE1hcDxudW1iZXIsIGFueT5cbiAgKSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApO1xuICAgIGNvbnN0IHkgPSB5U2NhbGVzLmdldCgwKTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q29udGV4dE1lbnUoe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBtb3VzZU1vdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgbW91c2VMZWF2ZShldmVudCkge1xuICAgIHRoaXMuX3N2Yy5zZXRQb2ludGVyTW92ZShldmVudCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gIHNpemU6IHNpemUgfCBhc3luYyxcbiAgY29uZmlnOiBjb25maWcgfCBhc3luYyxcbiAgc2NhbGVzOiBzY2FsZXMgfCBhc3luYyxcbiAgdmlzaWJsZVJlY3Q6IHZpc2libGVSZWN0IHwgYXN5bmMsXG4gIGJydXNoU2NhbGU6IGJydXNoU2NhbGUgfCBhc3luY1xufSBhcyBkYXRhXCIgeG1sbnM6c3ZnPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS9odG1sXCI+XG4gIDx0ZXRhLXRvb2x0aXAgKm5nSWY9XCJkYXRhLmNvbmZpZz8udG9vbHRpcD8uZW5hYmxlXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIj48L3RldGEtdG9vbHRpcD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEudmlzaWJsZVJlY3Q/LndpZHRoID4gMCAmJiBkYXRhLnZpc2libGVSZWN0Py5oZWlnaHQgPiAwICYmIGRhdGEuc2NhbGVzLnggJiYgZGF0YS5zY2FsZXMueVwiPlxuICAgIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEuc2NhbGVzLnkgfCBrZXl2YWx1ZTsgdHJhY2tCeTogaWRlbnRpZnlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZS5vcHRpb25zLnZpc2libGVcIj5cbiAgICAgICAgICAgIDxnXG4gICAgICAgICAgICAgIHRldGEteS1heGlzXG4gICAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L2c+XG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICB0ZXRhWm9vbWFibGVcbiAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMFwiXG4gICAgICAgICAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy55LmdldChpdGVtLmtleSkuc2NhbGVcIlxuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IDAgOiAtaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIml0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvcmVjdD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEuc2NhbGVzLnggfCBrZXl2YWx1ZTsgdHJhY2tCeTogaWRlbnRpZnlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZS5vcHRpb25zLnZpc2libGUgJiYgZGF0YS5zY2FsZXMueCAmJiBkYXRhLnNjYWxlcy55XCI+XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXgtYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYnJ1c2hTY2FsZV09XCJkYXRhLmJydXNoU2NhbGVcIlxuICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueC5nZXQoaXRlbS5rZXkpLnNjYWxlXCJcbiAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgICAgICAgICAgW2F0dHIueF09XCIwXCJcbiAgICAgICAgICAgICAgW2F0dHIueV09XCJpdGVtLnZhbHVlLm9wdGlvbnMub3Bwb3NpdGUgPyAtaXRlbS52YWx1ZS5zZWxmU2l6ZSA6IDBcIlxuICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJkYXRhLnZpc2libGVSZWN0LndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cIml0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvcmVjdD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS52aXNpYmxlUmVjdD8ud2lkdGggPiAwICYmIGRhdGEudmlzaWJsZVJlY3Q/LmhlaWdodCA+IDAgJiYgZGF0YS5zY2FsZXMueCAmJiBkYXRhLnNjYWxlcy55XCI+XG4gICAgPHN2Z1xuICAgICAgdGV0YUJydXNoYWJsZVxuICAgICAgdGV0YVpvb21hYmxlXG4gICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgIFtzY2FsZV09XCJkYXRhLmJydXNoU2NhbGVcIlxuICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICBbYXhpc109XCJkYXRhLmNvbmZpZz8uem9vbT8udHlwZSA9PT0gem9vbVR5cGUueCA/IGRhdGEuc2NhbGVzLnguZ2V0KDApIDogZGF0YS5zY2FsZXMueS5nZXQoMClcIlxuICAgICAgW2F0dHIud2lkdGhdPVwiZGF0YS52aXNpYmxlUmVjdC53aWR0aFwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcgKyBkYXRhLnZpc2libGVSZWN0LndpZHRoICsgJyAnICsgZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKCcrIGRhdGEudmlzaWJsZVJlY3QueCArJ3B4LCAnKyBkYXRhLnZpc2libGVSZWN0LnkgKydweCknXCJcbiAgICAgIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQsIGRhdGEuc2NhbGVzLngsIGRhdGEuc2NhbGVzLnkpXCJcbiAgICAgIChjbGljayk9XCJjbGljaygkZXZlbnQsIGRhdGEuc2NhbGVzLngsIGRhdGEuc2NhbGVzLnkpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gICAgICAobW91c2Vtb3ZlKT1cIm1vdXNlTW92ZSgkZXZlbnQpXCI+XG5cbiAgICAgIDxnIGNsYXNzPVwiZ3JpZGxpbmVzXCJcbiAgICAgICAgIHRldGEtZ3JpZGxpbmVzXG4gICAgICAgICAqbmdJZj1cImRhdGEuY29uZmlnLmdyaWRMaW5lcz8uZW5hYmxlICE9PSBmYWxzZVwiXG4gICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIj48L2c+XG5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RiYW5kLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnhBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGcgdGV0YS1wbG90LWJhbmQgKm5nRm9yPVwibGV0IHBsb3RCYW5kIG9mIGF4aXMucGxvdEJhbmRzXCJcbiAgICAgICAgICAgICBbcGxvdEJhbmRdPVwicGxvdEJhbmRcIlxuICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy54LmdldChpKS5zY2FsZVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnNjYWxlcy54LmdldChpKVwiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1wbG90YmFuZC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy55QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1iYW5kICpuZ0Zvcj1cImxldCBwbG90QmFuZCBvZiBheGlzLnBsb3RCYW5kc1wiXG4gICAgICAgICAgICAgW3Bsb3RCYW5kXT1cInBsb3RCYW5kXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueS5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueS5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueEF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZSAqbmdGb3I9XCJsZXQgcGxvdExpbmUgb2YgYXhpcy5wbG90TGluZXNcIlxuICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnguZ2V0KGkpLnNjYWxlXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnguZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLXBsb3RsaW5lLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnlBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGcgdGV0YS1wbG90LWxpbmUgKm5nRm9yPVwibGV0IHBsb3RMaW5lIG9mIGF4aXMucGxvdExpbmVzXCJcbiAgICAgICAgICAgICBbcGxvdExpbmVdPVwicGxvdExpbmVcIlxuICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy55LmdldChpKS5zY2FsZVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnNjYWxlcy54LmdldChpKVwiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cInNlcmllcy1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VyaWVzIG9mIGRhdGEuY29uZmlnLnNlcmllc1wiPlxuICAgICAgICAgIDxnIHRldGEtc2VyaWVzLWhvc3RcbiAgICAgICAgICAgICAqbmdJZj1cInNlcmllcy52aXNpYmxlXCJcbiAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgICAgICBbc2VyaWVzXT1cInNlcmllc1wiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cImFubm90YXRpb25zXCI+XG4gICAgICAgIDxnIHRldGEtYW5ub3RhdGlvblxuICAgICAgICAgICAqbmdGb3I9XCJsZXQgYW5ub3RhdGlvbiBvZiBkYXRhLmNvbmZpZy5hbm5vdGF0aW9uc1wiXG4gICAgICAgICAgIFthbm5vdGF0aW9uXT1cImFubm90YXRpb25cIj48L2c+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cImNyb3NzaGFpclwiICpuZ0lmPVwiZGF0YS5jb25maWcudG9vbHRpcD8uc2hvd0Nyb3NzaGFpclwiPlxuICAgICAgICA8ZyB0ZXRhLWNyb3NzaGFpciBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCI+PC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUtWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLEdBQUcsRUFDUyxTQUFTLEVBQ3JCLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHL0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyx1QkFBdUI7SUF3QmxDLFlBQ1UsSUFBa0IsRUFDbEIsSUFBdUIsRUFDdkIsYUFBMkIsRUFDM0IsWUFBeUIsRUFDekIsV0FBdUIsRUFDdkIsS0FBYTtRQUxiLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQXhCdkIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUdaLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUNNO2FB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QVcsQ0FDVCxLQUFpQixFQUNqQixPQUEwQixFQUMxQixPQUEwQjtRQUUxQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzdCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFO2dCQUNOLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDM0I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOztvSEFuUFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNERDcENwQyxtbU1BK0lBOzJGRDNHYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSwgb2JzZXJ2ZU9uLFxuICBzaGFyZVJlcGxheSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge3RldGFab25lRnVsbH0gZnJvbSAnQHRldGFjb20vbmctY29tcG9uZW50cyc7XG5pbXBvcnQge0lTY2FsZXNNYXB9IGZyb20gJy4uL21vZGVsL2ktc2NhbGVzLW1hcCc7XG5cbnR5cGUgT3Bwb3NpdGUgPSBib29sZWFuO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgc2NhbGVzOiBPYnNlcnZhYmxlPElTY2FsZXNNYXA+O1xuICBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICB2aXNpYmxlUmVjdDogT2JzZXJ2YWJsZTxhbnk+O1xuICBicnVzaFNjYWxlOiBPYnNlcnZhYmxlPGFueT47XG4gIHpvb21UeXBlID0gWm9vbVR5cGU7XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW4+KClcbiAgICAuc2V0KFxuICAgICAgdHJ1ZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlICYmIGF4aXMuaW5kZXggPD0gXy5pbmRleFxuICAgIClcbiAgICAuc2V0KFxuICAgICAgZmFsc2UsXG4gICAgICAoYXhpcykgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5fc3ZjLmNvbmZpZztcbiAgICB0aGlzLnNpemUgPSB0aGlzLl9zdmMuc2l6ZTtcblxuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7eCwgeX0sIGNvbmZpZ10gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiBjb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54IHx8IGNvbmZpZz8uem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCA/IHguZ2V0KDApLnNjYWxlIDogeS5nZXQoMCkuc2NhbGU7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnZpc2libGVSZWN0ID0gdGhpcy5zaXplLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnNjYWxlcylcbiAgICApLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbW0RPTVJlY3QsIElTY2FsZXNNYXBdLCBJQ2hhcnRDb25maWddXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwge3gsIHl9XSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0geUF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgYm90dG9tID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBsZWZ0ICsgY29uZmlnLmJvdW5kcz8ubGVmdCxcbiAgICAgICAgICAgIHk6IHRvcCArIGNvbmZpZy5ib3VuZHM/LnRvcCxcbiAgICAgICAgICAgIHdpZHRoOlxuICAgICAgICAgICAgICBzaXplLndpZHRoIC1cbiAgICAgICAgICAgICAgbGVmdCAtXG4gICAgICAgICAgICAgIHJpZ2h0IC1cbiAgICAgICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OlxuICAgICAgICAgICAgICBzaXplLmhlaWdodCAtXG4gICAgICAgICAgICAgIHRvcCAtXG4gICAgICAgICAgICAgIGJvdHRvbSAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnRvcCAtXG4gICAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgdGV0YVpvbmVGdWxsKHRoaXMuX3pvbmUpLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNjYWxlcy5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbe3gsIHl9LCBjb25maWddID0gZGF0YTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgIGNvbnN0IHlBeGVzQXJyYXkgPSBBcnJheS5mcm9tKHkudmFsdWVzKCkpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlRmlsdGVyID0gdGhpcy5maWx0ZXJQb3NpdGlvbk1hcC5nZXQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlRmlsdGVyID0gdGhpcy5maWx0ZXJQb3NpdGlvbk1hcC5nZXQoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRZID0geUF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WCA9IHhBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlVHJhbnNsYXRlWSA9IG9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICBjb25maWcuYm91bmRzPy50b3BcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVkgPSBub25PcHBvc2l0ZU9mZnNldFkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG9wcG9zaXRlVHJhbnNsYXRlWCA9IG9wcG9zaXRlT2Zmc2V0WC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICBjb25maWcuYm91bmRzPy5yaWdodFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG5vbk9wcGlzdGVUcmFuc2xhdGVYID0gbm9uT3Bwb3NpdGVPZmZzZXRYLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmJvdHRvbVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgY29uZmlnLmJvdW5kcz8ubGVmdCk7XG5cbiAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy52aXNpYmxlICYmIF8ub3B0aW9ucy5vcHBvc2l0ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsIGNvbmZpZy5ib3VuZHM/LnRvcCk7XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtsZWZ0fSwgJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgICAgICA6IHNpemUuaGVpZ2h0IC0gbm9uT3BwaXN0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICB9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gc2l6ZS53aWR0aCAtIG9wcG9zaXRlVHJhbnNsYXRlWVxuICAgICAgICAgICAgICA6IG5vbk9wcGlzdGVUcmFuc2xhdGVZXG4gICAgICAgICAgfSwgJHt0b3B9KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgwLCAwKSc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZGVudGlmeShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlLmluZGV4O1xuICB9XG5cbiAgY2xpY2soXG4gICAgZXZlbnQ6IFBvaW50ZXJFdmVudCxcbiAgICB4U2NhbGVzOiBNYXA8bnVtYmVyLCBBeGlzPixcbiAgICB5U2NhbGVzOiBNYXA8bnVtYmVyLCBBeGlzPlxuICApIHtcbiAgICBjb25zdCB4ID0geFNjYWxlcy5nZXQoMCkuc2NhbGU7XG4gICAgY29uc3QgeSA9IHlTY2FsZXMuZ2V0KDApLnNjYWxlO1xuICAgIHRoaXMuX3N2Yy5lbWl0Q2hhcnRDbGljayh7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgeDogeC5pbnZlcnQoZXZlbnQub2Zmc2V0WCksXG4gICAgICAgIHk6IHkuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIHhTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+LFxuICAgIHlTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+XG4gICkge1xuICAgIGNvbnN0IHggPSB4U2NhbGVzLmdldCgwKS5zY2FsZTtcbiAgICBjb25zdCB5ID0geVNjYWxlcy5nZXQoMCkuc2NhbGU7XG4gICAgdGhpcy5fc3ZjLmVtaXRDaGFydENvbnRleHRNZW51KHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIHRhcmdldDoge1xuICAgICAgICB4OiB4LmludmVydChldmVudC5vZmZzZXRYKSxcbiAgICAgICAgeTogeS5pbnZlcnQoZXZlbnQub2Zmc2V0WSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIG1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwie1xuICBzaXplOiBzaXplIHwgYXN5bmMsXG4gIGNvbmZpZzogY29uZmlnIHwgYXN5bmMsXG4gIHNjYWxlczogc2NhbGVzIHwgYXN5bmMsXG4gIHZpc2libGVSZWN0OiB2aXNpYmxlUmVjdCB8IGFzeW5jLFxuICBicnVzaFNjYWxlOiBicnVzaFNjYWxlIHwgYXN5bmNcbn0gYXMgZGF0YVwiIHhtbG5zOnN2Zz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkvaHRtbFwiPlxuICA8dGV0YS10b29sdGlwICpuZ0lmPVwiZGF0YS5jb25maWc/LnRvb2x0aXA/LmVuYWJsZVwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCI+PC90ZXRhLXRvb2x0aXA+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMCAmJiBkYXRhLnNjYWxlcy54ICYmIGRhdGEuc2NhbGVzLnlcIj5cbiAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCI+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhLnNjYWxlcy55IHwga2V5dmFsdWU7IHRyYWNrQnk6IGlkZW50aWZ5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWUub3B0aW9ucy52aXNpYmxlXCI+XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXktYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYnJ1c2hTY2FsZV09XCJkYXRhLmJydXNoU2NhbGVcIlxuICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueS5nZXQoaXRlbS5rZXkpLnNjYWxlXCJcbiAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgICAgICAgICAgW2F0dHIueF09XCJpdGVtLnZhbHVlLm9wdGlvbnMub3Bwb3NpdGUgPyAwIDogLWl0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L3JlY3Q+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhLnNjYWxlcy54IHwga2V5dmFsdWU7IHRyYWNrQnk6IGlkZW50aWZ5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWUub3B0aW9ucy52aXNpYmxlICYmIGRhdGEuc2NhbGVzLnggJiYgZGF0YS5zY2FsZXMueVwiPlxuICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgdGV0YS14LWF4aXNcbiAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvZz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIHRldGFab29tYWJsZVxuICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIwXCJcbiAgICAgICAgICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnguZ2V0KGl0ZW0ua2V5KS5zY2FsZVwiXG4gICAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiaXRlbS52YWx1ZS5vcHRpb25zLm9wcG9zaXRlID8gLWl0ZW0udmFsdWUuc2VsZlNpemUgOiAwXCJcbiAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGF0YS52aXNpYmxlUmVjdC53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L3JlY3Q+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEudmlzaWJsZVJlY3Q/LndpZHRoID4gMCAmJiBkYXRhLnZpc2libGVSZWN0Py5oZWlnaHQgPiAwICYmIGRhdGEuc2NhbGVzLnggJiYgZGF0YS5zY2FsZXMueVwiPlxuICAgIDxzdmdcbiAgICAgIHRldGFCcnVzaGFibGVcbiAgICAgIHRldGFab29tYWJsZVxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICBbc2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgW2F4aXNdPVwiZGF0YS5jb25maWc/Lnpvb20/LnR5cGUgPT09IHpvb21UeXBlLnggPyBkYXRhLnNjYWxlcy54LmdldCgwKSA6IGRhdGEuc2NhbGVzLnkuZ2V0KDApXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImRhdGEudmlzaWJsZVJlY3Qud2lkdGhcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImRhdGEudmlzaWJsZVJlY3QuaGVpZ2h0XCJcbiAgICAgIFthdHRyLnZpZXdCb3hdPVwiJzAgMCAnICsgZGF0YS52aXNpYmxlUmVjdC53aWR0aCArICcgJyArIGRhdGEudmlzaWJsZVJlY3QuaGVpZ2h0XCJcbiAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgnKyBkYXRhLnZpc2libGVSZWN0LnggKydweCwgJysgZGF0YS52aXNpYmxlUmVjdC55ICsncHgpJ1wiXG4gICAgICAoY29udGV4dG1lbnUpPVwiY29udGV4dE1lbnUoJGV2ZW50LCBkYXRhLnNjYWxlcy54LCBkYXRhLnNjYWxlcy55KVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soJGV2ZW50LCBkYXRhLnNjYWxlcy54LCBkYXRhLnNjYWxlcy55KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKCRldmVudClcIlxuICAgICAgKG1vdXNlbW92ZSk9XCJtb3VzZU1vdmUoJGV2ZW50KVwiPlxuXG4gICAgICA8ZyBjbGFzcz1cImdyaWRsaW5lc1wiXG4gICAgICAgICB0ZXRhLWdyaWRsaW5lc1xuICAgICAgICAgKm5nSWY9XCJkYXRhLmNvbmZpZy5ncmlkTGluZXM/LmVuYWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCI+PC9nPlxuXG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1wbG90YmFuZC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1iYW5kICpuZ0Zvcj1cImxldCBwbG90QmFuZCBvZiBheGlzLnBsb3RCYW5kc1wiXG4gICAgICAgICAgICAgW3Bsb3RCYW5kXT1cInBsb3RCYW5kXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueUF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZCAqbmdGb3I9XCJsZXQgcGxvdEJhbmQgb2YgYXhpcy5wbG90QmFuZHNcIlxuICAgICAgICAgICAgIFtwbG90QmFuZF09XCJwbG90QmFuZFwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpLnNjYWxlXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RsaW5lLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnhBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGcgdGV0YS1wbG90LWxpbmUgKm5nRm9yPVwibGV0IHBsb3RMaW5lIG9mIGF4aXMucGxvdExpbmVzXCJcbiAgICAgICAgICAgICBbcGxvdExpbmVdPVwicGxvdExpbmVcIlxuICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy54LmdldChpKS5zY2FsZVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnNjYWxlcy54LmdldChpKVwiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1wbG90bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy55QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lICpuZ0Zvcj1cImxldCBwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lc1wiXG4gICAgICAgICAgICAgW3Bsb3RMaW5lXT1cInBsb3RMaW5lXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueS5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJzZXJpZXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlcmllcyBvZiBkYXRhLmNvbmZpZy5zZXJpZXNcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXNlcmllcy1ob3N0XG4gICAgICAgICAgICAgKm5nSWY9XCJzZXJpZXMudmlzaWJsZVwiXG4gICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgW3Nlcmllc109XCJzZXJpZXNcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJhbm5vdGF0aW9uc1wiPlxuICAgICAgICA8ZyB0ZXRhLWFubm90YXRpb25cbiAgICAgICAgICAgKm5nRm9yPVwibGV0IGFubm90YXRpb24gb2YgZGF0YS5jb25maWcuYW5ub3RhdGlvbnNcIlxuICAgICAgICAgICBbYW5ub3RhdGlvbl09XCJhbm5vdGF0aW9uXCI+PC9nPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJjcm9zc2hhaXJcIiAqbmdJZj1cImRhdGEuY29uZmlnLnRvb2x0aXA/LnNob3dDcm9zc2hhaXJcIj5cbiAgICAgICAgPGcgdGV0YS1jcm9zc2hhaXIgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiPjwvZz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -24,10 +24,10 @@ export class GridlinesComponent {
24
24
  }
25
25
  }
26
26
  GridlinesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GridlinesComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Component });
27
- GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-10)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
+ GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GridlinesComponent, decorators: [{
29
29
  type: Component,
30
- args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-10)}\n"] }]
30
+ args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"] }]
31
31
  }], ctorParameters: function () { return [{ type: i1.ScaleService }, { type: i2.ChartService }]; }, propDecorators: { size: [{
32
32
  type: Input
33
33
  }] } });
@@ -133,10 +133,10 @@ export class PlotBandComponent {
133
133
  }
134
134
  }
135
135
  PlotBandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PlotBandComponent, deps: [{ token: i1.ScaleService }, { token: i2.ZoomService }, { token: i3.ChartService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
136
- PlotBandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PlotBandComponent, selector: "[teta-plot-band]", inputs: { plotBand: "plotBand", axis: "axis", scale: "scale", size: "size" }, host: { listeners: { "click": "click($event)", "contextmenu": "contextMenu($event)" } }, ngImport: i0, template: "<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"getTextCenter()\"\n [attr.transform]=\"'rotate(-90, '+ getTextCenter() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextCenter()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
136
+ PlotBandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PlotBandComponent, selector: "[teta-plot-band]", inputs: { plotBand: "plotBand", axis: "axis", scale: "scale", size: "size" }, host: { listeners: { "click": "click($event)", "contextmenu": "contextMenu($event)" } }, ngImport: i0, template: "<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-body-3 fill-text-70\"\n [attr.x]=\"getTextCenter()\"\n [attr.transform]=\"'rotate(-90, '+ getTextCenter() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-body-3 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextCenter()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}:host:hover .grabber{opacity:.1}.grabber{opacity:0}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PlotBandComponent, decorators: [{
138
138
  type: Component,
139
- args: [{ selector: '[teta-plot-band]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"getTextCenter()\"\n [attr.transform]=\"'rotate(-90, '+ getTextCenter() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextCenter()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}\n"] }]
139
+ args: [{ selector: '[teta-plot-band]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-body-3 fill-text-70\"\n [attr.x]=\"getTextCenter()\"\n [attr.transform]=\"'rotate(-90, '+ getTextCenter() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-body-3 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextCenter()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}:host:hover .grabber{opacity:.1}.grabber{opacity:0}\n"] }]
140
140
  }], ctorParameters: function () { return [{ type: i1.ScaleService }, { type: i2.ZoomService }, { type: i3.ChartService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { plotBand: [{
141
141
  type: Input
142
142
  }], axis: [{
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
152
152
  type: HostListener,
153
153
  args: ['contextmenu', ['$event']]
154
154
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1iYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFNekIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFXbEUsTUFBTSxPQUFPLGlCQUFpQjtJQVU1QixZQUNVLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLEdBQXNCLEVBQ3RCLE9BQW1CO1FBSm5CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFUN0IsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFrTDlCLGtCQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFySzlFLENBQUM7SUFFa0MsS0FBSyxDQUFDLEtBQWlCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDckIsS0FBSztTQUNOLENB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QUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7SUFJRCxPQUFPLENBQUMsQ0FBVztRQUNqQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTtZQUNuQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxHQUFHLENBQUM7U0FDbEQ7UUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztJQUNoQyxDQUFDOzs4R0EvTFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsK05DM0I5QixpeUhBcUZBOzJGRDFEYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07aU5BR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBaUI2QixLQUFLO3NCQUF2QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPUSxXQUFXO3NCQUFuRCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LCBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7UGxvdEJhbmR9IGZyb20gJy4uLy4uL21vZGVsL3Bsb3QtYmFuZCc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi8uLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uLy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge21hcCwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtcGxvdC1iYW5kXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbG90LWJhbmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbG90LWJhbmQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBsb3RCYW5kQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcGxvdEJhbmQ6IFBsb3RCYW5kO1xuICBASW5wdXQoKSBheGlzOiBBeGlzO1xuICBASW5wdXQoKSBzY2FsZTogYW55O1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuXG4gIG9yaWVudGF0aW9uID0gQXhpc09yaWVudGF0aW9uO1xuICByZXNpemVFbGVtZW50czogYW55O1xuICBkcmFnRWxlbWVudHM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcblxuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5lbWl0KHtcbiAgICAgIHRhcmdldDogdGhpcy5wbG90QmFuZCxcbiAgICAgIGV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKSBjb250ZXh0TWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuZW1pdCh7XG4gICAgICB0YXJnZXQ6IHRoaXMucGxvdEJhbmQsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGVtaXQoZXZlbnQ6IElDaGFydEV2ZW50PFBsb3RCYW5kPikge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRQbG90YmFuZChldmVudCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICBjb25zdCBwbG90YmFuZEVsZW1lbnQgPSBkM1xuICAgICAgLnNlbGVjdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgIC5zZWxlY3QoJy5wbG90YmFuZCcpO1xuXG4gICAgY29uc3QgZ3JhYkVsZW1lbnRzID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZ3JhYmJlcicpO1xuXG4gICAgdGhpcy5kcmFnRWxlbWVudHMgPSBkM1xuICAgICAgLmRyYWcoKVxuICAgICAgLnN1YmplY3QoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICAgIHJldHVybiB7eDogcGxvdGJhbmRFbGVtZW50LmF0dHIoJ3gnKX07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiB7eTogcGxvdGJhbmRFbGVtZW50LmF0dHIoJ3knKX07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZHJhZyA9IHRoaXMuZHJhZ0VsZW1lbnRzXG4gICAgICAub24oXG4gICAgICAgICdzdGFydCBkcmFnIGVuZCcsXG4gICAgICAgIChldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBQbG90QmFuZCwgYW55PiwgZDogUGxvdEJhbmQpID0+IHtcblxuICAgICAgICAgIGxldCBiYW5kU2l6ZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICBwbG90YmFuZEVsZW1lbnQuYXR0cihcbiAgICAgICAgICAgICAgdGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCA/ICd3aWR0aCcgOiAnaGVpZ2h0J1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBkLmZyb20gPSB0aGlzLnNjYWxlLmludmVydChcbiAgICAgICAgICAgIGV2ZW50W0F4aXNPcmllbnRhdGlvblt0aGlzLmF4aXMub3JpZW50YXRpb25dXVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBkLnRvID0gdGhpcy5zY2FsZS5pbnZlcnQoXG4gICAgICAgICAgICBldmVudFtBeGlzT3JpZW50YXRpb25bdGhpcy5heGlzLm9yaWVudGF0aW9uXV0gKyBiYW5kU2l6ZVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IGQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZ3JhYmJlcktleTtcbiAgICB0aGlzLnJlc2l6ZUVsZW1lbnRzID0gZDNcbiAgICAgIC5kcmFnKCk7XG5cbiAgICBjb25zdCByZXNpemUgPSB0aGlzLnJlc2l6ZUVsZW1lbnRzXG4gICAgICAub24oXG4gICAgICAgICdzdGFydCBkcmFnIGVuZCcsXG4gICAgICAgIChldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBQbG90QmFuZCwgYW55PiwgZDogUGxvdEJhbmQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudD8udHlwZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICBjb25zdCB7Z3JhYmJlcn0gPSBldmVudD8uc291cmNlRXZlbnQ/LnRhcmdldD8uZGF0YXNldDtcbiAgICAgICAgICAgICAgZ3JhYmJlcktleSA9IGdyYWJiZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnRoaXMuc2NhbGUuZG9tYWluKCkpO1xuICAgICAgICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4udGhpcy5zY2FsZS5kb21haW4oKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1pblZhbHVlID0gZC5taW4gPz8gbWluO1xuICAgICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgICAgIGRbZ3JhYmJlcktleV0gPSB0aGlzLnNjYWxlLmludmVydChcbiAgICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZ3JhYmJlcktleSA9PT0gJ2Zyb20nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJvcmRlck1pbiA9IGQuZnJvbSA8PSBtaW5WYWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoZC5mcm9tID49IGQudG8pIHtcbiAgICAgICAgICAgICAgICBkLmZyb20gPSBkLnRvO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGJvcmRlck1pbikge1xuICAgICAgICAgICAgICAgIGQuZnJvbSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChncmFiYmVyS2V5ID09PSAndG8nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJvcmRlck1heCA9IGQudG8gPj0gbWF4VmFsdWU7XG5cbiAgICAgICAgICAgICAgaWYgKGJvcmRlck1heCkge1xuICAgICAgICAgICAgICAgIGQudG8gPSBtYXhWYWx1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChkLnRvIDw9IGQuZnJvbSkge1xuICAgICAgICAgICAgICAgIGQudG8gPSBkLmZyb207XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5lbWl0KHtcbiAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBwbG90YmFuZEVsZW1lbnQuZGF0dW08UGxvdEJhbmQ+KHRoaXMucGxvdEJhbmQpO1xuICAgIGdyYWJFbGVtZW50cy5kYXR1bTxQbG90QmFuZD4odGhpcy5wbG90QmFuZCk7XG5cbiAgICBpZiAodGhpcy5wbG90QmFuZC5kcmFnZ2FibGUpIHtcbiAgICAgIHBsb3RiYW5kRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBsb3RCYW5kLnJlc2l6YWJsZSkge1xuICAgICAgZ3JhYkVsZW1lbnRzLmNhbGwocmVzaXplKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRyYWdFbGVtZW50cy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgICB0aGlzLnJlc2l6ZUVsZW1lbnRzLm9uKCdzdGFydCBkcmFnIGVuZCcsIG51bGwpO1xuICB9XG5cbiAgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNpemUuaGVpZ2h0O1xuICB9XG5cbiAgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS53aWR0aDtcbiAgfVxuXG4gIGdldCBmcm9tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90QmFuZC5mcm9tKTtcbiAgfVxuXG4gIGdldCB0bygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNjYWxlKHRoaXMucGxvdEJhbmQudG8pO1xuICB9XG5cbiAgZ2V0IGJhbmRTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguYWJzKFxuICAgICAgdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLnRvKSAtIHRoaXMuc2NhbGUodGhpcy5wbG90QmFuZC5mcm9tKVxuICAgICk7XG4gIH1cblxuICBnZXRUZXh0Q2VudGVyID0gKCkgPT4gdGhpcy5zY2FsZSgodGhpcy5wbG90QmFuZC5mcm9tICsgdGhpcy5wbG90QmFuZC50bykgLyAyKTtcblxuICBnZXRGaWxsKGQ6IFBsb3RCYW5kKTogc3RyaW5nIHtcbiAgICBpZiAoZC5zdHlsZT8ucGxvdEJhbmQ/LnBhdHRlcm5JbWFnZSkge1xuICAgICAgcmV0dXJuIGB1cmwoIyR7ZC5zdHlsZS5wbG90QmFuZD8ucGF0dGVybkltYWdlfSlgO1xuICAgIH1cbiAgICByZXR1cm4gZC5zdHlsZS5wbG90QmFuZD8uZmlsbDtcbiAgfVxufVxuIiwiPHN2ZzpyZWN0XG4gIGNsYXNzPVwicGxvdGJhbmRcIiB4bWxuczpzdmc9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L2h0bWxcIlxuICBbY2xhc3MuZHJhZ2dhYmxlXT1cInBsb3RCYW5kPy5kcmFnZ2FibGUgPT09IHRydWVcIlxuICBbYXR0ci5maWxsXT1cImdldEZpbGwocGxvdEJhbmQpXCJcbiAgW2F0dHIub3BhY2l0eV09XCJwbG90QmFuZC5zdHlsZT8ucGxvdEJhbmQ/Lm9wYWNpdHlcIlxuICBbYXR0ci5oZWlnaHRdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IGJhbmRTaXplXCJcbiAgW2F0dHIud2lkdGhdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGJhbmRTaXplIDogd2lkdGhcIlxuICBbYXR0ci55XT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnkgPyBmcm9tIDogbnVsbFwiXG4gIFthdHRyLnhdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiBudWxsXCI+XG48L3N2ZzpyZWN0PlxuXG48c3ZnOnRleHRcbiAgKm5nSWY9XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54XCJcbiAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICBkb21pbmFudC1iYXNlbGluZT1cImNlbnRyYWxcIlxuICBjbGFzcz1cImxhYmVsIGZvbnQtdGl0bGUtMiBmaWxsLXRleHQtNzBcIlxuICBbYXR0ci54XT1cImdldFRleHRDZW50ZXIoKVwiXG4gIFthdHRyLnRyYW5zZm9ybV09XCIncm90YXRlKC05MCwgJysgZ2V0VGV4dENlbnRlcigpICsnLCcgKyBoZWlnaHQgLyAyICsgJyknXCJcbiAgW2F0dHIueV09XCJoZWlnaHQgLyAyXCI+e3twbG90QmFuZC5sYWJlbH19XG48L3N2Zzp0ZXh0PlxuXG48c3ZnOnRleHRcbiAgKm5nSWY9XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55XCJcbiAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICBjbGFzcz1cImxhYmVsIGZvbnQtdGl0bGUtMiBmaWxsLXRleHQtNzBcIlxuICBkb21pbmFudC1iYXNlbGluZT1cImNlbnRyYWxcIlxuICBbYXR0ci54XT1cImdldFRleHRDZW50ZXIoKVwiXG4gIFthdHRyLnldPVwid2lkdGggLyAyXCI+e3twbG90QmFuZC5sYWJlbH19XG48L3N2Zzp0ZXh0PlxuXG48c3ZnOmxpbmUgY2xhc3M9XCJkaXNwbGF5LWdyYWJiZXJcIlxuICAgICAgICAgICpuZ0lmPVwicGxvdEJhbmQuc2hvd0dyYWJiZXJzICYmIHBsb3RCYW5kLnJlc2l6YWJsZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICdyZWQnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2VXaWR0aCB8fCA0XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogd2lkdGhcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCInZnJvbSdcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogZnJvbVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IGZyb21cIj5cbjwvc3ZnOmxpbmU+XG5cbjxzdmc6bGluZSBjbGFzcz1cImRpc3BsYXktZ3JhYmJlclwiXG4gICAgICAgICAgKm5nSWY9XCJwbG90QmFuZC5zaG93R3JhYmJlcnMgJiYgcGxvdEJhbmQucmVzaXphYmxlXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2UgfHwgJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZVdpZHRoIHx8IDRcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ3RvJ1wiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB0b1wiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHRvXCI+XG48L3N2ZzpsaW5lPlxuXG48c3ZnOmxpbmUgY2xhc3M9XCJncmFiYmVyXCJcbiAgICAgICAgICAqbmdJZj1cInBsb3RCYW5kLnJlc2l6YWJsZVwiXG4gICAgICAgICAgW2NsYXNzLngtZ3JhYmJlcl09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54XCJcbiAgICAgICAgICBbY2xhc3MueS1ncmFiYmVyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnlcIlxuICAgICAgICAgIFtjbGFzcy5yZXNpemVhYmxlXT1cInBsb3RCYW5kPy5yZXNpemFibGVcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZV09XCIncmVkJ1wiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cIjhcIlxuICAgICAgICAgIG9wYWNpdHk9XCIwXCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogd2lkdGhcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCInZnJvbSdcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogZnJvbVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IGZyb21cIj5cbjwvc3ZnOmxpbmU+XG5cbjxzdmc6bGluZSBjbGFzcz1cImdyYWJiZXJcIlxuICAgICAgICAgICpuZ0lmPVwicGxvdEJhbmQucmVzaXphYmxlXCJcbiAgICAgICAgICBbY2xhc3MueC1ncmFiYmVyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnhcIlxuICAgICAgICAgIFtjbGFzcy55LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueVwiXG4gICAgICAgICAgW2NsYXNzLnJlc2l6ZWFibGVdPVwicGxvdEJhbmQ/LnJlc2l6YWJsZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cIidyZWQnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwiOFwiXG4gICAgICAgICAgb3BhY2l0eT1cIjBcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ3RvJ1wiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB0b1wiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHRvXCI+XG48L3N2ZzpsaW5lPlxuXG5cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1iYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFLekIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7QUFVbEUsTUFBTSxPQUFPLGlCQUFpQjtJQVU1QixZQUNVLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLEdBQXNCLEVBQ3RCLE9BQW1CO1FBSm5CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFUN0IsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFnTDlCLGtCQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFySzlFLENBQUM7SUFFa0MsS0FBSyxDQUFDLEtBQWlCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDckIsS0FBSztTQUNOLENB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QUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7SUFJRCxPQUFPLENBQUMsQ0FBVztRQUNqQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTtZQUNuQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxHQUFHLENBQUM7U0FDbEQ7UUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztJQUNoQyxDQUFDOzs4R0E3TFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsK05DeEI5QixpbElBb0ZBOzJGRDVEYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07aU5BR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBZTZCLEtBQUs7c0JBQXZDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9RLFdBQVc7c0JBQW5ELFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7UGxvdEJhbmR9IGZyb20gJy4uLy4uL21vZGVsL3Bsb3QtYmFuZCc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uLy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge0lDaGFydEV2ZW50fSBmcm9tICcuLi8uLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbdGV0YS1wbG90LWJhbmRdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bsb3QtYmFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bsb3QtYmFuZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGxvdEJhbmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwbG90QmFuZDogUGxvdEJhbmQ7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNjYWxlOiBhbnk7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgb3JpZW50YXRpb24gPSBBeGlzT3JpZW50YXRpb247XG4gIHJlc2l6ZUVsZW1lbnRzOiBhbnk7XG4gIGRyYWdFbGVtZW50czogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBjbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuZW1pdCh7XG4gICAgICB0YXJnZXQ6IHRoaXMucGxvdEJhbmQsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSkgY29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmVtaXQoe1xuICAgICAgdGFyZ2V0OiB0aGlzLnBsb3RCYW5kLFxuICAgICAgZXZlbnQsXG4gICAgfSk7XG4gIH1cblxuICBlbWl0KGV2ZW50OiBJQ2hhcnRFdmVudDxQbG90QmFuZD4pIHtcbiAgICB0aGlzLmNoYXJ0U2VydmljZS5lbWl0UGxvdGJhbmQoZXZlbnQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgY29uc3QgcGxvdGJhbmRFbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0KCcucGxvdGJhbmQnKTtcblxuICAgIGNvbnN0IGdyYWJFbGVtZW50cyA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdEFsbCgnLmdyYWJiZXInKTtcblxuICAgIHRoaXMuZHJhZ0VsZW1lbnRzID0gZDNcbiAgICAgIC5kcmFnKClcbiAgICAgIC5zdWJqZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgICAgICByZXR1cm4ge3g6IHBsb3RiYW5kRWxlbWVudC5hdHRyKCd4Jyl9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4ge3k6IHBsb3RiYW5kRWxlbWVudC5hdHRyKCd5Jyl9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGRyYWcgPSB0aGlzLmRyYWdFbGVtZW50c1xuICAgICAgLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgUGxvdEJhbmQsIGFueT4sIGQ6IFBsb3RCYW5kKSA9PiB7XG5cbiAgICAgICAgICBsZXQgYmFuZFNpemUgPSBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgcGxvdGJhbmRFbGVtZW50LmF0dHIoXG4gICAgICAgICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnggPyAnd2lkdGgnIDogJ2hlaWdodCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZC5mcm9tID0gdGhpcy5zY2FsZS5pbnZlcnQoXG4gICAgICAgICAgICBldmVudFtBeGlzT3JpZW50YXRpb25bdGhpcy5heGlzLm9yaWVudGF0aW9uXV1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZC50byA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dICsgYmFuZFNpemVcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5lbWl0KHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiBkLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGdyYWJiZXJLZXk7XG4gICAgdGhpcy5yZXNpemVFbGVtZW50cyA9IGQzXG4gICAgICAuZHJhZygpO1xuXG4gICAgY29uc3QgcmVzaXplID0gdGhpcy5yZXNpemVFbGVtZW50c1xuICAgICAgLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgUGxvdEJhbmQsIGFueT4sIGQ6IFBsb3RCYW5kKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50Py50eXBlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgICBjb25zdCB7Z3JhYmJlcn0gPSBldmVudD8uc291cmNlRXZlbnQ/LnRhcmdldD8uZGF0YXNldDtcbiAgICAgICAgICAgIGdyYWJiZXJLZXkgPSBncmFiYmVyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnRoaXMuc2NhbGUuZG9tYWluKCkpO1xuICAgICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnRoaXMuc2NhbGUuZG9tYWluKCkpO1xuXG4gICAgICAgICAgY29uc3QgbWluVmFsdWUgPSBkLm1pbiA/PyBtaW47XG4gICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgICBkW2dyYWJiZXJLZXldID0gdGhpcy5zY2FsZS5pbnZlcnQoXG4gICAgICAgICAgICBldmVudFtBeGlzT3JpZW50YXRpb25bdGhpcy5heGlzLm9yaWVudGF0aW9uXV1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGdyYWJiZXJLZXkgPT09ICdmcm9tJykge1xuICAgICAgICAgICAgY29uc3QgYm9yZGVyTWluID0gZC5mcm9tIDw9IG1pblZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoZC5mcm9tID49IGQudG8pIHtcbiAgICAgICAgICAgICAgZC5mcm9tID0gZC50bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGJvcmRlck1pbikge1xuICAgICAgICAgICAgICBkLmZyb20gPSBtaW5WYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZ3JhYmJlcktleSA9PT0gJ3RvJykge1xuICAgICAgICAgICAgY29uc3QgYm9yZGVyTWF4ID0gZC50byA+PSBtYXhWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGJvcmRlck1heCkge1xuICAgICAgICAgICAgICBkLnRvID0gbWF4VmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkLnRvIDw9IGQuZnJvbSkge1xuICAgICAgICAgICAgICBkLnRvID0gZC5mcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHBsb3RiYW5kRWxlbWVudC5kYXR1bTxQbG90QmFuZD4odGhpcy5wbG90QmFuZCk7XG4gICAgZ3JhYkVsZW1lbnRzLmRhdHVtPFBsb3RCYW5kPih0aGlzLnBsb3RCYW5kKTtcblxuICAgIGlmICh0aGlzLnBsb3RCYW5kLmRyYWdnYWJsZSkge1xuICAgICAgcGxvdGJhbmRFbGVtZW50LmNhbGwoZHJhZyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGxvdEJhbmQucmVzaXphYmxlKSB7XG4gICAgICBncmFiRWxlbWVudHMuY2FsbChyZXNpemUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZHJhZ0VsZW1lbnRzLm9uKCdzdGFydCBkcmFnIGVuZCcsIG51bGwpO1xuICAgIHRoaXMucmVzaXplRWxlbWVudHMub24oJ3N0YXJ0IGRyYWcgZW5kJywgbnVsbCk7XG4gIH1cblxuICBnZXQgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLndpZHRoO1xuICB9XG5cbiAgZ2V0IGZyb20oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pO1xuICB9XG5cbiAgZ2V0IHRvKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90QmFuZC50byk7XG4gIH1cblxuICBnZXQgYmFuZFNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoXG4gICAgICB0aGlzLnNjYWxlKHRoaXMucGxvdEJhbmQudG8pIC0gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pXG4gICAgKTtcbiAgfVxuXG4gIGdldFRleHRDZW50ZXIgPSAoKSA9PiB0aGlzLnNjYWxlKCh0aGlzLnBsb3RCYW5kLmZyb20gKyB0aGlzLnBsb3RCYW5kLnRvKSAvIDIpO1xuXG4gIGdldEZpbGwoZDogUGxvdEJhbmQpOiBzdHJpbmcge1xuICAgIGlmIChkLnN0eWxlPy5wbG90QmFuZD8ucGF0dGVybkltYWdlKSB7XG4gICAgICByZXR1cm4gYHVybCgjJHtkLnN0eWxlLnBsb3RCYW5kPy5wYXR0ZXJuSW1hZ2V9KWA7XG4gICAgfVxuICAgIHJldHVybiBkLnN0eWxlLnBsb3RCYW5kPy5maWxsO1xuICB9XG59XG4iLCI8c3ZnOnJlY3RcbiAgY2xhc3M9XCJwbG90YmFuZFwiIHhtbG5zOnN2Zz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkvaHRtbFwiXG4gIFtjbGFzcy5kcmFnZ2FibGVdPVwicGxvdEJhbmQ/LmRyYWdnYWJsZSA9PT0gdHJ1ZVwiXG4gIFthdHRyLmZpbGxdPVwiZ2V0RmlsbChwbG90QmFuZClcIlxuICBbYXR0ci5vcGFjaXR5XT1cInBsb3RCYW5kLnN0eWxlPy5wbG90QmFuZD8ub3BhY2l0eVwiXG4gIFthdHRyLmhlaWdodF09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogYmFuZFNpemVcIlxuICBbYXR0ci53aWR0aF09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gYmFuZFNpemUgOiB3aWR0aFwiXG4gIFthdHRyLnldPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueSA/IGZyb20gOiBudWxsXCJcbiAgW2F0dHIueF09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IG51bGxcIj5cbjwvc3ZnOnJlY3Q+XG5cbjxzdmc6dGV4dFxuICAqbmdJZj1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnhcIlxuICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gIGRvbWluYW50LWJhc2VsaW5lPVwiY2VudHJhbFwiXG4gIGNsYXNzPVwibGFiZWwgZm9udC1ib2R5LTMgZmlsbC10ZXh0LTcwXCJcbiAgW2F0dHIueF09XCJnZXRUZXh0Q2VudGVyKClcIlxuICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgtOTAsICcrIGdldFRleHRDZW50ZXIoKSArJywnICsgaGVpZ2h0IC8gMiArICcpJ1wiXG4gIFthdHRyLnldPVwiaGVpZ2h0IC8gMlwiPnt7cGxvdEJhbmQubGFiZWx9fVxuPC9zdmc6dGV4dD5cblxuPHN2Zzp0ZXh0XG4gICpuZ0lmPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueVwiXG4gIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcbiAgY2xhc3M9XCJsYWJlbCBmb250LWJvZHktMyBmaWxsLXRleHQtNzBcIlxuICBkb21pbmFudC1iYXNlbGluZT1cImNlbnRyYWxcIlxuICBbYXR0ci54XT1cImdldFRleHRDZW50ZXIoKVwiXG4gIFthdHRyLnldPVwid2lkdGggLyAyXCI+e3twbG90QmFuZC5sYWJlbH19XG48L3N2Zzp0ZXh0PlxuXG48c3ZnOmxpbmUgY2xhc3M9XCJkaXNwbGF5LWdyYWJiZXJcIlxuICAgICAgICAgICpuZ0lmPVwicGxvdEJhbmQuc2hvd0dyYWJiZXJzICYmIHBsb3RCYW5kLnJlc2l6YWJsZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICd2YXIoLS1jb2xvci10ZXh0LTUwKSdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZVdpZHRoIHx8IDRcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogMFwiXG4gICAgICAgICAgW2F0dHIueDJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1ncmFiYmVyXT1cIidmcm9tJ1wiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiBmcm9tXCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogZnJvbVwiPlxuPC9zdmc6bGluZT5cblxuPHN2ZzpsaW5lIGNsYXNzPVwiZGlzcGxheS1ncmFiYmVyXCJcbiAgICAgICAgICAqbmdJZj1cInBsb3RCYW5kLnNob3dHcmFiYmVycyAmJiBwbG90QmFuZC5yZXNpemFibGVcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZSB8fCAndmFyKC0tY29sb3ItdGV4dC01MCknXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2VXaWR0aCB8fCA0XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdG8gOiAwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdG8gOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1ncmFiYmVyXT1cIid0bydcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogdG9cIlxuICAgICAgICAgIFthdHRyLnkyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiB0b1wiPlxuPC9zdmc6bGluZT5cblxuPHN2ZzpsaW5lIGNsYXNzPVwiZ3JhYmJlclwiXG4gICAgICAgICAgKm5nSWY9XCJwbG90QmFuZC5yZXNpemFibGVcIlxuICAgICAgICAgIFtjbGFzcy54LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueFwiXG4gICAgICAgICAgW2NsYXNzLnktZ3JhYmJlcl09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55XCJcbiAgICAgICAgICBbY2xhc3MucmVzaXplYWJsZV09XCJwbG90QmFuZD8ucmVzaXphYmxlXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2UgfHwgJ3ZhcigtLWNvbG9yLXRleHQtNTApJ1wiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cIjhcIlxuICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/ICd0cmFuc2xhdGVYKDJweCknIDogJ3RyYW5zbGF0ZVkoMnB4KSdcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogMFwiXG4gICAgICAgICAgW2F0dHIueDJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1ncmFiYmVyXT1cIidmcm9tJ1wiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiBmcm9tXCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogZnJvbVwiPlxuPC9zdmc6bGluZT5cbjxzdmc6bGluZSBjbGFzcz1cImdyYWJiZXJcIlxuICAgICAgICAgICpuZ0lmPVwicGxvdEJhbmQucmVzaXphYmxlXCJcbiAgICAgICAgICBbY2xhc3MueC1ncmFiYmVyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnhcIlxuICAgICAgICAgIFtjbGFzcy55LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueVwiXG4gICAgICAgICAgW2NsYXNzLnJlc2l6ZWFibGVdPVwicGxvdEJhbmQ/LnJlc2l6YWJsZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICd2YXIoLS1jb2xvci10ZXh0LTUwKSdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCI4XCJcbiAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAndHJhbnNsYXRlWCgtMnB4KScgOiAndHJhbnNsYXRlWSgtMnB4KSdcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ3RvJ1wiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB0b1wiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHRvXCI+XG48L3N2ZzpsaW5lPlxuXG5cbiJdfQ==
@@ -3,7 +3,7 @@ import { maxIndex } from 'd3-array';
3
3
  import { getTextWidth } from '../../utils/public-api';
4
4
  export class AxisSizeBuilder {
5
5
  constructor() {
6
- this.titlePadding = 10;
6
+ this.titlePadding = 11;
7
7
  this.basePadding = 16;
8
8
  this.backupRatio = 0.58;
9
9
  }
@@ -13,7 +13,7 @@ export class AxisSizeBuilder {
13
13
  const formatter = settings.defaultFormatter();
14
14
  finalPadding += settings.options.title ? this.titlePadding : 0;
15
15
  const scale = settings.defaultScale();
16
- const ticks = scale().domain(settings.extremes).ticks();
16
+ const ticks = scale().domain(settings.extremes).ticks(20);
17
17
  const maxElementLengthIndex = maxIndex(ticks, (_) => formatter(_).length);
18
18
  finalPadding += getTextWidth(formatter(ticks[maxElementLengthIndex]), this.backupRatio);
19
19
  }
@@ -23,4 +23,4 @@ export class AxisSizeBuilder {
23
23
  return finalPadding;
24
24
  }
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy1zaXplLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY29yZS9heGlzL2J1aWxkZXJzL2F4aXMtc2l6ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd0RCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO0lBK0I3QixDQUFDO0lBN0JDLEtBQUssQ0FBQyxRQUFjO1FBQ2xCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFcEMsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFL0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFeEQsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQ3BDLEtBQUssRUFDTCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0IsQ0FBQztZQUdGLFlBQVksSUFBSSxZQUFZLENBQzFCLFNBQVMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUN2QyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1NBQ0g7UUFFRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRTtZQUM5QyxZQUFZLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUNuQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi9heGlzJztcbmltcG9ydCB7IEF4aXNPcmllbnRhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBtYXhJbmRleCB9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB7IGdldFRleHRXaWR0aCB9IGZyb20gJy4uLy4uL3V0aWxzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgSUJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9pLWJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgQXhpc1NpemVCdWlsZGVyIGltcGxlbWVudHMgSUJ1aWxkZXI8QXhpcywgbnVtYmVyPiB7XG4gIHByaXZhdGUgdGl0bGVQYWRkaW5nID0gMTA7XG4gIHByaXZhdGUgYmFzZVBhZGRpbmcgPSAxNjtcbiAgcHJpdmF0ZSBiYWNrdXBSYXRpbyA9IDAuNTg7XG5cbiAgYnVpbGQoc2V0dGluZ3M6IEF4aXMpOiBudW1iZXIge1xuICAgIGxldCBmaW5hbFBhZGRpbmcgPSB0aGlzLmJhc2VQYWRkaW5nO1xuXG4gICAgaWYgKHNldHRpbmdzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVyID0gc2V0dGluZ3MuZGVmYXVsdEZvcm1hdHRlcigpO1xuXG4gICAgICBmaW5hbFBhZGRpbmcgKz0gc2V0dGluZ3Mub3B0aW9ucy50aXRsZSA/IHRoaXMudGl0bGVQYWRkaW5nIDogMDtcblxuICAgICAgY29uc3Qgc2NhbGUgPSBzZXR0aW5ncy5kZWZhdWx0U2NhbGUoKTtcbiAgICAgIGNvbnN0IHRpY2tzID0gc2NhbGUoKS5kb21haW4oc2V0dGluZ3MuZXh0cmVtZXMpLnRpY2tzKCk7XG5cbiAgICAgIGNvbnN0IG1heEVsZW1lbnRMZW5ndGhJbmRleCA9IG1heEluZGV4KFxuICAgICAgICB0aWNrcyxcbiAgICAgICAgKF8pID0+IGZvcm1hdHRlcihfKS5sZW5ndGhcbiAgICAgICk7XG5cblxuICAgICAgZmluYWxQYWRkaW5nICs9IGdldFRleHRXaWR0aChcbiAgICAgICAgZm9ybWF0dGVyKHRpY2tzW21heEVsZW1lbnRMZW5ndGhJbmRleF0pLFxuICAgICAgICB0aGlzLmJhY2t1cFJhdGlvXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgIGZpbmFsUGFkZGluZyArPSBmaW5hbFBhZGRpbmcgKyAyMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxQYWRkaW5nO1xuICB9XG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy1zaXplLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY29yZS9heGlzL2J1aWxkZXJzL2F4aXMtc2l6ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd0RCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO0lBK0I3QixDQUFDO0lBN0JDLEtBQUssQ0FBQyxRQUFjO1FBQ2xCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFcEMsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFOUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFL0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTFELE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUNwQyxLQUFLLEVBQ0wsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzNCLENBQUM7WUFHRixZQUFZLElBQUksWUFBWSxDQUMxQixTQUFTLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztTQUNIO1FBRUQsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDOUMsWUFBWSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7U0FDbkM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vYXhpcyc7XG5pbXBvcnQgeyBBeGlzT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHsgbWF4SW5kZXggfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgeyBnZXRUZXh0V2lkdGggfSBmcm9tICcuLi8uLi91dGlscy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IElCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvaS1idWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIEF4aXNTaXplQnVpbGRlciBpbXBsZW1lbnRzIElCdWlsZGVyPEF4aXMsIG51bWJlcj4ge1xuICBwcml2YXRlIHRpdGxlUGFkZGluZyA9IDExO1xuICBwcml2YXRlIGJhc2VQYWRkaW5nID0gMTY7XG4gIHByaXZhdGUgYmFja3VwUmF0aW8gPSAwLjU4O1xuXG4gIGJ1aWxkKHNldHRpbmdzOiBBeGlzKTogbnVtYmVyIHtcbiAgICBsZXQgZmluYWxQYWRkaW5nID0gdGhpcy5iYXNlUGFkZGluZztcblxuICAgIGlmIChzZXR0aW5ncy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IHNldHRpbmdzLmRlZmF1bHRGb3JtYXR0ZXIoKTtcblxuICAgICAgZmluYWxQYWRkaW5nICs9IHNldHRpbmdzLm9wdGlvbnMudGl0bGUgPyB0aGlzLnRpdGxlUGFkZGluZyA6IDA7XG5cbiAgICAgIGNvbnN0IHNjYWxlID0gc2V0dGluZ3MuZGVmYXVsdFNjYWxlKCk7XG4gICAgICBjb25zdCB0aWNrcyA9IHNjYWxlKCkuZG9tYWluKHNldHRpbmdzLmV4dHJlbWVzKS50aWNrcygyMCk7XG5cbiAgICAgIGNvbnN0IG1heEVsZW1lbnRMZW5ndGhJbmRleCA9IG1heEluZGV4KFxuICAgICAgICB0aWNrcyxcbiAgICAgICAgKF8pID0+IGZvcm1hdHRlcihfKS5sZW5ndGhcbiAgICAgICk7XG5cblxuICAgICAgZmluYWxQYWRkaW5nICs9IGdldFRleHRXaWR0aChcbiAgICAgICAgZm9ybWF0dGVyKHRpY2tzW21heEVsZW1lbnRMZW5ndGhJbmRleF0pLFxuICAgICAgICB0aGlzLmJhY2t1cFJhdGlvXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgIGZpbmFsUGFkZGluZyArPSBmaW5hbFBhZGRpbmcgKyAyMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxQYWRkaW5nO1xuICB9XG59XG4iXX0=