@smarterplan/ngx-smarterplan-core 1.2.27 → 1.2.29
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/esm2020/lib/services/navigator.service.mjs +47 -10
- package/esm2020/lib/services/viewer.service.mjs +1 -1
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +46 -9
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +45 -9
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/services/navigator.service.d.ts +5 -1
- package/package.json +1 -1
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
|
-
import {
|
|
3
|
+
import { first } from 'rxjs/operators';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./matterport.service";
|
|
6
6
|
import * as i2 from "./viewer.service";
|
|
7
7
|
import * as i3 from "./models/zone.service";
|
|
8
8
|
import * as i4 from "./user.service";
|
|
9
9
|
import * as i5 from "./zoneChange.service";
|
|
10
|
+
import * as i6 from "@angular/router";
|
|
10
11
|
export class NavigatorService {
|
|
11
|
-
constructor(matterportService, viewerService, zoneService, userService, zoneChangeService) {
|
|
12
|
+
constructor(matterportService, viewerService, zoneService, userService, zoneChangeService, router, route) {
|
|
12
13
|
this.matterportService = matterportService;
|
|
13
14
|
this.viewerService = viewerService;
|
|
14
15
|
this.zoneService = zoneService;
|
|
15
16
|
this.userService = userService;
|
|
16
17
|
this.zoneChangeService = zoneChangeService;
|
|
18
|
+
this.router = router;
|
|
19
|
+
this.route = route;
|
|
17
20
|
this.visitLastPosition = new Map();
|
|
18
21
|
this.locationIDChange = new Subject();
|
|
19
22
|
this.navBarZoneIDChange = new Subject();
|
|
@@ -28,7 +31,7 @@ export class NavigatorService {
|
|
|
28
31
|
}
|
|
29
32
|
});
|
|
30
33
|
this.matterportService.currentSweep
|
|
31
|
-
|
|
34
|
+
//.pipe(debounceTime<string>(1500)) // delays values emitted and return only the latest
|
|
32
35
|
.subscribe((sweep) => {
|
|
33
36
|
if (sweep === this.currentSweep) {
|
|
34
37
|
return;
|
|
@@ -53,16 +56,18 @@ export class NavigatorService {
|
|
|
53
56
|
const lastPose = this.matterportService.poseCamera;
|
|
54
57
|
if (lastPose && this.currentModel3D && this.userService.cu) {
|
|
55
58
|
this.visitLastPosition.set(this.currentModel3D, {
|
|
56
|
-
sweep
|
|
57
|
-
|
|
59
|
+
/**Override sweep/rotation if exist */
|
|
60
|
+
sweep: this.targetSweep ?? lastPose.sweep,
|
|
61
|
+
rotation: this.targetRotation ?? lastPose.rotation,
|
|
58
62
|
});
|
|
59
63
|
}
|
|
60
64
|
this.currentModel3D = data.model3D;
|
|
61
65
|
}
|
|
62
66
|
else {
|
|
63
67
|
this.currentModel3D = data.model3D;
|
|
64
|
-
|
|
65
|
-
this.
|
|
68
|
+
/**Override sweep/rotation if exist. Target is reset after (null)*/
|
|
69
|
+
this.targetSweep = this.targetSweep ?? data.sweep;
|
|
70
|
+
this.targetRotation = this.targetRotation ?? data.rotation;
|
|
66
71
|
this.onViewerLoaded().catch((e) => console.log(e));
|
|
67
72
|
}
|
|
68
73
|
});
|
|
@@ -72,6 +77,35 @@ export class NavigatorService {
|
|
|
72
77
|
this.visitLastPosition = new Map();
|
|
73
78
|
}
|
|
74
79
|
});
|
|
80
|
+
this.route.queryParams.subscribe(params => {
|
|
81
|
+
const deepParamsBase64 = params['deepParams'];
|
|
82
|
+
if (deepParamsBase64) {
|
|
83
|
+
const deepParams = JSON.parse(atob(deepParamsBase64));
|
|
84
|
+
this.targetSweep = deepParams.sweepID;
|
|
85
|
+
this.targetRotation = deepParams.rotation;
|
|
86
|
+
/**Clear this query params */
|
|
87
|
+
this.router.navigate([], {
|
|
88
|
+
queryParams: { deepParams: null }, queryParamsHandling: "merge"
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
getDeepLink() {
|
|
94
|
+
let data = null;
|
|
95
|
+
if (this.currentSweep) { /**Todo check matterport mod and adapt */
|
|
96
|
+
data = {
|
|
97
|
+
sweepID: this.currentSweep,
|
|
98
|
+
rotation: this.matterportService.getCurrentCameraPosition().rotation
|
|
99
|
+
};
|
|
100
|
+
data = btoa(JSON.stringify(data));
|
|
101
|
+
}
|
|
102
|
+
const model3D = this.currentModel3D;
|
|
103
|
+
const url = this.router.createUrlTree([], {
|
|
104
|
+
relativeTo: this.route,
|
|
105
|
+
queryParams: { deepParams: data, model3D },
|
|
106
|
+
queryParamsHandling: "merge"
|
|
107
|
+
});
|
|
108
|
+
return `${location.origin}${url.toString()}`;
|
|
75
109
|
}
|
|
76
110
|
getLastPositionForModel(model3D) {
|
|
77
111
|
return this.visitLastPosition.get(model3D);
|
|
@@ -97,6 +131,9 @@ export class NavigatorService {
|
|
|
97
131
|
rotation = this.targetRotation
|
|
98
132
|
? this.targetRotation
|
|
99
133
|
: this.checkRotationForSweep(this.targetSweep);
|
|
134
|
+
/**Reset / Consume target */
|
|
135
|
+
this.targetRotation = null;
|
|
136
|
+
this.targetSweep = null;
|
|
100
137
|
}
|
|
101
138
|
else {
|
|
102
139
|
const lastPostion = this.getLastPositionForModel(this.currentModel3D);
|
|
@@ -164,12 +201,12 @@ export class NavigatorService {
|
|
|
164
201
|
// }
|
|
165
202
|
}
|
|
166
203
|
}
|
|
167
|
-
NavigatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, deps: [{ token: i1.MatterportService }, { token: i2.ViewerService }, { token: i3.ZoneService }, { token: i4.BaseUserService }, { token: i5.ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
204
|
+
NavigatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, deps: [{ token: i1.MatterportService }, { token: i2.ViewerService }, { token: i3.ZoneService }, { token: i4.BaseUserService }, { token: i5.ZoneChangeService }, { token: i6.Router }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
168
205
|
NavigatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, providedIn: 'root' });
|
|
169
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, decorators: [{
|
|
170
207
|
type: Injectable,
|
|
171
208
|
args: [{
|
|
172
209
|
providedIn: 'root',
|
|
173
210
|
}]
|
|
174
|
-
}], ctorParameters: function () { return [{ type: i1.MatterportService }, { type: i2.ViewerService }, { type: i3.ZoneService }, { type: i4.BaseUserService }, { type: i5.ZoneChangeService }]; } });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBV3JELE1BQU0sT0FBTyxnQkFBZ0I7SUFxQzNCLFlBQ1UsaUJBQW9DLEVBQ3BDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLFdBQTRCLEVBQzVCLGlCQUFvQztRQUpwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBN0I5QyxzQkFBaUIsR0FBa0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUk3RSxxQkFBZ0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV6RCx1QkFBa0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUzRCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBUTFDLHFCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBZWhELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZO2FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDthQUNyRSxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZ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QUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzVDLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztRQUVGLElBQ0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxFQUN2RDtZQUNBLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztZQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDMUQ7UUFDSCxJQUFJO0lBQ04sQ0FBQzs7NkdBMU5VLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFpvbmUgfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tICcuL3pvbmVDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4vdmlld2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvclNlcnZpY2Uge1xyXG4gIGN1cnJlbnRTd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgdGFyZ2V0U3dlZXA6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHRhcmdldFJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsO1xyXG5cclxuICBjdXJyZW50TW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRab25lOiBab25lIHwgbnVsbDtcclxuXHJcbiAgdmlzaXRMYXN0UG9zaXRpb246IE1hcDxzdHJpbmcsIHsgc3dlZXA6IHN0cmluZzsgcm90YXRpb246IGFueSB9PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgZmxvb3JUb0dvOiBab25lIHwgbnVsbDtcclxuXHJcbiAgbG9jYXRpb25JRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG5hdkJhclpvbmVJRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGlzVmlzaWJsZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjdXJyZW50TmF2QmFyTG9jYXRpb25JRDogc3RyaW5nO1xyXG5cclxuICBjdXJyZW50TmF2QmFyWm9uZUlEOiBzdHJpbmc7XHJcblxyXG4gIHpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwOiBab25lW10gfCBudWxsO1xyXG5cclxuICBhdWRpb1pvbmVzQ2hhbmdlOiBTdWJqZWN0PFpvbmVbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB6b25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgY3VycmVudEF1ZGlvWm9uZXM6IFpvbmVbXTtcclxuXHJcbiAgYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWF0dGVycG9ydFNlcnZpY2U6IE1hdHRlcnBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3dlZXBcclxuICAgICAgLnBpcGUoZmlyc3QoKSkgLy8gIHRha2UgZmlyc3QgaW4gb3JkZXIgbm90IHRvIHdhaXQgMiBzZWMgYW4gZmlyc3QgbG9hZFxyXG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICBpZiAodGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWU8c3RyaW5nPigxNTAwKSkgLy8gIGRlbGF5cyB2YWx1ZXMgZW1pdHRlZCBhbmQgcmV0dXJuIG9ubHkgdGhlIGxhdGVzdFxyXG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHN3ZWVwID09PSB0aGlzLmN1cnJlbnRTd2VlcCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHN3ZWVwO1xyXG4gICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMudmlld2VyU2VydmljZS52aWV3ZXJJc09uLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IHtcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgIG1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgc3dlZXA6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw7XHJcbiAgICAgIH0pID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCAhPT0gZGF0YS5zcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gZGF0YS5zcGFjZUlEO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRhdGEuc3BhY2VJRCkge1xyXG4gICAgICAgICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgLy8gc2F2ZSBsYXN0IHBvc2l0aW9uXHJcbiAgICAgICAgICBjb25zdCBsYXN0UG9zZSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UucG9zZUNhbWVyYTtcclxuICAgICAgICAgIGlmIChsYXN0UG9zZSAmJiB0aGlzLmN1cnJlbnRNb2RlbDNEICYmIHRoaXMudXNlclNlcnZpY2UuY3UpIHtcclxuICAgICAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbi5zZXQodGhpcy5jdXJyZW50TW9kZWwzRCwge1xyXG4gICAgICAgICAgICAgIHN3ZWVwOiBsYXN0UG9zZS5zd2VlcCxcclxuICAgICAgICAgICAgICByb3RhdGlvbjogbGFzdFBvc2Uucm90YXRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcclxuICAgICAgICAgIHRoaXMudGFyZ2V0U3dlZXAgPSBkYXRhLnN3ZWVwO1xyXG4gICAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IGRhdGEucm90YXRpb247XHJcbiAgICAgICAgICB0aGlzLm9uVmlld2VyTG9hZGVkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XHJcbiAgICAgIGlmICghaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICAvLyB1c2VyIGRpc2Nvbm5lY3RlZCwgY2xlYW4gTWFwXHJcbiAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbiA9IG5ldyBNYXAoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0UG9zaXRpb25Gb3JNb2RlbChtb2RlbDNEOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldChtb2RlbDNEKTtcclxuICB9XHJcblxyXG4gIGdvVG9Td2VlcFdpdGhSb3RhdGlvbihcclxuICAgIHN3ZWVwOiBzdHJpbmcsXHJcbiAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCA9IG51bGxcclxuICApIHtcclxuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX3N3ZWVwKHN3ZWVwLCByb3RhdGlvbik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnb1RvRmxvb3IoZmxvb3I6IFpvbmUpIHtcclxuICAgIGxldCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG51bGw7XHJcbiAgICBpZiAoZmxvb3IubWV0YWRhdGEpIHtcclxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBKU09OLnBhcnNlKGZsb29yLm1ldGFkYXRhKTtcclxuICAgICAgaWYgKG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19mbG9vcihcclxuICAgICAgZmxvb3IubmFtZSxcclxuICAgICAgbWF0dGVycG9ydEZsb29yU2VxdWVuY2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblZpZXdlckxvYWRlZCgpIHtcclxuICAgIGxldCBzd2VlcFRvR286IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnRhcmdldFN3ZWVwKSB7XHJcbiAgICAgIHN3ZWVwVG9HbyA9IHRoaXMudGFyZ2V0U3dlZXA7XHJcbiAgICAgIHJvdGF0aW9uID0gdGhpcy50YXJnZXRSb3RhdGlvblxyXG4gICAgICAgID8gdGhpcy50YXJnZXRSb3RhdGlvblxyXG4gICAgICAgIDogdGhpcy5jaGVja1JvdGF0aW9uRm9yU3dlZXAodGhpcy50YXJnZXRTd2VlcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xyXG4gICAgICBpZiAobGFzdFBvc3Rpb24pIHtcclxuICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcclxuICAgICAgICByb3RhdGlvbiA9IGxhc3RQb3N0aW9uLnJvdGF0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YXJnZXRSb3RhdGlvbikge1xyXG4gICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImdvIHRvIHN3ZWVwXCIsIHN3ZWVwVG9Hbyk7XHJcbiAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmxvb3JUb0dvKSB7XHJcbiAgICAgIHRoaXMuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcclxuICAgICAgdGhpcy5mbG9vclRvR28gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgZmlyc3QgbG9hZCBhbmQgem9uZXMgYXJlIG5vdCBzZXRcclxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuYXVkaW9JRFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrUm90YXRpb25Gb3JTd2VlcChzd2VlcDogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XHJcbiAgICBjb25zdCBsYXN0UG9zaXRpb24gPSB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XHJcbiAgICBpZiAobGFzdFBvc2l0aW9uICYmIGxhc3RQb3NpdGlvbi5zd2VlcCA9PT0gc3dlZXApIHtcclxuICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbi5yb3RhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCB6b25lc0ZvclN3ZWVwID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZT8uZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGF1ZGlvWm9uZXMgPSB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRTd2VlcClcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNDaGFuZ2UubmV4dChhdWRpb1pvbmVzKTtcclxuICAgIHRoaXMuY3VycmVudEF1ZGlvWm9uZXMgPSBhdWRpb1pvbmVzO1xyXG5cclxuICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXHJcbiAgICB6b25lc0ZvclN3ZWVwID0gem9uZXNGb3JTd2VlcC5maWx0ZXIoKHpvbmUpID0+ICF6b25lLmF1ZGlvKTtcclxuICAgIC8vIExJTkUgQkVMT1cgSVMgQ09NTUVOVEVEIFNJTkNFIENSRUFURVMgSU5GSU5JVEUgU1BJTk5FUiBGT1IgWk9ORVMgV0lUSE9VVCBBVURJTy4uLlxyXG4gICAgLy8gaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSB6b25lc0ZvclN3ZWVwLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICBpZiAoYS5zd2VlcElEcyEubGVuZ3RoID09PSBiLnN3ZWVwSURzIS5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxyXG4gICAgICAgICAgaWYgKGEubGF5ZXIgJiYgYi5sYXllcikge1xyXG4gICAgICAgICAgICAvLyBwdXQgdHlwZSBCVUlMRElORyBhdCB0aGUgZW5kXHJcbiAgICAgICAgICAgIHJldHVybiBhLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgICA/IC0xXHJcbiAgICAgICAgICAgICAgOiBiLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYS5wYXJlbnQ/LnN3ZWVwSURzID8gLTEgOiBiLnBhcmVudD8uc3dlZXBJRHMgPyAxIDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZXNGb3JVc2VyQ2hhbmdlLm5leHQoXHJcbiAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgIT09IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXBbMF1cclxuICAgICAgKSB7XHJcbiAgICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRab25lKTtcclxuICAgICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
211
|
+
}], ctorParameters: function () { return [{ type: i1.MatterportService }, { type: i2.ViewerService }, { type: i3.ZoneService }, { type: i4.BaseUserService }, { type: i5.ZoneChangeService }, { type: i6.Router }, { type: i6.ActivatedRoute }]; } });
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVlyRCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0MzQixZQUNVLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixXQUF3QixFQUN4QixXQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLEtBQXFCO1FBTnJCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBaEMvQixzQkFBaUIsR0FBa0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUk3RSxxQkFBZ0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV6RCx1QkFBa0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUzRCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBUTFDLHFCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBa0JoRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWTthQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyx1REFBdUQ7YUFDckUs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MUQ7UUFDSCxJQUFJO0lBQ04sQ0FBQzs7NkdBeFFVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFpvbmUgfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tICcuL3pvbmVDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4vdmlld2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0b3JTZXJ2aWNlIHtcclxuICBjdXJyZW50U3dlZXA6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHRhcmdldFN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICB0YXJnZXRSb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgY3VycmVudE1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICBjdXJyZW50Wm9uZTogWm9uZSB8IG51bGw7XHJcblxyXG4gIHZpc2l0TGFzdFBvc2l0aW9uOiBNYXA8c3RyaW5nLCB7IHN3ZWVwOiBzdHJpbmc7IHJvdGF0aW9uOiBhbnkgfT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGZsb29yVG9HbzogWm9uZSB8IG51bGw7XHJcblxyXG4gIGxvY2F0aW9uSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBuYXZCYXJab25lSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBpc1Zpc2libGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY3VycmVudE5hdkJhckxvY2F0aW9uSUQ6IHN0cmluZztcclxuXHJcbiAgY3VycmVudE5hdkJhclpvbmVJRDogc3RyaW5nO1xyXG5cclxuICB6b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgYXVkaW9ab25lc0NoYW5nZTogU3ViamVjdDxab25lW10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgem9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXSB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRBdWRpb1pvbmVzOiBab25lW107XHJcblxyXG4gIGF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3dlZXBcclxuICAgICAgLnBpcGUoZmlyc3QoKSkgLy8gIHRha2UgZmlyc3QgaW4gb3JkZXIgbm90IHRvIHdhaXQgMiBzZWMgYW4gZmlyc3QgbG9hZFxyXG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICBpZiAodGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAvLy5waXBlKGRlYm91bmNlVGltZTxzdHJpbmc+KDE1MDApKSAvLyAgZGVsYXlzIHZhbHVlcyBlbWl0dGVkIGFuZCByZXR1cm4gb25seSB0aGUgbGF0ZXN0XHJcbiAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoc3dlZXAgPT09IHRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gc3dlZXA7XHJcbiAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnZpZXdlcklzT24uc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YToge1xyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICBzd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcclxuICAgICAgfSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEICE9PSBkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBkYXRhLnNwYWNlSUQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGF0YS5zcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IG51bGw7XHJcbiAgICAgICAgICAvLyBzYXZlIGxhc3QgcG9zaXRpb25cclxuICAgICAgICAgIGNvbnN0IGxhc3RQb3NlID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5wb3NlQ2FtZXJhO1xyXG4gICAgICAgICAgaWYgKGxhc3RQb3NlICYmIHRoaXMuY3VycmVudE1vZGVsM0QgJiYgdGhpcy51c2VyU2VydmljZS5jdSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLnNldCh0aGlzLmN1cnJlbnRNb2RlbDNELCB7XHJcbiAgICAgICAgICAgICAgLyoqT3ZlcnJpZGUgc3dlZXAvcm90YXRpb24gaWYgZXhpc3QgKi9cclxuICAgICAgICAgICAgICBzd2VlcDogdGhpcy50YXJnZXRTd2VlcCA/PyBsYXN0UG9zZS5zd2VlcCxcclxuICAgICAgICAgICAgICByb3RhdGlvbjogdGhpcy50YXJnZXRSb3RhdGlvbiA/PyBsYXN0UG9zZS5yb3RhdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgICAgLyoqT3ZlcnJpZGUgc3dlZXAvcm90YXRpb24gaWYgZXhpc3QuIFRhcmdldCBpcyByZXNldCBhZnRlciAobnVsbCkqL1xyXG4gICAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IHRoaXMudGFyZ2V0U3dlZXAgPz8gZGF0YS5zd2VlcDtcclxuICAgICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uID8/IGRhdGEucm90YXRpb247XHJcbiAgICAgICAgICB0aGlzLm9uVmlld2VyTG9hZGVkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XHJcbiAgICAgIGlmICghaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICAvLyB1c2VyIGRpc2Nvbm5lY3RlZCwgY2xlYW4gTWFwXHJcbiAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbiA9IG5ldyBNYXAoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgZGVlcFBhcmFtc0Jhc2U2NCA9IHBhcmFtc1snZGVlcFBhcmFtcyddO1xyXG4gICAgICBpZihkZWVwUGFyYW1zQmFzZTY0KXtcclxuICAgICAgICBjb25zdCBkZWVwUGFyYW1zIDogYW55ID0gSlNPTi5wYXJzZShhdG9iKGRlZXBQYXJhbXNCYXNlNjQpKTtcclxuICAgICAgICB0aGlzLnRhcmdldFN3ZWVwID0gZGVlcFBhcmFtcy5zd2VlcElEO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSBkZWVwUGFyYW1zLnJvdGF0aW9uO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgLyoqQ2xlYXIgdGhpcyBxdWVyeSBwYXJhbXMgKi9cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGVlcFBhcmFtczogbnVsbCB9LCBxdWVyeVBhcmFtc0hhbmRsaW5nIDogXCJtZXJnZVwiXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgZ2V0RGVlcExpbmsoKSA6IHN0cmluZ3tcclxuICAgIGxldCBkYXRhID0gbnVsbDtcclxuXHJcbiAgICBpZih0aGlzLmN1cnJlbnRTd2VlcCl7IC8qKlRvZG8gY2hlY2sgbWF0dGVycG9ydCBtb2QgYW5kIGFkYXB0ICovXHJcbiAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgc3dlZXBJRCA6IHRoaXMuY3VycmVudFN3ZWVwLFxyXG4gICAgICAgIHJvdGF0aW9uIDogdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRDdXJyZW50Q2FtZXJhUG9zaXRpb24oKS5yb3RhdGlvblxyXG4gICAgICB9O1xyXG5cclxuICAgICAgZGF0YSA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBtb2RlbDNEID0gdGhpcy5jdXJyZW50TW9kZWwzRDtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdLCB7XHJcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRlZXBQYXJhbXM6IGRhdGEsIG1vZGVsM0QgfSxcclxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYCR7bG9jYXRpb24ub3JpZ2lufSR7dXJsLnRvU3RyaW5nKCl9YDtcclxuICB9XHJcblxyXG4gIGdldExhc3RQb3NpdGlvbkZvck1vZGVsKG1vZGVsM0Q6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KG1vZGVsM0QpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKFxyXG4gICAgc3dlZXA6IHN0cmluZyxcclxuICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbFxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fZ29fdG9fc3dlZXAoc3dlZXAsIHJvdGF0aW9uKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdvVG9GbG9vcihmbG9vcjogWm9uZSkge1xyXG4gICAgbGV0IG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbnVsbDtcclxuICAgIGlmIChmbG9vci5tZXRhZGF0YSkge1xyXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IEpTT04ucGFyc2UoZmxvb3IubWV0YWRhdGEpO1xyXG4gICAgICBpZiAobWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX2Zsb29yKFxyXG4gICAgICBmbG9vci5uYW1lLFxyXG4gICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVmlld2VyTG9hZGVkKCkge1xyXG4gICAgbGV0IHN3ZWVwVG9Hbzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBsZXQgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMudGFyZ2V0U3dlZXApIHtcclxuICAgICAgc3dlZXBUb0dvID0gdGhpcy50YXJnZXRTd2VlcDtcclxuICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uXHJcbiAgICAgICAgPyB0aGlzLnRhcmdldFJvdGF0aW9uXHJcbiAgICAgICAgOiB0aGlzLmNoZWNrUm90YXRpb25Gb3JTd2VlcCh0aGlzLnRhcmdldFN3ZWVwKTtcclxuICAgICAgICAvKipSZXNldCAvIENvbnN1bWUgdGFyZ2V0ICovXHJcbiAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xyXG4gICAgICBpZiAobGFzdFBvc3Rpb24pIHtcclxuICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcclxuICAgICAgICByb3RhdGlvbiA9IGxhc3RQb3N0aW9uLnJvdGF0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YXJnZXRSb3RhdGlvbikge1xyXG4gICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImdvIHRvIHN3ZWVwXCIsIHN3ZWVwVG9Hbyk7XHJcbiAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmxvb3JUb0dvKSB7XHJcbiAgICAgIHRoaXMuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcclxuICAgICAgdGhpcy5mbG9vclRvR28gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgZmlyc3QgbG9hZCBhbmQgem9uZXMgYXJlIG5vdCBzZXRcclxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuYXVkaW9JRFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrUm90YXRpb25Gb3JTd2VlcChzd2VlcDogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XHJcbiAgICBjb25zdCBsYXN0UG9zaXRpb24gPSB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XHJcbiAgICBpZiAobGFzdFBvc2l0aW9uICYmIGxhc3RQb3NpdGlvbi5zd2VlcCA9PT0gc3dlZXApIHtcclxuICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbi5yb3RhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCB6b25lc0ZvclN3ZWVwID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZT8uZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGF1ZGlvWm9uZXMgPSB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRTd2VlcClcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNDaGFuZ2UubmV4dChhdWRpb1pvbmVzKTtcclxuICAgIHRoaXMuY3VycmVudEF1ZGlvWm9uZXMgPSBhdWRpb1pvbmVzO1xyXG5cclxuICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXHJcbiAgICB6b25lc0ZvclN3ZWVwID0gem9uZXNGb3JTd2VlcC5maWx0ZXIoKHpvbmUpID0+ICF6b25lLmF1ZGlvKTtcclxuICAgIC8vIExJTkUgQkVMT1cgSVMgQ09NTUVOVEVEIFNJTkNFIENSRUFURVMgSU5GSU5JVEUgU1BJTk5FUiBGT1IgWk9ORVMgV0lUSE9VVCBBVURJTy4uLlxyXG4gICAgLy8gaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSB6b25lc0ZvclN3ZWVwLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICBpZiAoYS5zd2VlcElEcyEubGVuZ3RoID09PSBiLnN3ZWVwSURzIS5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxyXG4gICAgICAgICAgaWYgKGEubGF5ZXIgJiYgYi5sYXllcikge1xyXG4gICAgICAgICAgICAvLyBwdXQgdHlwZSBCVUlMRElORyBhdCB0aGUgZW5kXHJcbiAgICAgICAgICAgIHJldHVybiBhLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgICA/IC0xXHJcbiAgICAgICAgICAgICAgOiBiLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYS5wYXJlbnQ/LnN3ZWVwSURzID8gLTEgOiBiLnBhcmVudD8uc3dlZXBJRHMgPyAxIDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZXNGb3JVc2VyQ2hhbmdlLm5leHQoXHJcbiAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgIT09IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXBbMF1cclxuICAgICAgKSB7XHJcbiAgICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRab25lKTtcclxuICAgICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -386,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
386
386
|
providedIn: 'root',
|
|
387
387
|
}]
|
|
388
388
|
}], ctorParameters: function () { return [{ type: i1.PoiService }, { type: i2.MatterportService }]; } });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixPQUFPLEVBS1AsUUFBUSxHQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0csT0FBTyxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sNERBQTRELENBQUM7Ozs7QUFLcEgsTUFBTSxPQUFPLGFBQWE7SUFrRHhCLFlBQ1UsVUFBc0IsRUFDdEIsaUJBQW9DO1FBRHBDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQW5EdEMsZUFBVSxHQUFXLFlBQVksQ0FBQztRQU1uQyxlQUFVLEdBS1osSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVaLGlCQUFZLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU10QixrQkFBYSxHQUFHO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxNQUFNLEVBQUUsY0FBYztnQkFDdEIsSUFBSTtnQkFDSixDQUFDO2dCQUNELElBQUk7Z0JBQ0osQ0FBQzthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULElB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LENBQUM7d0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3FCQUM1QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7Z0JBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUI7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUF5QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLFlBQXFCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO0lBQ3JDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7OzBHQWplVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdHRlcnBvcnRTZXJ2aWNlfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZVRhZ1NlcnZpY2V9IGZyb20gJy4vdGFnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIERiT2JqZWN0VHlwZSxcclxuICBQT0ksXHJcbiAgVmlld2VySW50ZXJhY3Rpb25zLFxyXG4gIFBvaVR5cGUsXHJcbiAgQ29tbWVudCxcclxuICBFcXVpcG1lbnQsXHJcbiAgVGlja2V0LFxyXG4gIEZlYXR1cmUsXHJcbiAgU3BNb2R1bGUsXHJcbn0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9tb2RlbHMvcG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQge21ha2VTZWN1cml0eUNhbWVyYSwgc2VjdXJpdHlDYW1lcmFUeXBlfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL3NlY3VyaXR5LWNhbWVyYS9TZWN1cml0eUNhbWVyYVwiO1xyXG5pbXBvcnQge1ZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2h9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdmlldy1mcnVzdHVtLW1lc2gvVmlld0ZydXN0dW1NZXNoXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld2VyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSB2aWV3ZXJNb2RlOiBzdHJpbmcgPSAnTWF0dGVycG9ydCc7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50TW9kZWwzRDogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHRvdXJVcmw6IHN0cmluZztcclxuXHJcbiAgcHVibGljIHZpZXdlcklzT246IFN1YmplY3Q8e1xyXG4gICAgc3BhY2VJRDogc3RyaW5nIHwgbnVsbDtcclxuICAgIG1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcbiAgICBzd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9IHwgbnVsbDtcclxuICB9PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBkYXRhSXNMb2FkZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwdWJsaWMgaXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIHNob3dpbmdWaWV3ZXIgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIHN3ZWVwVG9Nb3ZlOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICBwdWJsaWMgcm90YXRpb25Ub01vdmU6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsO1xyXG5cclxuICBwdWJsaWMgdG9vbGJveFN0YXRlcyA9IHtcclxuICAgIGRvbGxob3VzZToge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgICAgaWNvbklkOiAndWktZG9sbGhvdXNlJyxcclxuICAgICAgc2hvdygpIHtcclxuICAgICAgfSxcclxuICAgICAgaGlkZSgpIHtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBmbG9vcnBsYW46IHtcclxuICAgICAgc3RhdDogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgbWVzdXJlOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgICBpY29uSWQ6ICd1aS1tZXN1cmUnLFxyXG4gICAgICBzaG93KCkge1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlKCkge1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGZpbHRlcjoge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBwcml2YXRlIGlzT2JqZWN0TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0TW9kZSgnTWF0dGVycG9ydCcpO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgVXRpbHNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgY2hlY2tNb2RlKGluZGV4TW9kZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3ZXJNb2RlID09PSBpbmRleE1vZGU7XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBTZXR0ZXJzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIHNldE1vZGUoaW5kZXhNb2RlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmlld2VyTW9kZSA9IGluZGV4TW9kZTtcclxuICB9XHJcblxyXG4gIHNldFRvdXJVcmwoXHJcbiAgICBtb2RlbDNkOiBzdHJpbmcsXHJcbiAgICBzaG93SWNvblBsYW46IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgc2hvd0ljb25Eb2xsaG91c2U6IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgc2hvd0ljb25GbG9vcnM6IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgZW5hYmxlUXVpY2tTdGFydDogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIC8vIHRoaXMudG91clVybCA9IGBodHRwczovL215Lm1hdHRlcnBvcnQuY29tL3Nob3cvP209JHttb2RlbDNkfSZwbGF5PTEmaHI9MCZndD0wJnRpdGxlPTAmbG9nPTAmYnJhbmQ9MCZzZWFyY2g9MCZhcHBsaWNhdGlvbktleT1xbjl3c2FzdXk1aDJmenJicm4xbnpyMGlkJm1kcz0wJm5ld3RhZ3M9MWA7XHJcbiAgICB0aGlzLnRvdXJVcmwgPSBgL2Fzc2V0cy9idW5kbGUvc2hvd2Nhc2UuaHRtbD9tPSR7bW9kZWwzZH0mcGxheT0xJmhyPTAmZ3Q9MCZ0aXRsZT0wJmxvZz0wJmJyYW5kPTAmc2VhcmNoPTAmYXBwbGljYXRpb25LZXk9cW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZCZtZHM9MCZuZXd0YWdzPTFgO1xyXG5cclxuICAgIGlmICghc2hvd0ljb25QbGFuKSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJmZwPTAnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzaG93SWNvbkRvbGxob3VzZSkge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZkaD0wJztcclxuICAgIH1cclxuICAgIGlmICghc2hvd0ljb25GbG9vcnMpIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmZj0wJztcclxuICAgIH1cclxuICAgIGlmIChlbmFibGVRdWlja1N0YXJ0KSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJnFzPTEnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2xlYXJBbGwoKSB7XHJcbiAgICAvLyB0aGlzLnN3ZWVwVG9Nb3ZlID0gbnVsbDtcclxuICAgIC8vIHRoaXMucm90YXRpb25Ub01vdmUgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5zaG93aW5nVmlld2VyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgICB0aGlzLnZpZXdlcklzT24ubmV4dCh7XHJcbiAgICAgICAgc3BhY2VJRDogbnVsbCxcclxuICAgICAgICBtb2RlbDNEOiBudWxsLFxyXG4gICAgICAgIHN3ZWVwOiBudWxsLFxyXG4gICAgICAgIHJvdGF0aW9uOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIEdldHRlcnNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgZ2V0TW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdlck1vZGU7XHJcbiAgfVxyXG5cclxuICBnZXRWaWV3ZXJTZWxlY3RlZFNlcnZpY2UoKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICAvLyBpZiAodGhpcy5jaGVja01vZGUoXCJNYXR0ZXJwb3J0XCIpKSB7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZ2V0TWF0dGVycG9ydFNlcnZpY2UoKTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiB0aGlzLmdldE1hdHRlcnBvcnRTZXJ2aWNlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRUb3VyVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudG91clVybDtcclxuICB9XHJcblxyXG4gIGdldE1hdHRlcnBvcnRTZXJ2aWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWF0dGVycG9ydFNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBHZW5lcmljIE1haW4gYWN0aW9uIGZ1bmN0aW9uc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIHNldFN3ZWVwVG9Nb3ZlKHN3ZWVwOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3dlZXBUb01vdmUgPSBzd2VlcDtcclxuICB9XHJcblxyXG4gIHNldFJvdGF0aW9uVG9Nb3ZlKHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9KSB7XHJcbiAgICB0aGlzLnJvdGF0aW9uVG9Nb3ZlID0gcm90YXRpb247XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25fbW92ZV90b190YWcoZWxlbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChlbGVtZW50SWQpO1xyXG4gICAgICBpZiAocmVzdWx0LnRhZykge1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ29Ub1RhZyhyZXN1bHQudGFnKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0LnN3ZWVwKSB7XHJcbiAgICAgICAgdGhpcy5zd2VlcFRvTW92ZSA9IHJlc3VsdC5zd2VlcDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIE1hdHRlcnRhZ3MgdG8gVmlld2VyXHJcbiAgICogQHBhcmFtIG9iamVjdHMgTGlzdCBvZiBvYmplY3RzICh0aWNrZXRzLCBlcXVpcG1lbnRzKSBldGMgdG8gYmUgYWRkZWQgYXMgTWF0dGVydGFnc1xyXG4gICAqL1xyXG4gIGFzeW5jIGFkZE9iamVjdFRhZ3NUb1ZpZXdlcihvYmplY3RzOiBEYk9iamVjdFR5cGVbXSkge1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIG9iamVjdHMubWFwKGFzeW5jIChvYmplY3QpID0+IHtcclxuICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pQnlFbGVtZW50SWQob2JqZWN0LmlkISk7XHJcbiAgICAgICAgaWYgKHBvaSAmJiBwb2kuY29vcmRpbmF0ZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25BZGRPYmplY3RGcm9tUE9JKG9iamVjdCwgcG9pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShvYmplY3Q6IERiT2JqZWN0VHlwZSwgcG9pOiBQT0kpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmNyZWF0ZU1hdHRlcnRhZ0Zyb21QT0koXHJcbiAgICAgICAgcG9pLnR5cGUhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwb2lcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIEN1cGl4XHJcbiAgICAvLyBUT0RPXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25fZGVsZXRlX2VsZW1lbnQoZWxlbWVudDogRGJPYmplY3RUeXBlKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmRlbGV0ZU1hdHRlcnRhZ0Zvck9iamVjdChlbGVtZW50LmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZSB0YWcgcGxhY2VtZW50IG1lbnUgdG8gYWRkIGEgbmV3IGVsZW1lbnQgZGVwZW5kaW5nIG9uIGl0cyB0eXBlIChUSUNLRVQsIERBVEEsIEVRVUlQTUVOVCBldGMpXHJcbiAgICovXHJcbiAgYXN5bmMgYWN0aW9uQWRkTmV3RWxlbWVudFRvVmlld2VyKHBvaVR5cGU6IFBvaVR5cGUpIHtcclxuICAgIHRoaXMuYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKTtcclxuXHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykgJiZcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSA9PT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE1hdHRlcnRhZ1doZW5BZGRpbmcocG9pVHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXVuY2hlcyB0aGUgcmVwb3NpdGlvbmluZyBvZiBhbiBleGlzdGluZyBNYXR0ZXJ0YWcgcmVsYXRlZCB0byBwYXJhbWV0ZXIgb2JqZWN0XHJcbiAgICogQHBhcmFtIGVsZW1lbnQgb2JqZWN0IChUSUNLRVQsIEVRVUlQTUVOVCwgRkVBVFVSRSwgZXRjKVxyXG4gICAqIEBwYXJhbSBwb2lUeXBlIHR5cGUgb2Ygb2JqZWN0XHJcbiAgICovXHJcbiAgYXN5bmMgYWN0aW9uUmVwb3NpdGlvbkVsZW1lbnRJblZpZXdlcihcclxuICAgIGVsZW1lbnQ6IERiT2JqZWN0VHlwZSxcclxuICAgIHBvaVR5cGU6IFBvaVR5cGVcclxuICApIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSAmJlxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpID09PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWRkTWF0dGVydGFnV2hlblJlcG9zaXRpb25pbmcocG9pVHlwZSwgZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgdGlja2V0IHBsYWNlbWVudCBtZW51IHRvIGFkZCBhIG5ldyB0aWNrZXRcclxuICAgKi9cclxuICBhY3Rpb25fY2FuY2VsZWQoKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmNhbmNlbEZvbGxvd2luZ0N1cnNvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25TaG93QWxsRmxvb3JzKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25TaG93QWxsRmxvb3JzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9kb2xsaG91c2UoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgIT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hY3Rpb25fY2FuY2VsZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbl90b29sYm94X2NhbmNlbF9tZXN1cmUoKTtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfZG9sbGhvdXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25fZmxvb3JwbGFuKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpICE9PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uX2NhbmNlbGVkKCk7XHJcbiAgICB9XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X2Zsb29ycGxhbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfbWVzdXJlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpICE9PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uX2NhbmNlbGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpO1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9tZXN1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X2NhbmNlbF9tZXN1cmUoKSB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X2NhbmNlbF9tZXN1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbl91cGRhdGVfcG9pKFxyXG4gICAgcG9pOiBQT0ksXHJcbiAgICBpc1ZhbGlkOiBib29sZWFuLFxyXG4gICAgZWxlbWVudDogRGJPYmplY3RUeXBlXHJcbiAgKTogUHJvbWlzZTxQT0k+IHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdFRhZyA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UubWF0dGVydGFnVG9Gb2xsb3dcclxuICAgICAgICAgID8gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5tYXR0ZXJ0YWdUb0ZvbGxvd1xyXG4gICAgICAgICAgOiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldExhc3RUYWcoKTtcclxuICAgICAgICBpZiAoIWxhc3RUYWcpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0TWF0dGVyVGFnRGF0YUZvck1hdHRlcnRhZyhsYXN0VGFnKTtcclxuICAgICAgICBpZiAoIXRhZ0RhdGEpIHtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocG9pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBvaU1ldGFkYXRhID0gKCEhcG9pICYmIHBvaS5tZXRhZGF0YSkgPyBKU09OLnBhcnNlKHBvaS5tZXRhZGF0YSkgOiB7fTtcclxuICAgICAgICBwb2lNZXRhZGF0YS5ub3JtYWwgPSB0YWdEYXRhLmdldE5vcm1hbCgpO1xyXG4gICAgICAgIGlmICghcG9pKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcG9pSW5wdXQgPSB7XHJcbiAgICAgICAgICBpZDogcG9pLmlkLFxyXG4gICAgICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXHJcbiAgICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkocG9pTWV0YWRhdGEpLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZFBvaTogUE9JID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLnVwZGF0ZVBvaShwb2lJbnB1dCk7XHJcbiAgICAgICAgdGFnRGF0YS5zZXRQb2kodXBkYXRlZFBvaSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZXRPYmplY3RBbmRQb2lJblRhZyhsYXN0VGFnLCBlbGVtZW50LCBQb2lUeXBlLkRFU0ssIHVwZGF0ZWRQb2kpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuaW5qZWN0SHRtbEluVGFnKFxyXG4gICAgICAgICAgcG9pLnR5cGUhLFxyXG4gICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgIGxhc3RUYWdcclxuICAgICAgICApO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0VGFnSWNvbkFuZE9wYWNpdHkobGFzdFRhZywgdGFnRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nb1RvVGFnKGxhc3RUYWcpO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVwZGF0ZWRQb2kpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZGVsZXRlTGFzdE1hdHRlcnRhZygpO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgfVxyXG5cclxuICBlZGl0T25seVRhZ1N0eWxlRm9yUG9pKHBvaTogUE9JLCBvYmplY3Q6IERiT2JqZWN0VHlwZSkge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgY29uc3QgdGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0VGFnRnJvbUVsZW1lbnRJZChwb2kuZWxlbWVudElEKTtcclxuICAgICAgaWYgKHRhZ0RhdGEudGFnKSB7XHJcbiAgICAgICAgY29uc3QgbWF0dGVydGFnRGF0YSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0TWF0dGVyVGFnRGF0YUZvck1hdHRlcnRhZyhcclxuICAgICAgICAgIHRhZ0RhdGEudGFnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBtYXR0ZXJ0YWdEYXRhLnNldE9iamVjdChvYmplY3QsIFBvaVR5cGUuUk9PTSk7XHJcbiAgICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5zZXRUYWdJY29uQW5kT3BhY2l0eSh0YWdEYXRhLnRhZywgbWF0dGVydGFnRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEljb25BbmRTZXRGb3JQb2kocG9pOiBQT0ksIGljb25QYXRoOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQocG9pLmVsZW1lbnRJRCk7XHJcbiAgICAgIGlmICh0YWdEYXRhLnRhZykge1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWRkTmV3SWNvbkFuZFNldEZvclRhZyh0YWdEYXRhLnRhZywgaWNvblBhdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUb1JlZ2lzdHJlZEljb25Gb3JQb2kocG9pOiBQT0ksIGljb25OYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQocG9pLmVsZW1lbnRJRCk7XHJcbiAgICAgIGlmICh0YWdEYXRhLnRhZykge1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0UmVnaXN0cmVkSWNvbkZvclRhZyh0YWdEYXRhLnRhZywgaWNvbk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVIdG1sVGFnRm9yUG9pV2l0aE9iamVjdChwb2k6IFBPSSwgb2JqZWN0OiBEYk9iamVjdFR5cGUpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQocG9pLmVsZW1lbnRJRCk7XHJcbiAgICAgIGlmICh0YWdEYXRhLnRhZykge1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UudXBkYXRlSW5qZWN0ZWRIdG1sRm9yVGFnSUQoXHJcbiAgICAgICAgICB0YWdEYXRhLnRhZyxcclxuICAgICAgICAgIG9iamVjdCxcclxuICAgICAgICAgIHBvaS50eXBlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW92ZSBhbiBleGlzdGluZyBwb2kgaW4gTWF0dGVycG9ydFxyXG4gICAqIEBwYXJhbSBwb2lcclxuICAgKiBAcGFyYW0gZWxlbWVudFxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvbl9tb3ZlX3BvaV92aXN1YWxseShcclxuICAgIHBvaTogUE9JLFxyXG4gICAgZWxlbWVudDogVGlja2V0IHwgRmVhdHVyZSB8IEVxdWlwbWVudCB8IENvbW1lbnRcclxuICApIHtcclxuICAgIGF3YWl0IHRoaXMuYWN0aW9uX2RlbGV0ZV9lbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgYXdhaXQgdGhpcy5hY3Rpb25BZGRPYmplY3RGcm9tUE9JKGVsZW1lbnQsIHBvaSk7XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICBDdXBpeFxyXG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICBNYXR0ZXJwb3J0XHJcbiAgICBodHRwczovL21hdHRlcnBvcnQuZ2l0aHViLmlvL3Nob3djYXNlLXNkay9kb2NzL3Nkay9yZWZlcmVuY2UvY3VycmVudC9tb2R1bGVzL21hdHRlcnRhZy5odG1sI2FkZFxyXG4gICAgaHR0cHM6Ly9tYXR0ZXJwb3J0LmdpdGh1Yi5pby9zaG93Y2FzZS1zZGsvZG9jcy9zZGsvcmVmZXJlbmNlL2N1cnJlbnQvbW9kdWxlcy9tYXR0ZXJ0YWcuaHRtbCNyZW1vdmVcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBhc3luYyBpbml0TWF0dGVycG9ydFNkayhcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgIG1vZGVsM0Q6IHN0cmluZyxcclxuICAgIHRhZ1NlcnZpY2U6IEJhc2VUYWdTZXJ2aWNlLFxyXG4gICAgbW9kdWxlOiBTcE1vZHVsZSA9IFNwTW9kdWxlLklNTU9cclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgaWYgKHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2RrKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuY2xlYXJBbGwoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlXHJcbiAgICAgIC5pbml0U2RrKHRhZ1NlcnZpY2UsIG1vZHVsZSlcclxuICAgICAgLnRoZW4oYXN5bmMgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IHtzZGt9ID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZTtcclxuXHJcbiAgICAgICAgICAvLyBUT0RPOiBhZGQgY29uZGl0aW9uIHdoZXRoZXIgd2Ugd2FudCB0byBlbmFibGUgaXQgb3Igbm90XHJcbiAgICAgICAgICAvLyBBZGRpdGlvbm5hbCBleHRlbnNpb25zIGZvciBNYXR0ZXJwb3J0XHJcbiAgICAgICAgICAvLyAxLiBTZWN1cml0eSBDYW1lcmEgd2l0aCBGcnVzdHVtIChGT1YpXHJcbiAgICAgICAgICAvLyAyLiBUT0RPIHJlZ2lzdGVyIGFsbCBuZXcgTWF0dGVycG9ydCBleHRlbnNpb25zIGhlcmUgKG5lc3RTZW5zb3IsIGxvZHMsIHNsb3RzLCAuLi4pXHJcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgIHNkay5TY2VuZS5yZWdpc3RlcihzZWN1cml0eUNhbWVyYVR5cGUsIG1ha2VTZWN1cml0eUNhbWVyYS5iaW5kKHNkay5TY2VuZSkpLFxyXG4gICAgICAgICAgICBzZGsuU2NlbmUucmVnaXN0ZXIoVmlld0ZydXN0dW1NZXNoVHlwZSwgbWFrZVZpZXdGcnVzdHVtTWVzaC5iaW5kKHNkay5TY2VuZSkpXHJcbiAgICAgICAgICBdKTtcclxuXHJcbiAgICAgICAgICBzZGsuQXBwLnN0YXRlLnN1YnNjcmliZShcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGFwcFN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgLy8gYXBwIHN0YXRlIGhhcyBjaGFuZ2VkXHJcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1RoZSBjdXJyZW50IHBoYXNlOiAnLCBhcHBTdGF0ZS5waGFzZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGFwcFN0YXRlLnBoYXNlID09PSBzZGsuQXBwLlBoYXNlLlBMQVlJTkcpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUaGUgYXBwIGlzIHBsYXlpbmcnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd2luZ1ZpZXdlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdlcklzT24ubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgIHNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgICAgIG1vZGVsM0QsXHJcbiAgICAgICAgICAgICAgICAgIHN3ZWVwOiB0aGlzLnN3ZWVwVG9Nb3ZlLFxyXG4gICAgICAgICAgICAgICAgICByb3RhdGlvbjogdGhpcy5yb3RhdGlvblRvTW92ZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhSXNMb2FkZWQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zd2VlcFRvTW92ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdGF0aW9uVG9Nb3ZlID0gbnVsbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRm9yYmlkZGVuU3dlZXBzKGZvcmJpZGRlblN3ZWVwczogc3RyaW5nW10pIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UucmVtb3ZlRm9yYmlkZGVuU3dlZXBzKGZvcmJpZGRlblN3ZWVwcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRPYmplY3QzRExvYWRlZEluUG9zaXRpb24ob2JqZWN0TG9hZGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT2JqZWN0TG9hZGVkID0gb2JqZWN0TG9hZGVkO1xyXG4gIH1cclxuXHJcbiAgaXNPYmplY3QzRExvYWRlZEluUG9zaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc09iamVjdExvYWRlZDtcclxuICB9XHJcbn1cclxuIl19
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixPQUFPLEVBS1AsUUFBUSxHQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0csT0FBTyxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sNERBQTRELENBQUM7Ozs7QUFNcEgsTUFBTSxPQUFPLGFBQWE7SUFrRHhCLFlBQ1UsVUFBc0IsRUFDdEIsaUJBQW9DO1FBRHBDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQW5EdEMsZUFBVSxHQUFXLFlBQVksQ0FBQztRQU1uQyxlQUFVLEdBS1osSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVaLGlCQUFZLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU10QixrQkFBYSxHQUFHO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxNQUFNLEVBQUUsY0FBYztnQkFDdEIsSUFBSTtnQkFDSixDQUFDO2dCQUNELElBQUk7Z0JBQ0osQ0FBQzthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxLQUFLO2FBQ1o7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLElBQUk7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJO2dCQUNKLENBQUM7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsS0FBSzthQUNaO1NBQ0YsQ0FBQztRQUNNLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBTXRDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUdEOzt5SEFFcUg7SUFFckgsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOzt5SEFFcUg7SUFFckgsT0FBTyxDQUFDLFNBQWlCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQ1IsT0FBZSxFQUNmLGVBQXdCLElBQUksRUFDNUIsb0JBQTZCLElBQUksRUFDakMsaUJBQTBCLElBQUksRUFDOUIsbUJBQTRCLElBQUk7UUFFaEMsMEtBQTBLO1FBQzFLLElBQUksQ0FBQyxPQUFPLEdBQUcsa0NBQWtDLE9BQU8sMkdBQTJHLENBQUM7UUFFcEssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUM7U0FDeEI7UUFDRCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osMkJBQTJCO1FBQzNCLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxJQUFJO2dCQUNYLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7O3lIQUVxSDtJQUVySCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsYUFBYTtRQUNiLHNDQUFzQztRQUN0QywwQ0FBMEM7UUFDMUMsSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O3lIQUVxSDtJQUNySCxjQUFjLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBbUM7UUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUFpQjtRQUN4QyxhQUFhO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2pDO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUF1QjtRQUNqRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFHLENBQUMsQ0FBQztZQUNoRSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFO2dCQUN6QixNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxNQUFvQixFQUFFLEdBQVE7UUFDekQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUNsRCxHQUFHLENBQUMsSUFBSyxFQUNULE1BQU0sRUFDTixHQUFHLENBQ0osQ0FBQztTQUNIO1FBQ0QsUUFBUTtRQUNSLE9BQU87UUFDUCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQXFCO1FBQy9DLGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUFDLE9BQWdCO1FBQ2hELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRWxDLGFBQWE7UUFDYixJQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLGtCQUFrQixDQUFDLE9BQU8sRUFDMUU7WUFDQSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLCtCQUErQixDQUNuQyxPQUFxQixFQUNyQixPQUFnQjtRQUVoQixJQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLGtCQUFrQixDQUFDLE9BQU8sRUFDMUU7WUFDQSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDOUU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLEVBQzFFO1lBQ0EsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLElBQ0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLEtBQUssa0JBQWtCLENBQUMsT0FBTyxFQUMxRTtZQUNBLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtRQUNELGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUN6RDtJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLEVBQzFFO1lBQ0EsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQ3JCLEdBQVEsRUFDUixPQUFnQixFQUNoQixPQUFxQjtRQUVyQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQjtvQkFDdEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUI7b0JBQzFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjtnQkFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjtnQkFFRCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM1RSxXQUFXLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDUixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzVCO2dCQUNELE1BQU0sUUFBUSxHQUFHO29CQUNmLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixFQUFFO29CQUN6QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFO29CQUN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7aUJBQ3RDLENBQUM7Z0JBQ0YsTUFBTSxVQUFVLEdBQVEsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUM5RixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQzFDLEdBQUcsQ0FBQyxJQUFLLEVBQ1QsT0FBTyxFQUNQLE9BQU8sQ0FDUixDQUFDO2dCQUNGLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFeEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0MsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFRLEVBQUUsTUFBb0I7UUFDbkQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FDdkUsT0FBTyxDQUFDLEdBQUcsQ0FDWixDQUFDO2dCQUNGLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDekU7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7UUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FBUSxFQUFFLFFBQWdCO1FBQ3BELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN0RTtTQUNGO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxHQUFRLEVBQUUsTUFBb0I7UUFDaEUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixDQUNyRCxPQUFPLENBQUMsR0FBRyxFQUNYLE1BQU0sRUFDTixHQUFHLENBQUMsSUFBSSxDQUNULENBQUM7YUFDSDtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsd0JBQXdCLENBQzVCLEdBQVEsRUFDUixPQUErQztRQUUvQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztzSEFFa0g7SUFFbEg7Ozs7cUhBSWlIO0lBRWpILEtBQUssQ0FBQyxpQkFBaUIsQ0FDckIsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUEwQixFQUMxQixTQUFtQixRQUFRLENBQUMsSUFBSTtRQUVoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUI7YUFDMUIsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUM7YUFDM0IsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLEVBQUMsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2dCQUVyQywwREFBMEQ7Z0JBQzFELHdDQUF3QztnQkFDeEMsd0NBQXdDO2dCQUN4QyxxRkFBcUY7Z0JBQ3JGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztvQkFDaEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDN0UsQ0FBQyxDQUFDO2dCQUVILEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDckIsVUFBVSxRQUFRO29CQUNoQix3QkFBd0I7b0JBQ3hCLHNEQUFzRDtvQkFDdEQsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTt3QkFDNUMscUNBQXFDO3dCQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7NEJBQ25CLE9BQU87NEJBQ1AsT0FBTzs0QkFDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7NEJBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYzt5QkFDOUIsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3FCQUM1QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7Z0JBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUI7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUF5QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLFlBQXFCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO0lBQ3JDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7OzBHQWxlVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdHRlcnBvcnRTZXJ2aWNlfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZVRhZ1NlcnZpY2V9IGZyb20gJy4vdGFnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIERiT2JqZWN0VHlwZSxcclxuICBQT0ksXHJcbiAgVmlld2VySW50ZXJhY3Rpb25zLFxyXG4gIFBvaVR5cGUsXHJcbiAgQ29tbWVudCxcclxuICBFcXVpcG1lbnQsXHJcbiAgVGlja2V0LFxyXG4gIEZlYXR1cmUsXHJcbiAgU3BNb2R1bGUsXHJcbn0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9tb2RlbHMvcG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQge21ha2VTZWN1cml0eUNhbWVyYSwgc2VjdXJpdHlDYW1lcmFUeXBlfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL3NlY3VyaXR5LWNhbWVyYS9TZWN1cml0eUNhbWVyYVwiO1xyXG5pbXBvcnQge1ZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2h9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdmlldy1mcnVzdHVtLW1lc2gvVmlld0ZydXN0dW1NZXNoXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRvci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3ZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHZpZXdlck1vZGU6IHN0cmluZyA9ICdNYXR0ZXJwb3J0JztcclxuXHJcbiAgcHVibGljIGN1cnJlbnRNb2RlbDNEOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgdG91clVybDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgdmlld2VySXNPbjogU3ViamVjdDx7XHJcbiAgICBzcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHVibGljIGRhdGFJc0xvYWRlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc2hvd2luZ1ZpZXdlciA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc3dlZXBUb01vdmU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyByb3RhdGlvblRvTW92ZTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyB0b29sYm94U3RhdGVzID0ge1xyXG4gICAgZG9sbGhvdXNlOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgICBpY29uSWQ6ICd1aS1kb2xsaG91c2UnLFxyXG4gICAgICBzaG93KCkge1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlKCkge1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGZsb29ycGxhbjoge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgICBtZXN1cmU6IHtcclxuICAgICAgc3RhdDogZmFsc2UsXHJcbiAgICAgIGljb25JZDogJ3VpLW1lc3VyZScsXHJcbiAgICAgIHNob3coKSB7XHJcbiAgICAgIH0sXHJcbiAgICAgIGhpZGUoKSB7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsdGVyOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIHByaXZhdGUgaXNPYmplY3RMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuc2V0TW9kZSgnTWF0dGVycG9ydCcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIFV0aWxzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGNoZWNrTW9kZShpbmRleE1vZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld2VyTW9kZSA9PT0gaW5kZXhNb2RlO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgU2V0dGVyc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBzZXRNb2RlKGluZGV4TW9kZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZpZXdlck1vZGUgPSBpbmRleE1vZGU7XHJcbiAgfVxyXG5cclxuICBzZXRUb3VyVXJsKFxyXG4gICAgbW9kZWwzZDogc3RyaW5nLFxyXG4gICAgc2hvd0ljb25QbGFuOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHNob3dJY29uRG9sbGhvdXNlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHNob3dJY29uRmxvb3JzOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIGVuYWJsZVF1aWNrU3RhcnQ6IGJvb2xlYW4gPSB0cnVlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLnRvdXJVcmwgPSBgaHR0cHM6Ly9teS5tYXR0ZXJwb3J0LmNvbS9zaG93Lz9tPSR7bW9kZWwzZH0mcGxheT0xJmhyPTAmZ3Q9MCZ0aXRsZT0wJmxvZz0wJmJyYW5kPTAmc2VhcmNoPTAmYXBwbGljYXRpb25LZXk9cW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZCZtZHM9MCZuZXd0YWdzPTFgO1xyXG4gICAgdGhpcy50b3VyVXJsID0gYC9hc3NldHMvYnVuZGxlL3Nob3djYXNlLmh0bWw/bT0ke21vZGVsM2R9JnBsYXk9MSZocj0wJmd0PTAmdGl0bGU9MCZsb2c9MCZicmFuZD0wJnNlYXJjaD0wJmFwcGxpY2F0aW9uS2V5PXFuOXdzYXN1eTVoMmZ6cmJybjFuenIwaWQmbWRzPTAmbmV3dGFncz0xYDtcclxuXHJcbiAgICBpZiAoIXNob3dJY29uUGxhbikge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZmcD0wJztcclxuICAgIH1cclxuICAgIGlmICghc2hvd0ljb25Eb2xsaG91c2UpIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmZGg9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3dJY29uRmxvb3JzKSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJmY9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoZW5hYmxlUXVpY2tTdGFydCkge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZxcz0xJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsZWFyQWxsKCkge1xyXG4gICAgLy8gdGhpcy5zd2VlcFRvTW92ZSA9IG51bGw7XHJcbiAgICAvLyB0aGlzLnJvdGF0aW9uVG9Nb3ZlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMuc2hvd2luZ1ZpZXdlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgIHNwYWNlSUQ6IG51bGwsXHJcbiAgICAgICAgbW9kZWwzRDogbnVsbCxcclxuICAgICAgICBzd2VlcDogbnVsbCxcclxuICAgICAgICByb3RhdGlvbjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBHZXR0ZXJzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGdldE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3ZXJNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld2VyU2VsZWN0ZWRTZXJ2aWNlKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgLy8gaWYgKHRoaXMuY2hlY2tNb2RlKFwiTWF0dGVycG9ydFwiKSkge1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLmdldE1hdHRlcnBvcnRTZXJ2aWNlKCk7XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRNYXR0ZXJwb3J0U2VydmljZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG91clVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRvdXJVcmw7XHJcbiAgfVxyXG5cclxuICBnZXRNYXR0ZXJwb3J0U2VydmljZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgR2VuZXJpYyBNYWluIGFjdGlvbiBmdW5jdGlvbnNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBzZXRTd2VlcFRvTW92ZShzd2VlcDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN3ZWVwVG9Nb3ZlID0gc3dlZXA7XHJcbiAgfVxyXG5cclxuICBzZXRSb3RhdGlvblRvTW92ZShyb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSkge1xyXG4gICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IHJvdGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX21vdmVfdG9fdGFnKGVsZW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQoZWxlbWVudElkKTtcclxuICAgICAgaWYgKHJlc3VsdC50YWcpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdvVG9UYWcocmVzdWx0LnRhZyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdC5zd2VlcCkge1xyXG4gICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSByZXN1bHQuc3dlZXA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBNYXR0ZXJ0YWdzIHRvIFZpZXdlclxyXG4gICAqIEBwYXJhbSBvYmplY3RzIExpc3Qgb2Ygb2JqZWN0cyAodGlja2V0cywgZXF1aXBtZW50cykgZXRjIHRvIGJlIGFkZGVkIGFzIE1hdHRlcnRhZ3NcclxuICAgKi9cclxuICBhc3luYyBhZGRPYmplY3RUYWdzVG9WaWV3ZXIob2JqZWN0czogRGJPYmplY3RUeXBlW10pIHtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICBvYmplY3RzLm1hcChhc3luYyAob2JqZWN0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG9iamVjdC5pZCEpO1xyXG4gICAgICAgIGlmIChwb2kgJiYgcG9pLmNvb3JkaW5hdGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShvYmplY3QsIHBvaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbkFkZE9iamVjdEZyb21QT0kob2JqZWN0OiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jcmVhdGVNYXR0ZXJ0YWdGcm9tUE9JKFxyXG4gICAgICAgIHBvaS50eXBlISxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcG9pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBDdXBpeFxyXG4gICAgLy8gVE9ET1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2RlbGV0ZV9lbGVtZW50KGVsZW1lbnQ6IERiT2JqZWN0VHlwZSkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5kZWxldGVNYXR0ZXJ0YWdGb3JPYmplY3QoZWxlbWVudC5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgdGFnIHBsYWNlbWVudCBtZW51IHRvIGFkZCBhIG5ldyBlbGVtZW50IGRlcGVuZGluZyBvbiBpdHMgdHlwZSAoVElDS0VULCBEQVRBLCBFUVVJUE1FTlQgZXRjKVxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvbkFkZE5ld0VsZW1lbnRUb1ZpZXdlcihwb2lUeXBlOiBQb2lUeXBlKSB7XHJcbiAgICB0aGlzLmFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCk7XHJcblxyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpICYmXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgPT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGRNYXR0ZXJ0YWdXaGVuQWRkaW5nKHBvaVR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF1bmNoZXMgdGhlIHJlcG9zaXRpb25pbmcgb2YgYW4gZXhpc3RpbmcgTWF0dGVydGFnIHJlbGF0ZWQgdG8gcGFyYW1ldGVyIG9iamVjdFxyXG4gICAqIEBwYXJhbSBlbGVtZW50IG9iamVjdCAoVElDS0VULCBFUVVJUE1FTlQsIEZFQVRVUkUsIGV0YylcclxuICAgKiBAcGFyYW0gcG9pVHlwZSB0eXBlIG9mIG9iamVjdFxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvblJlcG9zaXRpb25FbGVtZW50SW5WaWV3ZXIoXHJcbiAgICBlbGVtZW50OiBEYk9iamVjdFR5cGUsXHJcbiAgICBwb2lUeXBlOiBQb2lUeXBlXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykgJiZcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSA9PT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE1hdHRlcnRhZ1doZW5SZXBvc2l0aW9uaW5nKHBvaVR5cGUsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHRpY2tldCBwbGFjZW1lbnQgbWVudSB0byBhZGQgYSBuZXcgdGlja2V0XHJcbiAgICovXHJcbiAgYWN0aW9uX2NhbmNlbGVkKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jYW5jZWxGb2xsb3dpbmdDdXJzb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uU2hvd0FsbEZsb29ycygpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uU2hvd0FsbEZsb29ycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfZG9sbGhvdXNlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpICE9PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uX2NhbmNlbGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCk7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X2RvbGxob3VzZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2Zsb29ycGxhbigpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9mbG9vcnBsYW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X21lc3VyZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKTtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfbWVzdXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25fdXBkYXRlX3BvaShcclxuICAgIHBvaTogUE9JLFxyXG4gICAgaXNWYWxpZDogYm9vbGVhbixcclxuICAgIGVsZW1lbnQ6IERiT2JqZWN0VHlwZVxyXG4gICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIGNvbnN0IGxhc3RUYWcgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLm1hdHRlcnRhZ1RvRm9sbG93XHJcbiAgICAgICAgICA/IHRoaXMubWF0dGVycG9ydFNlcnZpY2UubWF0dGVydGFnVG9Gb2xsb3dcclxuICAgICAgICAgIDogdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRMYXN0VGFnKCk7XHJcbiAgICAgICAgaWYgKCFsYXN0VGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldE1hdHRlclRhZ0RhdGFGb3JNYXR0ZXJ0YWcobGFzdFRhZyk7XHJcbiAgICAgICAgaWYgKCF0YWdEYXRhKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwb2lNZXRhZGF0YSA9ICghIXBvaSAmJiBwb2kubWV0YWRhdGEpID8gSlNPTi5wYXJzZShwb2kubWV0YWRhdGEpIDoge307XHJcbiAgICAgICAgcG9pTWV0YWRhdGEubm9ybWFsID0gdGFnRGF0YS5nZXROb3JtYWwoKTtcclxuICAgICAgICBpZiAoIXBvaSkge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICAgICAgaWQ6IHBvaS5pZCxcclxuICAgICAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxyXG4gICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHBvaU1ldGFkYXRhKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQb2k6IFBPSSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS51cGRhdGVQb2kocG9pSW5wdXQpO1xyXG4gICAgICAgIHRhZ0RhdGEuc2V0UG9pKHVwZGF0ZWRQb2kpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0T2JqZWN0QW5kUG9pSW5UYWcobGFzdFRhZywgZWxlbWVudCwgUG9pVHlwZS5ERVNLLCB1cGRhdGVkUG9pKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmluamVjdEh0bWxJblRhZyhcclxuICAgICAgICAgIHBvaS50eXBlISxcclxuICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICBsYXN0VGFnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFRhZ0ljb25BbmRPcGFjaXR5KGxhc3RUYWcsIHRhZ0RhdGEpO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ29Ub1RhZyhsYXN0VGFnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1cGRhdGVkUG9pKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmRlbGV0ZUxhc3RNYXR0ZXJ0YWcoKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gIH1cclxuXHJcbiAgZWRpdE9ubHlUYWdTdHlsZUZvclBvaShwb2k6IFBPSSwgb2JqZWN0OiBEYk9iamVjdFR5cGUpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQocG9pLmVsZW1lbnRJRCk7XHJcbiAgICAgIGlmICh0YWdEYXRhLnRhZykge1xyXG4gICAgICAgIGNvbnN0IG1hdHRlcnRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldE1hdHRlclRhZ0RhdGFGb3JNYXR0ZXJ0YWcoXHJcbiAgICAgICAgICB0YWdEYXRhLnRhZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgbWF0dGVydGFnRGF0YS5zZXRPYmplY3Qob2JqZWN0LCBQb2lUeXBlLlJPT00pO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0VGFnSWNvbkFuZE9wYWNpdHkodGFnRGF0YS50YWcsIG1hdHRlcnRhZ0RhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRJY29uQW5kU2V0Rm9yUG9pKHBvaTogUE9JLCBpY29uUGF0aDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE5ld0ljb25BbmRTZXRGb3JUYWcodGFnRGF0YS50YWcsIGljb25QYXRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVG9SZWdpc3RyZWRJY29uRm9yUG9pKHBvaTogUE9JLCBpY29uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFJlZ2lzdHJlZEljb25Gb3JUYWcodGFnRGF0YS50YWcsIGljb25OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSHRtbFRhZ0ZvclBvaVdpdGhPYmplY3QocG9pOiBQT0ksIG9iamVjdDogRGJPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnVwZGF0ZUluamVjdGVkSHRtbEZvclRhZ0lEKFxyXG4gICAgICAgICAgdGFnRGF0YS50YWcsXHJcbiAgICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgICBwb2kudHlwZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgYW4gZXhpc3RpbmcgcG9pIGluIE1hdHRlcnBvcnRcclxuICAgKiBAcGFyYW0gcG9pXHJcbiAgICogQHBhcmFtIGVsZW1lbnRcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25fbW92ZV9wb2lfdmlzdWFsbHkoXHJcbiAgICBwb2k6IFBPSSxcclxuICAgIGVsZW1lbnQ6IFRpY2tldCB8IEZlYXR1cmUgfCBFcXVpcG1lbnQgfCBDb21tZW50XHJcbiAgKSB7XHJcbiAgICBhd2FpdCB0aGlzLmFjdGlvbl9kZWxldGVfZWxlbWVudChlbGVtZW50KTtcclxuICAgIGF3YWl0IHRoaXMuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShlbGVtZW50LCBwb2kpO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgQ3VwaXhcclxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgTWF0dGVycG9ydFxyXG4gICAgaHR0cHM6Ly9tYXR0ZXJwb3J0LmdpdGh1Yi5pby9zaG93Y2FzZS1zZGsvZG9jcy9zZGsvcmVmZXJlbmNlL2N1cnJlbnQvbW9kdWxlcy9tYXR0ZXJ0YWcuaHRtbCNhZGRcclxuICAgIGh0dHBzOi8vbWF0dGVycG9ydC5naXRodWIuaW8vc2hvd2Nhc2Utc2RrL2RvY3Mvc2RrL3JlZmVyZW5jZS9jdXJyZW50L21vZHVsZXMvbWF0dGVydGFnLmh0bWwjcmVtb3ZlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgYXN5bmMgaW5pdE1hdHRlcnBvcnRTZGsoXHJcbiAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICBtb2RlbDNEOiBzdHJpbmcsXHJcbiAgICB0YWdTZXJ2aWNlOiBCYXNlVGFnU2VydmljZSxcclxuICAgIG1vZHVsZTogU3BNb2R1bGUgPSBTcE1vZHVsZS5JTU1PXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEID0gc3BhY2VJRDtcclxuICAgIGlmICh0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNkaykge1xyXG4gICAgICBhd2FpdCB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZVxyXG4gICAgICAuaW5pdFNkayh0YWdTZXJ2aWNlLCBtb2R1bGUpXHJcbiAgICAgIC50aGVuKGFzeW5jIChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCB7c2RrfSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2U7XHJcblxyXG4gICAgICAgICAgLy8gVE9ETzogYWRkIGNvbmRpdGlvbiB3aGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGl0IG9yIG5vdFxyXG4gICAgICAgICAgLy8gQWRkaXRpb25uYWwgZXh0ZW5zaW9ucyBmb3IgTWF0dGVycG9ydFxyXG4gICAgICAgICAgLy8gMS4gU2VjdXJpdHkgQ2FtZXJhIHdpdGggRnJ1c3R1bSAoRk9WKVxyXG4gICAgICAgICAgLy8gMi4gVE9ETyByZWdpc3RlciBhbGwgbmV3IE1hdHRlcnBvcnQgZXh0ZW5zaW9ucyBoZXJlIChuZXN0U2Vuc29yLCBsb2RzLCBzbG90cywgLi4uKVxyXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICBzZGsuU2NlbmUucmVnaXN0ZXIoc2VjdXJpdHlDYW1lcmFUeXBlLCBtYWtlU2VjdXJpdHlDYW1lcmEuYmluZChzZGsuU2NlbmUpKSxcclxuICAgICAgICAgICAgc2RrLlNjZW5lLnJlZ2lzdGVyKFZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2guYmluZChzZGsuU2NlbmUpKVxyXG4gICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgICAgc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhcHBTdGF0ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUaGUgY3VycmVudCBwaGFzZTogJywgYXBwU3RhdGUucGhhc2UpO1xyXG4gICAgICAgICAgICAgIGlmIChhcHBTdGF0ZS5waGFzZSA9PT0gc2RrLkFwcC5QaGFzZS5QTEFZSU5HKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgICBtb2RlbDNELFxyXG4gICAgICAgICAgICAgICAgICBzd2VlcDogdGhpcy5zd2VlcFRvTW92ZSxcclxuICAgICAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb25Ub01vdmUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUlzTG9hZGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKG9iamVjdExvYWRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc09iamVjdExvYWRlZCA9IG9iamVjdExvYWRlZDtcclxuICB9XHJcblxyXG4gIGlzT2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNPYmplY3RMb2FkZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -21,7 +21,7 @@ import AccidentIcon from '@iconify-icons/mdi/alert';
|
|
|
21
21
|
import WordOrderIcon from '@iconify-icons/mdi/account-hard-hat';
|
|
22
22
|
import ReportingIcon from '@iconify-icons/mdi/file-document-outline';
|
|
23
23
|
import MaintenanceIcon from '@iconify-icons/mdi/tools';
|
|
24
|
-
import { first
|
|
24
|
+
import { first } from 'rxjs/operators';
|
|
25
25
|
import * as i1$3 from '@angular/platform-browser';
|
|
26
26
|
import { Observable as Observable$1 } from 'rxjs/internal/Observable';
|
|
27
27
|
import * as i3 from '@angular/forms';
|
|
@@ -6507,12 +6507,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
6507
6507
|
} });
|
|
6508
6508
|
|
|
6509
6509
|
class NavigatorService {
|
|
6510
|
-
constructor(matterportService, viewerService, zoneService, userService, zoneChangeService) {
|
|
6510
|
+
constructor(matterportService, viewerService, zoneService, userService, zoneChangeService, router, route) {
|
|
6511
6511
|
this.matterportService = matterportService;
|
|
6512
6512
|
this.viewerService = viewerService;
|
|
6513
6513
|
this.zoneService = zoneService;
|
|
6514
6514
|
this.userService = userService;
|
|
6515
6515
|
this.zoneChangeService = zoneChangeService;
|
|
6516
|
+
this.router = router;
|
|
6517
|
+
this.route = route;
|
|
6516
6518
|
this.visitLastPosition = new Map();
|
|
6517
6519
|
this.locationIDChange = new Subject();
|
|
6518
6520
|
this.navBarZoneIDChange = new Subject();
|
|
@@ -6527,7 +6529,7 @@ class NavigatorService {
|
|
|
6527
6529
|
}
|
|
6528
6530
|
});
|
|
6529
6531
|
this.matterportService.currentSweep
|
|
6530
|
-
|
|
6532
|
+
//.pipe(debounceTime<string>(1500)) // delays values emitted and return only the latest
|
|
6531
6533
|
.subscribe((sweep) => {
|
|
6532
6534
|
if (sweep === this.currentSweep) {
|
|
6533
6535
|
return;
|
|
@@ -6538,6 +6540,7 @@ class NavigatorService {
|
|
|
6538
6540
|
}
|
|
6539
6541
|
});
|
|
6540
6542
|
this.viewerService.viewerIsOn.subscribe((data) => {
|
|
6543
|
+
var _a, _b, _c, _d;
|
|
6541
6544
|
if (this.currentSpaceID !== data.spaceID) {
|
|
6542
6545
|
this.currentSpaceID = data.spaceID;
|
|
6543
6546
|
}
|
|
@@ -6552,16 +6555,18 @@ class NavigatorService {
|
|
|
6552
6555
|
const lastPose = this.matterportService.poseCamera;
|
|
6553
6556
|
if (lastPose && this.currentModel3D && this.userService.cu) {
|
|
6554
6557
|
this.visitLastPosition.set(this.currentModel3D, {
|
|
6555
|
-
sweep
|
|
6556
|
-
|
|
6558
|
+
/**Override sweep/rotation if exist */
|
|
6559
|
+
sweep: (_a = this.targetSweep) !== null && _a !== void 0 ? _a : lastPose.sweep,
|
|
6560
|
+
rotation: (_b = this.targetRotation) !== null && _b !== void 0 ? _b : lastPose.rotation,
|
|
6557
6561
|
});
|
|
6558
6562
|
}
|
|
6559
6563
|
this.currentModel3D = data.model3D;
|
|
6560
6564
|
}
|
|
6561
6565
|
else {
|
|
6562
6566
|
this.currentModel3D = data.model3D;
|
|
6563
|
-
|
|
6564
|
-
this.
|
|
6567
|
+
/**Override sweep/rotation if exist. Target is reset after (null)*/
|
|
6568
|
+
this.targetSweep = (_c = this.targetSweep) !== null && _c !== void 0 ? _c : data.sweep;
|
|
6569
|
+
this.targetRotation = (_d = this.targetRotation) !== null && _d !== void 0 ? _d : data.rotation;
|
|
6565
6570
|
this.onViewerLoaded().catch((e) => console.log(e));
|
|
6566
6571
|
}
|
|
6567
6572
|
});
|
|
@@ -6571,6 +6576,35 @@ class NavigatorService {
|
|
|
6571
6576
|
this.visitLastPosition = new Map();
|
|
6572
6577
|
}
|
|
6573
6578
|
});
|
|
6579
|
+
this.route.queryParams.subscribe(params => {
|
|
6580
|
+
const deepParamsBase64 = params['deepParams'];
|
|
6581
|
+
if (deepParamsBase64) {
|
|
6582
|
+
const deepParams = JSON.parse(atob(deepParamsBase64));
|
|
6583
|
+
this.targetSweep = deepParams.sweepID;
|
|
6584
|
+
this.targetRotation = deepParams.rotation;
|
|
6585
|
+
/**Clear this query params */
|
|
6586
|
+
this.router.navigate([], {
|
|
6587
|
+
queryParams: { deepParams: null }, queryParamsHandling: "merge"
|
|
6588
|
+
});
|
|
6589
|
+
}
|
|
6590
|
+
});
|
|
6591
|
+
}
|
|
6592
|
+
getDeepLink() {
|
|
6593
|
+
let data = null;
|
|
6594
|
+
if (this.currentSweep) { /**Todo check matterport mod and adapt */
|
|
6595
|
+
data = {
|
|
6596
|
+
sweepID: this.currentSweep,
|
|
6597
|
+
rotation: this.matterportService.getCurrentCameraPosition().rotation
|
|
6598
|
+
};
|
|
6599
|
+
data = btoa(JSON.stringify(data));
|
|
6600
|
+
}
|
|
6601
|
+
const model3D = this.currentModel3D;
|
|
6602
|
+
const url = this.router.createUrlTree([], {
|
|
6603
|
+
relativeTo: this.route,
|
|
6604
|
+
queryParams: { deepParams: data, model3D },
|
|
6605
|
+
queryParamsHandling: "merge"
|
|
6606
|
+
});
|
|
6607
|
+
return `${location.origin}${url.toString()}`;
|
|
6574
6608
|
}
|
|
6575
6609
|
getLastPositionForModel(model3D) {
|
|
6576
6610
|
return this.visitLastPosition.get(model3D);
|
|
@@ -6599,6 +6633,9 @@ class NavigatorService {
|
|
|
6599
6633
|
rotation = this.targetRotation
|
|
6600
6634
|
? this.targetRotation
|
|
6601
6635
|
: this.checkRotationForSweep(this.targetSweep);
|
|
6636
|
+
/**Reset / Consume target */
|
|
6637
|
+
this.targetRotation = null;
|
|
6638
|
+
this.targetSweep = null;
|
|
6602
6639
|
}
|
|
6603
6640
|
else {
|
|
6604
6641
|
const lastPostion = this.getLastPositionForModel(this.currentModel3D);
|
|
@@ -6669,14 +6706,14 @@ class NavigatorService {
|
|
|
6669
6706
|
// }
|
|
6670
6707
|
}
|
|
6671
6708
|
}
|
|
6672
|
-
NavigatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, deps: [{ token: MatterportService }, { token: ViewerService }, { token: ZoneService }, { token: BaseUserService }, { token: ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6709
|
+
NavigatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, deps: [{ token: MatterportService }, { token: ViewerService }, { token: ZoneService }, { token: BaseUserService }, { token: ZoneChangeService }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6673
6710
|
NavigatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, providedIn: 'root' });
|
|
6674
6711
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NavigatorService, decorators: [{
|
|
6675
6712
|
type: Injectable,
|
|
6676
6713
|
args: [{
|
|
6677
6714
|
providedIn: 'root',
|
|
6678
6715
|
}]
|
|
6679
|
-
}], ctorParameters: function () { return [{ type: MatterportService }, { type: ViewerService }, { type: ZoneService }, { type: BaseUserService }, { type: ZoneChangeService }]; } });
|
|
6716
|
+
}], ctorParameters: function () { return [{ type: MatterportService }, { type: ViewerService }, { type: ZoneService }, { type: BaseUserService }, { type: ZoneChangeService }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }]; } });
|
|
6680
6717
|
|
|
6681
6718
|
class InterventionService {
|
|
6682
6719
|
constructor(eventService, missionService) {
|