@smarterplan/ngx-smarterplan-core 1.0.29 → 1.0.31
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/matterport-import.service.mjs +3 -1
- package/esm2020/lib/services/models/measurement.service.mjs +16 -10
- package/esm2020/lib/services/models/property.service.mjs +13 -3
- package/esm2020/lib/services/models/space.service.mjs +27 -7
- package/esm2020/lib/services/viewer.service.mjs +2 -2
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +1639 -1603
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +1563 -1529
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/services/models/measurement.service.d.ts +1 -0
- package/lib/services/models/space.service.d.ts +9 -1
- package/package.json +1 -1
|
@@ -290,6 +290,8 @@ export class MatterportImportService {
|
|
|
290
290
|
const layerFloor = await this.getLayerByName("FLOOR");
|
|
291
291
|
const sweepsInfo = Object.values(this.sweeps);
|
|
292
292
|
const sweepsForFloor = sweepsInfo.filter((sweepInfo) => sweepInfo.floorInfo.id === this.currentFloor.id);
|
|
293
|
+
console.log("current floor", this.currentFloor);
|
|
294
|
+
console.log("sweeps for floor", sweepsForFloor.length);
|
|
293
295
|
const sweepIDs = sweepsForFloor.map((sweep) => sweep.uuid);
|
|
294
296
|
const zone = await this.createZone(`Étage ${name} - ${node.metadata}`, layerFloor.id, null, defautZoneID, sweepIDs, node, JSON.stringify({ matterportFloorSequence: this.currentFloor.sequence }));
|
|
295
297
|
// TODO link to scans
|
|
@@ -346,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
346
348
|
providedIn: "root",
|
|
347
349
|
}]
|
|
348
350
|
}], ctorParameters: function () { return [{ type: i1.NavigationService }, { type: i2.ZoneService }, { type: i3.ViewerService }, { type: i4.LayerService }, { type: i5.BaseUserService }, { type: i6.PlanService }]; } });
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBS3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQThCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7OztBQU83RixNQUFNLE9BQU8sdUJBQXVCO0lBeUNoQyxZQUNZLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixXQUE0QixFQUM1QixXQUF3QjtRQUx4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWhCN0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0Qsd0JBQW1CLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFFN0QscUJBQWdCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFFekQscUJBQWdCLEdBQUcsR0FBRyxDQUFDO0lBUzNCLENBQUM7SUFq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LENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQ2hFLElBQUksRUFDSixZQUFZLENBQ2YsQ0FBQztRQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEI7UUFDRCxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1RSxDQUFDOztvSEF4YlEsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTsyRkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QsIHdhaXQsIHdhaXRVbnRpbCB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGV2ZWxTdGF0dXMsIExheWVyLCBOb2RlLCBab25lLCBOYXZpZ2F0aW9uLCBQbGFuIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGF5ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2xheWVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBsYW5TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3BsYW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBab25lU2VydmljZSB9IGZyb20gXCIuL21vZGVscy96b25lLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdXBsb2FkSnNvblRvUzMsIHVwbG9hZEJhc2U2NEltYWdlLCByZW1vdmVBbGxGaWxlc0Zyb21Gb2xkZXJTMyB9IGZyb20gXCIuL3MzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tIFwiLi92aWV3ZXIuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXR0ZXJwb3J0SW1wb3J0U2VydmljZSB7XHJcbiAgICBwcml2YXRlIGN1cnJlbnRGcmFtZTtcclxuXHJcbiAgICBwdWJsaWMgc2RrOiBhbnk7XHJcblxyXG4gICAgcHJpdmF0ZSBzd2VlcHM6IE9iamVjdDtcclxuXHJcbiAgICBwdWJsaWMgZmxvb3JzOiBPYmplY3Q7XHJcblxyXG4gICAgcHJpdmF0ZSBjdXJyZW50Rmxvb3I7XHJcblxyXG4gICAgcHJpdmF0ZSBfbW9kZWxJRDogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgX3NwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNwYWNlSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3BhY2VJRDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IHNwYWNlSUQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3NwYWNlSUQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1vZGVsSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWxJRDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IG1vZGVsSUQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX21vZGVsSUQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RvcCA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBpbXBvcnRpbmdJbWFnZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAgIHB1YmxpYyBzd2VlcFByb2Nlc3NlZENvdW50OiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblxyXG4gICAgcHVibGljIHRvdGFsU3dlZXBzQ291bnQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuXHJcbiAgICBwcml2YXRlIE1BWF9TQ0FOU19SRUxPQUQgPSAxMDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBhc3luYyBpbml0U2RrRm9yTW9kZWwobW9kZWxJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhpcy5zdG9wID0gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIExvYWQgU0RLXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJMb2FkaW5nIE1hdHRlcnBvcnQgU0RLXCIpO1xyXG4gICAgICAgIHRoaXMubW9kZWxJRCA9IG1vZGVsSUQ7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcclxuICAgICAgICBpZiAoIWlmcmFtZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGlmcmFtZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnNldFRvdXJVcmwobW9kZWxJRCk7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy52aWV3ZXJTZXJ2aWNlLmdldFRvdXJVcmwoKTtcclxuICAgICAgICBpZnJhbWUuc2V0QXR0cmlidXRlKFwic3JjXCIsIHVybCk7XHJcbiAgICAgICAgaWZyYW1lLmFsbG93ID0gXCJ4ci1zcGF0aWFsLXRyYWNraW5nXCI7XHJcbiAgICAgICAgaWZyYW1lLmhlaWdodCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIGlmcmFtZS53aWR0aCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIGlmcmFtZS5pZCA9IFwidmlld2VyLW1vZHVsZVwiO1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3ZpZXdlci1mcmFtZVwiKTtcclxuICAgICAgICBlbGVtZW50LmFwcGVuZChpZnJhbWUpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZyYW1lID0gaWZyYW1lO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdGhpcy5zZGsgPSBhd2FpdCB3aW5kb3cuTVBfU0RLLmNvbm5lY3QoXHJcbiAgICAgICAgICAgICAgICBpZnJhbWUsIFwicW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZFwiLCBcIjMuMTFcIlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gRmxvb3IgZGF0YVxyXG4gICAgICAgICAgICB0aGlzLnNkay5GbG9vci5kYXRhLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBvbkNvbGxlY3Rpb25VcGRhdGVkOiBmdW5jdGlvbiB1cGQoY29sbGVjdGlvbjogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJGbG9vcnNcIiwgY29sbGVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG9vcnMgPSBjb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIGN1cnJlbnQgRmxvb3JcclxuICAgICAgICAgICAgdGhpcy5zZGsuRmxvb3IuY3VycmVudC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1cGQoY3VycmVudEZsb29yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Rmxvb3IgPSBjdXJyZW50Rmxvb3I7XHJcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gU3dlZXAgZGF0YVxyXG4gICAgICAgICAgICB0aGlzLnNkay5Td2VlcC5kYXRhLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBvbkNvbGxlY3Rpb25VcGRhdGVkOiBmdW5jdGlvbiB1cGQoY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZSBlbnRpcmUgdXAtdG8tZGF0ZSBjb2xsZWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN3ZWVwcyA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgbGFiZWxzXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2RrLlNldHRpbmdzLnVwZGF0ZShcImxhYmVsc1wiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCB0aW1lb3V0RXhwaXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBzdGFydCB0aW1lb3V0XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGltZW91dEV4cGlyZWQgPSB0cnVlLCA3MDAwKTtcclxuICAgICAgICAgICAgYXdhaXQgd2FpdFVudGlsKCgpID0+ICh0aGlzLnN3ZWVwcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZmxvb3JzICE9PSB1bmRlZmluZWQpIHx8IHRpbWVvdXRFeHBpcmVkID09PSB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKHRpbWVvdXRFeHBpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgbGlrZWx5IGluIG1hdHRlcnBvcnQgZXJyb3IgY2FzZSAodGhhdCB3ZSBjYW5ub3QgY2F0Y2ghKVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0aW1lb3V0IGludGl0aWFsaXNpbmcgTWF0dGVycG9ydFwiKTtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVycm9yIGluaXQgTWF0dGVycG9ydFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImluaXQgZG9uZVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZXJyb3IgaW5pdCBNYXR0ZXJwb3J0XCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbXBvcnREYXRhKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBzdXJmYWNlOiBudW1iZXIsXHJcbiAgICAgICAgcmVsb2FkaW5nOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICAgICAgbm9kZTogTm9kZSA9IG51bGwsXHJcbiAgICApOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc3dlZXBzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJubyBzd2VlcHMgaW5pdGlhbGl6ZWRcIikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYXBwSXNMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNkay5BcHAuc3RhdGUuc3Vic2NyaWJlKGZ1bmN0aW9uIChhcHBTdGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBhcHAgc3RhdGUgaGFzIGNoYW5nZWRcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1RoZSBjdXJyZW50IHBoYXNlOiAnLCBhcHBTdGF0ZS5waGFzZSk7XHJcbiAgICAgICAgICAgIGlmIChhcHBTdGF0ZS5waGFzZSA9PT0gXCJhcHBwaGFzZS5wbGF5aW5nXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUaGUgYXBwIGlzIHBsYXlpbmcnKTtcclxuICAgICAgICAgICAgICAgIGFwcElzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiBhcHBJc0xvYWRlZCA9PT0gdHJ1ZSk7XHJcbiAgICAgICAgaWYgKHJlbG9hZGluZykge1xyXG4gICAgICAgICAgICAvLyBwZXJmb3JtIG9ubHkgMzYwIGltcG9ydCBzaW5jZSB3ZSBhcmUgcmVsb2FkaW5nXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW1wb3J0MzYwaW1hZ2VzKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2xlYW5Mb2NhbFN0b3JhZ2UoKTsgLy8gd2UgYXJlIGltcG9ydGluZyBuZXcgdmlzaXRcclxuICAgICAgICB0aGlzLnNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgICAgIGxldCBmbG9vclpvbmVzOiBab25lW10gPSBbXTtcclxuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IG1haW5ab25lID0gem9uZXMuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xyXG4gICAgICAgIGlmICghbWFpblpvbmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIm1pc3NpbmcgZGF0YSAobm8gbWFpbiBCdWlsZGluZyBab25lKVwiKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW1wb3J0aW5nIGRhdGEgZnJvbSBtYXR0ZXJwb3J0XCIpO1xyXG4gICAgICAgIC8vIHNhdmUgc3dlZXBzIGRhdGEgYXMganNvblxyXG4gICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShPYmplY3QudmFsdWVzKHRoaXMuc3dlZXBzKSk7XHJcbiAgICAgICAgYXdhaXQgdXBsb2FkSnNvblRvUzMoXHJcbiAgICAgICAgICAgIGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L2ludmVudG9yeS9gLFxyXG4gICAgICAgICAgICBqc29uLFxyXG4gICAgICAgICAgICBcImRhdGEuanNvblwiLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gY2hlY2sgbGF5ZXIgb2YgYnVpbGRpbmcgdHlwZVxyXG4gICAgICAgIGNvbnN0IGxheWVyQnVpbGRpbmcgPSBhd2FpdCB0aGlzLmdldExheWVyQnlOYW1lKFwiQlVJTERJTkdcIik7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlZERlZmF1bHRab25lID0gYXdhaXQgdGhpcy5jcmVhdGVab25lKFxyXG4gICAgICAgICAgICBub2RlLm1ldGFkYXRhLFxyXG4gICAgICAgICAgICBsYXllckJ1aWxkaW5nLmlkLFxyXG4gICAgICAgICAgICBzdXJmYWNlLFxyXG4gICAgICAgICAgICBtYWluWm9uZS5pZCxcclxuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zd2VlcHMpLFxyXG4gICAgICAgICAgICBub2RlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKCFjcmVhdGVkRGVmYXVsdFpvbmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmZsb29ycykge1xyXG4gICAgICAgICAgICBmbG9vclpvbmVzID0gYXdhaXQgdGhpcy5pbXBvcnRGbG9vckRhdGEoXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkRGVmYXVsdFpvbmUuaWQsXHJcbiAgICAgICAgICAgICAgICBub2RlLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhmbG9vclpvbmVzKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5zd2VlcHMpLm1hcChhc3luYyAoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzd2VlcEluZm8gPSB0aGlzLnN3ZWVwc1trZXldO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmF2aWdhdGlvbklucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBzd2VlcEluZm8udXVpZCxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogSlNPTi5zdHJpbmdpZnkoc3dlZXBJbmZvLnBvc2l0aW9uKSxcclxuICAgICAgICAgICAgICAgICAgICByb3RhdGlvbjogSlNPTi5zdHJpbmdpZnkoc3dlZXBJbmZvLnJvdGF0aW9uKSxcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogTGV2ZWxTdGF0dXMuTE9XLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vZGVJRDogbm9kZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgfSBhcyBOYXZpZ2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmF2ID0gYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5jcmVhdGVOYXZpZ2F0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnB1dCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5hdikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvdWxkIGNyZWF0ZSBuYXZpZ2F0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnB1dC5pZCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaW1wb3J0MzYwaW1hZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlWm9uZShcclxuICAgICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgbGF5ZXJJRDogc3RyaW5nLFxyXG4gICAgICAgIHN1cmZhY2U6IG51bWJlciA9IG51bGwsXHJcbiAgICAgICAgcGFyZW50SUQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICAgICAgc3dlZXBzOiBzdHJpbmdbXSA9IFtdLFxyXG4gICAgICAgIG5vZGU6IE5vZGUgPSBudWxsLFxyXG4gICAgICAgIG1ldGFkYXRhOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICAgICAgY29uc3Qgem9uZUlucHV0ID0ge1xyXG4gICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICBzcGFjZUlEOiB0aGlzLnNwYWNlSUQsXHJcbiAgICAgICAgICAgIGxheWVySUQsXHJcbiAgICAgICAgICAgIHN3ZWVwSURzOiBzd2VlcHMsXHJcbiAgICAgICAgICAgIG5vZGVJRHM6IG5vZGUgPyBbbm9kZS5pZF0gOiBudWxsLFxyXG4gICAgICAgIH0gYXMgWm9uZTtcclxuICAgICAgICByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3Qoem9uZUlucHV0KTtcclxuICAgICAgICBpZiAoc3VyZmFjZSkge1xyXG4gICAgICAgICAgICB6b25lSW5wdXQuc3VyZmFjZSA9IHN1cmZhY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJlbnRJRCkge1xyXG4gICAgICAgICAgICB6b25lSW5wdXQucGFyZW50SUQgPSBwYXJlbnRJRDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1ldGFkYXRhKSB7XHJcbiAgICAgICAgICAgIHpvbmVJbnB1dC5tZXRhZGF0YSA9IG1ldGFkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBuZXdMb2NhbCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuY3JlYXRlKHpvbmVJbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIG5ld0xvY2FsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGltcG9ydDM2MGltYWdlcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkltcG9ydGluZyAzNjAgaW1hZ2VzXCIpO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nSW1hZ2VzLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjYW5zID0gT2JqZWN0LnZhbHVlcyh0aGlzLnN3ZWVwcyk7XHJcbiAgICAgICAgICAgIGxldCBtYXhTY2FuO1xyXG4gICAgICAgICAgICBsZXQgaW5kZXhTY2FuO1xyXG4gICAgICAgICAgICBjb25zdCBubWJTY2FucyA9IE9iamVjdC5rZXlzKHNjYW5zKS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVG90YWwgbnVtYmVyIG9mIHNjYW4gcG9pbnRzIDpcIiwgbm1iU2NhbnMpO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsU3dlZXBzQ291bnQubmV4dChubWJTY2Fucyk7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHdlIHN0YXJ0ZWQgdG8gbG9hZCBpbWFnZXMgYWxyZWFkeVxyXG4gICAgICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJpbmRleFNjYW5Mb2FkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICAgICBcInJldGFraW5nIGltcG9ydCBmcm9tIHNjYW5cIixcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImluZGV4U2NhbkxvYWRcIiksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaW5kZXhTY2FuID0gK2xvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaW5kZXhTY2FuTG9hZFwiKTtcclxuICAgICAgICAgICAgICAgIG5tYlNjYW5zIDwgaW5kZXhTY2FuICsgdGhpcy5NQVhfU0NBTlNfUkVMT0FEXHJcbiAgICAgICAgICAgICAgICAgICAgPyAobWF4U2NhbiA9IG5tYlNjYW5zKVxyXG4gICAgICAgICAgICAgICAgICAgIDogKG1heFNjYW4gPSBpbmRleFNjYW4gKyB0aGlzLk1BWF9TQ0FOU19SRUxPQUQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5kZXhTY2FuID0gMDtcclxuICAgICAgICAgICAgICAgIG5tYlNjYW5zIDwgdGhpcy5NQVhfU0NBTlNfUkVMT0FEID8gKG1heFNjYW4gPSBubWJTY2FucykgOiAobWF4U2NhbiA9IHRoaXMuTUFYX1NDQU5TX1JFTE9BRCk7XHJcbiAgICAgICAgICAgICAgICBtYXhTY2FuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IGluZGV4U2NhbjsgaW5kZXggPCBtYXhTY2FuOyBpbmRleCArPSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RvcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2RrLlN3ZWVwLm1vdmVUbyhzY2Fuc1tpbmRleF0udXVpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZGsuQ2FtZXJhLnNldFJvdGF0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSBhd2FpdCB0aGlzLnNkay5SZW5kZXJlci50YWtlRXF1aXJlY3Rhbmd1bGFyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHdpZHRoOiAyMDQ4LCBoZWlnaHQ6IDEwMjQgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtYXR0ZXJ0YWdzOiBmYWxzZSwgc3dlZXBzOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB1cGxvYWRCYXNlNjRJbWFnZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2Fuc1tpbmRleF0udXVpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vc3dlZXBzL2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3dlZXBcIixcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3dlZXBQcm9jZXNzZWRDb3VudC5uZXh0KGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImluZGV4U2NhbkxvYWRcIiwgaW5kZXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQWJhbmRvbmluZyBpbXBvcnQgYmVjYXVzZSBpdCB3YXMgY2FuY2VsbGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChtYXhTY2FuID09PSBubWJTY2Fucykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJJbXBvcnQgMzYwIGRvbmVcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFuTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZyYW1lKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5zdG9wKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0byByZXN0YXJ0IHRoZSBwcm9jZWR1cmUgZnJvbSB3aGVyZSB3ZSBsZWZ0IG9mXHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImluZGV4U2NhbkxvYWRcIiwgbWF4U2Nhbi50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwidmlzaXRJbkltcG9ydFwiLCB0aGlzLm1vZGVsSUQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW92ZVRvRmxvb3IoZmxvb3JOYW1lOiBzdHJpbmcsIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlOiBudW1iZXIgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZsb29ycykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZsb29yIGFyZSBub3QgbG9hZGVkIHlldFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBsb29rIHVwIGZvciBzZXF1ZW5jZSBudW1iZXIgKHRoZSBzYWZlc3QgbWV0aG9kKVxyXG4gICAgICAgIGxldCBmbG9vck1hdHRlcnBvcnQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvb3JzKS5maW5kKFxyXG4gICAgICAgICAgICAoZmxvb3IpID0+IGZsb29yLnNlcXVlbmNlID09PSBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghZmxvb3JNYXR0ZXJwb3J0KSB7XHJcbiAgICAgICAgICAgIGZsb29yTWF0dGVycG9ydCA9IE9iamVjdC52YWx1ZXModGhpcy5mbG9vcnMpLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZmxvb3IpID0+IGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5uYW1lKSAmJiBmbG9vci5uYW1lICE9IFwiXCIsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZmxvb3JNYXR0ZXJwb3J0KSB7XHJcbiAgICAgICAgICAgIGZsb29yTWF0dGVycG9ydCA9IE9iamVjdC52YWx1ZXModGhpcy5mbG9vcnMpLmZpbmQoKGZsb29yKSA9PlxyXG4gICAgICAgICAgICAgICAgZmxvb3JOYW1lLmluY2x1ZGVzKGZsb29yLmlkKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZmxvb3JNYXR0ZXJwb3J0KVxyXG4gICAgICAgIGlmIChmbG9vck1hdHRlcnBvcnQpIHtcclxuICAgICAgICAgICAgbGV0IHJldHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgd2hpbGUgKHJldHJ5KSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb29ySW5kZXggPSBhd2FpdCB0aGlzLnNkay5GbG9vci5tb3ZlVG8oZmxvb3JNYXR0ZXJwb3J0LnNlcXVlbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm1vdmVkIHRvIGZsb29ySW5kZXhcIiwgZmxvb3JJbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0cnkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDYW5ub3QgbW92ZSB0byBGbG9vclwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd2FpdCgxMDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gbWF0dGVycG9ydCBmbG9vciBmb3VuZCB0byBtb3ZlIHRvXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0Rmxvb3JEYXRhKFxyXG4gICAgICAgIGRlZmF1dFpvbmVJRDogc3RyaW5nLFxyXG4gICAgICAgIG5vZGU6IE5vZGUsXHJcbiAgICApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IHpvbmVzID0gW107XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZGsuTW9kZS5tb3ZlVG8odGhpcy5zZGsuTW9kZS5Nb2RlLkZMT09SUExBTik7XHJcbiAgICAgICAgY29uc3Qgbm1iRmxvb3JzID0gT2JqZWN0LmtleXModGhpcy5mbG9vcnMpLmxlbmd0aDtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlRvdGFsIG51bWJlciBvZiBmbG9vcnNcIiwgbm1iRmxvb3JzKTtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbm1iRmxvb3JzOyBpbmRleCArPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSW1wb3J0aW5nIGZsb29yXCIsIGluZGV4KTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZGsuRmxvb3IubW92ZVRvKGluZGV4KS50aGVuKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHdhaXQoNzAwKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWJvdXQgdG8gc2F2ZSB0aGUgZmxvb3JcIiwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuc2F2ZUZsb29yKGRlZmF1dFpvbmVJRCwgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInJlY2VpdmVkIGZsb29yIHpvbmVcIiwgem9uZSk7XHJcbiAgICAgICAgICAgICAgICB6b25lcy5wdXNoKHpvbmUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh6b25lcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBzYXZlRmxvb3IoZGVmYXV0Wm9uZUlEOiBzdHJpbmcsIG5vZGU6IE5vZGUpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY3VycmVudEZsb29yLmlkO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGbG9vci5uYW1lICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSB0aGlzLmN1cnJlbnRGbG9vci5uYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsYXllckZsb29yID0gYXdhaXQgdGhpcy5nZXRMYXllckJ5TmFtZShcIkZMT09SXCIpO1xyXG4gICAgICAgIGNvbnN0IHN3ZWVwc0luZm8gPSBPYmplY3QudmFsdWVzKHRoaXMuc3dlZXBzKTtcclxuICAgICAgICBjb25zdCBzd2VlcHNGb3JGbG9vciA9IHN3ZWVwc0luZm8uZmlsdGVyKFxyXG4gICAgICAgICAgICAoc3dlZXBJbmZvKSA9PiBzd2VlcEluZm8uZmxvb3JJbmZvLmlkID09PSB0aGlzLmN1cnJlbnRGbG9vci5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHN3ZWVwSURzOiBzdHJpbmdbXSA9IHN3ZWVwc0ZvckZsb29yLm1hcCgoc3dlZXApID0+IHN3ZWVwLnV1aWQpO1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgICAgICAgIGDDiXRhZ2UgJHtuYW1lfSAtICR7bm9kZS5tZXRhZGF0YX1gLFxyXG4gICAgICAgICAgICBsYXllckZsb29yLmlkLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBkZWZhdXRab25lSUQsXHJcbiAgICAgICAgICAgIHN3ZWVwSURzLFxyXG4gICAgICAgICAgICBub2RlLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlOiB0aGlzLmN1cnJlbnRGbG9vci5zZXF1ZW5jZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gVE9ETyBsaW5rIHRvIHNjYW5zXHJcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgdGhpcy5zZGsuUmVuZGVyZXIudGFrZVNjcmVlblNob3QoXHJcbiAgICAgICAgICAgIHsgd2lkdGg6IDQwOTYsIGhlaWdodDogMjA0OCB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VJRHNob3J0ID0gdGhpcy5zcGFjZUlELnNsaWNlKDAsIDgpO1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZEJhc2U2NEltYWdlKFxyXG4gICAgICAgICAgICBiYXNlNjQsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3BsYW5zL2AsXHJcbiAgICAgICAgICAgIGBwbGFuX2Zsb29yXyR7dGhpcy5jdXJyZW50Rmxvb3IuaWR9XyR7c3BhY2VJRHNob3J0fWAsXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBjcmVhdGUgUGxhbiBvYmplY3RcclxuICAgICAgICBjb25zdCBwbGFuID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBgcGxhbl9mbG9vcl8ke3RoaXMuY3VycmVudEZsb29yLmlkfWAsXHJcbiAgICAgICAgICAgIGFubmV4ZTogYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vcGxhbnMvcGxhbl9mbG9vcl8ke3RoaXMuY3VycmVudEZsb29yLmlkfV8ke3NwYWNlSURzaG9ydH0uanBlZ2AsXHJcbiAgICAgICAgICAgIHpvbmVJRDogem9uZS5pZCxcclxuICAgICAgICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICAgICBpc0N1cnJlbnRGb3Jab25lOiB0cnVlLFxyXG4gICAgICAgICAgICBpc01vZGlmaWVkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNJbXBvcnRlZE1hdHRlcnBvcnQ6IHRydWUsXHJcbiAgICAgICAgfSBhcyBQbGFuO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGxhblNlcnZpY2UuY3JlYXRlUGxhbihwbGFuKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImZsb29yIHNhdmVkXCIpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWJhbmRvbigpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJhYmFuZG9ubmluZyBpbXBvcnRcIik7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwidmlzaXRJbkltcG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9wID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRnJhbWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZyYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZyYW1lLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhbkxvY2FsU3RvcmFnZSgpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImluZGV4U2NhbkxvYWRcIik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJ2aXNpdEluSW1wb3J0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldExheWVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TGF5ZXI+IHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbih0aGlzLnNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcmdJZCA9IG1pc3Npb24ub3JnYW5pc2F0aW9uSUQ7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgIGN1cnJlbnRPcmdJZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChsYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbGF5ZXJzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjcmVhdGUgdGhlblxyXG4gICAgICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBS3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQThCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7OztBQU83RixNQUFNLE9BQU8sdUJBQXVCO0lBeUNoQyxZQUNZLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixXQUE0QixFQUM1QixXQUF3QjtRQUx4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWhCN0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0Qsd0JBQW1CLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFFN0QscUJBQWdCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFFekQscUJBQWdCLEdBQUcsR0FBRyxDQUFDO0lBUzNCLENBQUM7SUFq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QyxlQUFlLENBQUMsQ0FBQztRQUN6QyxZQUFZLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQVk7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUNoRSxJQUFJLEVBQ0osWUFBWSxDQUNmLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7b0hBMWJRLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnBCLE1BQU07MkZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0LCB3YWl0LCB3YWl0VW50aWwgfSBmcm9tIFwiLi4vaGVscGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExldmVsU3RhdHVzLCBMYXllciwgTm9kZSwgWm9uZSwgTmF2aWdhdGlvbiwgUGxhbiB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9sYXllci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL25hdmlnYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQbGFuU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9wbGFuLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvem9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IHVwbG9hZEpzb25Ub1MzLCB1cGxvYWRCYXNlNjRJbWFnZSwgcmVtb3ZlQWxsRmlsZXNGcm9tRm9sZGVyUzMgfSBmcm9tIFwiLi9zMy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vdmlld2VyLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0dGVycG9ydEltcG9ydFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBjdXJyZW50RnJhbWU7XHJcblxyXG4gICAgcHVibGljIHNkazogYW55O1xyXG5cclxuICAgIHByaXZhdGUgc3dlZXBzOiBPYmplY3Q7XHJcblxyXG4gICAgcHVibGljIGZsb29yczogT2JqZWN0O1xyXG5cclxuICAgIHByaXZhdGUgY3VycmVudEZsb29yO1xyXG5cclxuICAgIHByaXZhdGUgX21vZGVsSUQ6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIF9zcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGdldCBzcGFjZUlEKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwYWNlSUQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCBzcGFjZUlEKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zcGFjZUlEID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBtb2RlbElEKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsSUQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCBtb2RlbElEKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9tb2RlbElEID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0b3AgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgaW1wb3J0aW5nSW1hZ2VzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwdWJsaWMgc3dlZXBQcm9jZXNzZWRDb3VudDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG5cclxuICAgIHB1YmxpYyB0b3RhbFN3ZWVwc0NvdW50OiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBNQVhfU0NBTlNfUkVMT0FEID0gMTAwO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHBsYW5TZXJ2aWNlOiBQbGFuU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXN5bmMgaW5pdFNka0Zvck1vZGVsKG1vZGVsSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRoaXMuc3RvcCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvLyBMb2FkIFNES1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTG9hZGluZyBNYXR0ZXJwb3J0IFNES1wiKTtcclxuICAgICAgICB0aGlzLm1vZGVsSUQgPSBtb2RlbElEO1xyXG4gICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7XHJcbiAgICAgICAgaWYgKCFpZnJhbWUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNyZWF0ZSBpZnJhbWVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRUb3VyVXJsKG1vZGVsSUQpO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMudmlld2VyU2VydmljZS5nZXRUb3VyVXJsKCk7XHJcbiAgICAgICAgaWZyYW1lLnNldEF0dHJpYnV0ZShcInNyY1wiLCB1cmwpO1xyXG4gICAgICAgIGlmcmFtZS5hbGxvdyA9IFwieHItc3BhdGlhbC10cmFja2luZ1wiO1xyXG4gICAgICAgIGlmcmFtZS5oZWlnaHQgPSBcIjEwMCVcIjtcclxuICAgICAgICBpZnJhbWUud2lkdGggPSBcIjEwMCVcIjtcclxuICAgICAgICBpZnJhbWUuaWQgPSBcInZpZXdlci1tb2R1bGVcIjtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiN2aWV3ZXItZnJhbWVcIik7XHJcbiAgICAgICAgZWxlbWVudC5hcHBlbmQoaWZyYW1lKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGcmFtZSA9IGlmcmFtZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHRoaXMuc2RrID0gYXdhaXQgd2luZG93Lk1QX1NESy5jb25uZWN0KFxyXG4gICAgICAgICAgICAgICAgaWZyYW1lLCBcInFuOXdzYXN1eTVoMmZ6cmJybjFuenIwaWRcIiwgXCIzLjExXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIEZsb29yIGRhdGFcclxuICAgICAgICAgICAgdGhpcy5zZGsuRmxvb3IuZGF0YS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgb25Db2xsZWN0aW9uVXBkYXRlZDogZnVuY3Rpb24gdXBkKGNvbGxlY3Rpb246IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRmxvb3JzXCIsIGNvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmxvb3JzID0gY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBjdXJyZW50IEZsb29yXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLkZsb29yLmN1cnJlbnQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdXBkKGN1cnJlbnRGbG9vcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEZsb29yID0gY3VycmVudEZsb29yO1xyXG4gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIFN3ZWVwIGRhdGFcclxuICAgICAgICAgICAgdGhpcy5zZGsuU3dlZXAuZGF0YS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgb25Db2xsZWN0aW9uVXBkYXRlZDogZnVuY3Rpb24gdXBkKGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGUgZW50aXJlIHVwLXRvLWRhdGUgY29sbGVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zd2VlcHMgPSBjb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGxhYmVsc1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNkay5TZXR0aW5ncy51cGRhdGUoXCJsYWJlbHNcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBsZXQgdGltZW91dEV4cGlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gc3RhcnQgdGltZW91dFxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRpbWVvdXRFeHBpcmVkID0gdHJ1ZSwgNzAwMCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAodGhpcy5zd2VlcHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmZsb29ycyAhPT0gdW5kZWZpbmVkKSB8fCB0aW1lb3V0RXhwaXJlZCA9PT0gdHJ1ZSk7XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0RXhwaXJlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gd2UgYXJlIGxpa2VseSBpbiBtYXR0ZXJwb3J0IGVycm9yIGNhc2UgKHRoYXQgd2UgY2Fubm90IGNhdGNoISlcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidGltZW91dCBpbnRpdGlhbGlzaW5nIE1hdHRlcnBvcnRcIik7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlcnJvciBpbml0IE1hdHRlcnBvcnRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbml0IGRvbmVcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVycm9yIGluaXQgTWF0dGVycG9ydFwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW1wb3J0RGF0YShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgc3VyZmFjZTogbnVtYmVyLFxyXG4gICAgICAgIHJlbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgICAgIG5vZGU6IE5vZGUgPSBudWxsLFxyXG4gICAgKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN3ZWVwcykge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwibm8gc3dlZXBzIGluaXRpYWxpemVkXCIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFwcElzTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZGsuQXBwLnN0YXRlLnN1YnNjcmliZShmdW5jdGlvbiAoYXBwU3RhdGUpIHtcclxuICAgICAgICAgICAgLy8gYXBwIHN0YXRlIGhhcyBjaGFuZ2VkXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUaGUgY3VycmVudCBwaGFzZTogJywgYXBwU3RhdGUucGhhc2UpO1xyXG4gICAgICAgICAgICBpZiAoYXBwU3RhdGUucGhhc2UgPT09IFwiYXBwcGhhc2UucGxheWluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgICAgICAgICBhcHBJc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gYXBwSXNMb2FkZWQgPT09IHRydWUpO1xyXG4gICAgICAgIGlmIChyZWxvYWRpbmcpIHtcclxuICAgICAgICAgICAgLy8gcGVyZm9ybSBvbmx5IDM2MCBpbXBvcnQgc2luY2Ugd2UgYXJlIHJlbG9hZGluZ1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmltcG9ydDM2MGltYWdlcygpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNsZWFuTG9jYWxTdG9yYWdlKCk7IC8vIHdlIGFyZSBpbXBvcnRpbmcgbmV3IHZpc2l0XHJcbiAgICAgICAgdGhpcy5zcGFjZUlEID0gc3BhY2VJRDtcclxuICAgICAgICBsZXQgZmxvb3Jab25lczogWm9uZVtdID0gW107XHJcbiAgICAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBtYWluWm9uZSA9IHpvbmVzLmZpbmQoKHopID0+ICF6LnBhcmVudElEKTtcclxuICAgICAgICBpZiAoIW1haW5ab25lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJtaXNzaW5nIGRhdGEgKG5vIG1haW4gQnVpbGRpbmcgWm9uZSlcIikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZyhcImltcG9ydGluZyBkYXRhIGZyb20gbWF0dGVycG9ydFwiKTtcclxuICAgICAgICAvLyBzYXZlIHN3ZWVwcyBkYXRhIGFzIGpzb25cclxuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LnZhbHVlcyh0aGlzLnN3ZWVwcykpO1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZEpzb25Ub1MzKFxyXG4gICAgICAgICAgICBgdmlzaXRzLyR7dGhpcy5tb2RlbElEfS9pbnZlbnRvcnkvYCxcclxuICAgICAgICAgICAganNvbixcclxuICAgICAgICAgICAgXCJkYXRhLmpzb25cIixcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGNoZWNrIGxheWVyIG9mIGJ1aWxkaW5nIHR5cGVcclxuICAgICAgICBjb25zdCBsYXllckJ1aWxkaW5nID0gYXdhaXQgdGhpcy5nZXRMYXllckJ5TmFtZShcIkJVSUxESU5HXCIpO1xyXG4gICAgICAgIGNvbnN0IGNyZWF0ZWREZWZhdWx0Wm9uZSA9IGF3YWl0IHRoaXMuY3JlYXRlWm9uZShcclxuICAgICAgICAgICAgbm9kZS5tZXRhZGF0YSxcclxuICAgICAgICAgICAgbGF5ZXJCdWlsZGluZy5pZCxcclxuICAgICAgICAgICAgc3VyZmFjZSxcclxuICAgICAgICAgICAgbWFpblpvbmUuaWQsXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3dlZXBzKSxcclxuICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghY3JlYXRlZERlZmF1bHRab25lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mbG9vcnMpIHtcclxuICAgICAgICAgICAgZmxvb3Jab25lcyA9IGF3YWl0IHRoaXMuaW1wb3J0Rmxvb3JEYXRhKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZERlZmF1bHRab25lLmlkLFxyXG4gICAgICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZmxvb3Jab25lcyk7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3dlZXBzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3dlZXBJbmZvID0gdGhpcy5zd2VlcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb25JbnB1dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogc3dlZXBJbmZvLnV1aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IEpTT04uc3RyaW5naWZ5KHN3ZWVwSW5mby5wb3NpdGlvbiksXHJcbiAgICAgICAgICAgICAgICAgICAgcm90YXRpb246IEpTT04uc3RyaW5naWZ5KHN3ZWVwSW5mby5yb3RhdGlvbiksXHJcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IExldmVsU3RhdHVzLkxPVyxcclxuICAgICAgICAgICAgICAgICAgICBub2RlSUQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgIH0gYXMgTmF2aWdhdGlvbjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5hdiA9IGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuY3JlYXRlTmF2aWdhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5wdXQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFuYXYpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb3VsZCBjcmVhdGUgbmF2aWdhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5wdXQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmltcG9ydDM2MGltYWdlcygpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZVpvbmUoXHJcbiAgICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGxheWVySUQ6IHN0cmluZyxcclxuICAgICAgICBzdXJmYWNlOiBudW1iZXIgPSBudWxsLFxyXG4gICAgICAgIHBhcmVudElEOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgICAgIHN3ZWVwczogc3RyaW5nW10gPSBbXSxcclxuICAgICAgICBub2RlOiBOb2RlID0gbnVsbCxcclxuICAgICAgICBtZXRhZGF0YTogc3RyaW5nID0gbnVsbCxcclxuICAgICk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgICAgIGNvbnN0IHpvbmVJbnB1dCA9IHtcclxuICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICAgICBsYXllcklELFxyXG4gICAgICAgICAgICBzd2VlcElEczogc3dlZXBzLFxyXG4gICAgICAgICAgICBub2RlSURzOiBub2RlID8gW25vZGUuaWRdIDogbnVsbCxcclxuICAgICAgICB9IGFzIFpvbmU7XHJcbiAgICAgICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KHpvbmVJbnB1dCk7XHJcbiAgICAgICAgaWYgKHN1cmZhY2UpIHtcclxuICAgICAgICAgICAgem9uZUlucHV0LnN1cmZhY2UgPSBzdXJmYWNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50SUQpIHtcclxuICAgICAgICAgICAgem9uZUlucHV0LnBhcmVudElEID0gcGFyZW50SUQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtZXRhZGF0YSkge1xyXG4gICAgICAgICAgICB6b25lSW5wdXQubWV0YWRhdGEgPSBtZXRhZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbmV3TG9jYWwgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmNyZWF0ZSh6b25lSW5wdXQpO1xyXG4gICAgICAgIHJldHVybiBuZXdMb2NhbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbXBvcnQzNjBpbWFnZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJJbXBvcnRpbmcgMzYwIGltYWdlc1wiKTtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ0ltYWdlcy5uZXh0KHRydWUpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzY2FucyA9IE9iamVjdC52YWx1ZXModGhpcy5zd2VlcHMpO1xyXG4gICAgICAgICAgICBsZXQgbWF4U2NhbjtcclxuICAgICAgICAgICAgbGV0IGluZGV4U2NhbjtcclxuICAgICAgICAgICAgY29uc3Qgbm1iU2NhbnMgPSBPYmplY3Qua2V5cyhzY2FucykubGVuZ3RoO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlRvdGFsIG51bWJlciBvZiBzY2FuIHBvaW50cyA6XCIsIG5tYlNjYW5zKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbFN3ZWVwc0NvdW50Lm5leHQobm1iU2NhbnMpO1xyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB3ZSBzdGFydGVkIHRvIGxvYWQgaW1hZ2VzIGFscmVhZHlcclxuICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaW5kZXhTY2FuTG9hZFwiKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZXRha2luZyBpbXBvcnQgZnJvbSBzY2FuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJpbmRleFNjYW5Mb2FkXCIpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGluZGV4U2NhbiA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImluZGV4U2NhbkxvYWRcIik7XHJcbiAgICAgICAgICAgICAgICBubWJTY2FucyA8IGluZGV4U2NhbiArIHRoaXMuTUFYX1NDQU5TX1JFTE9BRFxyXG4gICAgICAgICAgICAgICAgICAgID8gKG1heFNjYW4gPSBubWJTY2FucylcclxuICAgICAgICAgICAgICAgICAgICA6IChtYXhTY2FuID0gaW5kZXhTY2FuICsgdGhpcy5NQVhfU0NBTlNfUkVMT0FEKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGluZGV4U2NhbiA9IDA7XHJcbiAgICAgICAgICAgICAgICBubWJTY2FucyA8IHRoaXMuTUFYX1NDQU5TX1JFTE9BRCA/IChtYXhTY2FuID0gbm1iU2NhbnMpIDogKG1heFNjYW4gPSB0aGlzLk1BWF9TQ0FOU19SRUxPQUQpO1xyXG4gICAgICAgICAgICAgICAgbWF4U2NhbjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBpbmRleFNjYW47IGluZGV4IDwgbWF4U2NhbjsgaW5kZXggKz0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNkay5Td2VlcC5tb3ZlVG8oc2NhbnNbaW5kZXhdLnV1aWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2RrLkNhbWVyYS5zZXRSb3RhdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gYXdhaXQgdGhpcy5zZGsuUmVuZGVyZXIudGFrZUVxdWlyZWN0YW5ndWxhcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyB3aWR0aDogMjA0OCwgaGVpZ2h0OiAxMDI0IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWF0dGVydGFnczogZmFsc2UsIHN3ZWVwczogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbnNbaW5kZXhdLnV1aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3N3ZWVwcy9gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN3ZWVwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN3ZWVwUHJvY2Vzc2VkQ291bnQubmV4dChpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJpbmRleFNjYW5Mb2FkXCIsIGluZGV4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkFiYW5kb25pbmcgaW1wb3J0IGJlY2F1c2UgaXQgd2FzIGNhbmNlbGxlZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWF4U2NhbiA9PT0gbm1iU2NhbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSW1wb3J0IDM2MCBkb25lXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbkxvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc3RvcCkge1xyXG4gICAgICAgICAgICAgICAgLy8gdG8gcmVzdGFydCB0aGUgcHJvY2VkdXJlIGZyb20gd2hlcmUgd2UgbGVmdCBvZlxyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJpbmRleFNjYW5Mb2FkXCIsIG1heFNjYW4udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInZpc2l0SW5JbXBvcnRcIiwgdGhpcy5tb2RlbElEKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJhbWUoKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vdmVUb0Zsb29yKGZsb29yTmFtZTogc3RyaW5nLCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZTogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mbG9vcnMpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGbG9vciBhcmUgbm90IGxvYWRlZCB5ZXRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbG9vayB1cCBmb3Igc2VxdWVuY2UgbnVtYmVyICh0aGUgc2FmZXN0IG1ldGhvZClcclxuICAgICAgICBsZXQgZmxvb3JNYXR0ZXJwb3J0ID0gT2JqZWN0LnZhbHVlcyh0aGlzLmZsb29ycykuZmluZChcclxuICAgICAgICAgICAgKGZsb29yKSA9PiBmbG9vci5zZXF1ZW5jZSA9PT0gbWF0dGVycG9ydEZsb29yU2VxdWVuY2UsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoIWZsb29yTWF0dGVycG9ydCkge1xyXG4gICAgICAgICAgICBmbG9vck1hdHRlcnBvcnQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvb3JzKS5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGZsb29yKSA9PiBmbG9vck5hbWUuaW5jbHVkZXMoZmxvb3IubmFtZSkgJiYgZmxvb3IubmFtZSAhPSBcIlwiLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZsb29yTWF0dGVycG9ydCkge1xyXG4gICAgICAgICAgICBmbG9vck1hdHRlcnBvcnQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvb3JzKS5maW5kKChmbG9vcikgPT5cclxuICAgICAgICAgICAgICAgIGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5pZCksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGZsb29yTWF0dGVycG9ydClcclxuICAgICAgICBpZiAoZmxvb3JNYXR0ZXJwb3J0KSB7XHJcbiAgICAgICAgICAgIGxldCByZXRyeSA9IHRydWU7XHJcbiAgICAgICAgICAgIHdoaWxlIChyZXRyeSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9vckluZGV4ID0gYXdhaXQgdGhpcy5zZGsuRmxvb3IubW92ZVRvKGZsb29yTWF0dGVycG9ydC5zZXF1ZW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJtb3ZlZCB0byBmbG9vckluZGV4XCIsIGZsb29ySW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHJ5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2Fubm90IG1vdmUgdG8gRmxvb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdhaXQoMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIk5vIG1hdHRlcnBvcnQgZmxvb3IgZm91bmQgdG8gbW92ZSB0b1wiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGltcG9ydEZsb29yRGF0YShcclxuICAgICAgICBkZWZhdXRab25lSUQ6IHN0cmluZyxcclxuICAgICAgICBub2RlOiBOb2RlLFxyXG4gICAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgICAgICBjb25zdCB6b25lcyA9IFtdO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc2RrLk1vZGUubW92ZVRvKHRoaXMuc2RrLk1vZGUuTW9kZS5GTE9PUlBMQU4pO1xyXG4gICAgICAgIGNvbnN0IG5tYkZsb29ycyA9IE9iamVjdC5rZXlzKHRoaXMuZmxvb3JzKS5sZW5ndGg7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJUb3RhbCBudW1iZXIgb2YgZmxvb3JzXCIsIG5tYkZsb29ycyk7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG5tYkZsb29yczsgaW5kZXggKz0gMSkge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkltcG9ydGluZyBmbG9vclwiLCBpbmRleCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2RrLkZsb29yLm1vdmVUbyhpbmRleCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB3YWl0KDcwMCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImFib3V0IHRvIHNhdmUgdGhlIGZsb29yXCIsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLnNhdmVGbG9vcihkZWZhdXRab25lSUQsIG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJyZWNlaXZlZCBmbG9vciB6b25lXCIsIHpvbmUpO1xyXG4gICAgICAgICAgICAgICAgem9uZXMucHVzaCh6b25lKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgc2F2ZUZsb29yKGRlZmF1dFpvbmVJRDogc3RyaW5nLCBub2RlOiBOb2RlKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmN1cnJlbnRGbG9vci5pZDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Rmxvb3IubmFtZSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICBuYW1lID0gdGhpcy5jdXJyZW50Rmxvb3IubmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbGF5ZXJGbG9vciA9IGF3YWl0IHRoaXMuZ2V0TGF5ZXJCeU5hbWUoXCJGTE9PUlwiKTtcclxuICAgICAgICBjb25zdCBzd2VlcHNJbmZvID0gT2JqZWN0LnZhbHVlcyh0aGlzLnN3ZWVwcyk7XHJcbiAgICAgICAgY29uc3Qgc3dlZXBzRm9yRmxvb3IgPSBzd2VlcHNJbmZvLmZpbHRlcihcclxuICAgICAgICAgICAgKHN3ZWVwSW5mbykgPT4gc3dlZXBJbmZvLmZsb29ySW5mby5pZCA9PT0gdGhpcy5jdXJyZW50Rmxvb3IuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImN1cnJlbnQgZmxvb3JcIiwgdGhpcy5jdXJyZW50Rmxvb3IpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwic3dlZXBzIGZvciBmbG9vclwiLCBzd2VlcHNGb3JGbG9vci5sZW5ndGgpO1xyXG4gICAgICAgIGNvbnN0IHN3ZWVwSURzOiBzdHJpbmdbXSA9IHN3ZWVwc0ZvckZsb29yLm1hcCgoc3dlZXApID0+IHN3ZWVwLnV1aWQpO1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgICAgICAgIGDDiXRhZ2UgJHtuYW1lfSAtICR7bm9kZS5tZXRhZGF0YX1gLFxyXG4gICAgICAgICAgICBsYXllckZsb29yLmlkLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBkZWZhdXRab25lSUQsXHJcbiAgICAgICAgICAgIHN3ZWVwSURzLFxyXG4gICAgICAgICAgICBub2RlLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlOiB0aGlzLmN1cnJlbnRGbG9vci5zZXF1ZW5jZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gVE9ETyBsaW5rIHRvIHNjYW5zXHJcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgdGhpcy5zZGsuUmVuZGVyZXIudGFrZVNjcmVlblNob3QoXHJcbiAgICAgICAgICAgIHsgd2lkdGg6IDQwOTYsIGhlaWdodDogMjA0OCB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3Qgc3BhY2VJRHNob3J0ID0gdGhpcy5zcGFjZUlELnNsaWNlKDAsIDgpO1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZEJhc2U2NEltYWdlKFxyXG4gICAgICAgICAgICBiYXNlNjQsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3BsYW5zL2AsXHJcbiAgICAgICAgICAgIGBwbGFuX2Zsb29yXyR7dGhpcy5jdXJyZW50Rmxvb3IuaWR9XyR7c3BhY2VJRHNob3J0fWAsXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBjcmVhdGUgUGxhbiBvYmplY3RcclxuICAgICAgICBjb25zdCBwbGFuID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBgcGxhbl9mbG9vcl8ke3RoaXMuY3VycmVudEZsb29yLmlkfWAsXHJcbiAgICAgICAgICAgIGFubmV4ZTogYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vcGxhbnMvcGxhbl9mbG9vcl8ke3RoaXMuY3VycmVudEZsb29yLmlkfV8ke3NwYWNlSURzaG9ydH0uanBlZ2AsXHJcbiAgICAgICAgICAgIHpvbmVJRDogem9uZS5pZCxcclxuICAgICAgICAgICAgc3BhY2VJRDogdGhpcy5zcGFjZUlELFxyXG4gICAgICAgICAgICBpc0N1cnJlbnRGb3Jab25lOiB0cnVlLFxyXG4gICAgICAgICAgICBpc01vZGlmaWVkOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNJbXBvcnRlZE1hdHRlcnBvcnQ6IHRydWUsXHJcbiAgICAgICAgfSBhcyBQbGFuO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGxhblNlcnZpY2UuY3JlYXRlUGxhbihwbGFuKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImZsb29yIHNhdmVkXCIpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWJhbmRvbigpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJhYmFuZG9ubmluZyBpbXBvcnRcIik7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwidmlzaXRJbkltcG9ydFwiKTtcclxuICAgICAgICAgICAgdGhpcy5zdG9wID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRnJhbWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZyYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZyYW1lLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhbkxvY2FsU3RvcmFnZSgpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImluZGV4U2NhbkxvYWRcIik7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJ2aXNpdEluSW1wb3J0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldExheWVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TGF5ZXI+IHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbih0aGlzLnNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcmdJZCA9IG1pc3Npb24ub3JnYW5pc2F0aW9uSUQ7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgIGN1cnJlbnRPcmdJZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChsYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbGF5ZXJzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjcmVhdGUgdGhlblxyXG4gICAgICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -51,15 +51,8 @@ export class MeasurementService {
|
|
|
51
51
|
async initMeasurements() {
|
|
52
52
|
if (this.currentSpaceID) {
|
|
53
53
|
this.updating.next(true);
|
|
54
|
-
let
|
|
55
|
-
|
|
56
|
-
await this.filterService.filterMeasurementsForCurrentUserInSpace(this.currentSpaceID, comments);
|
|
57
|
-
let measurements = [];
|
|
58
|
-
if (comments.length > 0) {
|
|
59
|
-
await Promise.all(comments.map(async (comment) => {
|
|
60
|
-
const measurement = await this.commentService.readCommentAsMeasurement(comment.id);
|
|
61
|
-
measurements.push(measurement);
|
|
62
|
-
}));
|
|
54
|
+
let measurements = await this.getMeasurementsForSpaceForUser(this.currentSpaceID);
|
|
55
|
+
if (measurements.length > 0) {
|
|
63
56
|
if (this.dateFilter) {
|
|
64
57
|
measurements =
|
|
65
58
|
this.filterService.filterMeasurementsForDateRange(measurements, this.dateFilter);
|
|
@@ -146,6 +139,19 @@ export class MeasurementService {
|
|
|
146
139
|
}
|
|
147
140
|
return null;
|
|
148
141
|
}
|
|
142
|
+
async getMeasurementsForSpaceForUser(spaceID) {
|
|
143
|
+
let comments = await this.commentService.getCommentsBySpaceID(spaceID);
|
|
144
|
+
comments =
|
|
145
|
+
await this.filterService.filterMeasurementsForCurrentUserInSpace(spaceID, comments);
|
|
146
|
+
let measurements = [];
|
|
147
|
+
if (comments.length > 0) {
|
|
148
|
+
await Promise.all(comments.map(async (comment) => {
|
|
149
|
+
const measurement = await this.commentService.readCommentAsMeasurement(comment.id);
|
|
150
|
+
measurements.push(measurement);
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
return measurements;
|
|
154
|
+
}
|
|
149
155
|
}
|
|
150
156
|
MeasurementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MeasurementService, deps: [{ token: i1.NavigatorService }, { token: i2.FilterService }, { token: i3.CommentService }, { token: i4.PoiService }, { token: i5.BaseUserService }, { token: i6.NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
151
157
|
MeasurementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MeasurementService, providedIn: "root" });
|
|
@@ -155,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
155
161
|
providedIn: "root",
|
|
156
162
|
}]
|
|
157
163
|
}], ctorParameters: function () { return [{ type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.CommentService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.NavigationService }]; } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBZSxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFHekUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTyxrQkFBa0I7SUEyQjNCLFlBQ1ksZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLFdBQTRCLEVBQzVCLGlCQUFvQztRQUxwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBaENoRCxTQUFJLEdBQUcsZUFBZSxDQUFDO1FBRXZCLHdCQUFtQixHQUdmLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFNUIscUJBQWdCLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckQsd0JBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFuQixzQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7UUFFekYsZUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFD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akIsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxXQUF3QjtRQUNuRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQy9DLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUN6QixDQUFDO1FBQ0YsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFO1lBQzlCLE1BQU0sV0FBVyxHQUNiLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFDQUFxQyxDQUM5RCxHQUFHLENBQUMsaUJBQWlCLEVBQ3JCLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUM5QixDQUFDO1lBQ04sTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUNwQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7K0dBL0xRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTsyRkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNZWFzdXJlbWVudCwgUG9pVHlwZSwgQ29tbWVudCwgUE9JIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL25hdmlnYXRvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGRlbGV0ZUZyb21TMywgdXBsb2FkRmlsZVRvUzMgfSBmcm9tIFwiLi4vczMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vY29tbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tIFwiLi9wb2kuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlbWVudFNlcnZpY2Uge1xyXG4gICAgcGF0aCA9IFwibWVhc3VyZW1lbnRzL1wiO1xyXG5cclxuICAgIGN1cnJlbnRNZWFzdXJlbWVudHM6IHtcclxuICAgICAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgICAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xyXG4gICAgfSA9IHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9O1xyXG5cclxuICAgIG1lYXN1cmVtZW50c1RhZ3M6IFN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgbWVhc3VyZW1lbnRzVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICAgICAgc3BhY2U6IE1lYXN1cmVtZW50W107XHJcbiAgICAgICAgem9uZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICAgIHpvbmVJREZpbHRlcjogc3RyaW5nO1xyXG5cclxuICAgIGRhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgICBtZWFzdXJlbWVudEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiBmYWxzZSBtZWFucyBubyBmaWx0ZXJpbmcsIGV2ZXJ5dGhpbmcgaXMgYWxsb3dlZFxyXG5cclxuICAgIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcG9pU2VydmljZTogUG9pU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICAgICAgaWYgKCFpc011c2V1bVVzZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWFzdXJlbWVudEZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh6b25lLmlkICE9PSB0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdvaW5nIHRvIGluaXQgbWVhc3VyZW1lbnRzIGZyb20gem9uZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRNZWFzdXJlbWVudHMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5zdWJzY3JpYmVUb0RhdGFGaWx0ZXJVcGRhdGUoKGRhdGVSYW5nZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclNlcnZpY2UuY3VycmVudERhdGVGaWx0ZXI7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0TWVhc3VyZW1lbnRzKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbml0TWVhc3VyZW1lbnRzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbW1lbnRzID1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgICAgICAgICBjb21tZW50cyxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKGNvbW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLm1hcChhc3luYyAoY29tbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZWFzdXJlbWVudCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnJlYWRDb21tZW50QXNNZWFzdXJlbWVudChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzLnB1c2gobWVhc3VyZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVhc3VyZW1lbnRGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChtZWFzdXJlbWVudHMubWFwKChtKSA9PiBtLmNvbW1lbnQpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50c1pvbmUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLmZpbHRlcigobWVhc3VyZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHNab25lLmluY2x1ZGVzKG1lYXN1cmUuY29tbWVudCksXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZShiLmNvbW1lbnQuY3JlYXRlZEF0KSAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYS5jb21tZW50LmNyZWF0ZWRBdClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuem9uZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudE1lYXN1cmVtZW50cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuc3BhY2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudC5jb21tZW50LmlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRlbGV0ZWRDb21tZW50KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kobWVhc3VyZW1lbnQucG9pLmlkKTtcclxuICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gYCR7bWVhc3VyZW1lbnQuY29tbWVudC5pZC5zbGljZSgwLCA4KX1fYDtcclxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3RoaXMucGF0aCArIHByZWZpeH1tZXN1cmUuanBlZ2A7XHJcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyhwYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZU1lYXN1cmVtZW50Rm9yU3BhY2UoXHJcbiAgICAgICAgY29tbWVudElucHV0OiBDb21tZW50LFxyXG4gICAgICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmcgfSxcclxuICAgICAgICBzY3JlZW5zaG90OiBhbnksXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxNZWFzdXJlbWVudD4ge1xyXG4gICAgICAgIGNvbnN0IGxhc3RNZWFzdXJlID0gZGF0YU1lYXN1cmVtZW50cy5tZWFzdXJlO1xyXG4gICAgICAgIGNvbnN0IHN3ZWVwSUQgPSBkYXRhTWVhc3VyZW1lbnRzLnN3ZWVwO1xyXG4gICAgICAgIGNvbnN0IGxhc3RQb2ludCA9IGxhc3RNZWFzdXJlW2xhc3RNZWFzdXJlLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGxldCBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVDb21tZW50KGNvbW1lbnRJbnB1dCk7XHJcbiAgICAgICAgY29uc3QgcG9pSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGU6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHg6IGxhc3RQb2ludC54LFxyXG4gICAgICAgICAgICAgICAgeTogbGFzdFBvaW50LnksXHJcbiAgICAgICAgICAgICAgICB6OiBsYXN0UG9pbnQueixcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHR5cGU6IFBvaVR5cGUuTUVBU1VSRSxcclxuICAgICAgICAgICAgZWxlbWVudElEOiBjb21tZW50LmlkLFxyXG4gICAgICAgICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogc3dlZXBJRCxcclxuICAgICAgICB9IGFzIFBPSTtcclxuICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICAgICAgY29uc3Qgc2NyZWVuID0gYXdhaXQgZmV0Y2goc2NyZWVuc2hvdCk7XHJcbiAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHNjcmVlbi5ibG9iKCk7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgXCJtZXN1cmUuanBlZ1wiLCB7IHR5cGU6IFwiaW1hZ2UvanBlZ1wiIH0pO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKHRoaXMucGF0aCwgZmlsZSwgY29tbWVudC5pZCk7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVDb21tZW50KHtcclxuICAgICAgICAgICAgICAgIGlkOiBjb21tZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgYW5uZXhlOiB1cmwsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtZWFzdXJlbWVudCA9IHtcclxuICAgICAgICAgICAgY29tbWVudCxcclxuICAgICAgICAgICAgcG9pLFxyXG4gICAgICAgIH0gYXMgTWVhc3VyZW1lbnQ7XHJcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwb2kgJiYgcG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb25zID1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcclxuICAgICAgICAgICAgICAgICAgICBwb2kubWF0dGVycG9ydFN3ZWVwSUQsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5zcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgW3BvaU5hdmlnYXRpb25dID0gbmF2aWdhdGlvbnM7XHJcbiAgICAgICAgICAgIHJldHVybiBwb2lOYXZpZ2F0aW9uLm5vZGUubW9kZWwzRDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBZSxPQUFPLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFHekUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTyxrQkFBa0I7SUEyQjNCLFlBQ1ksZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLFdBQTRCLEVBQzVCLGlCQUFvQztRQUxwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBaENoRCxTQUFJLEdBQUcsZUFBZSxDQUFDO1FBRXZCLHdCQUFtQixHQUdmLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFNUIscUJBQWdCLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckQsd0JBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFuQixzQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7UUFFekYsZUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFD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Q3BDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDckM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLDhCQUE4QixDQUFDLE9BQWU7UUFDaEQsSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN6RCxPQUFPLENBQ1YsQ0FBQztRQUNGLFFBQVE7WUFDSixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsdUNBQXVDLENBQzVELE9BQU8sRUFDUCxRQUFRLENBQ1gsQ0FBQztRQUNOLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDM0IsTUFBTSxXQUFXLEdBQ2IsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUM5QyxPQUFPLENBQUMsRUFBRSxDQUNiLENBQUM7Z0JBQ04sWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDOzsrR0F0TVEsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGZixNQUFNOzJGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0kgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2ZpbHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tIFwiLi4vbmF2aWdhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gXCIuLi9zMy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9jb21tZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9uYXZpZ2F0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gXCIuL3BvaS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1lYXN1cmVtZW50U2VydmljZSB7XHJcbiAgICBwYXRoID0gXCJtZWFzdXJlbWVudHMvXCI7XHJcblxyXG4gICAgY3VycmVudE1lYXN1cmVtZW50czoge1xyXG4gICAgICAgIHNwYWNlOiBNZWFzdXJlbWVudFtdO1xyXG4gICAgICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgICB9ID0geyBzcGFjZTogW10sIHpvbmU6IFtdIH07XHJcblxyXG4gICAgbWVhc3VyZW1lbnRzVGFnczogU3ViamVjdDxDb21tZW50W10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBtZWFzdXJlbWVudHNVcGRhdGVkOiBTdWJqZWN0PHtcclxuICAgICAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgICAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xyXG4gICAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gICAgZGF0ZUZpbHRlcjogRGF0ZVtdO1xyXG5cclxuICAgIG1lYXN1cmVtZW50RmlsdGVyOiBib29sZWFuID0gZmFsc2U7IC8vIGlmIGZhbHNlIG1lYW5zIG5vIGZpbHRlcmluZywgZXZlcnl0aGluZyBpcyBhbGxvd2VkXHJcblxyXG4gICAgdXBkYXRlRG9uZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IGlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgICAgICBpZiAoIWlzTXVzZXVtVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCBtZWFzdXJlbWVudHMgZnJvbSB6b25lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSBkYXRlUmFuZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNZWFzdXJlbWVudHMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IHRoaXMuZmlsdGVyU2VydmljZS5jdXJyZW50RGF0ZUZpbHRlcjtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEb25lLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXRNZWFzdXJlbWVudHMoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXRNZWFzdXJlbWVudHMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICBsZXQgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIodGhpcy5jdXJyZW50U3BhY2VJRCwpO1xyXG4gICAgICAgICAgICBpZiAobWVhc3VyZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVhc3VyZW1lbnRGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChtZWFzdXJlbWVudHMubWFwKChtKSA9PiBtLmNvbW1lbnQpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50c1pvbmUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLmZpbHRlcigobWVhc3VyZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHNab25lLmluY2x1ZGVzKG1lYXN1cmUuY29tbWVudCksXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZShiLmNvbW1lbnQuY3JlYXRlZEF0KSAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYS5jb21tZW50LmNyZWF0ZWRBdClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuem9uZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudE1lYXN1cmVtZW50cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuc3BhY2UgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudC5jb21tZW50LmlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRlbGV0ZWRDb21tZW50KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kobWVhc3VyZW1lbnQucG9pLmlkKTtcclxuICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gYCR7bWVhc3VyZW1lbnQuY29tbWVudC5pZC5zbGljZSgwLCA4KX1fYDtcclxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3RoaXMucGF0aCArIHByZWZpeH1tZXN1cmUuanBlZ2A7XHJcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyhwYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZU1lYXN1cmVtZW50Rm9yU3BhY2UoXHJcbiAgICAgICAgY29tbWVudElucHV0OiBDb21tZW50LFxyXG4gICAgICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmc7IH0sXHJcbiAgICAgICAgc2NyZWVuc2hvdDogYW55LFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWVhc3VyZW1lbnQ+IHtcclxuICAgICAgICBjb25zdCBsYXN0TWVhc3VyZSA9IGRhdGFNZWFzdXJlbWVudHMubWVhc3VyZTtcclxuICAgICAgICBjb25zdCBzd2VlcElEID0gZGF0YU1lYXN1cmVtZW50cy5zd2VlcDtcclxuICAgICAgICBjb25zdCBsYXN0UG9pbnQgPSBsYXN0TWVhc3VyZVtsYXN0TWVhc3VyZS5sZW5ndGggLSAxXTtcclxuICAgICAgICBsZXQgY29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuY3JlYXRlQ29tbWVudChjb21tZW50SW5wdXQpO1xyXG4gICAgICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICAgICAgICBjb29yZGluYXRlOiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICB4OiBsYXN0UG9pbnQueCxcclxuICAgICAgICAgICAgICAgIHk6IGxhc3RQb2ludC55LFxyXG4gICAgICAgICAgICAgICAgejogbGFzdFBvaW50LnosXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0eXBlOiBQb2lUeXBlLk1FQVNVUkUsXHJcbiAgICAgICAgICAgIGVsZW1lbnRJRDogY29tbWVudC5pZCxcclxuICAgICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHN3ZWVwSUQsXHJcbiAgICAgICAgfSBhcyBQT0k7XHJcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmNyZWF0ZVBPSUZvclNwYWNlSUQocG9pSW5wdXQpO1xyXG4gICAgICAgIGNvbnN0IHNjcmVlbiA9IGF3YWl0IGZldGNoKHNjcmVlbnNob3QpO1xyXG4gICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBzY3JlZW4uYmxvYigpO1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIFwibWVzdXJlLmpwZWdcIiwgeyB0eXBlOiBcImltYWdlL2pwZWdcIiB9KTtcclxuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyh0aGlzLnBhdGgsIGZpbGUsIGNvbW1lbnQuaWQpO1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgY29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UudXBkYXRlQ29tbWVudCh7XHJcbiAgICAgICAgICAgICAgICBpZDogY29tbWVudC5pZCxcclxuICAgICAgICAgICAgICAgIGFubmV4ZTogdXJsLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbWVhc3VyZW1lbnQgPSB7XHJcbiAgICAgICAgICAgIGNvbW1lbnQsXHJcbiAgICAgICAgICAgIHBvaSxcclxuICAgICAgICB9IGFzIE1lYXN1cmVtZW50O1xyXG4gICAgICAgIHJldHVybiBtZWFzdXJlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNb2RlbDNERm9yTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pQnlFbGVtZW50SWQoXHJcbiAgICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocG9pICYmIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBuYXZpZ2F0aW9ucyA9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTWF0dGVycG9ydElERm9yU3BhY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgcG9pLm1hdHRlcnBvcnRTd2VlcElELFxyXG4gICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xyXG4gICAgICAgICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1lYXN1cmVtZW50W10+IHtcclxuICAgICAgICBsZXQgY29tbWVudHMgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldENvbW1lbnRzQnlTcGFjZUlEKFxyXG4gICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29tbWVudHMgPVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgICAgICAgc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgIGNvbW1lbnRzLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGxldCBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIGNvbW1lbnRzLm1hcChhc3luYyAoY29tbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50cy5wdXNoKG1lYXN1cmVtZW50KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -14,10 +14,20 @@ export class PropertyService {
|
|
|
14
14
|
return this.API.__proto__.PropertiesByOrganisation(orgID).then((props) => props.items);
|
|
15
15
|
}
|
|
16
16
|
async listProperties() {
|
|
17
|
-
|
|
17
|
+
try {
|
|
18
|
+
return this.API.__proto__.ListProperties().then((props) => props.items);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return this.API.__proto__.ListPropertys().then((props) => props.items);
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
async listPropertiesForSpace(spaceID) {
|
|
20
|
-
|
|
25
|
+
try {
|
|
26
|
+
return this.API.__proto__.ListProperties({ spaceID: { eq: spaceID } }).then((props) => props.items);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return this.API.__proto__.ListPropertys({ spaceID: { eq: spaceID } }).then((props) => props.items);
|
|
30
|
+
}
|
|
21
31
|
}
|
|
22
32
|
}
|
|
23
33
|
PropertyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: PropertyService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -31,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
31
41
|
type: Inject,
|
|
32
42
|
args: ['currentAPIService']
|
|
33
43
|
}] }]; } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3Byb3BlcnR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxlQUFlO0lBR3hCLFlBQXlDLFdBQWdCO1FBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQWtCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFhO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMxRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNoQixJQUFJO1lBQ0EsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzRTtRQUFDLE1BQU07WUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFFO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFlO1FBQ3hDLElBQUk7WUFDQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkc7UUFBQyxNQUFNO1lBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RHO0lBRUwsQ0FBQzs7NEdBcENRLGVBQWUsa0JBR0osbUJBQW1CO2dIQUg5QixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBSWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eVNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eTogUHJvcGVydHkpOiBQcm9taXNlPFByb3BlcnR5PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlUHJvcGVydHkocHJvcGVydHlJRDogc3RyaW5nKTogUHJvbWlzZTxQcm9wZXJ0eT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlUHJvcGVydHkoeyBpZDogcHJvcGVydHlJRCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRQcm9wZXJ0aWVzRm9yT3JnYW5pc2F0aW9uKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPFByb3BlcnR5W10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlByb3BlcnRpZXNCeU9yZ2FuaXNhdGlvbihvcmdJRCkudGhlbihcclxuICAgICAgICAgICAgKHByb3BzKSA9PiBwcm9wcy5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpc3RQcm9wZXJ0aWVzKCk6IFByb21pc2U8UHJvcGVydHlbXT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFByb3BlcnRpZXMoKS50aGVuKChwcm9wcykgPT4gcHJvcHMuaXRlbXMpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkxpc3RQcm9wZXJ0eXMoKS50aGVuKChwcm9wcykgPT4gcHJvcHMuaXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsaXN0UHJvcGVydGllc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8UHJvcGVydHlbXT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFByb3BlcnRpZXMoeyBzcGFjZUlEOiB7IGVxOiBzcGFjZUlEIH0gfSkudGhlbigocHJvcHMpID0+IHByb3BzLml0ZW1zKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0UHJvcGVydHlzKHsgc3BhY2VJRDogeyBlcTogc3BhY2VJRCB9IH0pLnRoZW4oKHByb3BzKSA9PiBwcm9wcy5pdGVtcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSJdfQ==
|
|
@@ -10,13 +10,21 @@ import * as i2 from "../user.service";
|
|
|
10
10
|
import * as i3 from "./property.service";
|
|
11
11
|
import * as i4 from "./capture.service";
|
|
12
12
|
import * as i5 from "./mission.service";
|
|
13
|
+
import * as i6 from "./ticket.service";
|
|
14
|
+
import * as i7 from "./equipment.service";
|
|
15
|
+
import * as i8 from "./feature.service";
|
|
16
|
+
import * as i9 from "./measurement.service";
|
|
13
17
|
export class SpaceService {
|
|
14
|
-
constructor(visitService, userService, propertyService, captureService, missionService, apiInjected) {
|
|
18
|
+
constructor(visitService, userService, propertyService, captureService, missionService, ticketService, equipService, featureService, measurementService, apiInjected) {
|
|
15
19
|
this.visitService = visitService;
|
|
16
20
|
this.userService = userService;
|
|
17
21
|
this.propertyService = propertyService;
|
|
18
22
|
this.captureService = captureService;
|
|
19
23
|
this.missionService = missionService;
|
|
24
|
+
this.ticketService = ticketService;
|
|
25
|
+
this.equipService = equipService;
|
|
26
|
+
this.featureService = featureService;
|
|
27
|
+
this.measurementService = measurementService;
|
|
20
28
|
this.locationsForUser = [];
|
|
21
29
|
this.locationUpdated = new Subject();
|
|
22
30
|
this.API = apiInjected;
|
|
@@ -146,11 +154,23 @@ export class SpaceService {
|
|
|
146
154
|
});
|
|
147
155
|
}));
|
|
148
156
|
}
|
|
149
|
-
const tickets =
|
|
157
|
+
const tickets = await this.ticketService.getTicketsBySpace(spaceID);
|
|
150
158
|
await Promise.all(tickets.map(async (ticket) => {
|
|
151
|
-
await this.
|
|
159
|
+
await this.ticketService.deleteTicket(ticket);
|
|
160
|
+
}));
|
|
161
|
+
const equips = await this.equipService.getEquipmentsForSpace(spaceID);
|
|
162
|
+
await Promise.all(equips.map(async (eq) => {
|
|
163
|
+
await this.equipService.deleteEquipment(eq);
|
|
164
|
+
}));
|
|
165
|
+
const features = await this.featureService.getFeaturesForSpace(spaceID);
|
|
166
|
+
await Promise.all(features.map(async (feature) => {
|
|
167
|
+
await this.featureService.deleteFeature(feature);
|
|
168
|
+
}));
|
|
169
|
+
// measurements
|
|
170
|
+
const measures = await this.measurementService.getMeasurementsForSpaceForUser(spaceID);
|
|
171
|
+
await Promise.all(measures.map(async (measure) => {
|
|
172
|
+
await this.measurementService.deleteMeasurement(measure);
|
|
152
173
|
}));
|
|
153
|
-
// TODO equipments, etc
|
|
154
174
|
// remove from list
|
|
155
175
|
this.locationsForUser = this.locationsForUser.filter((space) => space.id !== spaceID);
|
|
156
176
|
this.locationUpdated.next(this.locationsForUser);
|
|
@@ -170,15 +190,15 @@ export class SpaceService {
|
|
|
170
190
|
return false;
|
|
171
191
|
}
|
|
172
192
|
}
|
|
173
|
-
SpaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, deps: [{ token: i1.VisitService }, { token: i2.BaseUserService }, { token: i3.PropertyService }, { token: i4.CaptureService }, { token: i5.MissionService }, { token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
193
|
+
SpaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, deps: [{ token: i1.VisitService }, { token: i2.BaseUserService }, { token: i3.PropertyService }, { token: i4.CaptureService }, { token: i5.MissionService }, { token: i6.TicketsService }, { token: i7.EquipmentService }, { token: i8.FeatureService }, { token: i9.MeasurementService }, { token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
174
194
|
SpaceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, providedIn: "root" });
|
|
175
195
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpaceService, decorators: [{
|
|
176
196
|
type: Injectable,
|
|
177
197
|
args: [{
|
|
178
198
|
providedIn: "root",
|
|
179
199
|
}]
|
|
180
|
-
}], ctorParameters: function () { return [{ type: i1.VisitService }, { type: i2.BaseUserService }, { type: i3.PropertyService }, { type: i4.CaptureService }, { type: i5.MissionService }, { type: undefined, decorators: [{
|
|
200
|
+
}], ctorParameters: function () { return [{ type: i1.VisitService }, { type: i2.BaseUserService }, { type: i3.PropertyService }, { type: i4.CaptureService }, { type: i5.MissionService }, { type: i6.TicketsService }, { type: i7.EquipmentService }, { type: i8.FeatureService }, { type: i9.MeasurementService }, { type: undefined, decorators: [{
|
|
181
201
|
type: Inject,
|
|
182
202
|
args: ['currentAPIService']
|
|
183
203
|
}] }]; } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXMUQsTUFBTSxPQUFPLFlBQVk7SUFRckIsWUFDWSxZQUEwQixFQUMxQixXQUE0QixFQUM1QixlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixjQUE4QixFQUNULFdBQWdCO1FBTHJDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVgxQyxxQkFBZ0IsR0FBWSxFQUFFLENBQUM7UUFFL0Isb0JBQWUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVl2RCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ25ELE1BQU0s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OzJGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFlUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlclVuaXF1ZUFycmF5QnlJRCwgc29ydEFscGhhYmV0aWNhbGx5T25OYW1lIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTcGFjZSwgTGF5ZXIsIFByb3BlcnR5VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UgfSBmcm9tIFwiLi4vczMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENhcHR1cmVTZXJ2aWNlIH0gZnJvbSBcIi4vY2FwdHVyZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vbWlzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5U2VydmljZSB9IGZyb20gXCIuL3Byb3BlcnR5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlzaXRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlzaXQuc2VydmljZVwiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BhY2VTZXJ2aWNlIHtcclxuXHJcbiAgICBsb2NhdGlvbnNGb3JVc2VyOiBTcGFjZVtdID0gW107XHJcblxyXG4gICAgbG9jYXRpb25VcGRhdGVkOiBTdWJqZWN0PFNwYWNlW10+ID0gbmV3IFN1YmplY3Q8U3BhY2VbXT4oKTtcclxuXHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2FwdHVyZVNlcnZpY2U6IENhcHR1cmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsaXN0U3BhY2VzKCk6IFByb21pc2U8U3BhY2VbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFNwYWNlcygpLnRoZW4oKHNwYWNlcykgPT5cclxuICAgICAgICAgICAgc3BhY2VzLml0ZW1zLmZpbHRlcigoc3ApID0+ICFzcC5kZWxldGVkQXQpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TG9jYXRpb25zRm9yQ3VycmVudFVzZXIoKTogUHJvbWlzZTxTcGFjZVtdPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAoIW1pc3Npb25zKSByZXR1cm4gW107XHJcbiAgICAgICAgbGV0IGxvY2F0aW9ucyA9IFtdO1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBtaXNzaW9ucy5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChtaXNzaW9uLnNwYWNlICYmICFtaXNzaW9uLnNwYWNlLmRlbGV0ZWRBdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gYXdhaXQgdGhpcy5nZXRTcGFjZShtaXNzaW9uLnNwYWNlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNpZ25VcmxGb3JTcGFjZShzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy52aXNpdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldFZpc2l0c0ZvclNwYWNlRm9yVXNlcihzcGFjZS5pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHZpc2l0cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlLnZpc2l0cyA9IHZpc2l0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLnB1c2goc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMgPSBzb3J0QWxwaGFiZXRpY2FsbHlPbk5hbWUoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQobG9jYXRpb25zKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnNGb3JVc2VyID0gbG9jYXRpb25zO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25VcGRhdGVkLm5leHQobG9jYXRpb25zKTtcclxuICAgICAgICByZXR1cm4gbG9jYXRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNpZ25VcmxGb3JTcGFjZShsb2M6IFNwYWNlKSB7XHJcbiAgICAgICAgaWYgKGxvYy5hbm5leGVzKSB7XHJcbiAgICAgICAgICAgIGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UobG9jKS50aGVuKCh1cmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2MuYW5uZXhlcyA9IHVybDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEFsbG93ZWRTcGFjZXNGb3JPcmcoXHJcbiAgICAgICAgb3JnSUQ6IHN0cmluZyxcclxuICAgICAgICB1c2VyT3JnSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8U3BhY2VbXT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdXNlck9yZ0lEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiIHx8XHJcbiAgICAgICAgICAgIG9yZ0lEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RTcGFjZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3BhY2VzRm9yT3JnKHVzZXJPcmdJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U3BhY2VzRm9yT3JnKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPFNwYWNlW10+IHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihvcmdJRCk7XHJcbiAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzcGFjZXMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuc3BhY2UgJiYgIXByb3BlcnR5LnNwYWNlLmRlbGV0ZWRBdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlcy5wdXNoKHByb3BlcnR5LnNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3BhY2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVTcGFjZSh2YWx1ZXM6IFNwYWNlLCBsYXllcj86IExheWVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBsb2MgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlU3BhY2UodmFsdWVzKTtcclxuICAgICAgICBjb25zdCB6b25lSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlcy5uYW1lLFxyXG4gICAgICAgICAgICBzcGFjZUlEOiBsb2MuaWQsXHJcbiAgICAgICAgICAgIHN1cmZhY2U6IDAsXHJcbiAgICAgICAgICAgIGxheWVySUQ6IGxheWVyID8gbGF5ZXIuaWQgOiBudWxsLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoem9uZUlucHV0KTtcclxuICAgICAgICByZXR1cm4gbG9jO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVNwYWNlKGlucHV0OiBhbnkpOiBQcm9taXNlPFNwYWNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVTcGFjZShpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U3BhY2UoaWQ6IHN0cmluZyk6IFByb21pc2U8U3BhY2U+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFNwYWNlKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNb2RlbDNERm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBjYXB0dXJlcyA9IGF3YWl0IHRoaXMuY2FwdHVyZVNlcnZpY2UuZ2V0Q2FwdHVyZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChjYXB0dXJlcy5sZW5ndGggPiAwICYmIGNhcHR1cmVzWzBdLm5vZGVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVzWzBdLm5vZGVzLml0ZW1zWzBdLm1vZGVsM0Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEFsbG93ZWRNb2RlbDNERm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCB2aXNpdHMgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgICAgIHNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodmlzaXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0c1swXS5tb2RlbDNkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzb2Z0RGVsZXRlU3BhY2Uoc3BhY2VJRDogc3RyaW5nKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTcGFjZSh7XHJcbiAgICAgICAgICAgIGlkOiBzcGFjZUlELFxyXG4gICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmxpc3RQcm9wZXJ0aWVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlclNlcnZpY2UuaXNTUEFkbWluKCkpIHtcclxuICAgICAgICAgICAgLy8gZGVsZXRlIGFsbCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5tYXAoYXN5bmMgKHByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZGVsZXRlUHJvcGVydHkocHJvcGVydHkuaWQpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgbWlzc2lvbnNcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9ucy5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtaXNzaW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgcHJvcGVydHkgZm9yIGN1cnJlbnQgT3JnXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcmcgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VG9EZWxldGUgPSBwcm9wZXJ0aWVzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAocHJvcGVydHkpID0+IHByb3BlcnR5Lm9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAocHJvcGVydHlUb0RlbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZGVsZXRlUHJvcGVydHkocHJvcGVydHlUb0RlbGV0ZS5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbnNUb0RlbGV0ZSA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtaXNzaW9uKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIG1pc3Npb24ub3JnYW5pc2F0aW9uSUQgPT09IGN1cnJlbnRPcmcuaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLm9yZGVyZWRPcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uc1RvRGVsZXRlLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UudXBkYXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1pc3Npb24uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0aWNrZXRzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5UaWNrZXRzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIHRpY2tldHMubWFwKGFzeW5jICh0aWNrZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVUaWNrZXQoe2lkOnRpY2tldC5pZH0pO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIFRPRE8gZXF1aXBtZW50cywgZXRjXHJcblxyXG4gICAgICAgIC8vIHJlbW92ZSBmcm9tIGxpc3RcclxuICAgICAgICB0aGlzLmxvY2F0aW9uc0ZvclVzZXIgPSB0aGlzLmxvY2F0aW9uc0ZvclVzZXIuZmlsdGVyKChzcGFjZSk9PnNwYWNlLmlkICE9PSBzcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uVXBkYXRlZC5uZXh0KHRoaXMubG9jYXRpb25zRm9yVXNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBjdXJyZW50IHVzZXIgY2FuIGFyY2hpdmUgYSBzcGFjZSAob25seSBpZiBoaXMgb3JnYW5pc2F0aW9uIGlzIG93bmluZyB0aGUgcHJvcGVydHkgKFByb3BlcnR5VHlwZS5QUk9QRVJUWSkpXHJcbiAgICAgKiBAcGFyYW0gc3BhY2VJRFxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY2FuQXJjaGl2ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcmcgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3Qgb3JnUHJvcGVydGllcyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3JnLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gb3JnUHJvcGVydGllcy5maW5kKFxyXG4gICAgICAgICAgICAocHJvcGVydHlfKSA9PiBwcm9wZXJ0eV8uc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSBQcm9wZXJ0eVR5cGUuUFJPUEVSVFkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZTFELE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQ1ksWUFBMEIsRUFDMUIsV0FBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsYUFBNkIsRUFDN0IsWUFBOEIsRUFDOUIsY0FBOEIsRUFDOUIsa0JBQXNDLEVBQ2pCLFdBQWdCO1FBVHJDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBZmxELHFCQUFnQixHQUFZLEVBQUUsQ0FBQztRQUUvQixvQkFBZSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBZ0J2RCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FDN0MsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCO1FBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUMzQixJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxJQUFJLENBQUMsWUFBWTtxQkFDbEIsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztxQkFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxNQUFNLEVBQUU7d0JBQ1IsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7cUJBQ3pCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekI7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QixTQUFTLEdBQUcsd0JBQXdCLENBQ2hDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUNuQyxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVU7UUFDNUIsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2IseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksR0FBRyxFQUFFO29CQUNMLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNyQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUN4QixLQUFhLEVBQ2IsU0FBaUI7UUFFakIsSUFDSSxTQUFTLEtBQUssc0NBQXNDO1lBQ3BELEtBQUssS0FBSyxzQ0FBc0MsRUFDbEQ7WUFDRSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUM1QjtRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUFhO1FBQy9CLE1BQU0sVUFBVSxHQUNaLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNsQixLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7b0JBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMvQjthQUNKO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFhLEVBQUUsS0FBYTtRQUMxQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBRztZQUNkLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDZixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDbkMsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBVTtRQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZTtRQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNELE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFlO1FBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FDM0QsT0FBTyxDQUNWLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUM1QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDakMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ25CLEVBQUUsRUFBRSxPQUFPO1lBQ1gsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDOUIsd0JBQXdCO1lBQ3hCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0QsQ0FBQyxDQUFDLENBQ0wsQ0FBQztZQUNGLHNCQUFzQjtZQUN0QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7b0JBQzdCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtpQkFDeEIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNMO2FBQU07WUFDSCxrQ0FBa0M7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRSxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQ3BDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQzFELENBQUM7WUFDRixJQUFJLGdCQUFnQixFQUFFO2dCQUNsQixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xFO1lBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUNwQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1IsT0FBTyxDQUFDLGNBQWMsS0FBSyxVQUFVLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLHFCQUFxQixLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQ3RELENBQUM7WUFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztvQkFDN0IsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO2lCQUN4QixDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUMzQixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUNMLENBQUM7UUFFRixlQUFlO1FBQ2YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDRixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLGFBQWEsR0FDZixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQ25ELFVBQVUsQ0FBQyxFQUFFLENBQ2hCLENBQUM7UUFDTixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUMvQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQy9DLENBQUM7UUFDRixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7eUdBdE9RLFlBQVksc1NBa0JULG1CQUFtQjs2R0FsQnRCLFlBQVksY0FGVCxNQUFNOzJGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFtQlEsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQsIHNvcnRBbHBoYWJldGljYWxseU9uTmFtZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3BhY2UsIExheWVyLCBQcm9wZXJ0eVR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlIH0gZnJvbSBcIi4uL3MzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDYXB0dXJlU2VydmljZSB9IGZyb20gXCIuL2NhcHR1cmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFcXVpcG1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vZXF1aXBtZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tIFwiLi9mZWF0dXJlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWVhc3VyZW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbWVhc3VyZW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uU2VydmljZSB9IGZyb20gXCIuL21pc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tIFwiLi9wcm9wZXJ0eS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSBcIi4vdGlja2V0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlzaXRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlzaXQuc2VydmljZVwiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BhY2VTZXJ2aWNlIHtcclxuXHJcbiAgICBsb2NhdGlvbnNGb3JVc2VyOiBTcGFjZVtdID0gW107XHJcblxyXG4gICAgbG9jYXRpb25VcGRhdGVkOiBTdWJqZWN0PFNwYWNlW10+ID0gbmV3IFN1YmplY3Q8U3BhY2VbXT4oKTtcclxuXHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2FwdHVyZVNlcnZpY2U6IENhcHR1cmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdGlja2V0U2VydmljZTogVGlja2V0c1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcXVpcFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmZWF0dXJlU2VydmljZTogRmVhdHVyZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtZWFzdXJlbWVudFNlcnZpY2U6IE1lYXN1cmVtZW50U2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbGlzdFNwYWNlcygpOiBQcm9taXNlPFNwYWNlW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkxpc3RTcGFjZXMoKS50aGVuKChzcGFjZXMpID0+XHJcbiAgICAgICAgICAgIHNwYWNlcy5pdGVtcy5maWx0ZXIoKHNwKSA9PiAhc3AuZGVsZXRlZEF0KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldExvY2F0aW9uc0ZvckN1cnJlbnRVc2VyKCk6IFByb21pc2U8U3BhY2VbXT4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbnM7XHJcbiAgICAgICAgaWYgKCFtaXNzaW9ucykgcmV0dXJuIFtdO1xyXG4gICAgICAgIGxldCBsb2NhdGlvbnMgPSBbXTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobWlzc2lvbi5zcGFjZSAmJiAhbWlzc2lvbi5zcGFjZS5kZWxldGVkQXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZSA9IGF3YWl0IHRoaXMuZ2V0U3BhY2UobWlzc2lvbi5zcGFjZS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zaWduVXJsRm9yU3BhY2Uoc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoc3BhY2UuaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh2aXNpdHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZS52aXNpdHMgPSB2aXNpdHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucy5wdXNoKHNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbG9jYXRpb25zID0gc29ydEFscGhhYmV0aWNhbGx5T25OYW1lKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGxvY2F0aW9ucyksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9jYXRpb25zRm9yVXNlciA9IGxvY2F0aW9ucztcclxuICAgICAgICB0aGlzLmxvY2F0aW9uVXBkYXRlZC5uZXh0KGxvY2F0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzaWduVXJsRm9yU3BhY2UobG9jOiBTcGFjZSkge1xyXG4gICAgICAgIGlmIChsb2MuYW5uZXhlcykge1xyXG4gICAgICAgICAgICBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlKGxvYykudGhlbigodXJsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jLmFubmV4ZXMgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRBbGxvd2VkU3BhY2VzRm9yT3JnKFxyXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXHJcbiAgICAgICAgdXNlck9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPFNwYWNlW10+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJPcmdJRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiB8fFxyXG4gICAgICAgICAgICBvcmdJRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5saXN0U3BhY2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNwYWNlc0Zvck9yZyh1c2VyT3JnSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNwYWNlc0Zvck9yZyhvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxTcGFjZVtdPiB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24ob3JnSUQpO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3Qgc3BhY2VzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnNwYWNlICYmICFwcm9wZXJ0eS5zcGFjZS5kZWxldGVkQXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGFjZXMucHVzaChwcm9wZXJ0eS5zcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHNwYWNlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlU3BhY2UodmFsdWVzOiBTcGFjZSwgbGF5ZXI/OiBMYXllcik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgbG9jID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVNwYWNlKHZhbHVlcyk7XHJcbiAgICAgICAgY29uc3Qgem9uZUlucHV0ID0ge1xyXG4gICAgICAgICAgICBuYW1lOiB2YWx1ZXMubmFtZSxcclxuICAgICAgICAgICAgc3BhY2VJRDogbG9jLmlkLFxyXG4gICAgICAgICAgICBzdXJmYWNlOiAwLFxyXG4gICAgICAgICAgICBsYXllcklEOiBsYXllciA/IGxheWVyLmlkIDogbnVsbCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIGxvYztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVTcGFjZShpbnB1dDogYW55KTogUHJvbWlzZTxTcGFjZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlU3BhY2UoaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNwYWNlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFNwYWNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRTcGFjZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TW9kZWwzREZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgY2FwdHVyZXMgPSBhd2FpdCB0aGlzLmNhcHR1cmVTZXJ2aWNlLmdldENhcHR1cmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAoY2FwdHVyZXMubGVuZ3RoID4gMCAmJiBjYXB0dXJlc1swXS5ub2Rlcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlc1swXS5ub2Rlcy5pdGVtc1swXS5tb2RlbDNEO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRBbGxvd2VkTW9kZWwzREZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgY29uc3QgdmlzaXRzID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UuZ2V0VmlzaXRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHZpc2l0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2aXNpdHNbMF0ubW9kZWwzZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc29mdERlbGV0ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZykge1xyXG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3BhY2Uoe1xyXG4gICAgICAgICAgICBpZDogc3BhY2VJRCxcclxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5saXN0UHJvcGVydGllc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmlzU1BBZG1pbigpKSB7XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgcHJvcGVydGllc1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMubWFwKGFzeW5jIChwcm9wZXJ0eSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmRlbGV0ZVByb3BlcnR5KHByb3BlcnR5LmlkKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgYWxsIG1pc3Npb25zXHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS51cGRhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbWlzc2lvbi5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZGVsZXRlIHByb3BlcnR5IGZvciBjdXJyZW50IE9yZ1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50T3JnID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVRvRGVsZXRlID0gcHJvcGVydGllcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5vcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHByb3BlcnR5VG9EZWxldGUpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmRlbGV0ZVByb3BlcnR5KHByb3BlcnR5VG9EZWxldGUuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb25zVG9EZWxldGUgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobWlzc2lvbikgPT5cclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5vcmRlcmVkT3JnYW5pc2F0aW9uSUQgPT09IGN1cnJlbnRPcmcuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbnNUb0RlbGV0ZS5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtaXNzaW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGlja2V0cyA9IGF3YWl0IHRoaXMudGlja2V0U2VydmljZS5nZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50aWNrZXRTZXJ2aWNlLmRlbGV0ZVRpY2tldCh0aWNrZXQpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGVxdWlwcyA9IGF3YWl0IHRoaXMuZXF1aXBTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgZXF1aXBzLm1hcChhc3luYyAoZXEpID0+IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBTZXJ2aWNlLmRlbGV0ZUVxdWlwbWVudChlcSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIGZlYXR1cmVzLm1hcChhc3luYyAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBtZWFzdXJlbWVudHNcclxuICAgICAgICBjb25zdCBtZWFzdXJlcyA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgbWVhc3VyZXMubWFwKGFzeW5jIChtZWFzdXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5kZWxldGVNZWFzdXJlbWVudChtZWFzdXJlKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyByZW1vdmUgZnJvbSBsaXN0XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnNGb3JVc2VyID0gdGhpcy5sb2NhdGlvbnNGb3JVc2VyLmZpbHRlcigoc3BhY2UpID0+IHNwYWNlLmlkICE9PSBzcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmxvY2F0aW9uVXBkYXRlZC5uZXh0KHRoaXMubG9jYXRpb25zRm9yVXNlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBjdXJyZW50IHVzZXIgY2FuIGFyY2hpdmUgYSBzcGFjZSAob25seSBpZiBoaXMgb3JnYW5pc2F0aW9uIGlzIG93bmluZyB0aGUgcHJvcGVydHkgKFByb3BlcnR5VHlwZS5QUk9QRVJUWSkpXHJcbiAgICAgKiBAcGFyYW0gc3BhY2VJRFxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY2FuQXJjaGl2ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcmcgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3Qgb3JnUHJvcGVydGllcyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T3JnLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gb3JnUHJvcGVydGllcy5maW5kKFxyXG4gICAgICAgICAgICAocHJvcGVydHlfKSA9PiBwcm9wZXJ0eV8uc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSBQcm9wZXJ0eVR5cGUuUFJPUEVSVFkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|