@worktile/gantt 12.2.0-next.1 → 12.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/worktile-gantt.umd.js +581 -508
- package/bundles/worktile-gantt.umd.js.map +1 -1
- package/class/event.d.ts +2 -0
- package/class/index.d.ts +1 -0
- package/class/item.d.ts +1 -1
- package/class/link.d.ts +12 -7
- package/components/bar/bar-drag.d.ts +4 -2
- package/components/bar/bar.component.d.ts +4 -4
- package/components/calendar/calendar.component.d.ts +3 -5
- package/components/drag-backdrop/drag-backdrop.component.d.ts +1 -5
- package/components/icon/icon.component.d.ts +2 -4
- package/components/links/{paths → lines}/curve.d.ts +2 -3
- package/components/links/lines/factory.d.ts +5 -0
- package/components/links/{paths/path.d.ts → lines/line.d.ts} +1 -4
- package/components/links/{paths/line.d.ts → lines/straight.d.ts} +2 -2
- package/components/links/links.component.d.ts +2 -2
- package/components/main/gantt-main.component.d.ts +2 -3
- package/components/range/range.component.d.ts +2 -5
- package/components/table/gantt-table.component.d.ts +2 -3
- package/esm2015/class/event.js +1 -1
- package/esm2015/class/index.js +2 -1
- package/esm2015/class/item.js +4 -3
- package/esm2015/class/link.js +6 -6
- package/esm2015/components/bar/bar-drag.js +56 -26
- package/esm2015/components/bar/bar.component.js +22 -15
- package/esm2015/components/calendar/calendar.component.js +18 -13
- package/esm2015/components/drag-backdrop/drag-backdrop.component.js +10 -14
- package/esm2015/components/icon/icon.component.js +4 -6
- package/esm2015/components/links/lines/curve.js +96 -0
- package/esm2015/components/links/lines/factory.js +14 -0
- package/esm2015/components/links/lines/line.js +24 -0
- package/esm2015/components/links/lines/straight.js +58 -0
- package/esm2015/components/links/links.component.js +31 -17
- package/esm2015/components/main/gantt-main.component.js +4 -5
- package/esm2015/components/range/range.component.js +4 -13
- package/esm2015/components/table/gantt-table.component.js +10 -6
- package/esm2015/gantt-dom.service.js +41 -27
- package/esm2015/gantt-drag-container.js +57 -40
- package/esm2015/gantt-item-upper.js +7 -7
- package/esm2015/gantt-print.service.js +53 -50
- package/esm2015/gantt-upper.js +37 -20
- package/esm2015/gantt.component.js +25 -28
- package/esm2015/gantt.config.js +3 -3
- package/esm2015/gantt.module.js +4 -4
- package/esm2015/gantt.pipe.js +9 -9
- package/esm2015/root.component.js +43 -31
- package/esm2015/table/gantt-column.component.js +4 -5
- package/esm2015/table/gantt-table.component.js +5 -6
- package/esm2015/utils/passive-listeners.js +30 -0
- package/esm2015/utils/set-style-with-vendor-prefix.js +15 -0
- package/esm2015/views/day.js +1 -1
- package/fesm2015/worktile-gantt.js +492 -386
- package/fesm2015/worktile-gantt.js.map +1 -1
- package/gantt-dom.service.d.ts +11 -4
- package/gantt-drag-container.d.ts +20 -8
- package/gantt-item-upper.d.ts +5 -5
- package/gantt-print.service.d.ts +1 -1
- package/gantt-upper.d.ts +10 -8
- package/gantt.component.d.ts +3 -7
- package/gantt.config.d.ts +2 -2
- package/main.bundle.scss +34 -3
- package/package.json +1 -1
- package/root.component.d.ts +5 -3
- package/table/gantt-column.component.d.ts +2 -3
- package/table/gantt-table.component.d.ts +2 -4
- package/utils/passive-listeners.d.ts +13 -0
- package/utils/set-style-with-vendor-prefix.d.ts +12 -0
- package/README.md +0 -24
- package/components/links/paths/factory.d.ts +0 -5
- package/esm2015/components/links/paths/curve.js +0 -118
- package/esm2015/components/links/paths/factory.js +0 -14
- package/esm2015/components/links/paths/line.js +0 -59
- package/esm2015/components/links/paths/path.js +0 -31
|
@@ -4,7 +4,7 @@ import { takeUntil, skip, debounceTime } from 'rxjs/operators';
|
|
|
4
4
|
import { recursiveItems } from '../../utils/helpers';
|
|
5
5
|
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
6
6
|
import { LinkColors, GanttLinkType } from '../../class/link';
|
|
7
|
-
import {
|
|
7
|
+
import { createLineGenerator } from './lines/factory';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "../../gantt-drag-container";
|
|
10
10
|
import * as i2 from "@angular/common";
|
|
@@ -27,7 +27,7 @@ export class GanttLinksComponent {
|
|
|
27
27
|
this.ganttLinksOverlay = true;
|
|
28
28
|
}
|
|
29
29
|
ngOnInit() {
|
|
30
|
-
this.
|
|
30
|
+
this.linkLine = createLineGenerator(this.ganttUpper.linkOptions.lineType, this.ganttUpper);
|
|
31
31
|
this.showArrow = this.ganttUpper.linkOptions.showArrow;
|
|
32
32
|
this.buildLinks();
|
|
33
33
|
this.firstChange = false;
|
|
@@ -35,7 +35,7 @@ export class GanttLinksComponent {
|
|
|
35
35
|
this.elementRef.nativeElement.style.visibility = 'hidden';
|
|
36
36
|
});
|
|
37
37
|
merge(this.ganttUpper.viewChange, this.ganttUpper.expandChange, this.ganttUpper.view.start$, this.ganttUpper.dragEnded, this.ganttUpper.linkDragEnded)
|
|
38
|
-
.pipe(
|
|
38
|
+
.pipe(skip(1), debounceTime(0), takeUntil(this.unsubscribe$))
|
|
39
39
|
.subscribe(() => {
|
|
40
40
|
this.elementRef.nativeElement.style.visibility = 'visible';
|
|
41
41
|
this.buildLinks();
|
|
@@ -94,16 +94,30 @@ export class GanttLinksComponent {
|
|
|
94
94
|
source.links.forEach((link) => {
|
|
95
95
|
const target = this.linkItems.find((item) => item.id === link.link);
|
|
96
96
|
if (target && (target.origin.start || target.origin.end)) {
|
|
97
|
-
let
|
|
97
|
+
let defaultColor = LinkColors.default;
|
|
98
|
+
let activeColor = LinkColors.active;
|
|
98
99
|
if (link.type === GanttLinkType.fs && source.end.getTime() > target.start.getTime()) {
|
|
99
|
-
|
|
100
|
+
defaultColor = LinkColors.blocked;
|
|
101
|
+
activeColor = LinkColors.blocked;
|
|
102
|
+
}
|
|
103
|
+
if (link.color) {
|
|
104
|
+
if (typeof link.color === 'string') {
|
|
105
|
+
defaultColor = link.color;
|
|
106
|
+
activeColor = link.color;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
defaultColor = link.color.default;
|
|
110
|
+
activeColor = link.color.active;
|
|
111
|
+
}
|
|
100
112
|
}
|
|
101
113
|
this.links.push({
|
|
102
|
-
path: this.
|
|
114
|
+
path: this.linkLine.generatePath(source, target, link.type),
|
|
103
115
|
source: source.origin,
|
|
104
116
|
target: target.origin,
|
|
105
117
|
type: link.type,
|
|
106
|
-
color:
|
|
118
|
+
color: defaultColor,
|
|
119
|
+
defaultColor,
|
|
120
|
+
activeColor
|
|
107
121
|
});
|
|
108
122
|
}
|
|
109
123
|
});
|
|
@@ -120,24 +134,24 @@ export class GanttLinksComponent {
|
|
|
120
134
|
target: link.target
|
|
121
135
|
});
|
|
122
136
|
}
|
|
123
|
-
mouseEnterPath(link) {
|
|
124
|
-
|
|
125
|
-
|
|
137
|
+
mouseEnterPath(link, index) {
|
|
138
|
+
link.color = link.activeColor || link.defaultColor;
|
|
139
|
+
if (index < this.links.length - 1) {
|
|
140
|
+
this.links.splice(index, 1);
|
|
141
|
+
this.links.push(link);
|
|
126
142
|
}
|
|
127
143
|
}
|
|
128
144
|
mouseLeavePath(link) {
|
|
129
|
-
|
|
130
|
-
link.color = LinkColors.default;
|
|
131
|
-
}
|
|
145
|
+
link.color = link.defaultColor;
|
|
132
146
|
}
|
|
133
147
|
ngOnDestroy() {
|
|
134
148
|
this.unsubscribe$.next();
|
|
135
149
|
this.unsubscribe$.complete();
|
|
136
150
|
}
|
|
137
151
|
}
|
|
138
|
-
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.
|
|
139
|
-
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.
|
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.
|
|
152
|
+
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GanttLinksComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.GanttDragContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
+
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: { groups: "groups", items: "items" }, outputs: { lineClick: "lineClick" }, host: { properties: { "class.gantt-links-overlay": "this.ganttLinksOverlay" } }, usesOnChanges: true, ngImport: i0, template: "<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path\n [attr.d]=\"link.path\"\n fill=\"transparent\"\n stroke-width=\"2\"\n [attr.stroke]=\"link.color\"\n pointer-events=\"none\"\n [attr.style]=\"link.type === ganttLinkTypes.sf ? 'marker-start: url(#triangle' + i + ')' : 'marker-end: url(#triangle' + i + ')'\"\n ></path>\n\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n [attr.d]=\"link.path\"\n (mouseenter)=\"mouseEnterPath(link, i)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <defs *ngIf=\"showArrow\">\n <marker\n *ngIf=\"link.type === ganttLinkTypes.sf; else markerEnd\"\n [id]=\"'triangle' + i\"\n markerUnits=\"strokeWidth\"\n markerWidth=\"5\"\n markerHeight=\"4\"\n refX=\"5\"\n refY=\"2\"\n orient=\"180\"\n >\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n\n <ng-template #markerEnd>\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n </ng-template>\n </defs>\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n", directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GanttLinksComponent, decorators: [{
|
|
141
155
|
type: Component,
|
|
142
156
|
args: [{
|
|
143
157
|
selector: 'gantt-links-overlay',
|
|
@@ -156,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
156
170
|
type: HostBinding,
|
|
157
171
|
args: ['class.gantt-links-overlay']
|
|
158
172
|
}] } });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQStCLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFNdEQsTUFBTSxPQUFPLG1CQUFtQjtJQXVCNUIsWUFDc0MsVUFBc0IsRUFDaEQsR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsa0JBQXNDO1FBSFosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUExQnpDLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBRWxDLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxJQUFJLFlB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O2dCQWdCbUMsaUJBQWlCO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEdyb3VwSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9jbGFzcy9ncm91cCc7XG5pbXBvcnQgeyBHYW50dEl0ZW1JbnRlcm5hbCB9IGZyb20gJy4vLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MvZXZlbnQnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgcmVjdXJzaXZlSXRlbXMgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRMaW5rSXRlbSwgTGlua0ludGVybmFsLCBMaW5rQ29sb3JzLCBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBHYW50dExpbmtQYXRoIH0gZnJvbSAnLi9wYXRocy9wYXRoJztcbmltcG9ydCB7IGdlbmVyYXRlUGF0aEZhY3RvcnkgfSBmcm9tICcuL3BhdGhzL2ZhY3RvcnknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LWxpbmtzLW92ZXJsYXknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saW5rcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRMaW5rc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGdyb3VwczogR2FudHRHcm91cEludGVybmFsW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdID0gW107XG5cbiAgICBAT3V0cHV0KCkgbGluZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmVDbGlja0V2ZW50PigpO1xuXG4gICAgcHVibGljIGxpbmtzOiBMaW5rSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHVibGljIGdhbnR0TGlua1R5cGVzID0gR2FudHRMaW5rVHlwZTtcblxuICAgIHB1YmxpYyBzaG93QXJyb3cgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbGlua0l0ZW1zOiBHYW50dExpbmtJdGVtW10gPSBbXTtcblxuICAgIHByaXZhdGUgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBsaW5rUGF0aDogR2FudHRMaW5rUGF0aDtcblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtbGlua3Mtb3ZlcmxheScpIGdhbnR0TGlua3NPdmVybGF5ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZ2FudHREcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXJcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5saW5rUGF0aCA9IGdlbmVyYXRlUGF0aEZhY3RvcnkodGhpcy5nYW50dFVwcGVyLmxpbmtPcHRpb25zLmxpbmtQYXRoVHlwZSwgdGhpcy5nYW50dFVwcGVyKTtcblxuICAgICAgICB0aGlzLnNob3dBcnJvdyA9IHRoaXMuZ2FudHRVcHBlci5saW5rT3B0aW9ucy5zaG93QXJyb3c7XG4gICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICB0aGlzLmZpcnN0Q2hhbmdlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5nYW50dERyYWdDb250YWluZXIuZHJhZ1N0YXJ0ZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICB9KTtcblxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci52aWV3Q2hhbmdlLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmV4cGFuZENoYW5nZSxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci52aWV3LnN0YXJ0JCxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5kcmFnRW5kZWQsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIubGlua0RyYWdFbmRlZFxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLCBza2lwKDEpLCBkZWJvdW5jZVRpbWUoMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlSXRlbVBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0O1xuICAgICAgICBjb25zdCBiYXJIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmJhckhlaWdodDtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBpdGVtTnVtID0gMDtcbiAgICAgICAgICAgIGxldCBncm91cE51bSA9IDA7XG4gICAgICAgICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwTnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVjdXJzaXZlSXRlbXMoZ3JvdXAuaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSAoZ3JvdXBOdW0gKyBpdGVtTnVtICsgaXRlbUluZGV4KSAqIGxpbmVIZWlnaHQgKyBpdGVtLnJlZnMueSArIGJhckhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLnggKyBpdGVtLnJlZnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OdW0gKz0gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBpdGVtSW5kZXggKiBsaW5lSGVpZ2h0ICsgaXRlbS5yZWZzLnkgKyBiYXJIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBiZWZvcmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGl0ZW0ucmVmcy54LFxuICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhZnRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLnggKyBpdGVtLnJlZnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRMaW5rcygpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlSXRlbVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMubGlua3MgPSBbXTtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlLm9yaWdpbi5zdGFydCB8fCBzb3VyY2Uub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubGlua0l0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGxpbmsubGluayk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgKHRhcmdldC5vcmlnaW4uc3RhcnQgfHwgdGFyZ2V0Lm9yaWdpbi5lbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3IgPSBMaW5rQ29sb3JzLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluay50eXBlID09PSBHYW50dExpbmtUeXBlLmZzICYmIHNvdXJjZS5lbmQuZ2V0VGltZSgpID4gdGFyZ2V0LnN0YXJ0LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gTGlua0NvbG9ycy5ibG9ja2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5rcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmxpbmtQYXRoLmdlbmVyYXRlUGF0aChzb3VyY2UsIHRhcmdldCwgbGluay50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHNvdXJjZS5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGxpbmsudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogbGluay5jb2xvciB8fCBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBvbkxpbmVDbGljayhldmVudDogTW91c2VFdmVudCwgbGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIHRoaXMubGluZUNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBzb3VyY2U6IGxpbmsuc291cmNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBsaW5rLnRhcmdldFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtb3VzZUVudGVyUGF0aChsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgaWYgKGxpbmsuY29sb3IgPT09IExpbmtDb2xvcnMuZGVmYXVsdCkge1xuICAgICAgICAgICAgbGluay5jb2xvciA9IExpbmtDb2xvcnMuYWN0aXZlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW91c2VMZWF2ZVBhdGgobGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIGlmIChsaW5rLmNvbG9yID09PSBMaW5rQ29sb3JzLmFjdGl2ZSkge1xuICAgICAgICAgICAgbGluay5jb2xvciA9IExpbmtDb2xvcnMuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHN2ZyBbYXR0ci53aWR0aF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIiBjbGFzcz1cImdhbnR0LWxpbmtzLW92ZXJsYXktbWFpblwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgPHBhdGhcbiAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgIGZpbGw9XCJ0cmFuc3BhcmVudFwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJsaW5rLmNvbG9yXCJcbiAgICAgIHBvaW50ZXItZXZlbnRzPVwibm9uZVwiXG4gICAgICBbYXR0ci5zdHlsZV09XCJsaW5rLnR5cGUgPT09IGdhbnR0TGlua1R5cGVzLnNmID8gJ21hcmtlci1zdGFydDogdXJsKCN0cmlhbmdsZScgKyBpICsgJyknIDogJ21hcmtlci1lbmQ6IHVybCgjdHJpYW5nbGUnICsgaSArICcpJ1wiXG4gICAgPjwvcGF0aD5cbiAgICA8Zz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGNsYXNzPVwibGluay1saW5lXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTGluZUNsaWNrKCRldmVudCwgbGluaylcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyUGF0aChsaW5rKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmVQYXRoKGxpbmspXCJcbiAgICAgICAgW2F0dHIuZF09XCJsaW5rLnBhdGhcIlxuICAgICAgICBzdHJva2U9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjlcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIGN1cnNvcj1cInBvaW50ZXJcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L2c+XG4gICAgPGRlZnMgKm5nSWY9XCJzaG93QXJyb3dcIj5cbiAgICAgIDxtYXJrZXJcbiAgICAgICAgKm5nSWY9XCJsaW5rLnR5cGUgPT09IGdhbnR0TGlua1R5cGVzLnNmOyBlbHNlIG1hcmtlckVuZFwiXG4gICAgICAgIFtpZF09XCIndHJpYW5nbGUnICsgaVwiXG4gICAgICAgIG1hcmtlclVuaXRzPVwic3Ryb2tlV2lkdGhcIlxuICAgICAgICBtYXJrZXJXaWR0aD1cIjVcIlxuICAgICAgICBtYXJrZXJIZWlnaHQ9XCI0XCJcbiAgICAgICAgcmVmWD1cIjVcIlxuICAgICAgICByZWZZPVwiMlwiXG4gICAgICAgIG9yaWVudD1cIjE4MFwiXG4gICAgICA+XG4gICAgICAgIDxwYXRoIFthdHRyLmZpbGxdPVwibGluay5jb2xvclwiIFthdHRyLnN0cm9rZV09XCJsaW5rLmNvbG9yXCIgZD1cIk0gMCAwIEwgNSAyIEwgMCA0IHpcIiAvPlxuICAgICAgPC9tYXJrZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbWFya2VyRW5kPlxuICAgICAgICA8bWFya2VyIFtpZF09XCIndHJpYW5nbGUnICsgaVwiIG1hcmtlclVuaXRzPVwic3Ryb2tlV2lkdGhcIiBtYXJrZXJXaWR0aD1cIjVcIiBtYXJrZXJIZWlnaHQ9XCI0XCIgcmVmWD1cIjVcIiByZWZZPVwiMlwiIG9yaWVudD1cImF1dG9cIj5cbiAgICAgICAgICA8cGF0aCBbYXR0ci5maWxsXT1cImxpbmsuY29sb3JcIiBbYXR0ci5zdHJva2VdPVwibGluay5jb2xvclwiIGQ9XCJNIDAgMCBMIDUgMiBMIDAgNCB6XCIgLz5cbiAgICAgICAgPC9tYXJrZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGVmcz5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxsaW5lIGNsYXNzPVwibGluay1kcmFnZ2luZy1saW5lXCI+PC9saW5lPlxuPC9zdmc+XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQStCLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFNdEQsTUFBTSxPQUFPLG1CQUFtQjtJQXVCNUIsWUFDc0MsVUFBc0IsRUFDaEQsR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsa0JBQXNDO1FBSFosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUExQnpDLFdBQU0sR0FBeUIsRUFBRSxDQUFDO1FBRWxDLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUV2RCxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUUzQixtQkFBYyxHQUFHLGFBQWEsQ0FBQztRQUUvQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSW5CLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVLLHNCQUFpQixHQUFHLElBQUksQ0FBQztJQU9oRSxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FDaEM7YUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNoQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO3dCQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQ3RGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxpQ0FDWixJQUFJLEtBQ1AsTUFBTSxFQUFFO2dDQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQ2QsQ0FBQzs2QkFDSixFQUNELEtBQUssRUFBRTtnQ0FDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2dDQUNoQyxDQUFDOzZCQUNKLElBQ0gsQ0FBQztvQkFDUCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDM0I7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGlDQUNaLElBQUksS0FDUCxNQUFNLEVBQUU7d0JBQ0osQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDZCxDQUFDO3FCQUNKLEVBQ0QsS0FBSyxFQUFFO3dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQ2hDLENBQUM7cUJBQ0osSUFDSCxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BFLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdEQsSUFBSSxZQUFZLEdBQVcsVUFBVSxDQUFDLE9BQU8sQ0FBQzt3QkFDOUMsSUFBSSxXQUFXLEdBQVcsVUFBVSxDQUFDLE1BQU0sQ0FBQzt3QkFFNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFOzRCQUNqRixZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQzs0QkFDbEMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7eUJBQ3BDO3dCQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTs0QkFDWixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0NBQ2hDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dDQUMxQixXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzs2QkFDNUI7aUNBQU07Z0NBQ0gsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dDQUNsQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7NkJBQ25DO3lCQUNKO3dCQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7NEJBQzNELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTs0QkFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNOzRCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ2YsS0FBSyxFQUFFLFlBQVk7NEJBQ25CLFlBQVk7NEJBQ1osV0FBVzt5QkFDZCxDQUFDLENBQUM7cUJBQ047Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUIsRUFBRSxJQUFrQjtRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNoQixLQUFLO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWtCLEVBQUUsS0FBYTtRQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNuRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFrQjtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7Z0hBaExRLG1CQUFtQixrQkF3QmhCLGlCQUFpQjtvR0F4QnBCLG1CQUFtQixvUEM3QmhDLGdwREErQ0E7MkZEbEJhLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsd0JBQXdCO2lCQUN4Qzs7MEJBeUJRLE1BQU07MkJBQUMsaUJBQWlCO3NJQXZCcEIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQWdCbUMsaUJBQWlCO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEdyb3VwSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9jbGFzcy9ncm91cCc7XG5pbXBvcnQgeyBHYW50dEl0ZW1JbnRlcm5hbCB9IGZyb20gJy4vLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MvZXZlbnQnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgcmVjdXJzaXZlSXRlbXMgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRMaW5rSXRlbSwgTGlua0ludGVybmFsLCBMaW5rQ29sb3JzLCBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBHYW50dExpbmtMaW5lIH0gZnJvbSAnLi9saW5lcy9saW5lJztcbmltcG9ydCB7IGNyZWF0ZUxpbmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpbmVzL2ZhY3RvcnknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LWxpbmtzLW92ZXJsYXknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saW5rcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRMaW5rc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGdyb3VwczogR2FudHRHcm91cEludGVybmFsW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdID0gW107XG5cbiAgICBAT3V0cHV0KCkgbGluZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmVDbGlja0V2ZW50PigpO1xuXG4gICAgcHVibGljIGxpbmtzOiBMaW5rSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHVibGljIGdhbnR0TGlua1R5cGVzID0gR2FudHRMaW5rVHlwZTtcblxuICAgIHB1YmxpYyBzaG93QXJyb3cgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbGlua0l0ZW1zOiBHYW50dExpbmtJdGVtW10gPSBbXTtcblxuICAgIHByaXZhdGUgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBsaW5rTGluZTogR2FudHRMaW5rTGluZTtcblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtbGlua3Mtb3ZlcmxheScpIGdhbnR0TGlua3NPdmVybGF5ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZ2FudHREcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXJcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5saW5rTGluZSA9IGNyZWF0ZUxpbmVHZW5lcmF0b3IodGhpcy5nYW50dFVwcGVyLmxpbmtPcHRpb25zLmxpbmVUeXBlLCB0aGlzLmdhbnR0VXBwZXIpO1xuXG4gICAgICAgIHRoaXMuc2hvd0Fycm93ID0gdGhpcy5nYW50dFVwcGVyLmxpbmtPcHRpb25zLnNob3dBcnJvdztcbiAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmdhbnR0RHJhZ0NvbnRhaW5lci5kcmFnU3RhcnRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXdDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZXhwYW5kQ2hhbmdlLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuc3RhcnQkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmRyYWdFbmRlZCxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5saW5rRHJhZ0VuZGVkXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHNraXAoMSksIGRlYm91bmNlVGltZSgwKSwgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVJdGVtUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGJhckhlaWdodCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMuYmFySGVpZ2h0O1xuICAgICAgICB0aGlzLmxpbmtJdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGl0ZW1OdW0gPSAwO1xuICAgICAgICAgICAgbGV0IGdyb3VwTnVtID0gMDtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOdW0rKztcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyhncm91cC5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IChncm91cE51bSArIGl0ZW1OdW0gKyBpdGVtSW5kZXgpICogbGluZUhlaWdodCArIGl0ZW0ucmVmcy55ICsgYmFySGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGl0ZW0ucmVmcy54LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCArIGl0ZW0ucmVmcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbU51bSArPSBpdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IGl0ZW1JbmRleCAqIGxpbmVIZWlnaHQgKyBpdGVtLnJlZnMueSArIGJhckhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rSXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCArIGl0ZW0ucmVmcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZExpbmtzKCkge1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5saW5rcyA9IFtdO1xuICAgICAgICB0aGlzLmxpbmtJdGVtcy5mb3JFYWNoKChzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3VyY2Uub3JpZ2luLnN0YXJ0IHx8IHNvdXJjZS5vcmlnaW4uZW5kKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLmxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5saW5rSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbGluay5saW5rKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAmJiAodGFyZ2V0Lm9yaWdpbi5zdGFydCB8fCB0YXJnZXQub3JpZ2luLmVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0Q29sb3I6IHN0cmluZyA9IExpbmtDb2xvcnMuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3RpdmVDb2xvcjogc3RyaW5nID0gTGlua0NvbG9ycy5hY3RpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLnR5cGUgPT09IEdhbnR0TGlua1R5cGUuZnMgJiYgc291cmNlLmVuZC5nZXRUaW1lKCkgPiB0YXJnZXQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENvbG9yID0gTGlua0NvbG9ycy5ibG9ja2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNvbG9yID0gTGlua0NvbG9ycy5ibG9ja2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmsuY29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGxpbmsuY29sb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb2xvciA9IGxpbmsuY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNvbG9yID0gbGluay5jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q29sb3IgPSBsaW5rLmNvbG9yLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNvbG9yID0gbGluay5jb2xvci5hY3RpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMubGlua0xpbmUuZ2VuZXJhdGVQYXRoKHNvdXJjZSwgdGFyZ2V0LCBsaW5rLnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlLm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldC5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbGluay50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBkZWZhdWx0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG9uTGluZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgdGhpcy5saW5lQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHNvdXJjZTogbGluay5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQ6IGxpbmsudGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1vdXNlRW50ZXJQYXRoKGxpbms6IExpbmtJbnRlcm5hbCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBsaW5rLmNvbG9yID0gbGluay5hY3RpdmVDb2xvciB8fCBsaW5rLmRlZmF1bHRDb2xvcjtcbiAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5saW5rcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2gobGluayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3VzZUxlYXZlUGF0aChsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgbGluay5jb2xvciA9IGxpbmsuZGVmYXVsdENvbG9yO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHN2ZyBbYXR0ci53aWR0aF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIiBjbGFzcz1cImdhbnR0LWxpbmtzLW92ZXJsYXktbWFpblwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgPHBhdGhcbiAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgIGZpbGw9XCJ0cmFuc3BhcmVudFwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJsaW5rLmNvbG9yXCJcbiAgICAgIHBvaW50ZXItZXZlbnRzPVwibm9uZVwiXG4gICAgICBbYXR0ci5zdHlsZV09XCJsaW5rLnR5cGUgPT09IGdhbnR0TGlua1R5cGVzLnNmID8gJ21hcmtlci1zdGFydDogdXJsKCN0cmlhbmdsZScgKyBpICsgJyknIDogJ21hcmtlci1lbmQ6IHVybCgjdHJpYW5nbGUnICsgaSArICcpJ1wiXG4gICAgPjwvcGF0aD5cblxuICAgIDxnPlxuICAgICAgPHBhdGhcbiAgICAgICAgY2xhc3M9XCJsaW5rLWxpbmVcIlxuICAgICAgICAoY2xpY2spPVwib25MaW5lQ2xpY2soJGV2ZW50LCBsaW5rKVwiXG4gICAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlclBhdGgobGluaywgaSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlUGF0aChsaW5rKVwiXG4gICAgICAgIHN0cm9rZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgc3Ryb2tlLXdpZHRoPVwiOVwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgY3Vyc29yPVwicG9pbnRlclwiXG4gICAgICA+PC9wYXRoPlxuICAgIDwvZz5cbiAgICA8ZGVmcyAqbmdJZj1cInNob3dBcnJvd1wiPlxuICAgICAgPG1hcmtlclxuICAgICAgICAqbmdJZj1cImxpbmsudHlwZSA9PT0gZ2FudHRMaW5rVHlwZXMuc2Y7IGVsc2UgbWFya2VyRW5kXCJcbiAgICAgICAgW2lkXT1cIid0cmlhbmdsZScgKyBpXCJcbiAgICAgICAgbWFya2VyVW5pdHM9XCJzdHJva2VXaWR0aFwiXG4gICAgICAgIG1hcmtlcldpZHRoPVwiNVwiXG4gICAgICAgIG1hcmtlckhlaWdodD1cIjRcIlxuICAgICAgICByZWZYPVwiNVwiXG4gICAgICAgIHJlZlk9XCIyXCJcbiAgICAgICAgb3JpZW50PVwiMTgwXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGggW2F0dHIuZmlsbF09XCJsaW5rLmNvbG9yXCIgW2F0dHIuc3Ryb2tlXT1cImxpbmsuY29sb3JcIiBkPVwiTSAwIDAgTCA1IDIgTCAwIDQgelwiIC8+XG4gICAgICA8L21hcmtlcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNtYXJrZXJFbmQ+XG4gICAgICAgIDxtYXJrZXIgW2lkXT1cIid0cmlhbmdsZScgKyBpXCIgbWFya2VyVW5pdHM9XCJzdHJva2VXaWR0aFwiIG1hcmtlcldpZHRoPVwiNVwiIG1hcmtlckhlaWdodD1cIjRcIiByZWZYPVwiNVwiIHJlZlk9XCIyXCIgb3JpZW50PVwiYXV0b1wiPlxuICAgICAgICAgIDxwYXRoIFthdHRyLmZpbGxdPVwibGluay5jb2xvclwiIFthdHRyLnN0cm9rZV09XCJsaW5rLmNvbG9yXCIgZD1cIk0gMCAwIEwgNSAyIEwgMCA0IHpcIiAvPlxuICAgICAgICA8L21hcmtlcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kZWZzPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpbmUgY2xhc3M9XCJsaW5rLWRyYWdnaW5nLWxpbmVcIj48L2xpbmU+XG48L3N2Zz5cbiJdfQ==
|
|
@@ -14,14 +14,13 @@ export class GanttMainComponent {
|
|
|
14
14
|
this.lineClick = new EventEmitter();
|
|
15
15
|
this.ganttMainClass = true;
|
|
16
16
|
}
|
|
17
|
-
ngOnInit() { }
|
|
18
17
|
trackBy(index, item) {
|
|
19
18
|
return item.id || index;
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
|
-
GanttMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.
|
|
23
|
-
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.
|
|
21
|
+
GanttMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GanttMainComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: GanttMainComponent, selector: "gantt-main", inputs: { groups: "groups", items: "items", groupHeaderTemplate: "groupHeaderTemplate", itemTemplate: "itemTemplate", barTemplate: "barTemplate", rangeTemplate: "rangeTemplate" }, outputs: { barClick: "barClick", lineClick: "lineClick" }, host: { properties: { "class.gantt-main-container": "this.ganttMainClass" } }, ngImport: i0, template: "<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items;\">\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n </ng-container>\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", components: [{ type: i1.GanttLinksComponent, selector: "gantt-links-overlay", inputs: ["groups", "items"], outputs: ["lineClick"] }, { type: i2.NgxGanttRangeComponent, selector: "ngx-gantt-range,gantt-range" }, { type: i3.NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: ["barClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "isGanttCustomItem": i5.IsGanttCustomItemPipe, "isGanttRangeItem": i5.IsGanttRangeItemPipe, "isGanttBarItem": i5.IsGanttBarItemPipe } });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GanttMainComponent, decorators: [{
|
|
25
24
|
type: Component,
|
|
26
25
|
args: [{
|
|
27
26
|
selector: 'gantt-main',
|
|
@@ -50,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
50
49
|
type: HostBinding,
|
|
51
50
|
args: ['class.gantt-main-container']
|
|
52
51
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtbWFpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9tYWluL2dhbnR0LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFNbEUsTUFBTSxPQUFPLGtCQUFrQjtJQW1CM0IsWUFBOEMsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQU4xRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFbEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRW5CLG1CQUFjLEdBQUcsSUFBSSxDQUFDO0lBRU0sQ0FBQztJQUV4RSxPQUFPLENBQUMsS0FBYSxFQUFFLElBQTRDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7SUFDNUIsQ0FBQzs7K0dBdkJRLGtCQUFrQixrQkFtQlAsaUJBQWlCO21HQW5CNUIsa0JBQWtCLGdYQ1IvQiw0K0RBdUNBOzJGRC9CYSxrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFdBQVcsRUFBRSw2QkFBNkI7aUJBQzdDOzswQkFvQmdCLE1BQU07MkJBQUMsaUJBQWlCOzRDQWxCNUIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVvQyxjQUFjO3NCQUF4RCxXQUFXO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRHcm91cEludGVybmFsLCBHYW50dEl0ZW1JbnRlcm5hbCwgR2FudHRCYXJDbGlja0V2ZW50LCBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MnO1xuaW1wb3J0IHsgR0FOVFRfVVBQRVJfVE9LRU4sIEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtbWFpbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LW1haW4uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0TWFpbkNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXTtcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdO1xuXG4gICAgQElucHV0KCkgZ3JvdXBIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIGJhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgcmFuZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBPdXRwdXQoKSBiYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRCYXJDbGlja0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIGxpbmVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRMaW5lQ2xpY2tFdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtbWFpbi1jb250YWluZXInKSBnYW50dE1haW5DbGFzcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge31cblxuICAgIHRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogR2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgfHwgaW5kZXg7XG4gICAgfVxufVxuIiwiPGdhbnR0LWxpbmtzLW92ZXJsYXkgW2dyb3Vwc109XCJncm91cHNcIiBbaXRlbXNdPVwiaXRlbXNcIiAobGluZUNsaWNrKT1cImxpbmVDbGljay5lbWl0KCRldmVudClcIj48L2dhbnR0LWxpbmtzLW92ZXJsYXk+XG48IS0tIGdyb3VwcyAtLT5cbjxkaXYgY2xhc3M9XCJnYW50dC1tYWluLWdyb3Vwc1wiICpuZ0lmPVwiZ3JvdXBzICYmIGdyb3Vwcy5sZW5ndGggPiAwOyBlbHNlIGl0ZW1zVGVtcGxhdGVcIiBbc3R5bGUud2lkdGgucHhdPVwiZ2FudHRVcHBlci52aWV3LndpZHRoXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxkaXYgY2xhc3M9XCJnYW50dC1ncm91cFwiIFtuZ0NsYXNzXT1cImdyb3VwLmNsYXNzXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBIZWFkZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdyb3VwOiBncm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuZXhwYW5kZWRcIiBjbGFzcz1cImdhbnR0LWl0ZW1zXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2FudHRJdGVtc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW1zOiBncm91cC5pdGVtcyB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gaXRlbXMgLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1zVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1tYWluLWl0ZW1zXCIgW3N0eWxlLndpZHRoLnB4XT1cImdhbnR0VXBwZXIudmlldy53aWR0aFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJnYW50dEl0ZW1zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbXM6IGl0ZW1zIH1cIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZ2FudHRJdGVtcyBsZXQtaXRlbXM9XCJpdGVtc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zO1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZ2FudHQtaXRlbVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgICAgW2NsYXNzLmdhbnR0LW1haW4taXRlbS1hY3RpdmVdPVwiZ2FudHRVcHBlci5pc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlIHwgaXNHYW50dEN1c3RvbUl0ZW1cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0ub3JpZ2luLCByZWZzOiBpdGVtLnJlZnMgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxnYW50dC1yYW5nZSAqbmdJZj1cIml0ZW0udHlwZSB8IGlzR2FudHRSYW5nZUl0ZW1cIiBbdGVtcGxhdGVdPVwicmFuZ2VUZW1wbGF0ZVwiIFtpdGVtXT1cIml0ZW1cIj48L2dhbnR0LXJhbmdlPlxuICAgICAgPGdhbnR0LWJhciAqbmdJZj1cIml0ZW0udHlwZSB8IGlzR2FudHRCYXJJdGVtXCIgW2l0ZW1dPVwiaXRlbVwiIFt0ZW1wbGF0ZV09XCJiYXJUZW1wbGF0ZVwiIChiYXJDbGljayk9XCJiYXJDbGljay5lbWl0KCRldmVudClcIj48L2dhbnR0LWJhcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmV4cGFuZGVkXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbXM6IGl0ZW0uY2hpbGRyZW4gfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -9,19 +9,10 @@ export class NgxGanttRangeComponent extends GanttItemUpper {
|
|
|
9
9
|
super(elementRef, ganttUpper);
|
|
10
10
|
this.ganttRangeClass = true;
|
|
11
11
|
}
|
|
12
|
-
ngOnInit() {
|
|
13
|
-
super.onInit();
|
|
14
|
-
}
|
|
15
|
-
ngOnChanges() {
|
|
16
|
-
super.onChanges();
|
|
17
|
-
}
|
|
18
|
-
ngOnDestroy() {
|
|
19
|
-
super.onDestroy();
|
|
20
|
-
}
|
|
21
12
|
}
|
|
22
|
-
NgxGanttRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.
|
|
23
|
-
NgxGanttRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.
|
|
13
|
+
NgxGanttRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NgxGanttRangeComponent, deps: [{ token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
NgxGanttRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: NgxGanttRangeComponent, selector: "ngx-gantt-range,gantt-range", host: { properties: { "class.gantt-range": "this.ganttRangeClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"item.start && item.end\">\n <div class=\"gantt-range-main\">\n <div class=\"gantt-range-main-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n </div>\n <div class=\"gantt-range-triangle left\"></div>\n <div class=\"gantt-range-triangle right\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</ng-container>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NgxGanttRangeComponent, decorators: [{
|
|
25
16
|
type: Component,
|
|
26
17
|
args: [{
|
|
27
18
|
selector: 'ngx-gantt-range,gantt-range',
|
|
@@ -34,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
34
25
|
type: HostBinding,
|
|
35
26
|
args: ['class.gantt-range']
|
|
36
27
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvcmFuZ2UvcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvcmFuZ2UvcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQU14RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsY0FBYztJQUd0RCxZQUFZLFVBQXNDLEVBQTZCLFVBQXNCO1FBQ2pHLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFIQSxvQkFBZSxHQUFHLElBQUksQ0FBQztJQUl6RCxDQUFDOzttSEFMUSxzQkFBc0IsNENBRzZCLGlCQUFpQjt1R0FIcEUsc0JBQXNCLGlLQ1JuQyx1ZEFRQTsyRkRBYSxzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsV0FBVyxFQUFFLHdCQUF3QjtpQkFDeEM7OzBCQUl3RCxNQUFNOzJCQUFDLGlCQUFpQjs0Q0FGM0MsZUFBZTtzQkFBaEQsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBFbGVtZW50UmVmLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtZ2FudHQtcmFuZ2UsZ2FudHQtcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FudHRSYW5nZUNvbXBvbmVudCBleHRlbmRzIEdhbnR0SXRlbVVwcGVyIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LXJhbmdlJykgZ2FudHRSYW5nZUNsYXNzID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBnYW50dFVwcGVyOiBHYW50dFVwcGVyKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGdhbnR0VXBwZXIpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnN0YXJ0ICYmIGl0ZW0uZW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1yYW5nZS1tYWluXCI+XG4gICAgPGRpdiBjbGFzcz1cImdhbnR0LXJhbmdlLW1haW4tcHJvZ3Jlc3NcIiAqbmdJZj1cIml0ZW0ucHJvZ3Jlc3MgPj0gMFwiIFtzdHlsZS53aWR0aC4lXT1cIml0ZW0ucHJvZ3Jlc3MgKiAxMDBcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1yYW5nZS10cmlhbmdsZSBsZWZ0XCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1yYW5nZS10cmlhbmdsZSByaWdodFwiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLm9yaWdpbiwgcmVmczogaXRlbS5yZWZzIH1cIj48L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -2,6 +2,7 @@ import { Component, HostBinding, Input, ViewChild, Inject, Output, EventEmitter
|
|
|
2
2
|
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
3
3
|
import { GANTT_ABSTRACT_TOKEN } from '../../gantt-abstract';
|
|
4
4
|
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
5
|
+
import { setStyleWithVendorPrefix } from '../../utils/set-style-with-vendor-prefix';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../icon/icon.component";
|
|
7
8
|
import * as i2 from "@angular/common";
|
|
@@ -27,7 +28,6 @@ export class GanttTableComponent {
|
|
|
27
28
|
});
|
|
28
29
|
this.columnList = columns;
|
|
29
30
|
}
|
|
30
|
-
ngOnInit() { }
|
|
31
31
|
ngOnChanges(changes) {
|
|
32
32
|
var _a, _b;
|
|
33
33
|
if (!((_a = changes.groups.currentValue) === null || _a === void 0 ? void 0 : _a.length) && !((_b = changes.items.currentValue) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
@@ -39,7 +39,11 @@ export class GanttTableComponent {
|
|
|
39
39
|
}
|
|
40
40
|
dragFixed(config) {
|
|
41
41
|
if (config.movedWidth < config.minWidth) {
|
|
42
|
-
|
|
42
|
+
setStyleWithVendorPrefix({
|
|
43
|
+
element: config.target,
|
|
44
|
+
style: 'transform',
|
|
45
|
+
value: `translate3d(${config.minWidth - config.originWidth}px, 0, 0)`
|
|
46
|
+
});
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
expandGroup(group) {
|
|
@@ -120,9 +124,9 @@ export class GanttTableComponent {
|
|
|
120
124
|
return item.id || index;
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
|
-
GanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.
|
|
124
|
-
GanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.
|
|
127
|
+
GanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GanttTableComponent, deps: [{ token: GANTT_ABSTRACT_TOKEN }, { token: GANTT_UPPER_TOKEN }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
GanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: GanttTableComponent, selector: "gantt-table", inputs: { groups: "groups", items: "items", columns: "columns", groupTemplate: "groupTemplate", emptyTemplate: "emptyTemplate", rowBeforeTemplate: "rowBeforeTemplate", rowAfterTemplate: "rowAfterTemplate" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.gantt-table": "this.ganttTableClass", "class.gantt-table-empty": "this.ganttTableEmptyClass" } }, viewQueries: [{ propertyName: "draglineElementRef", first: true, predicate: ["dragLine"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-table-header gantt-table-row\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event, column)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"columnDragEnded($event, column)\"\n ></div>\n </div>\n</div>\n<div class=\"gantt-table-body\">\n <ng-container *ngIf=\"!groups.length && !items.length\">\n <ng-container *ngIf=\"!emptyTemplate\">\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">\u6CA1\u6709\u6570\u636E</div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ group.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <ng-container *ngIf=\"group.expanded\">\n <ng-template\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div\n (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n class=\"gantt-table-item gantt-table-row\"\n [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n [class.gantt-table-item-with-group]=\"group\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n <gantt-icon\n *ngIf=\"!item.loading\"\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n ></gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <div class=\"gantt-table-column-content\">\n <ng-template\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", components: [{ type: i1.GanttIconComponent, selector: "gantt-icon", inputs: ["iconName"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "isGanttRangeItem": i4.IsGanttRangeItemPipe } });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: GanttTableComponent, decorators: [{
|
|
126
130
|
type: Component,
|
|
127
131
|
args: [{
|
|
128
132
|
selector: 'gantt-table',
|
|
@@ -160,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
160
164
|
type: HostBinding,
|
|
161
165
|
args: ['class.gantt-table-empty']
|
|
162
166
|
}] } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBR1gsS0FBSyxFQUVMLFNBQVMsRUFJVCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFFbEUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFZakMsTUFBTSxPQUFPLG1CQUFtQjtJQW1DNUIsWUFDeUMsS0FBNkIsRUFDaEMsVUFBc0IsRUFDaEQsVUFBc0I7UUFGTyxVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQVk7UUFYeEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBSTNCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQU1sRSxDQUFDO0lBOUJKLElBQ0ksT0FBTyxDQUFDLE9BQWdEO1FBQ3hELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFB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Q0FBQyxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEM7UUFDL0QsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixDQUFDOztnSEFsSlEsbUJBQW1CLGtCQW9DaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQjtvR0FyQ3BCLG1CQUFtQiwwakJDcENoQyw4NUpBbUhBOzJGRC9FYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzlDOzswQkFxQ1EsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLGlCQUFpQjtxRUFoQ3BCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQVVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRWtDLGtCQUFrQjtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVMLGVBQWU7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUVRLG9CQUFvQjtzQkFBM0QsV0FBVzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBRdWVyeUxpc3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEluamVjdCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0R3JvdXBJbnRlcm5hbCwgR2FudHRTZWxlY3RlZEV2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MnO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RhYmxlL2dhbnR0LWNvbHVtbi5jb21wb25lbnQnO1xuLy8gaW1wb3J0IHsgZGVmYXVsdENvbHVtbldpZHRoLCBtaW5Db2x1bW5XaWR0aCB9IGZyb20gJy4uLy4uL2dhbnR0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDZGtEcmFnRW5kLCBDZGtEcmFnTW92ZSwgQ2RrRHJhZ1N0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEdhbnR0QWJzdHJhY3RDb21wb25lbnQsIEdBTlRUX0FCU1RSQUNUX1RPS0VOIH0gZnJvbSAnLi4vLi4vZ2FudHQtYWJzdHJhY3QnO1xuaW1wb3J0IHsgR2FudHRVcHBlciwgR0FOVFRfVVBQRVJfVE9LRU4gfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sdW1uV2lkdGggPSAxMDA7XG5leHBvcnQgY29uc3QgbWluQ29sdW1uV2lkdGggPSA4MDtcblxuaW50ZXJmYWNlIERyYWdGaXhlZENvbmZpZyB7XG4gICAgdGFyZ2V0OiBIVE1MRWxlbWVudDtcbiAgICBvcmlnaW5XaWR0aDogbnVtYmVyO1xuICAgIG1vdmVkV2lkdGg6IG51bWJlcjtcbiAgICBtaW5XaWR0aDogbnVtYmVyO1xufVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LXRhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBjb2x1bW5MaXN0OiBRdWVyeUxpc3Q8Tmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgZHJhZ1N0YXJ0TGVmdDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXTtcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgY29sdW1ucyhjb2x1bW5zOiBRdWVyeUxpc3Q8Tmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudD4pIHtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmNvbHVtbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbHVtbldpZHRoID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZShkZWZhdWx0Q29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb2x1bW5MaXN0ID0gY29sdW1ucztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHJvd0JlZm9yZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgcm93QWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0U2VsZWN0ZWRFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RyYWdMaW5lJywgeyBzdGF0aWM6IHRydWUgfSkgZHJhZ2xpbmVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtdGFibGUnKSBnYW50dFRhYmxlQ2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC10YWJsZS1lbXB0eScpIGdhbnR0VGFibGVFbXB0eUNsYXNzID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9BQlNUUkFDVF9UT0tFTikgcHVibGljIGdhbnR0OiBHYW50dEFic3RyYWN0Q29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoIWNoYW5nZXMuZ3JvdXBzLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoICYmICFjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmdhbnR0VGFibGVFbXB0eUNsYXNzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2FudHRUYWJsZUVtcHR5Q2xhc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZHJhZ0ZpeGVkKGNvbmZpZzogRHJhZ0ZpeGVkQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcubW92ZWRXaWR0aCA8IGNvbmZpZy5taW5XaWR0aCkge1xuICAgICAgICAgICAgY29uZmlnLnRhcmdldC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtjb25maWcubWluV2lkdGggLSBjb25maWcub3JpZ2luV2lkdGh9cHgsIDAsIDApYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cGFuZEdyb3VwKGdyb3VwOiBHYW50dEdyb3VwSW50ZXJuYWwpIHtcbiAgICAgICAgdGhpcy5nYW50dC5leHBhbmRHcm91cChncm91cCk7XG4gICAgfVxuXG4gICAgZXhwYW5kQ2hpbGRyZW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmdhbnR0LmV4cGFuZENoaWxkcmVuKGl0ZW0pO1xuICAgIH1cblxuICAgIGRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuc291cmNlLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRMZWZ0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgfVxuXG4gICAgZHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZSwgY29sdW1uPzogTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cbiAgICAgICAgbGV0IG9yaWdpbldpZHRoOiBudW1iZXI7XG4gICAgICAgIGxldCBtb3ZlZFdpZHRoOiBudW1iZXI7XG4gICAgICAgIGxldCBtaW5XaWR0aDogbnVtYmVyO1xuICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgICBvcmlnaW5XaWR0aCA9IHBhcnNlSW50KGNvbHVtbi5jb2x1bW5XaWR0aCwgMTApO1xuICAgICAgICAgICAgbW92ZWRXaWR0aCA9IG9yaWdpbldpZHRoICsgKGxlZnQgLSB0aGlzLmRyYWdTdGFydExlZnQpO1xuICAgICAgICAgICAgbWluV2lkdGggPSBtaW5Db2x1bW5XaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9yaWdpbldpZHRoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgICAgICBtb3ZlZFdpZHRoID0gb3JpZ2luV2lkdGggKyAobGVmdCAtIHRoaXMuZHJhZ1N0YXJ0TGVmdCk7XG4gICAgICAgICAgICBtaW5XaWR0aCA9IG1pbkNvbHVtbldpZHRoICogdGhpcy5jb2x1bW5MaXN0Lmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ0ZpeGVkKHtcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIG9yaWdpbldpZHRoLFxuICAgICAgICAgICAgbW92ZWRXaWR0aCxcbiAgICAgICAgICAgIG1pbldpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2hvd0F1eGlsaWFyeUxpbmUoZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbHVtbkRyYWdFbmRlZChldmVudDogQ2RrRHJhZ0VuZCwgY29sdW1uOiBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKSArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heCh3aWR0aCB8fCAwLCBtaW5Db2x1bW5XaWR0aCk7XG4gICAgICAgIGNvbHVtbi5jb2x1bW5XaWR0aCA9IGNvZXJjZUNzc1BpeGVsVmFsdWUoY29sdW1uV2lkdGgpO1xuICAgICAgICBpZiAodGhpcy5nYW50dC50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5nYW50dC50YWJsZS5jb2x1bW5DaGFuZ2VzLmVtaXQoeyBjb2x1bW5zOiB0aGlzLmNvbHVtbkxpc3QgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhpZGVBdXhpbGlhcnlMaW5lKCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHRhYmxlRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3QgdGFibGVXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb25zdCBkcmFnV2lkdGggPSBsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0O1xuICAgICAgICB0aGlzLmNvbHVtbkxpc3QuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29sdW1uV2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RyaWJ1dGVXaWR0aCA9IHBhcnNlSW50KFN0cmluZyhkcmFnV2lkdGggKiAobGFzdENvbHVtbldpZHRoIC8gdGFibGVXaWR0aCkpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IE1hdGgubWF4KGxhc3RDb2x1bW5XaWR0aCArIGRpc3RyaWJ1dGVXaWR0aCB8fCAwLCBtaW5Db2x1bW5XaWR0aCk7XG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGNvbHVtbldpZHRoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2FudHQudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FudHQudGFibGUuY29sdW1uQ2hhbmdlcy5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5MaXN0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlQXV4aWxpYXJ5TGluZSgpO1xuICAgICAgICBldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBdXhpbGlhcnlMaW5lKGV2ZW50OiBDZGtEcmFnTW92ZSkge1xuICAgICAgICBjb25zdCB0YWJsZVJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0geyB4OiB0YXJnZXRSZWN0LmxlZnQgLSB0YWJsZVJlY3QubGVmdCwgeTogdGFyZ2V0UmVjdC50b3AgLSB0YWJsZVJlY3QudG9wIH07XG4gICAgICAgIHRoaXMuZHJhZ2xpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2Rpc3RhbmNlLnh9cHhgO1xuICAgICAgICB0aGlzLmRyYWdsaW5lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZUF1eGlsaWFyeUxpbmUoKSB7XG4gICAgICAgIHRoaXMuZHJhZ2xpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1oZWFkZXIgZ2FudHQtdGFibGUtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1jb2x1bW5cIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbkxpc3Q7IGxldCBpID0gaW5kZXhcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uLmNvbHVtbldpZHRoXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAge3sgY29sdW1uLm5hbWUgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZ2FudHQtdGFibGUtZHJhZy10cmlnZ2VyXCJcbiAgICAgIGNka0RyYWdcbiAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmdhbnR0XCJcbiAgICAgIChjZGtEcmFnTW92ZWQpPVwiZHJhZ01vdmVkKCRldmVudCwgY29sdW1uKVwiXG4gICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiZHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJhZ0VuZGVkKT1cImNvbHVtbkRyYWdFbmRlZCgkZXZlbnQsIGNvbHVtbilcIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1ib2R5XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBzLmxlbmd0aCAmJiAhaXRlbXMubGVuZ3RoXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eVRlbXBsYXRlXCI+XG4gICAgICA8Z2FudHQtaWNvbiBjbGFzcz1cImVtcHR5LWljb25cIiBpY29uTmFtZT1cImVtcHR5XCI+PC9nYW50dC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXRleHRcIj7msqHmnInmlbDmja48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCA+IDA7IGVsc2UgaXRlbXNUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXRhYmxlLWdyb3VwXCIgW25nQ2xhc3NdPVwiZ3JvdXAuY2xhc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXRhYmxlLWdyb3VwLXRpdGxlXCIgW2NsYXNzLmV4cGFuZGVkXT1cImdyb3VwLmV4cGFuZGVkXCIgKGNsaWNrKT1cImV4cGFuZEdyb3VwKGdyb3VwKVwiPlxuICAgICAgICAgIDxnYW50dC1pY29uIGNsYXNzPVwiZXhwYW5kLWljb25cIiBbaWNvbk5hbWVdPVwiZ3JvdXAuZXhwYW5kZWQgPyAnYW5nbGUtZG93bicgOiAnYW5nbGUtcmlnaHQnXCI+PC9nYW50dC1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBncm91cC5vcmlnaW4sIGdyb3VwOiBncm91cC5vcmlnaW4gfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLXRpdGxlXCI+e3sgZ3JvdXAudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwLmV4cGFuZGVkXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdyb3VwOiBncm91cCwgaXRlbXM6IGdyb3VwLml0ZW1zLCBsZXZlbDogMCB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImdhbnR0LXRhYmxlLWRyYWctdHJpZ2dlclwiXG4gIGNka0RyYWdcbiAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gIGNka0RyYWdCb3VuZGFyeT1cIi5nYW50dFwiXG4gIChjZGtEcmFnTW92ZWQpPVwiZHJhZ01vdmVkKCRldmVudClcIlxuICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiZHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gIChjZGtEcmFnRW5kZWQpPVwidGFibGVEcmFnRW5kZWQoJGV2ZW50KVwiXG4+PC9kaXY+XG5cbjxkaXYgI2RyYWdMaW5lIGNsYXNzPVwiZ2FudHQtdGFibGUtZHJhZy1hdXhpbGlhcnktbGluZVwiPjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2l0ZW1zVGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJnYW50dEl0ZW1zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbXM6IGl0ZW1zLCBsZXZlbDogMCB9XCI+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZ2FudHRJdGVtcyBsZXQtZ3JvdXA9XCJncm91cFwiIGxldC1pdGVtcz1cIml0ZW1zXCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxkaXZcbiAgICAgIChjbGljayk9XCJpdGVtQ2xpY2suZW1pdCh7IGV2ZW50OiAkZXZlbnQsIHNlbGVjdGVkVmFsdWU6IHRoaXMuaXRlbS5vcmlnaW4gfSlcIlxuICAgICAgY2xhc3M9XCJnYW50dC10YWJsZS1pdGVtIGdhbnR0LXRhYmxlLXJvd1wiXG4gICAgICBbY2xhc3MuZ2FudHQtdGFibGUtaXRlbS1maXJzdC1sZXZlbC1ncm91cF09XCJsZXZlbCA9PT0gMCAmJiAoaXRlbS50eXBlIHwgaXNHYW50dFJhbmdlSXRlbSlcIlxuICAgICAgW2NsYXNzLmdhbnR0LXRhYmxlLWl0ZW0td2l0aC1ncm91cF09XCJncm91cFwiXG4gICAgICBbY2xhc3MuZ2FudHQtdGFibGUtaXRlbS1hY3RpdmVdPVwiZ2FudHRVcHBlci5pc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2FudHQuc3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgICAgW3N0eWxlLmxpbmVIZWlnaHQucHhdPVwiZ2FudHQuc3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dCZWZvcmVUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5vcmlnaW4sIGl0ZW06IGl0ZW0ub3JpZ2luIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtY29sdW1uXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5MaXN0OyBsZXQgZmlyc3QgPSBmaXJzdFwiIFtzdHlsZS53aWR0aF09XCJjb2x1bW4uY29sdW1uV2lkdGhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpcnN0XCIgY2xhc3M9XCJnYW50dC1leHBhbmQtaWNvblwiIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cImxldmVsICogMjBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGV2ZWwgPCBnYW50dC5tYXhMZXZlbCAtIDEgJiYgaXRlbS5leHBhbmRhYmxlXCI+XG4gICAgICAgICAgICA8Z2FudHQtaWNvblxuICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLmxvYWRpbmdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1pY29uXCJcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cIml0ZW0uZXhwYW5kZWQgPyAnYW5nbGUtZG93bicgOiAnYW5nbGUtcmlnaHQnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZENoaWxkcmVuKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICAgIDxnYW50dC1pY29uICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCIgW2ljb25OYW1lXT1cIidsb2FkaW5nJ1wiPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1jb2x1bW4tY29udGVudFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5vcmlnaW4sIGl0ZW06IGl0ZW0ub3JpZ2luIH1cIlxuICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd0FmdGVyVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0ub3JpZ2luLCBpdGVtOiBpdGVtLm9yaWdpbiB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uZXhwYW5kZWRcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2FudHRJdGVtc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtczogaXRlbS5jaGlsZHJlbiwgbGV2ZWw6IGxldmVsICsgMSwgZ3JvdXA6IGdyb3VwIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBR1gsS0FBSyxFQUNMLFNBQVMsRUFJVCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFFcEYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFZakMsTUFBTSxPQUFPLG1CQUFtQjtJQW1DNUIsWUFDeUMsS0FBNkIsRUFDaEMsVUFBc0IsRUFDaEQsVUFBc0I7UUFGTyxVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQVk7UUFYeEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBSTNCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQU1sRSxDQUFDO0lBOUJKLElBQ0ksT0FBTyxDQUFDLE9BQWdEO1FBQ3hELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDckIsTUFBTSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2hFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBd0JELFdBQVcsQ0FBQyxPQUFzQjs7UUFDOUIsSUFBSSxDQUFDLENBQUEsTUFBQSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksMENBQUUsTUFBTSxDQUFBLElBQUksQ0FBQyxDQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLDBDQUFFLE1BQU0sQ0FBQSxFQUFFO1lBQzdFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7YUFBTTtZQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7U0FDckM7SUFDTCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQXVCO1FBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3JDLHdCQUF3QixDQUFDO2dCQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQ3RCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixLQUFLLEVBQUUsZUFBZSxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLFdBQVc7YUFDeEUsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBaUIsRUFBRSxJQUF1QjtRQUNyRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFtQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFrQixFQUFFLE1BQXFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFFakQsSUFBSSxXQUFtQixDQUFDO1FBQ3hCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLFFBQWdCLENBQUM7UUFDckIsSUFBSSxNQUFNLEVBQUU7WUFDUixXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0MsVUFBVSxHQUFHLFdBQVcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkQsUUFBUSxHQUFHLGNBQWMsQ0FBQztTQUM3QjthQUFNO1lBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzFFLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZELFFBQVEsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7U0FDdEQ7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ1gsTUFBTTtZQUNOLFdBQVc7WUFDWCxVQUFVO1lBQ1YsUUFBUTtTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCLEVBQUUsTUFBb0M7UUFDbkUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWlCO1FBQzVCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNsRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDL0UsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6RCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLGVBQWUsSUFBSSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDckYsTUFBTSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUNyRTtRQUVELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWtCO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDeEUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEM7UUFDL0QsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixDQUFDOztnSEFwSlEsbUJBQW1CLGtCQW9DaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQjtvR0FyQ3BCLG1CQUFtQiwwakJDcENoQyw4NUpBbUhBOzJGRC9FYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzlDOzswQkFxQ1EsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLGlCQUFpQjtxRUFoQ3BCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQVVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRWtDLGtCQUFrQjtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVMLGVBQWU7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUVRLG9CQUFvQjtzQkFBM0QsV0FBVzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBRdWVyeUxpc3QsXG4gICAgSW5wdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgSW5qZWN0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dEl0ZW1JbnRlcm5hbCwgR2FudHRHcm91cEludGVybmFsLCBHYW50dFNlbGVjdGVkRXZlbnQgfSBmcm9tICcuLi8uLi9jbGFzcyc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG4vLyBpbXBvcnQgeyBkZWZhdWx0Q29sdW1uV2lkdGgsIG1pbkNvbHVtbldpZHRoIH0gZnJvbSAnLi4vLi4vZ2FudHQuY29tcG9uZW50JztcbmltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgR2FudHRBYnN0cmFjdENvbXBvbmVudCwgR0FOVFRfQUJTVFJBQ1RfVE9LRU4gfSBmcm9tICcuLi8uLi9nYW50dC1hYnN0cmFjdCc7XG5pbXBvcnQgeyBHYW50dFVwcGVyLCBHQU5UVF9VUFBFUl9UT0tFTiB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IHNldFN0eWxlV2l0aFZlbmRvclByZWZpeCB9IGZyb20gJy4uLy4uL3V0aWxzL3NldC1zdHlsZS13aXRoLXZlbmRvci1wcmVmaXgnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMTAwO1xuZXhwb3J0IGNvbnN0IG1pbkNvbHVtbldpZHRoID0gODA7XG5cbmludGVyZmFjZSBEcmFnRml4ZWRDb25maWcge1xuICAgIHRhcmdldDogSFRNTEVsZW1lbnQ7XG4gICAgb3JpZ2luV2lkdGg6IG51bWJlcjtcbiAgICBtb3ZlZFdpZHRoOiBudW1iZXI7XG4gICAgbWluV2lkdGg6IG51bWJlcjtcbn1cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nYW50dC10YWJsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgcHVibGljIGNvbHVtbkxpc3Q6IFF1ZXJ5TGlzdDxOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50PjtcblxuICAgIHB1YmxpYyBkcmFnU3RhcnRMZWZ0OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBncm91cHM6IEdhbnR0R3JvdXBJbnRlcm5hbFtdO1xuXG4gICAgQElucHV0KCkgaXRlbXM6IEdhbnR0SXRlbUludGVybmFsW107XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb2x1bW5zKGNvbHVtbnM6IFF1ZXJ5TGlzdDxOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50Pikge1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb2x1bW4uY29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGRlZmF1bHRDb2x1bW5XaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbHVtbkxpc3QgPSBjb2x1bW5zO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBlbXB0eVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgcm93QmVmb3JlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSByb3dBZnRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRTZWxlY3RlZEV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJhZ0xpbmUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcmFnbGluZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC10YWJsZScpIGdhbnR0VGFibGVDbGFzcyA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LXRhYmxlLWVtcHR5JykgZ2FudHRUYWJsZUVtcHR5Q2xhc3MgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX0FCU1RSQUNUX1RPS0VOKSBwdWJsaWMgZ2FudHQ6IEdhbnR0QWJzdHJhY3RDb21wb25lbnQsXG4gICAgICAgIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBnYW50dFVwcGVyOiBHYW50dFVwcGVyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICghY2hhbmdlcy5ncm91cHMuY3VycmVudFZhbHVlPy5sZW5ndGggJiYgIWNoYW5nZXMuaXRlbXMuY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FudHRUYWJsZUVtcHR5Q2xhc3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nYW50dFRhYmxlRW1wdHlDbGFzcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkcmFnRml4ZWQoY29uZmlnOiBEcmFnRml4ZWRDb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5tb3ZlZFdpZHRoIDwgY29uZmlnLm1pbldpZHRoKSB7XG4gICAgICAgICAgICBzZXRTdHlsZVdpdGhWZW5kb3JQcmVmaXgoe1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGNvbmZpZy50YXJnZXQsXG4gICAgICAgICAgICAgICAgc3R5bGU6ICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBgdHJhbnNsYXRlM2QoJHtjb25maWcubWluV2lkdGggLSBjb25maWcub3JpZ2luV2lkdGh9cHgsIDAsIDApYFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBhbmRHcm91cChncm91cDogR2FudHRHcm91cEludGVybmFsKSB7XG4gICAgICAgIHRoaXMuZ2FudHQuZXhwYW5kR3JvdXAoZ3JvdXApO1xuICAgIH1cblxuICAgIGV4cGFuZENoaWxkcmVuKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5nYW50dC5leHBhbmRDaGlsZHJlbihpdGVtKTtcbiAgICB9XG5cbiAgICBkcmFnU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhZ1N0YXJ0TGVmdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgIH1cblxuICAgIGRyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmUsIGNvbHVtbj86IE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuc291cmNlLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXG4gICAgICAgIGxldCBvcmlnaW5XaWR0aDogbnVtYmVyO1xuICAgICAgICBsZXQgbW92ZWRXaWR0aDogbnVtYmVyO1xuICAgICAgICBsZXQgbWluV2lkdGg6IG51bWJlcjtcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgb3JpZ2luV2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIG1vdmVkV2lkdGggPSBvcmlnaW5XaWR0aCArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgICAgIG1pbldpZHRoID0gbWluQ29sdW1uV2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcmlnaW5XaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICAgICAgbW92ZWRXaWR0aCA9IG9yaWdpbldpZHRoICsgKGxlZnQgLSB0aGlzLmRyYWdTdGFydExlZnQpO1xuICAgICAgICAgICAgbWluV2lkdGggPSBtaW5Db2x1bW5XaWR0aCAqIHRoaXMuY29sdW1uTGlzdC5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdGaXhlZCh7XG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBvcmlnaW5XaWR0aCxcbiAgICAgICAgICAgIG1vdmVkV2lkdGgsXG4gICAgICAgICAgICBtaW5XaWR0aFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNob3dBdXhpbGlhcnlMaW5lKGV2ZW50KTtcbiAgICB9XG5cbiAgICBjb2x1bW5EcmFnRW5kZWQoZXZlbnQ6IENka0RyYWdFbmQsIGNvbHVtbjogTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCkgKyAobGVmdCAtIHRoaXMuZHJhZ1N0YXJ0TGVmdCk7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gTWF0aC5tYXgod2lkdGggfHwgMCwgbWluQ29sdW1uV2lkdGgpO1xuICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGNvbHVtbldpZHRoKTtcbiAgICAgICAgaWYgKHRoaXMuZ2FudHQudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FudHQudGFibGUuY29sdW1uQ2hhbmdlcy5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5MaXN0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlQXV4aWxpYXJ5TGluZSgpO1xuICAgICAgICBldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0YWJsZURyYWdFbmRlZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29uc3QgZHJhZ1dpZHRoID0gbGVmdCAtIHRoaXMuZHJhZ1N0YXJ0TGVmdDtcbiAgICAgICAgdGhpcy5jb2x1bW5MaXN0LmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID0gcGFyc2VJbnQoY29sdW1uLmNvbHVtbldpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBkaXN0cmlidXRlV2lkdGggPSBwYXJzZUludChTdHJpbmcoZHJhZ1dpZHRoICogKGxhc3RDb2x1bW5XaWR0aCAvIHRhYmxlV2lkdGgpKSwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heChsYXN0Q29sdW1uV2lkdGggKyBkaXN0cmlidXRlV2lkdGggfHwgMCwgbWluQ29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgY29sdW1uLmNvbHVtbldpZHRoID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZShjb2x1bW5XaWR0aCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmdhbnR0LnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmdhbnR0LnRhYmxlLmNvbHVtbkNoYW5nZXMuZW1pdCh7IGNvbHVtbnM6IHRoaXMuY29sdW1uTGlzdCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZUF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgZXZlbnQuc291cmNlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93QXV4aWxpYXJ5TGluZShldmVudDogQ2RrRHJhZ01vdmUpIHtcbiAgICAgICAgY29uc3QgdGFibGVSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHsgeDogdGFyZ2V0UmVjdC5sZWZ0IC0gdGFibGVSZWN0LmxlZnQsIHk6IHRhcmdldFJlY3QudG9wIC0gdGFibGVSZWN0LnRvcCB9O1xuICAgICAgICB0aGlzLmRyYWdsaW5lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBgJHtkaXN0YW5jZS54fXB4YDtcbiAgICAgICAgdGhpcy5kcmFnbGluZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVBdXhpbGlhcnlMaW5lKCkge1xuICAgICAgICB0aGlzLmRyYWdsaW5lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBHYW50dEdyb3VwSW50ZXJuYWwgfCBHYW50dEl0ZW1JbnRlcm5hbCkge1xuICAgICAgICByZXR1cm4gaXRlbS5pZCB8fCBpbmRleDtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtaGVhZGVyIGdhbnR0LXRhYmxlLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtY29sdW1uXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5MaXN0OyBsZXQgaSA9IGluZGV4XCIgW3N0eWxlLndpZHRoXT1cImNvbHVtbi5jb2x1bW5XaWR0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVSZWY7IGVsc2UgZGVmYXVsdFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgIHt7IGNvbHVtbi5uYW1lIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdhbnR0LXRhYmxlLWRyYWctdHJpZ2dlclwiXG4gICAgICBjZGtEcmFnXG4gICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgIGNka0RyYWdCb3VuZGFyeT1cIi5nYW50dFwiXG4gICAgICAoY2RrRHJhZ01vdmVkKT1cImRyYWdNb3ZlZCgkZXZlbnQsIGNvbHVtbilcIlxuICAgICAgKGNka0RyYWdTdGFydGVkKT1cImRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgKGNka0RyYWdFbmRlZCk9XCJjb2x1bW5EcmFnRW5kZWQoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtYm9keVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3Vwcy5sZW5ndGggJiYgIWl0ZW1zLmxlbmd0aFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlUZW1wbGF0ZVwiPlxuICAgICAgPGdhbnR0LWljb24gY2xhc3M9XCJlbXB0eS1pY29uXCIgaWNvbk5hbWU9XCJlbXB0eVwiPjwvZ2FudHQtaWNvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS10ZXh0XCI+5rKh5pyJ5pWw5o2uPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBzICYmIGdyb3Vwcy5sZW5ndGggPiAwOyBlbHNlIGl0ZW1zVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1ncm91cFwiIFtuZ0NsYXNzXT1cImdyb3VwLmNsYXNzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1ncm91cC10aXRsZVwiIFtjbGFzcy5leHBhbmRlZF09XCJncm91cC5leHBhbmRlZFwiIChjbGljayk9XCJleHBhbmRHcm91cChncm91cClcIj5cbiAgICAgICAgICA8Z2FudHQtaWNvbiBjbGFzcz1cImV4cGFuZC1pY29uXCIgW2ljb25OYW1lXT1cImdyb3VwLmV4cGFuZGVkID8gJ2FuZ2xlLWRvd24nIDogJ2FuZ2xlLXJpZ2h0J1wiPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZ3JvdXAub3JpZ2luLCBncm91cDogZ3JvdXAub3JpZ2luIH1cIlxuICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJncm91cC10aXRsZVwiPnt7IGdyb3VwLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cC5leHBhbmRlZFwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnYW50dEl0ZW1zXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBncm91cDogZ3JvdXAsIGl0ZW1zOiBncm91cC5pdGVtcywgbGV2ZWw6IDAgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJnYW50dC10YWJsZS1kcmFnLXRyaWdnZXJcIlxuICBjZGtEcmFnXG4gIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICBjZGtEcmFnQm91bmRhcnk9XCIuZ2FudHRcIlxuICAoY2RrRHJhZ01vdmVkKT1cImRyYWdNb3ZlZCgkZXZlbnQpXCJcbiAgKGNka0RyYWdTdGFydGVkKT1cImRyYWdTdGFydGVkKCRldmVudClcIlxuICAoY2RrRHJhZ0VuZGVkKT1cInRhYmxlRHJhZ0VuZGVkKCRldmVudClcIlxuPjwvZGl2PlxuXG48ZGl2ICNkcmFnTGluZSBjbGFzcz1cImdhbnR0LXRhYmxlLWRyYWctYXV4aWxpYXJ5LWxpbmVcIj48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpdGVtc1RlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2FudHRJdGVtc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW1zOiBpdGVtcywgbGV2ZWw6IDAgfVwiPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2dhbnR0SXRlbXMgbGV0LWdyb3VwPVwiZ3JvdXBcIiBsZXQtaXRlbXM9XCJpdGVtc1wiIGxldC1sZXZlbD1cImxldmVsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICA8ZGl2XG4gICAgICAoY2xpY2spPVwiaXRlbUNsaWNrLmVtaXQoeyBldmVudDogJGV2ZW50LCBzZWxlY3RlZFZhbHVlOiB0aGlzLml0ZW0ub3JpZ2luIH0pXCJcbiAgICAgIGNsYXNzPVwiZ2FudHQtdGFibGUtaXRlbSBnYW50dC10YWJsZS1yb3dcIlxuICAgICAgW2NsYXNzLmdhbnR0LXRhYmxlLWl0ZW0tZmlyc3QtbGV2ZWwtZ3JvdXBdPVwibGV2ZWwgPT09IDAgJiYgKGl0ZW0udHlwZSB8IGlzR2FudHRSYW5nZUl0ZW0pXCJcbiAgICAgIFtjbGFzcy5nYW50dC10YWJsZS1pdGVtLXdpdGgtZ3JvdXBdPVwiZ3JvdXBcIlxuICAgICAgW2NsYXNzLmdhbnR0LXRhYmxlLWl0ZW0tYWN0aXZlXT1cImdhbnR0VXBwZXIuaXNTZWxlY3RlZChpdGVtLmlkKVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdhbnR0LnN0eWxlcy5saW5lSGVpZ2h0XCJcbiAgICAgIFtzdHlsZS5saW5lSGVpZ2h0LnB4XT1cImdhbnR0LnN0eWxlcy5saW5lSGVpZ2h0XCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93QmVmb3JlVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0ub3JpZ2luLCBpdGVtOiBpdGVtLm9yaWdpbiB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXRhYmxlLWNvbHVtblwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uTGlzdDsgbGV0IGZpcnN0ID0gZmlyc3RcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uLmNvbHVtbldpZHRoXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJmaXJzdFwiIGNsYXNzPVwiZ2FudHQtZXhwYW5kLWljb25cIiBbc3R5bGUubWFyZ2luTGVmdC5weF09XCJsZXZlbCAqIDIwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxldmVsIDwgZ2FudHQubWF4TGV2ZWwgLSAxICYmIGl0ZW0uZXhwYW5kYWJsZVwiPlxuICAgICAgICAgICAgPGdhbnR0LWljb25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5sb2FkaW5nXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtaWNvblwiXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpdGVtLmV4cGFuZGVkID8gJ2FuZ2xlLWRvd24nIDogJ2FuZ2xlLXJpZ2h0J1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleHBhbmRDaGlsZHJlbigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgID48L2dhbnR0LWljb24+XG4gICAgICAgICAgICA8Z2FudHQtaWNvbiAqbmdJZj1cIml0ZW0ubG9hZGluZ1wiIFtpY29uTmFtZV09XCInbG9hZGluZydcIj48L2dhbnR0LWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtY29sdW1uLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0ub3JpZ2luLCBpdGVtOiBpdGVtLm9yaWdpbiB9XCJcbiAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dBZnRlclRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLm9yaWdpbiwgaXRlbTogaXRlbS5vcmlnaW4gfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmV4cGFuZGVkXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbXM6IGl0ZW0uY2hpbGRyZW4sIGxldmVsOiBsZXZlbCArIDEsIGdyb3VwOiBncm91cCB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|