@worktile/gantt 12.1.2 → 12.2.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/worktile-gantt.umd.js +65 -13
- package/bundles/worktile-gantt.umd.js.map +1 -1
- package/class/item.d.ts +3 -2
- package/class/link.d.ts +39 -0
- package/components/links/links.component.d.ts +2 -13
- package/esm2015/class/item.js +14 -3
- package/esm2015/class/link.js +14 -0
- package/esm2015/components/links/links.component.js +53 -16
- package/fesm2015/worktile-gantt.js +77 -17
- package/fesm2015/worktile-gantt.js.map +1 -1
- package/package.json +1 -1
package/class/item.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GanttDate } from '../utils/date';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
3
|
import { GanttViewType } from './view-type';
|
|
4
|
+
import { GanttLink } from './link';
|
|
4
5
|
interface GanttItemRefs {
|
|
5
6
|
width: number;
|
|
6
7
|
x: number;
|
|
@@ -17,7 +18,7 @@ export interface GanttItem<T = unknown> {
|
|
|
17
18
|
start?: number;
|
|
18
19
|
end?: number;
|
|
19
20
|
group_id?: string;
|
|
20
|
-
links?: string[];
|
|
21
|
+
links?: (GanttLink | string)[];
|
|
21
22
|
draggable?: boolean;
|
|
22
23
|
linkable?: boolean;
|
|
23
24
|
expandable?: boolean;
|
|
@@ -34,7 +35,7 @@ export declare class GanttItemInternal {
|
|
|
34
35
|
title: string;
|
|
35
36
|
start: GanttDate;
|
|
36
37
|
end: GanttDate;
|
|
37
|
-
links:
|
|
38
|
+
links: GanttLink[];
|
|
38
39
|
color?: string;
|
|
39
40
|
barStyle?: Partial<CSSStyleDeclaration>;
|
|
40
41
|
draggable?: boolean;
|
package/class/link.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { GanttDate } from '../utils/date';
|
|
2
|
+
import { GanttItem } from './item';
|
|
3
|
+
export declare enum GanttLinkType {
|
|
4
|
+
fs = 0,
|
|
5
|
+
ss = 1,
|
|
6
|
+
ff = 2,
|
|
7
|
+
sf = 3
|
|
8
|
+
}
|
|
9
|
+
export declare enum LinkColors {
|
|
10
|
+
default = "#cacaca",
|
|
11
|
+
blocked = "#FF7575",
|
|
12
|
+
active = "#348FE4"
|
|
13
|
+
}
|
|
14
|
+
export interface GanttLink {
|
|
15
|
+
type: GanttLinkType;
|
|
16
|
+
link: string;
|
|
17
|
+
}
|
|
18
|
+
export interface GanttLinkItem {
|
|
19
|
+
id: string;
|
|
20
|
+
before: {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
after: {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
};
|
|
28
|
+
start: GanttDate;
|
|
29
|
+
end: GanttDate;
|
|
30
|
+
origin: GanttItem;
|
|
31
|
+
links: GanttLink[];
|
|
32
|
+
}
|
|
33
|
+
export interface LinkInternal {
|
|
34
|
+
path: string;
|
|
35
|
+
source: GanttItem;
|
|
36
|
+
target: GanttItem;
|
|
37
|
+
color: LinkColors;
|
|
38
|
+
type: GanttLinkType;
|
|
39
|
+
}
|
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { OnInit, EventEmitter, ChangeDetectorRef, ElementRef, OnDestroy, OnChanges } from '@angular/core';
|
|
2
2
|
import { GanttGroupInternal } from '../../class/group';
|
|
3
|
-
import { GanttItemInternal
|
|
3
|
+
import { GanttItemInternal } from './../../class/item';
|
|
4
4
|
import { GanttLineClickEvent } from '../../class/event';
|
|
5
5
|
import { GanttDragContainer } from '../../gantt-drag-container';
|
|
6
6
|
import { GanttUpper } from '../../gantt-upper';
|
|
7
|
+
import { LinkInternal } from '../../class/link';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
declare enum LinkColors {
|
|
9
|
-
default = "#cacaca",
|
|
10
|
-
blocked = "#FF7575",
|
|
11
|
-
active = "#348FE4"
|
|
12
|
-
}
|
|
13
|
-
interface LinkInternal {
|
|
14
|
-
path: string;
|
|
15
|
-
source: GanttItem;
|
|
16
|
-
target: GanttItem;
|
|
17
|
-
color: LinkColors;
|
|
18
|
-
}
|
|
19
9
|
export declare class GanttLinksComponent implements OnInit, OnChanges, OnDestroy {
|
|
20
10
|
ganttUpper: GanttUpper;
|
|
21
11
|
private cdr;
|
|
@@ -44,4 +34,3 @@ export declare class GanttLinksComponent implements OnInit, OnChanges, OnDestroy
|
|
|
44
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<GanttLinksComponent, never>;
|
|
45
35
|
static ɵcmp: i0.ɵɵComponentDeclaration<GanttLinksComponent, "gantt-links-overlay", never, { "groups": "groups"; "items": "items"; }, { "lineClick": "lineClick"; }, never, never>;
|
|
46
36
|
}
|
|
47
|
-
export {};
|
package/esm2015/class/item.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GanttDate } from '../utils/date';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
3
|
import { GanttViewType } from './view-type';
|
|
4
|
+
import { GanttLinkType } from './link';
|
|
4
5
|
export var GanttItemType;
|
|
5
6
|
(function (GanttItemType) {
|
|
6
7
|
GanttItemType["bar"] = "bar";
|
|
@@ -12,7 +13,17 @@ export class GanttItemInternal {
|
|
|
12
13
|
this.refs$ = new BehaviorSubject(null);
|
|
13
14
|
this.origin = item;
|
|
14
15
|
this.id = this.origin.id;
|
|
15
|
-
this.links = this.origin.links || []
|
|
16
|
+
this.links = (this.origin.links || []).map((link) => {
|
|
17
|
+
if (typeof link === 'string') {
|
|
18
|
+
return {
|
|
19
|
+
type: GanttLinkType.fs,
|
|
20
|
+
link
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return link;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
16
27
|
this.color = this.origin.color;
|
|
17
28
|
this.barStyle = this.origin.barStyle;
|
|
18
29
|
this.linkable = this.origin.linkable === undefined ? true : this.origin.linkable;
|
|
@@ -71,8 +82,8 @@ export class GanttItemInternal {
|
|
|
71
82
|
this.origin.expanded = expanded;
|
|
72
83
|
}
|
|
73
84
|
addLink(linkId) {
|
|
74
|
-
this.links = [...this.links, linkId];
|
|
85
|
+
this.links = [...this.links, { type: GanttLinkType.fs, link: linkId }];
|
|
75
86
|
this.origin.links = this.links;
|
|
76
87
|
}
|
|
77
88
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jbGFzcy9pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUTVDLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFxQkQsTUFBTSxPQUFPLGlCQUFpQjtJQXlCMUIsWUFBWSxJQUFlLEVBQUUsT0FBcUM7UUFGbEUsVUFBSyxHQUFHLElBQUksZUFBZSxDQUEwQyxJQUFJLENBQUMsQ0FBQztRQUd2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNqRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNwRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNsRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUNyRixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsRCxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FB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dXRpbHMvZGF0ZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdhbnR0Vmlld1R5cGUgfSBmcm9tICcuL3ZpZXctdHlwZSc7XG5cbmludGVyZmFjZSBHYW50dEl0ZW1SZWZzIHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIEdhbnR0SXRlbVR5cGUge1xuICAgIGJhciA9ICdiYXInLFxuICAgIHJhbmdlID0gJ3JhbmdlJyxcbiAgICBjdXN0b20gPSAnY3VzdG9tJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbnR0SXRlbTxUID0gdW5rbm93bj4ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdGFydD86IG51bWJlcjtcbiAgICBlbmQ/OiBudW1iZXI7XG4gICAgZ3JvdXBfaWQ/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBzdHJpbmdbXTtcbiAgICBkcmFnZ2FibGU/OiBib29sZWFuO1xuICAgIGxpbmthYmxlPzogYm9vbGVhbjtcbiAgICBleHBhbmRhYmxlPzogYm9vbGVhbjtcbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG4gICAgY2hpbGRyZW4/OiBHYW50dEl0ZW1bXTtcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBiYXJTdHlsZT86IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj47XG4gICAgb3JpZ2luPzogVDtcbiAgICB0eXBlPzogR2FudHRJdGVtVHlwZTtcbiAgICBwcm9ncmVzcz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEdhbnR0SXRlbUludGVybmFsIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3RhcnQ6IEdhbnR0RGF0ZTtcbiAgICBlbmQ6IEdhbnR0RGF0ZTtcbiAgICBsaW5rczogc3RyaW5nW107XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgYmFyU3R5bGU/OiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuICAgIGRyYWdnYWJsZT86IGJvb2xlYW47XG4gICAgbGlua2FibGU/OiBib29sZWFuO1xuICAgIG9yaWdpbjogR2FudHRJdGVtO1xuICAgIGV4cGFuZGFibGU/OiBib29sZWFuO1xuICAgIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIGNoaWxkcmVuOiBHYW50dEl0ZW1JbnRlcm5hbFtdO1xuICAgIHR5cGU/OiBHYW50dEl0ZW1UeXBlO1xuICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgIHZpZXdUeXBlPzogR2FudHRWaWV3VHlwZTtcblxuICAgIGdldCByZWZzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHJlZnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHdpZHRoOiBudW1iZXI7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+KG51bGwpO1xuXG4gICAgY29uc3RydWN0b3IoaXRlbTogR2FudHRJdGVtLCBvcHRpb25zPzogeyB2aWV3VHlwZTogR2FudHRWaWV3VHlwZSB9KSB7XG4gICAgICAgIHRoaXMub3JpZ2luID0gaXRlbTtcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMub3JpZ2luLmlkO1xuICAgICAgICB0aGlzLmxpbmtzID0gdGhpcy5vcmlnaW4ubGlua3MgfHwgW107XG4gICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbi5jb2xvcjtcbiAgICAgICAgdGhpcy5iYXJTdHlsZSA9IHRoaXMub3JpZ2luLmJhclN0eWxlO1xuICAgICAgICB0aGlzLmxpbmthYmxlID0gdGhpcy5vcmlnaW4ubGlua2FibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLm9yaWdpbi5saW5rYWJsZTtcbiAgICAgICAgdGhpcy5kcmFnZ2FibGUgPSB0aGlzLm9yaWdpbi5kcmFnZ2FibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLm9yaWdpbi5kcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IHRoaXMub3JpZ2luLmV4cGFuZGFibGUgfHwgKHRoaXMub3JpZ2luLmNoaWxkcmVuIHx8IFtdKS5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gdGhpcy5vcmlnaW4uZXhwYW5kZWQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5vcmlnaW4uZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpdGVtLnN0YXJ0ID8gbmV3IEdhbnR0RGF0ZShpdGVtLnN0YXJ0KSA6IG51bGw7XG4gICAgICAgIHRoaXMuZW5kID0gaXRlbS5lbmQgPyBuZXcgR2FudHREYXRlKGl0ZW0uZW5kKSA6IG51bGw7XG4gICAgICAgIHRoaXMudmlld1R5cGUgPSBvcHRpb25zICYmIG9wdGlvbnMudmlld1R5cGUgPyBvcHRpb25zLnZpZXdUeXBlIDogR2FudHRWaWV3VHlwZS5tb250aDtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IChpdGVtLmNoaWxkcmVuIHx8IFtdKS5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgR2FudHRJdGVtSW50ZXJuYWwoc3ViSXRlbSwgeyB2aWV3VHlwZTogdGhpcy52aWV3VHlwZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudHlwZSA9IHRoaXMub3JpZ2luLnR5cGUgfHwgR2FudHRJdGVtVHlwZS5iYXI7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLm9yaWdpbi5wcm9ncmVzcztcbiAgICAgICAgLy8gZmlsbCBvbmUgbW9udGggd2hlbiBzdGFydCBvciBlbmQgaXMgbnVsbFxuICAgICAgICB0aGlzLmZpbGxJdGVtU3RhcnRPckVuZChpdGVtKTtcbiAgICB9XG5cbiAgICBmaWxsSXRlbVN0YXJ0T3JFbmQoaXRlbTogR2FudHRJdGVtKSB7XG4gICAgICAgIGxldCBhZGRJbnRlcnZhbDogbnVtYmVyO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudmlld1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgR2FudHRWaWV3VHlwZS5kYXk6XG4gICAgICAgICAgICBjYXNlIEdhbnR0Vmlld1R5cGUud2VlazpcbiAgICAgICAgICAgICAgICBhZGRJbnRlcnZhbCA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGFkZEludGVydmFsID0gMzA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0uc3RhcnQgJiYgIWl0ZW0uZW5kKSB7XG4gICAgICAgICAgICB0aGlzLmVuZCA9IG5ldyBHYW50dERhdGUoaXRlbS5zdGFydCkuYWRkRGF5cyhhZGRJbnRlcnZhbCkuZW5kT2ZEYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWl0ZW0uc3RhcnQgJiYgaXRlbS5lbmQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnQgPSBuZXcgR2FudHREYXRlKGl0ZW0uZW5kKS5hZGREYXlzKC1hZGRJbnRlcnZhbCkuc3RhcnRPZkRheSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUmVmcyhyZWZzOiBHYW50dEl0ZW1SZWZzKSB7XG4gICAgICAgIHRoaXMucmVmcyQubmV4dChyZWZzKTtcbiAgICB9XG5cbiAgICB1cGRhdGVEYXRlKHN0YXJ0OiBHYW50dERhdGUsIGVuZDogR2FudHREYXRlKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydC5zdGFydE9mRGF5KCk7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kLmVuZE9mRGF5KCk7XG4gICAgICAgIHRoaXMub3JpZ2luLnN0YXJ0ID0gdGhpcy5zdGFydC5nZXRVbml4VGltZSgpO1xuICAgICAgICB0aGlzLm9yaWdpbi5lbmQgPSB0aGlzLmVuZC5nZXRVbml4VGltZSgpO1xuICAgIH1cblxuICAgIGFkZENoaWxkcmVuKGl0ZW1zOiBHYW50dEl0ZW1bXSkge1xuICAgICAgICB0aGlzLm9yaWdpbi5jaGlsZHJlbiA9IGl0ZW1zO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gKGl0ZW1zIHx8IFtdKS5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgR2FudHRJdGVtSW50ZXJuYWwoc3ViSXRlbSwgeyB2aWV3VHlwZTogdGhpcy52aWV3VHlwZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0RXhwYW5kKGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBleHBhbmRlZDtcbiAgICAgICAgdGhpcy5vcmlnaW4uZXhwYW5kZWQgPSBleHBhbmRlZDtcbiAgICB9XG5cbiAgICBhZGRMaW5rKGxpbmtJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubGlua3MgPSBbLi4udGhpcy5saW5rcywgbGlua0lkXTtcbiAgICAgICAgdGhpcy5vcmlnaW4ubGlua3MgPSB0aGlzLmxpbmtzO1xuICAgIH1cbn1cbiJdfQ==
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jbGFzcy9pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFRbEQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUNyQiw0QkFBVyxDQUFBO0lBQ1gsZ0NBQWUsQ0FBQTtJQUNmLGtDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQXFCRCxNQUFNLE9BQU8saUJBQWlCO0lBeUIxQixZQUFZLElBQWUsRUFBRSxPQUFxQztRQUZsRSxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQTBDLElBQUksQ0FBQyxDQUFDO1FBR3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUMxQixPQUFPO29CQUNILElBQUksRUFBRSxhQUFhLENBQUMsRUFBRTtvQkFDdEIsSUFBSTtpQkFDUCxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsT0FBTyxJQUFJLENBQUM7YUFDZjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2pGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFB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R0FBRyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFjO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbnR0RGF0ZSB9IGZyb20gJy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHYW50dFZpZXdUeXBlIH0gZnJvbSAnLi92aWV3LXR5cGUnO1xuaW1wb3J0IHsgR2FudHRMaW5rLCBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi9saW5rJztcblxuaW50ZXJmYWNlIEdhbnR0SXRlbVJlZnMge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gR2FudHRJdGVtVHlwZSB7XG4gICAgYmFyID0gJ2JhcicsXG4gICAgcmFuZ2UgPSAncmFuZ2UnLFxuICAgIGN1c3RvbSA9ICdjdXN0b20nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FudHRJdGVtPFQgPSB1bmtub3duPiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN0YXJ0PzogbnVtYmVyO1xuICAgIGVuZD86IG51bWJlcjtcbiAgICBncm91cF9pZD86IHN0cmluZztcbiAgICBsaW5rcz86IChHYW50dExpbmsgfCBzdHJpbmcpW107XG4gICAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgICBsaW5rYWJsZT86IGJvb2xlYW47XG4gICAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGNoaWxkcmVuPzogR2FudHRJdGVtW107XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgYmFyU3R5bGU/OiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuICAgIG9yaWdpbj86IFQ7XG4gICAgdHlwZT86IEdhbnR0SXRlbVR5cGU7XG4gICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBHYW50dEl0ZW1JbnRlcm5hbCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN0YXJ0OiBHYW50dERhdGU7XG4gICAgZW5kOiBHYW50dERhdGU7XG4gICAgbGlua3M6IEdhbnR0TGlua1tdO1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIGJhclN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgICBkcmFnZ2FibGU/OiBib29sZWFuO1xuICAgIGxpbmthYmxlPzogYm9vbGVhbjtcbiAgICBvcmlnaW46IEdhbnR0SXRlbTtcbiAgICBleHBhbmRhYmxlPzogYm9vbGVhbjtcbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbjogR2FudHRJdGVtSW50ZXJuYWxbXTtcbiAgICB0eXBlPzogR2FudHRJdGVtVHlwZTtcbiAgICBwcm9ncmVzcz86IG51bWJlcjtcbiAgICB2aWV3VHlwZT86IEdhbnR0Vmlld1R5cGU7XG5cbiAgICBnZXQgcmVmcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICByZWZzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyB3aWR0aDogbnVtYmVyOyB4OiBudW1iZXI7IHk6IG51bWJlciB9PihudWxsKTtcblxuICAgIGNvbnN0cnVjdG9yKGl0ZW06IEdhbnR0SXRlbSwgb3B0aW9ucz86IHsgdmlld1R5cGU6IEdhbnR0Vmlld1R5cGUgfSkge1xuICAgICAgICB0aGlzLm9yaWdpbiA9IGl0ZW07XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLm9yaWdpbi5pZDtcbiAgICAgICAgdGhpcy5saW5rcyA9ICh0aGlzLm9yaWdpbi5saW5rcyB8fCBbXSkubWFwKChsaW5rKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogR2FudHRMaW5rVHlwZS5mcyxcbiAgICAgICAgICAgICAgICAgICAgbGlua1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBsaW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb2xvciA9IHRoaXMub3JpZ2luLmNvbG9yO1xuICAgICAgICB0aGlzLmJhclN0eWxlID0gdGhpcy5vcmlnaW4uYmFyU3R5bGU7XG4gICAgICAgIHRoaXMubGlua2FibGUgPSB0aGlzLm9yaWdpbi5saW5rYWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHRoaXMub3JpZ2luLmxpbmthYmxlO1xuICAgICAgICB0aGlzLmRyYWdnYWJsZSA9IHRoaXMub3JpZ2luLmRyYWdnYWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHRoaXMub3JpZ2luLmRyYWdnYWJsZTtcbiAgICAgICAgdGhpcy5leHBhbmRhYmxlID0gdGhpcy5vcmlnaW4uZXhwYW5kYWJsZSB8fCAodGhpcy5vcmlnaW4uY2hpbGRyZW4gfHwgW10pLmxlbmd0aCA+IDA7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0aGlzLm9yaWdpbi5leHBhbmRlZCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB0aGlzLm9yaWdpbi5leHBhbmRlZDtcbiAgICAgICAgdGhpcy5zdGFydCA9IGl0ZW0uc3RhcnQgPyBuZXcgR2FudHREYXRlKGl0ZW0uc3RhcnQpIDogbnVsbDtcbiAgICAgICAgdGhpcy5lbmQgPSBpdGVtLmVuZCA/IG5ldyBHYW50dERhdGUoaXRlbS5lbmQpIDogbnVsbDtcbiAgICAgICAgdGhpcy52aWV3VHlwZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy52aWV3VHlwZSA/IG9wdGlvbnMudmlld1R5cGUgOiBHYW50dFZpZXdUeXBlLm1vbnRoO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gKGl0ZW0uY2hpbGRyZW4gfHwgW10pLm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBHYW50dEl0ZW1JbnRlcm5hbChzdWJJdGVtLCB7IHZpZXdUeXBlOiB0aGlzLnZpZXdUeXBlIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50eXBlID0gdGhpcy5vcmlnaW4udHlwZSB8fCBHYW50dEl0ZW1UeXBlLmJhcjtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHRoaXMub3JpZ2luLnByb2dyZXNzO1xuICAgICAgICAvLyBmaWxsIG9uZSBtb250aCB3aGVuIHN0YXJ0IG9yIGVuZCBpcyBudWxsXG4gICAgICAgIHRoaXMuZmlsbEl0ZW1TdGFydE9yRW5kKGl0ZW0pO1xuICAgIH1cblxuICAgIGZpbGxJdGVtU3RhcnRPckVuZChpdGVtOiBHYW50dEl0ZW0pIHtcbiAgICAgICAgbGV0IGFkZEludGVydmFsOiBudW1iZXI7XG4gICAgICAgIHN3aXRjaCAodGhpcy52aWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBHYW50dFZpZXdUeXBlLmRheTpcbiAgICAgICAgICAgIGNhc2UgR2FudHRWaWV3VHlwZS53ZWVrOlxuICAgICAgICAgICAgICAgIGFkZEludGVydmFsID0gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYWRkSW50ZXJ2YWwgPSAzMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5zdGFydCAmJiAhaXRlbS5lbmQpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kID0gbmV3IEdhbnR0RGF0ZShpdGVtLnN0YXJ0KS5hZGREYXlzKGFkZEludGVydmFsKS5lbmRPZkRheSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXRlbS5zdGFydCAmJiBpdGVtLmVuZCkge1xuICAgICAgICAgICAgdGhpcy5zdGFydCA9IG5ldyBHYW50dERhdGUoaXRlbS5lbmQpLmFkZERheXMoLWFkZEludGVydmFsKS5zdGFydE9mRGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVSZWZzKHJlZnM6IEdhbnR0SXRlbVJlZnMpIHtcbiAgICAgICAgdGhpcy5yZWZzJC5uZXh0KHJlZnMpO1xuICAgIH1cblxuICAgIHVwZGF0ZURhdGUoc3RhcnQ6IEdhbnR0RGF0ZSwgZW5kOiBHYW50dERhdGUpIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0LnN0YXJ0T2ZEYXkoKTtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQuZW5kT2ZEYXkoKTtcbiAgICAgICAgdGhpcy5vcmlnaW4uc3RhcnQgPSB0aGlzLnN0YXJ0LmdldFVuaXhUaW1lKCk7XG4gICAgICAgIHRoaXMub3JpZ2luLmVuZCA9IHRoaXMuZW5kLmdldFVuaXhUaW1lKCk7XG4gICAgfVxuXG4gICAgYWRkQ2hpbGRyZW4oaXRlbXM6IEdhbnR0SXRlbVtdKSB7XG4gICAgICAgIHRoaXMub3JpZ2luLmNoaWxkcmVuID0gaXRlbXM7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSAoaXRlbXMgfHwgW10pLm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBHYW50dEl0ZW1JbnRlcm5hbChzdWJJdGVtLCB7IHZpZXdUeXBlOiB0aGlzLnZpZXdUeXBlIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRFeHBhbmQoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgICAgICB0aGlzLm9yaWdpbi5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgIH1cblxuICAgIGFkZExpbmsobGlua0lkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5saW5rcyA9IFsuLi50aGlzLmxpbmtzLCB7IHR5cGU6IEdhbnR0TGlua1R5cGUuZnMsIGxpbms6IGxpbmtJZCB9XTtcbiAgICAgICAgdGhpcy5vcmlnaW4ubGlua3MgPSB0aGlzLmxpbmtzO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export var GanttLinkType;
|
|
2
|
+
(function (GanttLinkType) {
|
|
3
|
+
GanttLinkType[GanttLinkType["fs"] = 0] = "fs";
|
|
4
|
+
GanttLinkType[GanttLinkType["ss"] = 1] = "ss";
|
|
5
|
+
GanttLinkType[GanttLinkType["ff"] = 2] = "ff";
|
|
6
|
+
GanttLinkType[GanttLinkType["sf"] = 3] = "sf";
|
|
7
|
+
})(GanttLinkType || (GanttLinkType = {}));
|
|
8
|
+
export var LinkColors;
|
|
9
|
+
(function (LinkColors) {
|
|
10
|
+
LinkColors["default"] = "#cacaca";
|
|
11
|
+
LinkColors["blocked"] = "#FF7575";
|
|
12
|
+
LinkColors["active"] = "#348FE4";
|
|
13
|
+
})(LinkColors || (LinkColors = {}));
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jbGFzcy9saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBTixJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDckIsNkNBQU0sQ0FBQTtJQUNOLDZDQUFNLENBQUE7SUFDTiw2Q0FBTSxDQUFBO0lBQ04sNkNBQU0sQ0FBQTtBQUNWLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDbEIsaUNBQW1CLENBQUE7SUFDbkIsaUNBQW1CLENBQUE7SUFDbkIsZ0NBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2FudHREYXRlIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZSc7XG5pbXBvcnQgeyBHYW50dEl0ZW0gfSBmcm9tICcuL2l0ZW0nO1xuXG5leHBvcnQgZW51bSBHYW50dExpbmtUeXBlIHtcbiAgICBmcyA9IDAsXG4gICAgc3MgPSAxLFxuICAgIGZmID0gMixcbiAgICBzZiA9IDNcbn1cblxuZXhwb3J0IGVudW0gTGlua0NvbG9ycyB7XG4gICAgZGVmYXVsdCA9ICcjY2FjYWNhJyxcbiAgICBibG9ja2VkID0gJyNGRjc1NzUnLFxuICAgIGFjdGl2ZSA9ICcjMzQ4RkU0J1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbnR0TGluayB7XG4gICAgdHlwZTogR2FudHRMaW5rVHlwZTtcbiAgICBsaW5rOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FudHRMaW5rSXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBiZWZvcmU6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgICBhZnRlcjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICAgIHN0YXJ0OiBHYW50dERhdGU7XG4gICAgZW5kOiBHYW50dERhdGU7XG4gICAgb3JpZ2luOiBHYW50dEl0ZW07XG4gICAgbGlua3M6IEdhbnR0TGlua1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtJbnRlcm5hbCB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIHNvdXJjZTogR2FudHRJdGVtO1xuICAgIHRhcmdldDogR2FudHRJdGVtO1xuICAgIGNvbG9yOiBMaW5rQ29sb3JzO1xuICAgIHR5cGU6IEdhbnR0TGlua1R5cGU7XG59XG4iXX0=
|
|
@@ -3,16 +3,11 @@ import { merge, Subject } from 'rxjs';
|
|
|
3
3
|
import { takeUntil, skip } from 'rxjs/operators';
|
|
4
4
|
import { recursiveItems } from '../../utils/helpers';
|
|
5
5
|
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
6
|
+
import { LinkColors, GanttLinkType } from '../../class/link';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../../gantt-drag-container";
|
|
8
9
|
import * as i2 from "@angular/common";
|
|
9
10
|
import * as i3 from "../../gantt-upper";
|
|
10
|
-
var LinkColors;
|
|
11
|
-
(function (LinkColors) {
|
|
12
|
-
LinkColors["default"] = "#cacaca";
|
|
13
|
-
LinkColors["blocked"] = "#FF7575";
|
|
14
|
-
LinkColors["active"] = "#348FE4";
|
|
15
|
-
})(LinkColors || (LinkColors = {}));
|
|
16
11
|
export class GanttLinksComponent {
|
|
17
12
|
constructor(ganttUpper, cdr, elementRef, ganttDragContainer) {
|
|
18
13
|
this.ganttUpper = ganttUpper;
|
|
@@ -87,12 +82,53 @@ export class GanttLinksComponent {
|
|
|
87
82
|
});
|
|
88
83
|
}
|
|
89
84
|
}
|
|
90
|
-
generatePath(source, target) {
|
|
85
|
+
generatePath(source, target, type) {
|
|
91
86
|
if (source.before && source.after && target.before && target.after) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
let x1 = source.after.x;
|
|
88
|
+
let y1 = source.after.y;
|
|
89
|
+
let x4 = target.before.x;
|
|
90
|
+
let y4 = target.before.y;
|
|
91
|
+
let isMirror;
|
|
92
|
+
const control = Math.abs(y4 - y1) / 2;
|
|
93
|
+
switch (type) {
|
|
94
|
+
case GanttLinkType.ss:
|
|
95
|
+
x1 = source.before.x;
|
|
96
|
+
y1 = source.before.y;
|
|
97
|
+
x4 = target.before.x;
|
|
98
|
+
y4 = target.before.y;
|
|
99
|
+
isMirror = y4 > y1 ? 0 : 1;
|
|
100
|
+
if (x4 > x1) {
|
|
101
|
+
return `M ${x1} ${y1}
|
|
102
|
+
A ${control} ${control} 0 1 ${isMirror} ${x1} ${y4}
|
|
103
|
+
L ${x1} ${y4} ${x4} ${y4}`;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return `M ${x1} ${y1}
|
|
107
|
+
L ${x1} ${y1} ${x4} ${y1}
|
|
108
|
+
A ${control} ${control} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
109
|
+
}
|
|
110
|
+
case GanttLinkType.ff:
|
|
111
|
+
x1 = source.after.x;
|
|
112
|
+
y1 = source.after.y;
|
|
113
|
+
x4 = target.after.x;
|
|
114
|
+
y4 = target.after.y;
|
|
115
|
+
isMirror = y4 > y1 ? 1 : 0;
|
|
116
|
+
if (x4 > x1) {
|
|
117
|
+
return `M ${x1} ${y1}
|
|
118
|
+
L ${x1} ${y1} ${x4} ${y1}
|
|
119
|
+
A ${control} ${control} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return `M ${x1} ${y1}
|
|
123
|
+
A ${control} ${control} 0 1 ${isMirror} ${x1} ${y4}
|
|
124
|
+
L ${x1} ${y4} ${x4} ${y4}`;
|
|
125
|
+
}
|
|
126
|
+
case GanttLinkType.sf:
|
|
127
|
+
x1 = target.after.x;
|
|
128
|
+
y1 = target.after.y;
|
|
129
|
+
x4 = source.before.x;
|
|
130
|
+
y4 = source.before.y;
|
|
131
|
+
}
|
|
96
132
|
const dx = Math.abs(x4 - x1) * this.bezierWeight;
|
|
97
133
|
const x2 = x1 - dx;
|
|
98
134
|
const x3 = x4 + dx;
|
|
@@ -150,13 +186,14 @@ export class GanttLinksComponent {
|
|
|
150
186
|
this.links = [];
|
|
151
187
|
this.linkItems.forEach((source) => {
|
|
152
188
|
if (source.origin.start || source.origin.end) {
|
|
153
|
-
source.links.forEach((
|
|
154
|
-
const target = this.linkItems.find((item) => item.id ===
|
|
189
|
+
source.links.forEach((link) => {
|
|
190
|
+
const target = this.linkItems.find((item) => item.id === link.link);
|
|
155
191
|
if (target && (target.origin.start || target.origin.end)) {
|
|
156
192
|
this.links.push({
|
|
157
|
-
path: this.generatePath(source, target),
|
|
193
|
+
path: this.generatePath(source, target, link.type),
|
|
158
194
|
source: source.origin,
|
|
159
195
|
target: target.origin,
|
|
196
|
+
type: link.type,
|
|
160
197
|
color: source.end.getTime() > target.start.getTime() ? LinkColors.blocked : LinkColors.default
|
|
161
198
|
});
|
|
162
199
|
}
|
|
@@ -190,7 +227,7 @@ export class GanttLinksComponent {
|
|
|
190
227
|
}
|
|
191
228
|
}
|
|
192
229
|
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.GanttDragContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
193
|
-
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", 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
|
|
230
|
+
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", 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 [style]=\"'marker-end: url(#triangle' + i + ')'\"\n ></path>\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n (mouseenter)=\"mouseEnterPath(link)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n [attr.d]=\"link.path\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <!-- <defs>\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 </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"] }] });
|
|
194
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, decorators: [{
|
|
195
232
|
type: Component,
|
|
196
233
|
args: [{
|
|
@@ -210,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
210
247
|
type: HostBinding,
|
|
211
248
|
args: ['class.gantt-links-overlay']
|
|
212
249
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUVsRSxJQUFLLFVBSUo7QUFKRCxXQUFLLFVBQVU7SUFDWCxpQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBa0IsQ0FBQTtBQUN0QixDQUFDLEVBSkksVUFBVSxLQUFWLFVBQVUsUUFJZDtBQXVCRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI1QixZQUNzQyxVQUFzQixFQUNoRCxHQUFzQixFQUN0QixVQUFzQixFQUN0QixrQkFBc0M7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRCekMsV0FBTSxHQUF5QixFQUFFLENBQUM7UUFFbEMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFFL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRXZELFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTFCLGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLGlCQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFFcEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRUssc0JBQWlCLEdBQUcsSUFBSSxDQUFDO0lBT2hFLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXpCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUNELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQ2hDO2FBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNoQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO3dCQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQ3RGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxpQ0FDWixJQUFJLEtBQ1AsTUFBTSxFQUFFO2dDQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQ2QsQ0FBQzs2QkFDSixFQUNELEtBQUssRUFBRTtnQ0FDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2dDQUNoQyxDQUFDOzZCQUNKLElBQ0gsQ0FBQztvQkFDUCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDM0I7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGlDQUNaLElBQUksS0FDUCxNQUFNLEVBQUU7d0JBQ0osQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDZCxDQUFDO3FCQUNKLEVBQ0QsS0FBSyxFQUFFO3dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQ2hDLENBQUM7cUJBQ0osSUFDSCxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBcUIsRUFBRSxNQUFxQjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFMUIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNqRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFFbkIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUU5QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFFdkQsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNWLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDVCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTt3QkFDeEQsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNoQixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFROzRCQUM1RSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTzs7NEJBRXpDLEVBQUUsSUFBSSxFQUFFOzRCQUNSLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVE7NEJBQzVFLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztxQkFDbkQ7eUJBQU07d0JBQ0gsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQzt3QkFDN0MsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNoQixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU87Ozs0QkFHM0UsRUFBRSxJQUFJLEVBQUU7NEJBQ1IsRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztxQkFDckY7aUJBQ0o7cUJBQU07b0JBQ0gsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7d0JBQ3hELE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDaEIsRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUTs0QkFDNUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU87OzRCQUV6QyxFQUFFLElBQUksRUFBRTs0QkFDUixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFROzRCQUM1RSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTzt5QkFDNUMsQ0FBQztxQkFDTDt5QkFBTTt3QkFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO3dCQUM3QyxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQ2hCLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTzs7NEJBRTNFLEVBQUUsSUFBSSxFQUFFOzRCQUNSLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7cUJBQ3JGO2lCQUNKO2FBQ0o7WUFFRCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1NBQ2hFO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzlCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO29CQUNqRSxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7NEJBQ3ZDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTs0QkFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNOzRCQUNyQixLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTzt5QkFDakcsQ0FBQyxDQUFDO3FCQUNOO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCLEVBQUUsSUFBa0I7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDaEIsS0FBSztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDdEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFrQjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7O2dIQW5OUSxtQkFBbUIsa0JBb0JoQixpQkFBaUI7b0dBcEJwQixtQkFBbUIsb1BDbERoQyw0dEJBbUJBOzJGRCtCYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLHdCQUF3QjtpQkFDeEM7OzBCQXFCUSxNQUFNOzJCQUFDLGlCQUFpQjtzSUFuQnBCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFZbUMsaUJBQWlCO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2FudHRHcm91cEludGVybmFsIH0gZnJvbSAnLi4vLi4vY2xhc3MvZ3JvdXAnO1xuaW1wb3J0IHsgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0SXRlbSB9IGZyb20gJy4vLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MvZXZlbnQnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgcmVjdXJzaXZlSXRlbXMgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IEdhbnR0RGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgR0FOVFRfVVBQRVJfVE9LRU4sIEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5cbmVudW0gTGlua0NvbG9ycyB7XG4gICAgZGVmYXVsdCA9ICcjY2FjYWNhJyxcbiAgICBibG9ja2VkID0gJyNGRjc1NzUnLFxuICAgIGFjdGl2ZSA9ICcjMzQ4RkU0J1xufVxuXG5pbnRlcmZhY2UgR2FudHRMaW5rSXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBiZWZvcmU6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgICBhZnRlcjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICAgIHN0YXJ0OiBHYW50dERhdGU7XG4gICAgZW5kOiBHYW50dERhdGU7XG4gICAgb3JpZ2luOiBHYW50dEl0ZW07XG4gICAgbGlua3M6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgTGlua0ludGVybmFsIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgc291cmNlOiBHYW50dEl0ZW07XG4gICAgdGFyZ2V0OiBHYW50dEl0ZW07XG4gICAgY29sb3I6IExpbmtDb2xvcnM7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtbGlua3Mtb3ZlcmxheScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpbmtzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dExpbmtzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgaXRlbXM6IEdhbnR0SXRlbUludGVybmFsW10gPSBbXTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgbGlua3M6IExpbmtJbnRlcm5hbFtdID0gW107XG5cbiAgICBwcml2YXRlIGxpbmtJdGVtczogR2FudHRMaW5rSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIGJlemllcldlaWdodCA9IC0wLjU7XG5cbiAgICBwcml2YXRlIGZpcnN0Q2hhbmdlID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtbGlua3Mtb3ZlcmxheScpIGdhbnR0TGlua3NPdmVybGF5ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZ2FudHREcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXJcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmdhbnR0RHJhZ0NvbnRhaW5lci5kcmFnU3RhcnRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXdDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZXhwYW5kQ2hhbmdlLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuc3RhcnQkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmRyYWdFbmRlZCxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5saW5rRHJhZ0VuZGVkXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksIHNraXAoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlSXRlbVBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0O1xuICAgICAgICBjb25zdCBiYXJIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmJhckhlaWdodDtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBpdGVtTnVtID0gMDtcbiAgICAgICAgICAgIGxldCBncm91cE51bSA9IDA7XG4gICAgICAgICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwTnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVjdXJzaXZlSXRlbXMoZ3JvdXAuaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSAoZ3JvdXBOdW0gKyBpdGVtTnVtICsgaXRlbUluZGV4KSAqIGxpbmVIZWlnaHQgKyBpdGVtLnJlZnMueSArIGJhckhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLnggKyBpdGVtLnJlZnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OdW0gKz0gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBpdGVtSW5kZXggKiBsaW5lSGVpZ2h0ICsgaXRlbS5yZWZzLnkgKyBiYXJIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBiZWZvcmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGl0ZW0ucmVmcy54LFxuICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhZnRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLnggKyBpdGVtLnJlZnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZVBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pIHtcbiAgICAgICAgaWYgKHNvdXJjZS5iZWZvcmUgJiYgc291cmNlLmFmdGVyICYmIHRhcmdldC5iZWZvcmUgJiYgdGFyZ2V0LmFmdGVyKSB7XG4gICAgICAgICAgICBjb25zdCB4MSA9IHNvdXJjZS5hZnRlci54O1xuICAgICAgICAgICAgY29uc3QgeTEgPSBzb3VyY2UuYWZ0ZXIueTtcblxuICAgICAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgICAgICBjb25zdCB5NCA9IHRhcmdldC5iZWZvcmUueTtcblxuICAgICAgICAgICAgY29uc3QgZHggPSBNYXRoLmFicyh4NCAtIHgxKSAqIHRoaXMuYmV6aWVyV2VpZ2h0O1xuICAgICAgICAgICAgY29uc3QgeDIgPSB4MSAtIGR4O1xuICAgICAgICAgICAgY29uc3QgeDMgPSB4NCArIGR4O1xuXG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDQpIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSAoeTEgKyB5NCkgLyAyO1xuXG4gICAgICAgICAgICBsZXQgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3QgY29udHJvbFkgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICBpZiAoeDEgPj0geDQpIHtcbiAgICAgICAgICAgICAgICBpZiAoeTQgPiB5MSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHt4MX0gJHt5MSArIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxICsgY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7eDR9ICR7eTQgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHk0IC0geTEpIDw9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDEgKyBjb250cm9sWH0gJHt5MX0gJHt4MSArIGNvbnRyb2xYfSAke3kxIC0gY29udHJvbFh9ICR7eDF9ICR7eTEgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MX0gJHt5MSAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCArIGNvbnRyb2xYfSAke3g0fSAke3k0ICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTQgKyBjb250cm9sWX0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG4gICAgICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0IC0gY29udHJvbFh9ICR7eTQgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEMgJHt4Mn0gJHt5MX0gJHt4M30gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRMaW5rcygpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlSXRlbVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMubGlua3MgPSBbXTtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlLm9yaWdpbi5zdGFydCB8fCBzb3VyY2Uub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5saW5rcy5mb3JFYWNoKChsaW5rSWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5saW5rSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbGlua0lkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAmJiAodGFyZ2V0Lm9yaWdpbi5zdGFydCB8fCB0YXJnZXQub3JpZ2luLmVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZW5lcmF0ZVBhdGgoc291cmNlLCB0YXJnZXQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlLm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldC5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNvdXJjZS5lbmQuZ2V0VGltZSgpID4gdGFyZ2V0LnN0YXJ0LmdldFRpbWUoKSA/IExpbmtDb2xvcnMuYmxvY2tlZCA6IExpbmtDb2xvcnMuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBvbkxpbmVDbGljayhldmVudDogTW91c2VFdmVudCwgbGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIHRoaXMubGluZUNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBzb3VyY2U6IGxpbmsuc291cmNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBsaW5rLnRhcmdldFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtb3VzZUVudGVyUGF0aChsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgaWYgKGxpbmsuY29sb3IgPT09IExpbmtDb2xvcnMuZGVmYXVsdCkge1xuICAgICAgICAgICAgbGluay5jb2xvciA9IExpbmtDb2xvcnMuYWN0aXZlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW91c2VMZWF2ZVBhdGgobGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIGlmIChsaW5rLmNvbG9yID09PSBMaW5rQ29sb3JzLmFjdGl2ZSkge1xuICAgICAgICAgICAgbGluay5jb2xvciA9IExpbmtDb2xvcnMuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHN2ZyBbYXR0ci53aWR0aF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIiBjbGFzcz1cImdhbnR0LWxpbmtzLW92ZXJsYXktbWFpblwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgPHBhdGggW2F0dHIuZF09XCJsaW5rLnBhdGhcIiBmaWxsPVwidHJhbnNwYXJlbnRcIiBzdHJva2Utd2lkdGg9XCIyXCIgW2F0dHIuc3Ryb2tlXT1cImxpbmsuY29sb3JcIiBwb2ludGVyLWV2ZW50cz1cIm5vbmVcIj48L3BhdGg+XG4gICAgPGc+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cImxpbmstbGluZVwiXG4gICAgICAgIChjbGljayk9XCJvbkxpbmVDbGljaygkZXZlbnQsIGxpbmspXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlclBhdGgobGluaylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlUGF0aChsaW5rKVwiXG4gICAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgICAgc3Ryb2tlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCI5XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICBjdXJzb3I9XCJwb2ludGVyXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9nPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpbmUgY2xhc3M9XCJsaW5rLWRyYWdnaW5nLWxpbmVcIj48L2xpbmU+XG48L3N2Zz5cbiJdfQ==
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBK0IsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQU0xRixNQUFNLE9BQU8sbUJBQW1CO0lBbUI1QixZQUNzQyxVQUFzQixFQUNoRCxHQUFzQixFQUN0QixVQUFzQixFQUN0QixrQkFBc0M7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRCekMsV0FBTSxHQUF5QixFQUFFLENBQUM7UUFFbEMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFFL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRXZELFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTFCLGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLGlCQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFFcEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRUssc0JBQWlCLEdBQUcsSUFBSSxDQUFDO0lBT2hFLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXpCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUNELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQ2hDO2FBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNoQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO3dCQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQ3RGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxpQ0FDWixJQUFJLEtBQ1AsTUFBTSxFQUFFO2dDQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQ2QsQ0FBQzs2QkFDSixFQUNELEtBQUssRUFBRTtnQ0FDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2dDQUNoQyxDQUFDOzZCQUNKLElBQ0gsQ0FBQztvQkFDUCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDM0I7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGlDQUNaLElBQUksS0FDUCxNQUFNLEVBQUU7d0JBQ0osQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDZCxDQUFDO3FCQUNKLEVBQ0QsS0FBSyxFQUFFO3dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQ2hDLENBQUM7cUJBQ0osSUFDSCxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBcUIsRUFBRSxNQUFxQixFQUFFLElBQW1CO1FBQ2xGLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNoRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLFFBQWdCLENBQUM7WUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXRDLFFBQVEsSUFBSSxFQUFFO2dCQUNWLEtBQUssYUFBYSxDQUFDLEVBQUU7b0JBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDckIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNyQixFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ3JCLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDckIsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUUzQixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7d0JBQ1QsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFO2dDQUNaLE9BQU8sSUFBSSxPQUFPLFFBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dDQUM5QyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztxQkFDbEM7eUJBQU07d0JBQ0gsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNoQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFOzRCQUNwQixPQUFPLElBQUksT0FBTyxRQUFRLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7cUJBQ3hEO2dCQUVMLEtBQUssYUFBYSxDQUFDLEVBQUU7b0JBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQixFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMzQixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7d0JBQ1QsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNoQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFOzRCQUNwQixPQUFPLElBQUksT0FBTyxRQUFRLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7cUJBQ3hEO3lCQUFNO3dCQUNILE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTtnQ0FDWixPQUFPLElBQUksT0FBTyxRQUFRLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRTtnQ0FDOUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7cUJBQ2xDO2dCQUVMLEtBQUssYUFBYSxDQUFDLEVBQUU7b0JBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQixFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ3JCLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM1QjtZQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFFakQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNuQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFOUIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBRXZELElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7d0JBQ3hELE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDaEIsRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUTs0QkFDNUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU87OzRCQUV6QyxFQUFFLElBQUksRUFBRTs0QkFDUixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFROzRCQUM1RSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7cUJBQ25EO3lCQUFNO3dCQUNILFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7d0JBQzdDLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDaEIsRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPOzs7NEJBRzNFLEVBQUUsSUFBSSxFQUFFOzRCQUNSLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7cUJBQ3JGO2lCQUNKO3FCQUFNO29CQUNILElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUN4RCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQ2hCLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVE7NEJBQzVFLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPOzs0QkFFekMsRUFBRSxJQUFJLEVBQUU7NEJBQ1IsRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUTs0QkFDNUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU87eUJBQzVDLENBQUM7cUJBQ0w7eUJBQU07d0JBQ0gsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQzt3QkFDN0MsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNoQixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU87OzRCQUUzRSxFQUFFLElBQUksRUFBRTs0QkFDUixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO3FCQUNyRjtpQkFDSjthQUNKO1lBRUQsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNoRTtJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BFLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUNsRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07NEJBQ3JCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTs0QkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPO3lCQUNqRyxDQUFDLENBQUM7cUJBQ047Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUIsRUFBRSxJQUFrQjtRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNoQixLQUFLO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBa0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7Z0hBOVBRLG1CQUFtQixrQkFvQmhCLGlCQUFpQjtvR0FwQnBCLG1CQUFtQixvUEMzQmhDLG9tQ0ErQkE7MkZESmEsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSx3QkFBd0I7aUJBQ3hDOzswQkFxQlEsTUFBTTsyQkFBQyxpQkFBaUI7c0lBbkJwQixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBWW1DLGlCQUFpQjtzQkFBMUQsV0FBVzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdhbnR0R3JvdXBJbnRlcm5hbCB9IGZyb20gJy4uLy4uL2NsYXNzL2dyb3VwJztcbmltcG9ydCB7IEdhbnR0SXRlbUludGVybmFsIH0gZnJvbSAnLi8uLi8uLi9jbGFzcy9pdGVtJztcbmltcG9ydCB7IEdhbnR0TGluZUNsaWNrRXZlbnQgfSBmcm9tICcuLi8uLi9jbGFzcy9ldmVudCc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyByZWN1cnNpdmVJdGVtcyB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgR0FOVFRfVVBQRVJfVE9LRU4sIEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5pbXBvcnQgeyBHYW50dExpbmtJdGVtLCBMaW5rSW50ZXJuYWwsIExpbmtDb2xvcnMsIEdhbnR0TGlua1R5cGUgfSBmcm9tICcuLi8uLi9jbGFzcy9saW5rJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1saW5rcy1vdmVybGF5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGlua3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0TGlua3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBncm91cHM6IEdhbnR0R3JvdXBJbnRlcm5hbFtdID0gW107XG5cbiAgICBASW5wdXQoKSBpdGVtczogR2FudHRJdGVtSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgQE91dHB1dCgpIGxpbmVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRMaW5lQ2xpY2tFdmVudD4oKTtcblxuICAgIHB1YmxpYyBsaW5rczogTGlua0ludGVybmFsW10gPSBbXTtcblxuICAgIHByaXZhdGUgbGlua0l0ZW1zOiBHYW50dExpbmtJdGVtW10gPSBbXTtcblxuICAgIHByaXZhdGUgYmV6aWVyV2VpZ2h0ID0gLTAuNTtcblxuICAgIHByaXZhdGUgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1saW5rcy1vdmVybGF5JykgZ2FudHRMaW5rc092ZXJsYXkgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBnYW50dFVwcGVyOiBHYW50dFVwcGVyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBnYW50dERyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lclxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmJ1aWxkTGlua3MoKTtcbiAgICAgICAgdGhpcy5maXJzdENoYW5nZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZ2FudHREcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlld0NoYW5nZSxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5leHBhbmRDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZHJhZ0VuZGVkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmxpbmtEcmFnRW5kZWRcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgc2tpcCgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVJdGVtUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGJhckhlaWdodCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMuYmFySGVpZ2h0O1xuICAgICAgICB0aGlzLmxpbmtJdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGl0ZW1OdW0gPSAwO1xuICAgICAgICAgICAgbGV0IGdyb3VwTnVtID0gMDtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOdW0rKztcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyhncm91cC5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IChncm91cE51bSArIGl0ZW1OdW0gKyBpdGVtSW5kZXgpICogbGluZUhlaWdodCArIGl0ZW0ucmVmcy55ICsgYmFySGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGl0ZW0ucmVmcy54LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCArIGl0ZW0ucmVmcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbU51bSArPSBpdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IGl0ZW1JbmRleCAqIGxpbmVIZWlnaHQgKyBpdGVtLnJlZnMueSArIGJhckhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rSXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCArIGl0ZW0ucmVmcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSwgdHlwZTogR2FudHRMaW5rVHlwZSkge1xuICAgICAgICBpZiAoc291cmNlLmJlZm9yZSAmJiBzb3VyY2UuYWZ0ZXIgJiYgdGFyZ2V0LmJlZm9yZSAmJiB0YXJnZXQuYWZ0ZXIpIHtcbiAgICAgICAgICAgIGxldCB4MSA9IHNvdXJjZS5hZnRlci54O1xuICAgICAgICAgICAgbGV0IHkxID0gc291cmNlLmFmdGVyLnk7XG4gICAgICAgICAgICBsZXQgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgICAgICBsZXQgeTQgPSB0YXJnZXQuYmVmb3JlLnk7XG4gICAgICAgICAgICBsZXQgaXNNaXJyb3I6IG51bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBNYXRoLmFicyh5NCAtIHkxKSAvIDI7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgR2FudHRMaW5rVHlwZS5zczpcbiAgICAgICAgICAgICAgICAgICAgeDEgPSBzb3VyY2UuYmVmb3JlLng7XG4gICAgICAgICAgICAgICAgICAgIHkxID0gc291cmNlLmJlZm9yZS55O1xuICAgICAgICAgICAgICAgICAgICB4NCA9IHRhcmdldC5iZWZvcmUueDtcbiAgICAgICAgICAgICAgICAgICAgeTQgPSB0YXJnZXQuYmVmb3JlLnk7XG4gICAgICAgICAgICAgICAgICAgIGlzTWlycm9yID0geTQgPiB5MSA/IDAgOiAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh4NCA+IHgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBICR7Y29udHJvbH0gJHtjb250cm9sfSAwIDEgJHtpc01pcnJvcn0gJHt4MX0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMICR7eDF9ICR7eTR9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxfSAke3g0fSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQSAke2NvbnRyb2x9ICR7Y29udHJvbH0gMCAxICR7aXNNaXJyb3J9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSBHYW50dExpbmtUeXBlLmZmOlxuICAgICAgICAgICAgICAgICAgICB4MSA9IHNvdXJjZS5hZnRlci54O1xuICAgICAgICAgICAgICAgICAgICB5MSA9IHNvdXJjZS5hZnRlci55O1xuICAgICAgICAgICAgICAgICAgICB4NCA9IHRhcmdldC5hZnRlci54O1xuICAgICAgICAgICAgICAgICAgICB5NCA9IHRhcmdldC5hZnRlci55O1xuICAgICAgICAgICAgICAgICAgICBpc01pcnJvciA9IHk0ID4geTEgPyAxIDogMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHg0ID4geDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxfSAke3g0fSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQSAke2NvbnRyb2x9ICR7Y29udHJvbH0gMCAxICR7aXNNaXJyb3J9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgJHtjb250cm9sfSAke2NvbnRyb2x9IDAgMSAke2lzTWlycm9yfSAke3gxfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MX0gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlIEdhbnR0TGlua1R5cGUuc2Y6XG4gICAgICAgICAgICAgICAgICAgIHgxID0gdGFyZ2V0LmFmdGVyLng7XG4gICAgICAgICAgICAgICAgICAgIHkxID0gdGFyZ2V0LmFmdGVyLnk7XG4gICAgICAgICAgICAgICAgICAgIHg0ID0gc291cmNlLmJlZm9yZS54O1xuICAgICAgICAgICAgICAgICAgICB5NCA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZHggPSBNYXRoLmFicyh4NCAtIHgxKSAqIHRoaXMuYmV6aWVyV2VpZ2h0O1xuXG4gICAgICAgICAgICBjb25zdCB4MiA9IHgxIC0gZHg7XG4gICAgICAgICAgICBjb25zdCB4MyA9IHg0ICsgZHg7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDQpIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSAoeTEgKyB5NCkgLyAyO1xuXG4gICAgICAgICAgICBsZXQgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3QgY29udHJvbFkgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICBpZiAoeDEgPj0geDQpIHtcbiAgICAgICAgICAgICAgICBpZiAoeTQgPiB5MSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHt4MX0gJHt5MSArIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxICsgY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7eDR9ICR7eTQgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHk0IC0geTEpIDw9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDEgKyBjb250cm9sWH0gJHt5MX0gJHt4MSArIGNvbnRyb2xYfSAke3kxIC0gY29udHJvbFh9ICR7eDF9ICR7eTEgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MX0gJHt5MSAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCArIGNvbnRyb2xYfSAke3g0fSAke3k0ICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTQgKyBjb250cm9sWX0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG4gICAgICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0IC0gY29udHJvbFh9ICR7eTQgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEMgJHt4Mn0gJHt5MX0gJHt4M30gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRMaW5rcygpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlSXRlbVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMubGlua3MgPSBbXTtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlLm9yaWdpbi5zdGFydCB8fCBzb3VyY2Uub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubGlua0l0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGxpbmsubGluayk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgKHRhcmdldC5vcmlnaW4uc3RhcnQgfHwgdGFyZ2V0Lm9yaWdpbi5lbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMuZ2VuZXJhdGVQYXRoKHNvdXJjZSwgdGFyZ2V0LCBsaW5rLnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlLm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldC5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbGluay50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBzb3VyY2UuZW5kLmdldFRpbWUoKSA+IHRhcmdldC5zdGFydC5nZXRUaW1lKCkgPyBMaW5rQ29sb3JzLmJsb2NrZWQgOiBMaW5rQ29sb3JzLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgb25MaW5lQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGxpbms6IExpbmtJbnRlcm5hbCkge1xuICAgICAgICB0aGlzLmxpbmVDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgc291cmNlOiBsaW5rLnNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldDogbGluay50YXJnZXRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbW91c2VFbnRlclBhdGgobGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIGlmIChsaW5rLmNvbG9yID09PSBMaW5rQ29sb3JzLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIGxpbmsuY29sb3IgPSBMaW5rQ29sb3JzLmFjdGl2ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdXNlTGVhdmVQYXRoKGxpbms6IExpbmtJbnRlcm5hbCkge1xuICAgICAgICBpZiAobGluay5jb2xvciA9PT0gTGlua0NvbG9ycy5hY3RpdmUpIHtcbiAgICAgICAgICAgIGxpbmsuY29sb3IgPSBMaW5rQ29sb3JzLmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxzdmcgW2F0dHIud2lkdGhdPVwiZ2FudHRVcHBlci52aWV3LndpZHRoXCIgY2xhc3M9XCJnYW50dC1saW5rcy1vdmVybGF5LW1haW5cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxwYXRoXG4gICAgICBbYXR0ci5kXT1cImxpbmsucGF0aFwiXG4gICAgICBmaWxsPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwibGluay5jb2xvclwiXG4gICAgICBwb2ludGVyLWV2ZW50cz1cIm5vbmVcIlxuICAgICAgW3N0eWxlXT1cIidtYXJrZXItZW5kOiB1cmwoI3RyaWFuZ2xlJyArIGkgKyAnKSdcIlxuICAgID48L3BhdGg+XG4gICAgPGc+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cImxpbmstbGluZVwiXG4gICAgICAgIChjbGljayk9XCJvbkxpbmVDbGljaygkZXZlbnQsIGxpbmspXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlclBhdGgobGluaylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlUGF0aChsaW5rKVwiXG4gICAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgICAgc3Ryb2tlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCI5XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICBjdXJzb3I9XCJwb2ludGVyXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9nPlxuICAgIDwhLS0gPGRlZnM+XG4gICAgICA8bWFya2VyIFtpZF09XCIndHJpYW5nbGUnICsgaVwiIG1hcmtlclVuaXRzPVwic3Ryb2tlV2lkdGhcIiBtYXJrZXJXaWR0aD1cIjVcIiBtYXJrZXJIZWlnaHQ9XCI0XCIgcmVmWD1cIjVcIiByZWZZPVwiMlwiIG9yaWVudD1cImF1dG9cIj5cbiAgICAgICAgPHBhdGggW2F0dHIuZmlsbF09XCJsaW5rLmNvbG9yXCIgW2F0dHIuc3Ryb2tlXT1cImxpbmsuY29sb3JcIiBkPVwiTSAwIDAgTCA1IDIgTCAwIDQgelwiIC8+XG4gICAgICA8L21hcmtlcj5cbiAgICA8L2RlZnM+IC0tPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpbmUgY2xhc3M9XCJsaW5rLWRyYWdnaW5nLWxpbmVcIj48L2xpbmU+XG48L3N2Zz5cbiJdfQ==
|
|
@@ -201,6 +201,20 @@ var GanttViewType;
|
|
|
201
201
|
GanttViewType["week"] = "week";
|
|
202
202
|
})(GanttViewType || (GanttViewType = {}));
|
|
203
203
|
|
|
204
|
+
var GanttLinkType;
|
|
205
|
+
(function (GanttLinkType) {
|
|
206
|
+
GanttLinkType[GanttLinkType["fs"] = 0] = "fs";
|
|
207
|
+
GanttLinkType[GanttLinkType["ss"] = 1] = "ss";
|
|
208
|
+
GanttLinkType[GanttLinkType["ff"] = 2] = "ff";
|
|
209
|
+
GanttLinkType[GanttLinkType["sf"] = 3] = "sf";
|
|
210
|
+
})(GanttLinkType || (GanttLinkType = {}));
|
|
211
|
+
var LinkColors;
|
|
212
|
+
(function (LinkColors) {
|
|
213
|
+
LinkColors["default"] = "#cacaca";
|
|
214
|
+
LinkColors["blocked"] = "#FF7575";
|
|
215
|
+
LinkColors["active"] = "#348FE4";
|
|
216
|
+
})(LinkColors || (LinkColors = {}));
|
|
217
|
+
|
|
204
218
|
var GanttItemType;
|
|
205
219
|
(function (GanttItemType) {
|
|
206
220
|
GanttItemType["bar"] = "bar";
|
|
@@ -212,7 +226,17 @@ class GanttItemInternal {
|
|
|
212
226
|
this.refs$ = new BehaviorSubject(null);
|
|
213
227
|
this.origin = item;
|
|
214
228
|
this.id = this.origin.id;
|
|
215
|
-
this.links = this.origin.links || []
|
|
229
|
+
this.links = (this.origin.links || []).map((link) => {
|
|
230
|
+
if (typeof link === 'string') {
|
|
231
|
+
return {
|
|
232
|
+
type: GanttLinkType.fs,
|
|
233
|
+
link
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
return link;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
216
240
|
this.color = this.origin.color;
|
|
217
241
|
this.barStyle = this.origin.barStyle;
|
|
218
242
|
this.linkable = this.origin.linkable === undefined ? true : this.origin.linkable;
|
|
@@ -271,7 +295,7 @@ class GanttItemInternal {
|
|
|
271
295
|
this.origin.expanded = expanded;
|
|
272
296
|
}
|
|
273
297
|
addLink(linkId) {
|
|
274
|
-
this.links = [...this.links, linkId];
|
|
298
|
+
this.links = [...this.links, { type: GanttLinkType.fs, link: linkId }];
|
|
275
299
|
this.origin.links = this.links;
|
|
276
300
|
}
|
|
277
301
|
}
|
|
@@ -1832,12 +1856,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
1832
1856
|
args: ['mainTemplate', { static: true }]
|
|
1833
1857
|
}] } });
|
|
1834
1858
|
|
|
1835
|
-
var LinkColors;
|
|
1836
|
-
(function (LinkColors) {
|
|
1837
|
-
LinkColors["default"] = "#cacaca";
|
|
1838
|
-
LinkColors["blocked"] = "#FF7575";
|
|
1839
|
-
LinkColors["active"] = "#348FE4";
|
|
1840
|
-
})(LinkColors || (LinkColors = {}));
|
|
1841
1859
|
class GanttLinksComponent {
|
|
1842
1860
|
constructor(ganttUpper, cdr, elementRef, ganttDragContainer) {
|
|
1843
1861
|
this.ganttUpper = ganttUpper;
|
|
@@ -1912,12 +1930,53 @@ class GanttLinksComponent {
|
|
|
1912
1930
|
});
|
|
1913
1931
|
}
|
|
1914
1932
|
}
|
|
1915
|
-
generatePath(source, target) {
|
|
1933
|
+
generatePath(source, target, type) {
|
|
1916
1934
|
if (source.before && source.after && target.before && target.after) {
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1935
|
+
let x1 = source.after.x;
|
|
1936
|
+
let y1 = source.after.y;
|
|
1937
|
+
let x4 = target.before.x;
|
|
1938
|
+
let y4 = target.before.y;
|
|
1939
|
+
let isMirror;
|
|
1940
|
+
const control = Math.abs(y4 - y1) / 2;
|
|
1941
|
+
switch (type) {
|
|
1942
|
+
case GanttLinkType.ss:
|
|
1943
|
+
x1 = source.before.x;
|
|
1944
|
+
y1 = source.before.y;
|
|
1945
|
+
x4 = target.before.x;
|
|
1946
|
+
y4 = target.before.y;
|
|
1947
|
+
isMirror = y4 > y1 ? 0 : 1;
|
|
1948
|
+
if (x4 > x1) {
|
|
1949
|
+
return `M ${x1} ${y1}
|
|
1950
|
+
A ${control} ${control} 0 1 ${isMirror} ${x1} ${y4}
|
|
1951
|
+
L ${x1} ${y4} ${x4} ${y4}`;
|
|
1952
|
+
}
|
|
1953
|
+
else {
|
|
1954
|
+
return `M ${x1} ${y1}
|
|
1955
|
+
L ${x1} ${y1} ${x4} ${y1}
|
|
1956
|
+
A ${control} ${control} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
1957
|
+
}
|
|
1958
|
+
case GanttLinkType.ff:
|
|
1959
|
+
x1 = source.after.x;
|
|
1960
|
+
y1 = source.after.y;
|
|
1961
|
+
x4 = target.after.x;
|
|
1962
|
+
y4 = target.after.y;
|
|
1963
|
+
isMirror = y4 > y1 ? 1 : 0;
|
|
1964
|
+
if (x4 > x1) {
|
|
1965
|
+
return `M ${x1} ${y1}
|
|
1966
|
+
L ${x1} ${y1} ${x4} ${y1}
|
|
1967
|
+
A ${control} ${control} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
1968
|
+
}
|
|
1969
|
+
else {
|
|
1970
|
+
return `M ${x1} ${y1}
|
|
1971
|
+
A ${control} ${control} 0 1 ${isMirror} ${x1} ${y4}
|
|
1972
|
+
L ${x1} ${y4} ${x4} ${y4}`;
|
|
1973
|
+
}
|
|
1974
|
+
case GanttLinkType.sf:
|
|
1975
|
+
x1 = target.after.x;
|
|
1976
|
+
y1 = target.after.y;
|
|
1977
|
+
x4 = source.before.x;
|
|
1978
|
+
y4 = source.before.y;
|
|
1979
|
+
}
|
|
1921
1980
|
const dx = Math.abs(x4 - x1) * this.bezierWeight;
|
|
1922
1981
|
const x2 = x1 - dx;
|
|
1923
1982
|
const x3 = x4 + dx;
|
|
@@ -1975,13 +2034,14 @@ class GanttLinksComponent {
|
|
|
1975
2034
|
this.links = [];
|
|
1976
2035
|
this.linkItems.forEach((source) => {
|
|
1977
2036
|
if (source.origin.start || source.origin.end) {
|
|
1978
|
-
source.links.forEach((
|
|
1979
|
-
const target = this.linkItems.find((item) => item.id ===
|
|
2037
|
+
source.links.forEach((link) => {
|
|
2038
|
+
const target = this.linkItems.find((item) => item.id === link.link);
|
|
1980
2039
|
if (target && (target.origin.start || target.origin.end)) {
|
|
1981
2040
|
this.links.push({
|
|
1982
|
-
path: this.generatePath(source, target),
|
|
2041
|
+
path: this.generatePath(source, target, link.type),
|
|
1983
2042
|
source: source.origin,
|
|
1984
2043
|
target: target.origin,
|
|
2044
|
+
type: link.type,
|
|
1985
2045
|
color: source.end.getTime() > target.start.getTime() ? LinkColors.blocked : LinkColors.default
|
|
1986
2046
|
});
|
|
1987
2047
|
}
|
|
@@ -2015,7 +2075,7 @@ class GanttLinksComponent {
|
|
|
2015
2075
|
}
|
|
2016
2076
|
}
|
|
2017
2077
|
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: GanttDragContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
2018
|
-
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", 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
|
|
2078
|
+
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", 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 [style]=\"'marker-end: url(#triangle' + i + ')'\"\n ></path>\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n (mouseenter)=\"mouseEnterPath(link)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n [attr.d]=\"link.path\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <!-- <defs>\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 </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"] }] });
|
|
2019
2079
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, decorators: [{
|
|
2020
2080
|
type: Component,
|
|
2021
2081
|
args: [{
|