@smarterplan/ngx-smarterplan-core 1.4.15 → 1.4.17
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/README.md +24 -24
- package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
- package/esm2022/lib/components/loader/loader.component.mjs +3 -3
- package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
- package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
- package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
- package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
- package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
- package/esm2022/lib/config.mjs +1 -1
- package/esm2022/lib/helpers.service.mjs +46 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
- package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
- package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
- package/esm2022/lib/mattertagData.mjs +1 -1
- package/esm2022/lib/ngx-smarterplan-core.module.mjs +1 -1
- package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
- package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
- package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
- package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
- package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
- package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
- package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
- package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
- package/esm2022/lib/services/base-tab.service.mjs +1 -1
- package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
- package/esm2022/lib/services/content.service.mjs +1 -1
- package/esm2022/lib/services/filter.service.mjs +11 -1
- package/esm2022/lib/services/intervention.service.mjs +1 -1
- package/esm2022/lib/services/locale.service.mjs +1 -1
- package/esm2022/lib/services/matterport-import.service.mjs +1 -1
- package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
- package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
- package/esm2022/lib/services/matterport-object3d.service.mjs +1 -1
- package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
- package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
- package/esm2022/lib/services/matterport-tag.service.mjs +1 -1
- package/esm2022/lib/services/matterport.service.mjs +29 -18
- package/esm2022/lib/services/models/affectation.service.mjs +1 -1
- package/esm2022/lib/services/models/base-object.service.mjs +31 -4
- package/esm2022/lib/services/models/capture.service.mjs +1 -1
- package/esm2022/lib/services/models/comment.service.mjs +1 -1
- package/esm2022/lib/services/models/domain.service.mjs +1 -1
- package/esm2022/lib/services/models/equipment.service.mjs +14 -13
- package/esm2022/lib/services/models/event.service.mjs +1 -1
- package/esm2022/lib/services/models/feature.service.mjs +8 -7
- package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
- package/esm2022/lib/services/models/layer.service.mjs +1 -1
- package/esm2022/lib/services/models/measurement.service.mjs +1 -1
- package/esm2022/lib/services/models/mission.service.mjs +1 -1
- package/esm2022/lib/services/models/navigation.service.mjs +1 -1
- package/esm2022/lib/services/models/node.service.mjs +1 -1
- package/esm2022/lib/services/models/object3D.service.mjs +1 -1
- package/esm2022/lib/services/models/operation.service.mjs +1 -1
- package/esm2022/lib/services/models/organisation.service.mjs +1 -1
- package/esm2022/lib/services/models/plan.service.mjs +1 -1
- package/esm2022/lib/services/models/poi.service.mjs +27 -27
- package/esm2022/lib/services/models/profile.service.mjs +1 -1
- package/esm2022/lib/services/models/property.service.mjs +1 -1
- package/esm2022/lib/services/models/space.service.mjs +48 -6
- package/esm2022/lib/services/models/template.service.mjs +1 -1
- package/esm2022/lib/services/models/ticket.service.mjs +27 -8
- package/esm2022/lib/services/models/visit.service.mjs +17 -5
- package/esm2022/lib/services/models/zone.service.mjs +1 -1
- package/esm2022/lib/services/navigator.service.mjs +14 -1
- package/esm2022/lib/services/s3.service.mjs +18 -1
- package/esm2022/lib/services/search.service.mjs +1 -1
- package/esm2022/lib/services/support.service.mjs +1 -1
- package/esm2022/lib/services/tag.service.mjs +16 -16
- package/esm2022/lib/services/threejs-import.service.mjs +151 -0
- package/esm2022/lib/services/threejs.service.mjs +1587 -0
- package/esm2022/lib/services/user.service.mjs +1 -1
- package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
- package/esm2022/lib/services/validators.service.mjs +1 -1
- package/esm2022/lib/services/viewer.service.mjs +402 -5
- package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
- package/esm2022/lib/services/zoneChange.service.mjs +10 -1
- package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
- package/esm2022/lib/types.service.mjs +2 -1
- package/esm2022/lib/validators/email.directive.mjs +1 -1
- package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
- package/esm2022/lib/validators/number.directive.mjs +1 -1
- package/esm2022/lib/validators/text.directive.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +8046 -5724
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/helpers.service.d.ts +43 -0
- package/lib/services/models/base-object.service.d.ts +11 -1
- package/lib/services/models/equipment.service.d.ts +2 -1
- package/lib/services/models/feature.service.d.ts +2 -1
- package/lib/services/models/space.service.d.ts +22 -1
- package/lib/services/models/ticket.service.d.ts +4 -1
- package/lib/services/models/visit.service.d.ts +9 -1
- package/lib/services/s3.service.d.ts +8 -0
- package/lib/services/threejs-import.service.d.ts +31 -0
- package/lib/services/threejs.service.d.ts +521 -0
- package/lib/services/viewer.service.d.ts +152 -1
- package/lib/services/zoneChange.service.d.ts +9 -0
- package/lib/types.service.d.ts +15 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/assets/vs-app.json +67 -67
|
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
56
56
|
type: Inject,
|
|
57
57
|
args: ['currentAPIService']
|
|
58
58
|
}] }] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFDdkIsR0FBRyxDQUFNO0lBRVQsWUFBeUMsV0FBZ0I7UUFDckQsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQjtRQUNyQixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFZO1FBQzVCLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDcEQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE1BQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNoRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN6RSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1IsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQWM7UUFDckMsT0FBTyxDQUNILE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ2xDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7U0FDekIsQ0FBQyxDQUNMLENBQUMsS0FBSyxDQUFDO0lBQ1osQ0FBQzt3R0F2RFEsY0FBYyxrQkFHSCxtQkFBbUI7NEdBSDlCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBSWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVdTVHlwZSwgUHJvZmlsZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICAgIEFQSTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55KSB7XG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlUHJvZmlsZShwcm9maWxlOiBQcm9maWxlKTogUHJvbWlzZTxQcm9maWxlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlUHJvZmlsZShwcm9maWxlKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRQcm9maWxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRQcm9maWxlKGlkKTtcbiAgICB9XG5cbiAgICBhc3luYyBsaXN0Q3VycmVudFByb2ZpbGVzKCk6IFByb21pc2U8UHJvZmlsZVtdPiB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0UHJvZmlsZXMoKSkuaXRlbXM7XG4gICAgICAgIHJldHVybiBwcm9maWxlcy5maWx0ZXIoKHApID0+ICFwLmRlbGV0ZWRBdCk7XG4gICAgfVxuXG4gICAgYXN5bmMgdXBkYXRlUHJvZmlsZShwcm9maWxlOiBhbnkpOiBQcm9taXNlPFByb2ZpbGU+IHtcbiAgICAgICAgaWYgKHByb2ZpbGUuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYGFuIElEIGlzIHJlcXVpcmVkIGZvciB1cGRhdGUgUHJvZmlsZWApO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVQcm9maWxlKHByb2ZpbGUpO1xuICAgIH1cblxuICAgIGFzeW5jIGRlbGV0ZVByb2ZpbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZVByb2ZpbGUoeyBpZDogaWQgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvZmlsZUZyb21BV1NJRCh1c2VySUQ6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlByb2ZpbGVzQnlVc2VySUQodXNlcklEKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRzLml0ZW1zWzBdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRVc2Vyc0Zvck1haWwobWFpbDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0UHJvZmlsZXMoeyBtZXRhZGF0YTogeyBjb250YWluczogbWFpbCB9IH0pLnRoZW4oXG4gICAgICAgICAgICAocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzLml0ZW1zLmZpbHRlcigocHJvZmlsZSkgPT4gIXByb2ZpbGUuZGVsZXRlZEF0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvZmlsZXNGb3JTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVbXT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkxpc3RQcm9maWxlcyh7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiB7IGVxOiBzdGF0dXMgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkuaXRlbXM7XG4gICAgfVxufSJdfQ==
|
|
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
42
42
|
type: Inject,
|
|
43
43
|
args: ['currentAPIService']
|
|
44
44
|
}] }] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3Byb3BlcnR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxlQUFlO0lBQ3hCLEdBQUcsQ0FBTTtJQUVULFlBQXlDLFdBQWdCO1FBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQWtCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQWtCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFhO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMxRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNoQixJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDTCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQWU7UUFDeEMsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDTCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkcsQ0FBQztJQUVMLENBQUM7d0dBcENRLGVBQWUsa0JBR0osbUJBQW1COzRHQUg5QixlQUFlLGNBRlosTUFBTTs7NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlnQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlTZXJ2aWNlIHtcbiAgICBBUEk6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZVByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSk6IFByb21pc2U8UHJvcGVydHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlUHJvcGVydHkocHJvcGVydHlJRDogc3RyaW5nKTogUHJvbWlzZTxQcm9wZXJ0eT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZVByb3BlcnR5KHsgaWQ6IHByb3BlcnR5SUQgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxQcm9wZXJ0eVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uUHJvcGVydGllc0J5T3JnYW5pc2F0aW9uKG9yZ0lEKS50aGVuKFxuICAgICAgICAgICAgKHByb3BzKSA9PiBwcm9wcy5pdGVtcyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBsaXN0UHJvcGVydGllcygpOiBQcm9taXNlPFByb3BlcnR5W10+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFByb3BlcnRpZXMoKS50aGVuKChwcm9wcykgPT4gcHJvcHMuaXRlbXMpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFByb3BlcnR5cygpLnRoZW4oKHByb3BzKSA9PiBwcm9wcy5pdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBsaXN0UHJvcGVydGllc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8UHJvcGVydHlbXT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0UHJvcGVydGllcyh7IHNwYWNlSUQ6IHsgZXE6IHNwYWNlSUQgfSB9KS50aGVuKChwcm9wcykgPT4gcHJvcHMuaXRlbXMpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFByb3BlcnR5cyh7IHNwYWNlSUQ6IHsgZXE6IHNwYWNlSUQgfSB9KS50aGVuKChwcm9wcykgPT4gcHJvcHMuaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICB9XG59Il19
|
|
@@ -121,12 +121,54 @@ export class SpaceService {
|
|
|
121
121
|
}
|
|
122
122
|
return null;
|
|
123
123
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
/**
|
|
125
|
+
* The visit the current user is allowed to open for this space.
|
|
126
|
+
*
|
|
127
|
+
* Callers need more than the model reference - which viewer the visit was captured with decides
|
|
128
|
+
* whether it opens in Matterport or Three.js - so the whole visit is returned here.
|
|
129
|
+
*/
|
|
130
|
+
async getAllowedVisitForSpace(spaceID) {
|
|
131
|
+
const visits = await this.getAllowedVisitsForSpace(spaceID);
|
|
132
|
+
return visits.length > 0 ? visits[0] : null;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Every visit the current user may open for this space.
|
|
136
|
+
*
|
|
137
|
+
* A site can carry more than one - a Matterport capture plus one or more 3D models - and the
|
|
138
|
+
* viewer offers them as a list, so the caller needs all of them rather than just the first.
|
|
139
|
+
*/
|
|
140
|
+
async getAllowedVisitsForSpace(spaceID) {
|
|
141
|
+
// No image count: this feeds the viewer, which only needs to know which visits exist. Asking
|
|
142
|
+
// for it would add an S3 listing per node before anything can be drawn.
|
|
143
|
+
const visits = await this.visitService.getVisitsForSpaceForUser(spaceID, false);
|
|
144
|
+
if (!visits || visits.length === 0) {
|
|
145
|
+
return [];
|
|
128
146
|
}
|
|
129
|
-
|
|
147
|
+
// The space's chosen capture comes first, so callers can take the head of the list without
|
|
148
|
+
// knowing the rule. Without this the order is whatever DynamoDB returns, which is stable
|
|
149
|
+
// enough to look deliberate and can change when a capture is added or removed.
|
|
150
|
+
const space = await this.getSpace(spaceID);
|
|
151
|
+
const defaultID = space?.defaultCaptureID;
|
|
152
|
+
if (!defaultID) {
|
|
153
|
+
return visits;
|
|
154
|
+
}
|
|
155
|
+
const chosen = visits.filter((visit) => visit.captureID === defaultID);
|
|
156
|
+
return chosen.length > 0
|
|
157
|
+
? [...chosen, ...visits.filter((visit) => visit.captureID !== defaultID)]
|
|
158
|
+
: visits;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Sets which capture a visitor opens by default for this space.
|
|
162
|
+
*
|
|
163
|
+
* Pass null to clear it. Writing a single field on the space is what keeps the answer unique:
|
|
164
|
+
* there is nothing to clear elsewhere, and no way for two captures to both claim it.
|
|
165
|
+
*/
|
|
166
|
+
async setDefaultCapture(spaceID, captureID) {
|
|
167
|
+
return this.updateSpace({ id: spaceID, defaultCaptureID: captureID });
|
|
168
|
+
}
|
|
169
|
+
async getAllowedModel3DForSpace(spaceID) {
|
|
170
|
+
const visit = await this.getAllowedVisitForSpace(spaceID);
|
|
171
|
+
return visit ? visit.model3d : null;
|
|
130
172
|
}
|
|
131
173
|
async softDeleteSpace(spaceID) {
|
|
132
174
|
await this.updateSpace({
|
|
@@ -211,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
211
253
|
type: Inject,
|
|
212
254
|
args: ['currentAPIService']
|
|
213
255
|
}] }] });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZTFELE1BQU0sT0FBTyxZQUFZO0lBU1Q7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZlosZ0JBQWdCLEdBQVksRUFBRSxDQUFDO0lBRS9CLGVBQWUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUUzRCxHQUFHLENBQU0sQ0FBQyxLQUFLO0lBRWYsWUFDWSxZQUEwQixFQUMxQixXQUE0QixFQUM1QixlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixjQUE4QixFQUM5QixhQUE2QixFQUM3QixZQUE4QixFQUM5QixjQUE4QixFQUM5QixrQkFBc0MsRUFDakIsV0FBZ0I7UUFUckMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3QixpQkFBWSxH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QUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQXRPUSxZQUFZLHNTQWtCVCxtQkFBbUI7NEdBbEJ0QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQW1CUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlclVuaXF1ZUFycmF5QnlJRCwgc29ydEFscGhhYmV0aWNhbGx5T25OYW1lIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTcGFjZSwgTGF5ZXIsIFByb3BlcnR5VHlwZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UgfSBmcm9tIFwiLi4vczMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENhcHR1cmVTZXJ2aWNlIH0gZnJvbSBcIi4vY2FwdHVyZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9lcXVpcG1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlU2VydmljZSB9IGZyb20gXCIuL2ZlYXR1cmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNZWFzdXJlbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tZWFzdXJlbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vbWlzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5U2VydmljZSB9IGZyb20gXCIuL3Byb3BlcnR5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGlja2V0c1NlcnZpY2UgfSBmcm9tIFwiLi90aWNrZXQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWaXNpdFNlcnZpY2UgfSBmcm9tIFwiLi92aXNpdC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGFjZVNlcnZpY2Uge1xyXG5cclxuICAgIGxvY2F0aW9uc0ZvclVzZXI6IFNwYWNlW10gPSBbXTtcclxuXHJcbiAgICBsb2NhdGlvblVwZGF0ZWQ6IFN1YmplY3Q8U3BhY2VbXT4gPSBuZXcgU3ViamVjdDxTcGFjZVtdPigpO1xyXG5cclxuICAgIEFQSTogYW55OyAvL0FXU1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcHJvcGVydHlTZXJ2aWNlOiBQcm9wZXJ0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjYXB0dXJlU2VydmljZTogQ2FwdHVyZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtaXNzaW9uU2VydmljZTogTWlzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0aWNrZXRTZXJ2aWNlOiBUaWNrZXRzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGVxdWlwU2VydmljZTogRXF1aXBtZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBGZWF0dXJlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1lYXN1cmVtZW50U2VydmljZTogTWVhc3VyZW1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsaXN0U3BhY2VzKCk6IFByb21pc2U8U3BhY2VbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFNwYWNlcygpLnRoZW4oKHNwYWNlcykgPT5cclxuICAgICAgICAgICAgc3BhY2VzLml0ZW1zLmZpbHRlcigoc3ApID0+ICFzcC5kZWxldGVkQXQpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TG9jYXRpb25zRm9yQ3VycmVudFVzZXIoKTogUHJvbWlzZTxTcGFjZVtdPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAoIW1pc3Npb25zKSByZXR1cm4gW107XHJcbiAgICAgICAgbGV0IGxvY2F0aW9ucyA9IFtdO1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBtaXNzaW9ucy5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChtaXNzaW9uLnNwYWNlICYmICFtaXNzaW9uLnNwYWNlLmRlbGV0ZWRBdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gYXdhaXQgdGhpcy5nZXRTcGFjZShtaXNzaW9uLnNwYWNlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNpZ25VcmxGb3JTcGFjZShzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy52aXNpdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldFZpc2l0c0ZvclNwYWNlRm9yVXNlcihzcGFjZS5pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHZpc2l0cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlLnZpc2l0cyA9IHZpc2l0cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLnB1c2goc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMgPSBzb3J0QWxwaGFiZXRpY2FsbHlPbk5hbWUoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQobG9jYXRpb25zKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbnNGb3JVc2VyID0gbG9jYXRpb25zO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25VcGRhdGVkLm5leHQobG9jYXRpb25zKTtcclxuICAgICAgICByZXR1cm4gbG9jYXRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNpZ25VcmxGb3JTcGFjZShsb2M6IFNwYWNlKSB7XHJcbiAgICAgICAgaWYgKGxvYy5hbm5leGVzKSB7XHJcbiAgICAgICAgICAgIGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UobG9jKS50aGVuKCh1cmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2MuYW5uZXhlcyA9IHVybDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEFsbG93ZWRTcGFjZXNGb3JPcmcoXHJcbiAgICAgICAgb3JnSUQ6IHN0cmluZyxcclxuICAgICAgICB1c2VyT3JnSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8U3BhY2VbXT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdXNlck9yZ0lEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiIHx8XHJcbiAgICAgICAgICAgIG9yZ0lEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RTcGFjZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3BhY2VzRm9yT3JnKHVzZXJPcmdJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U3BhY2VzRm9yT3JnKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPFNwYWNlW10+IHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihvcmdJRCk7XHJcbiAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzcGFjZXMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuc3BhY2UgJiYgIXByb3BlcnR5LnNwYWNlLmRlbGV0ZWRBdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwYWNlcy5wdXNoKHByb3BlcnR5LnNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3BhY2VzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVTcGFjZSh2YWx1ZXM6IFNwYWNlLCBsYXllcj86IExheWVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBsb2MgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlU3BhY2UodmFsdWVzKTtcclxuICAgICAgICBjb25zdCB6b25lSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlcy5uYW1lLFxyXG4gICAgICAgICAgICBzcGFjZUlEOiBsb2MuaWQsXHJcbiAgICAgICAgICAgIHN1cmZhY2U6IDAsXHJcbiAgICAgICAgICAgIGxheWVySUQ6IGxheWVyID8gbGF5ZXIuaWQgOiBudWxsLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoem9uZUlucHV0KTtcclxuICAgICAgICByZXR1cm4gbG9jO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVNwYWNlKGlucHV0OiBhbnkpOiBQcm9taXNlPFNwYWNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVTcGFjZShpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U3BhY2UoaWQ6IHN0cmluZyk6IFByb21pc2U8U3BhY2U+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFNwYWNlKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNb2RlbDNERm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCBjYXB0dXJlcyA9IGF3YWl0IHRoaXMuY2FwdHVyZVNlcnZpY2UuZ2V0Q2FwdHVyZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChjYXB0dXJlcy5sZW5ndGggPiAwICYmIGNhcHR1cmVzWzBdLm5vZGVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVzWzBdLm5vZGVzLml0ZW1zWzBdLm1vZGVsM0Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEFsbG93ZWRNb2RlbDNERm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBjb25zdCB2aXNpdHMgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgICAgIHNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodmlzaXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0c1swXS5tb2RlbDNkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzb2Z0RGVsZXRlU3BhY2Uoc3BhY2VJRDogc3RyaW5nKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTcGFjZSh7XHJcbiAgICAgICAgICAgIGlkOiBzcGFjZUlELFxyXG4gICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmxpc3RQcm9wZXJ0aWVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlclNlcnZpY2UuaXNTUEFkbWluKCkpIHtcclxuICAgICAgICAgICAgLy8gZGVsZXRlIGFsbCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5tYXAoYXN5bmMgKHByb3BlcnR5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZGVsZXRlUHJvcGVydHkocHJvcGVydHkuaWQpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgbWlzc2lvbnNcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9ucy5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtaXNzaW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgcHJvcGVydHkgZm9yIGN1cnJlbnQgT3JnXHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcmcgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VG9EZWxldGUgPSBwcm9wZXJ0aWVzLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAocHJvcGVydHkpID0+IHByb3BlcnR5Lm9yZ2FuaXNhdGlvbklEID09PSBjdXJyZW50T3JnLmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAocHJvcGVydHlUb0RlbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZGVsZXRlUHJvcGVydHkocHJvcGVydHlUb0RlbGV0ZS5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbnNUb0RlbGV0ZSA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtaXNzaW9uKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIG1pc3Npb24ub3JnYW5pc2F0aW9uSUQgPT09IGN1cnJlbnRPcmcuaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLm9yZGVyZWRPcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uc1RvRGVsZXRlLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UudXBkYXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1pc3Npb24uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0aWNrZXRzID0gYXdhaXQgdGhpcy50aWNrZXRTZXJ2aWNlLmdldFRpY2tldHNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICB0aWNrZXRzLm1hcChhc3luYyAodGlja2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnRpY2tldFNlcnZpY2UuZGVsZXRlVGlja2V0KHRpY2tldCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgZXF1aXBzID0gYXdhaXQgdGhpcy5lcXVpcFNlcnZpY2UuZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBlcXVpcHMubWFwKGFzeW5jIChlcSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcFNlcnZpY2UuZGVsZXRlRXF1aXBtZW50KGVxKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZmVhdHVyZVNlcnZpY2UuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgZmVhdHVyZXMubWFwKGFzeW5jIChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmRlbGV0ZUZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIG1lYXN1cmVtZW50c1xyXG4gICAgICAgIGNvbnN0IG1lYXN1cmVzID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKHNwYWNlSUQpO1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBtZWFzdXJlcy5tYXAoYXN5bmMgKG1lYXN1cmUpID0+IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHJlbW92ZSBmcm9tIGxpc3RcclxuICAgICAgICB0aGlzLmxvY2F0aW9uc0ZvclVzZXIgPSB0aGlzLmxvY2F0aW9uc0ZvclVzZXIuZmlsdGVyKChzcGFjZSkgPT4gc3BhY2UuaWQgIT09IHNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25VcGRhdGVkLm5leHQodGhpcy5sb2NhdGlvbnNGb3JVc2VyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGN1cnJlbnQgdXNlciBjYW4gYXJjaGl2ZSBhIHNwYWNlIChvbmx5IGlmIGhpcyBvcmdhbmlzYXRpb24gaXMgb3duaW5nIHRoZSBwcm9wZXJ0eSAoUHJvcGVydHlUeXBlLlBST1BFUlRZKSlcclxuICAgICAqIEBwYXJhbSBzcGFjZUlEXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBhc3luYyBjYW5BcmNoaXZlU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudE9yZyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE9yZ2FuaXNhdGlvbihzcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBvcmdQcm9wZXJ0aWVzID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcmcuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBvcmdQcm9wZXJ0aWVzLmZpbmQoXHJcbiAgICAgICAgICAgIChwcm9wZXJ0eV8pID0+IHByb3BlcnR5Xy5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHByb3BlcnR5LnR5cGUgPT09IFByb3BlcnR5VHlwZS5QUk9QRVJUWSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFnQixZQUFZLEVBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBZTFELE1BQU0sT0FBTyxZQUFZO0lBU1Q7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZlosZ0JBQWdCLEdBQVksRUFBRSxDQUFDO0lBRS9CLGVBQWUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUUzRCxHQUFHLENBQU0sQ0FBQyxLQUFLO0lBRWYsWUFDWSxZQUEwQixFQUMxQixXQUE0QixFQUM1QixlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixjQUE4QixFQUM5QixhQUE2QixFQUM3QixZQUE4QixFQUM5QixjQUE4QixFQUM5QixrQkFBc0MsRUFDakIsV0FBZ0I7UUFUckMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3QixpQkFBWSxH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QztRQUNOLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQy9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FDL0MsQ0FBQztRQUNGLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7d0dBclJRLFlBQVksc1NBa0JULG1CQUFtQjs0R0FsQnRCLFlBQVksY0FGVCxNQUFNOzs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBbUJRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyVW5pcXVlQXJyYXlCeUlELCBzb3J0QWxwaGFiZXRpY2FsbHlPbk5hbWUgfSBmcm9tIFwiLi4vLi4vaGVscGVycy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTcGFjZSwgTGF5ZXIsIFByb3BlcnR5VHlwZSwgVmlzaXQgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JTcGFjZSB9IGZyb20gXCIuLi9zMy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDYXB0dXJlU2VydmljZSB9IGZyb20gXCIuL2NhcHR1cmUuc2VydmljZVwiO1xuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gXCIuL2VxdWlwbWVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGZWF0dXJlU2VydmljZSB9IGZyb20gXCIuL2ZlYXR1cmUuc2VydmljZVwiO1xuaW1wb3J0IHsgTWVhc3VyZW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbWVhc3VyZW1lbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9taXNzaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFByb3BlcnR5U2VydmljZSB9IGZyb20gXCIuL3Byb3BlcnR5LnNlcnZpY2VcIjtcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSBcIi4vdGlja2V0LnNlcnZpY2VcIjtcbmltcG9ydCB7IFZpc2l0U2VydmljZSB9IGZyb20gXCIuL3Zpc2l0LnNlcnZpY2VcIjtcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFNwYWNlU2VydmljZSB7XG5cbiAgICBsb2NhdGlvbnNGb3JVc2VyOiBTcGFjZVtdID0gW107XG5cbiAgICBsb2NhdGlvblVwZGF0ZWQ6IFN1YmplY3Q8U3BhY2VbXT4gPSBuZXcgU3ViamVjdDxTcGFjZVtdPigpO1xuXG4gICAgQVBJOiBhbnk7IC8vQVdTXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB2aXNpdFNlcnZpY2U6IFZpc2l0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNhcHR1cmVTZXJ2aWNlOiBDYXB0dXJlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtaXNzaW9uU2VydmljZTogTWlzc2lvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGlja2V0U2VydmljZTogVGlja2V0c1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZXF1aXBTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZlYXR1cmVTZXJ2aWNlOiBGZWF0dXJlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtZWFzdXJlbWVudFNlcnZpY2U6IE1lYXN1cmVtZW50U2VydmljZSxcbiAgICAgICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55XG4gICAgKSB7XG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgbGlzdFNwYWNlcygpOiBQcm9taXNlPFNwYWNlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0U3BhY2VzKCkudGhlbigoc3BhY2VzKSA9PlxuICAgICAgICAgICAgc3BhY2VzLml0ZW1zLmZpbHRlcigoc3ApID0+ICFzcC5kZWxldGVkQXQpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzeW5jIGdldExvY2F0aW9uc0ZvckN1cnJlbnRVc2VyKCk6IFByb21pc2U8U3BhY2VbXT4ge1xuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xuICAgICAgICBpZiAoIW1pc3Npb25zKSByZXR1cm4gW107XG4gICAgICAgIGxldCBsb2NhdGlvbnMgPSBbXTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBtaXNzaW9ucy5tYXAoYXN5bmMgKG1pc3Npb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWlzc2lvbi5zcGFjZSAmJiAhbWlzc2lvbi5zcGFjZS5kZWxldGVkQXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhY2UgPSBhd2FpdCB0aGlzLmdldFNwYWNlKG1pc3Npb24uc3BhY2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNpZ25VcmxGb3JTcGFjZShzcGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0VmlzaXRzRm9yU3BhY2VGb3JVc2VyKHNwYWNlLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHZpc2l0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UudmlzaXRzID0gdmlzaXRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMucHVzaChzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbG9jYXRpb25zID0gc29ydEFscGhhYmV0aWNhbGx5T25OYW1lKFxuICAgICAgICAgICAgICAgIGZpbHRlclVuaXF1ZUFycmF5QnlJRChsb2NhdGlvbnMpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvY2F0aW9uc0ZvclVzZXIgPSBsb2NhdGlvbnM7XG4gICAgICAgIHRoaXMubG9jYXRpb25VcGRhdGVkLm5leHQobG9jYXRpb25zKTtcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgICB9XG5cbiAgICBhc3luYyBzaWduVXJsRm9yU3BhY2UobG9jOiBTcGFjZSkge1xuICAgICAgICBpZiAobG9jLmFubmV4ZXMpIHtcbiAgICAgICAgICAgIGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UobG9jKS50aGVuKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYy5hbm5leGVzID0gdXJsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWxsb3dlZFNwYWNlc0Zvck9yZyhcbiAgICAgICAgb3JnSUQ6IHN0cmluZyxcbiAgICAgICAgdXNlck9yZ0lEOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxTcGFjZVtdPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHVzZXJPcmdJRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiB8fFxuICAgICAgICAgICAgb3JnSUQgPT09IFwiNmUyODIwMWYtNDY3OS00YzI5LTlkMmQtOGEzMjVmNTdjZWU5XCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5saXN0U3BhY2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3BhY2VzRm9yT3JnKHVzZXJPcmdJRCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0U3BhY2VzRm9yT3JnKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPFNwYWNlW10+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5nZXRQcm9wZXJ0aWVzRm9yT3JnYW5pc2F0aW9uKG9yZ0lEKTtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgc3BhY2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuc3BhY2UgJiYgIXByb3BlcnR5LnNwYWNlLmRlbGV0ZWRBdCkge1xuICAgICAgICAgICAgICAgICAgICBzcGFjZXMucHVzaChwcm9wZXJ0eS5zcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVTcGFjZSh2YWx1ZXM6IFNwYWNlLCBsYXllcj86IExheWVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgbG9jID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVNwYWNlKHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHpvbmVJbnB1dCA9IHtcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlcy5uYW1lLFxuICAgICAgICAgICAgc3BhY2VJRDogbG9jLmlkLFxuICAgICAgICAgICAgc3VyZmFjZTogMCxcbiAgICAgICAgICAgIGxheWVySUQ6IGxheWVyID8gbGF5ZXIuaWQgOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlWm9uZSh6b25lSW5wdXQpO1xuICAgICAgICByZXR1cm4gbG9jO1xuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZVNwYWNlKGlucHV0OiBhbnkpOiBQcm9taXNlPFNwYWNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlU3BhY2UoaW5wdXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldFNwYWNlKGlkOiBzdHJpbmcpOiBQcm9taXNlPFNwYWNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0U3BhY2UoaWQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1vZGVsM0RGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBjYXB0dXJlcyA9IGF3YWl0IHRoaXMuY2FwdHVyZVNlcnZpY2UuZ2V0Q2FwdHVyZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgICAgICBpZiAoY2FwdHVyZXMubGVuZ3RoID4gMCAmJiBjYXB0dXJlc1swXS5ub2Rlcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FwdHVyZXNbMF0ubm9kZXMuaXRlbXNbMF0ubW9kZWwzRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdmlzaXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIG9wZW4gZm9yIHRoaXMgc3BhY2UuXG4gICAgICpcbiAgICAgKiBDYWxsZXJzIG5lZWQgbW9yZSB0aGFuIHRoZSBtb2RlbCByZWZlcmVuY2UgLSB3aGljaCB2aWV3ZXIgdGhlIHZpc2l0IHdhcyBjYXB0dXJlZCB3aXRoIGRlY2lkZXNcbiAgICAgKiB3aGV0aGVyIGl0IG9wZW5zIGluIE1hdHRlcnBvcnQgb3IgVGhyZWUuanMgLSBzbyB0aGUgd2hvbGUgdmlzaXQgaXMgcmV0dXJuZWQgaGVyZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBbGxvd2VkVmlzaXRGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFZpc2l0PiB7XG4gICAgICAgIGNvbnN0IHZpc2l0cyA9IGF3YWl0IHRoaXMuZ2V0QWxsb3dlZFZpc2l0c0ZvclNwYWNlKHNwYWNlSUQpO1xuICAgICAgICByZXR1cm4gdmlzaXRzLmxlbmd0aCA+IDAgPyB2aXNpdHNbMF0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZXJ5IHZpc2l0IHRoZSBjdXJyZW50IHVzZXIgbWF5IG9wZW4gZm9yIHRoaXMgc3BhY2UuXG4gICAgICpcbiAgICAgKiBBIHNpdGUgY2FuIGNhcnJ5IG1vcmUgdGhhbiBvbmUgLSBhIE1hdHRlcnBvcnQgY2FwdHVyZSBwbHVzIG9uZSBvciBtb3JlIDNEIG1vZGVscyAtIGFuZCB0aGVcbiAgICAgKiB2aWV3ZXIgb2ZmZXJzIHRoZW0gYXMgYSBsaXN0LCBzbyB0aGUgY2FsbGVyIG5lZWRzIGFsbCBvZiB0aGVtIHJhdGhlciB0aGFuIGp1c3QgdGhlIGZpcnN0LlxuICAgICAqL1xuICAgIGFzeW5jIGdldEFsbG93ZWRWaXNpdHNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFZpc2l0W10+IHtcbiAgICAgICAgLy8gTm8gaW1hZ2UgY291bnQ6IHRoaXMgZmVlZHMgdGhlIHZpZXdlciwgd2hpY2ggb25seSBuZWVkcyB0byBrbm93IHdoaWNoIHZpc2l0cyBleGlzdC4gQXNraW5nXG4gICAgICAgIC8vIGZvciBpdCB3b3VsZCBhZGQgYW4gUzMgbGlzdGluZyBwZXIgbm9kZSBiZWZvcmUgYW55dGhpbmcgY2FuIGJlIGRyYXduLlxuICAgICAgICBjb25zdCB2aXNpdHMgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoXG4gICAgICAgICAgICBzcGFjZUlELFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICk7XG4gICAgICAgIGlmICghdmlzaXRzIHx8IHZpc2l0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBzcGFjZSdzIGNob3NlbiBjYXB0dXJlIGNvbWVzIGZpcnN0LCBzbyBjYWxsZXJzIGNhbiB0YWtlIHRoZSBoZWFkIG9mIHRoZSBsaXN0IHdpdGhvdXRcbiAgICAgICAgLy8ga25vd2luZyB0aGUgcnVsZS4gV2l0aG91dCB0aGlzIHRoZSBvcmRlciBpcyB3aGF0ZXZlciBEeW5hbW9EQiByZXR1cm5zLCB3aGljaCBpcyBzdGFibGVcbiAgICAgICAgLy8gZW5vdWdoIHRvIGxvb2sgZGVsaWJlcmF0ZSBhbmQgY2FuIGNoYW5nZSB3aGVuIGEgY2FwdHVyZSBpcyBhZGRlZCBvciByZW1vdmVkLlxuICAgICAgICBjb25zdCBzcGFjZSA9IGF3YWl0IHRoaXMuZ2V0U3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJRCA9IHNwYWNlPy5kZWZhdWx0Q2FwdHVyZUlEO1xuICAgICAgICBpZiAoIWRlZmF1bHRJRCkge1xuICAgICAgICAgICAgcmV0dXJuIHZpc2l0cztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaG9zZW4gPSB2aXNpdHMuZmlsdGVyKCh2aXNpdCkgPT4gdmlzaXQuY2FwdHVyZUlEID09PSBkZWZhdWx0SUQpO1xuICAgICAgICByZXR1cm4gY2hvc2VuLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gWy4uLmNob3NlbiwgLi4udmlzaXRzLmZpbHRlcigodmlzaXQpID0+IHZpc2l0LmNhcHR1cmVJRCAhPT0gZGVmYXVsdElEKV1cbiAgICAgICAgICAgIDogdmlzaXRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hpY2ggY2FwdHVyZSBhIHZpc2l0b3Igb3BlbnMgYnkgZGVmYXVsdCBmb3IgdGhpcyBzcGFjZS5cbiAgICAgKlxuICAgICAqIFBhc3MgbnVsbCB0byBjbGVhciBpdC4gV3JpdGluZyBhIHNpbmdsZSBmaWVsZCBvbiB0aGUgc3BhY2UgaXMgd2hhdCBrZWVwcyB0aGUgYW5zd2VyIHVuaXF1ZTpcbiAgICAgKiB0aGVyZSBpcyBub3RoaW5nIHRvIGNsZWFyIGVsc2V3aGVyZSwgYW5kIG5vIHdheSBmb3IgdHdvIGNhcHR1cmVzIHRvIGJvdGggY2xhaW0gaXQuXG4gICAgICovXG4gICAgYXN5bmMgc2V0RGVmYXVsdENhcHR1cmUoc3BhY2VJRDogc3RyaW5nLCBjYXB0dXJlSUQ6IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPFNwYWNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVNwYWNlKHsgaWQ6IHNwYWNlSUQsIGRlZmF1bHRDYXB0dXJlSUQ6IGNhcHR1cmVJRCB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRBbGxvd2VkTW9kZWwzREZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHZpc2l0ID0gYXdhaXQgdGhpcy5nZXRBbGxvd2VkVmlzaXRGb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgcmV0dXJuIHZpc2l0ID8gdmlzaXQubW9kZWwzZCA6IG51bGw7XG4gICAgfVxuXG4gICAgYXN5bmMgc29mdERlbGV0ZVNwYWNlKHNwYWNlSUQ6IHN0cmluZykge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVNwYWNlKHtcbiAgICAgICAgICAgIGlkOiBzcGFjZUlELFxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5saXN0UHJvcGVydGllc0ZvclNwYWNlKHNwYWNlSUQpO1xuICAgICAgICBpZiAodGhpcy51c2VyU2VydmljZS5pc1NQQWRtaW4oKSkge1xuICAgICAgICAgICAgLy8gZGVsZXRlIGFsbCBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLm1hcChhc3luYyAocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZGVsZXRlUHJvcGVydHkocHJvcGVydHkuaWQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgbWlzc2lvbnNcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbWlzc2lvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZGVsZXRlIHByb3BlcnR5IGZvciBjdXJyZW50IE9yZ1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE9yZyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE9yZ2FuaXNhdGlvbihzcGFjZUlEKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VG9EZWxldGUgPSBwcm9wZXJ0aWVzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5vcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAocHJvcGVydHlUb0RlbGV0ZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmRlbGV0ZVByb3BlcnR5KHByb3BlcnR5VG9EZWxldGUuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbnNUb0RlbGV0ZSA9IG1pc3Npb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobWlzc2lvbikgPT5cbiAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5vcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCB8fFxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLm9yZGVyZWRPcmdhbmlzYXRpb25JRCA9PT0gY3VycmVudE9yZy5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICBtaXNzaW9uc1RvRGVsZXRlLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbWlzc2lvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRpY2tldHMgPSBhd2FpdCB0aGlzLnRpY2tldFNlcnZpY2UuZ2V0VGlja2V0c0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudGlja2V0U2VydmljZS5kZWxldGVUaWNrZXQodGlja2V0KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBlcXVpcHMgPSBhd2FpdCB0aGlzLmVxdWlwU2VydmljZS5nZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgZXF1aXBzLm1hcChhc3luYyAoZXEpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVxdWlwU2VydmljZS5kZWxldGVFcXVpcG1lbnQoZXEpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGZlYXR1cmVzLm1hcChhc3luYyAoZmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmVhdHVyZVNlcnZpY2UuZGVsZXRlRmVhdHVyZShmZWF0dXJlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIG1lYXN1cmVtZW50c1xuICAgICAgICBjb25zdCBtZWFzdXJlcyA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihzcGFjZUlEKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBtZWFzdXJlcy5tYXAoYXN5bmMgKG1lYXN1cmUpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5kZWxldGVNZWFzdXJlbWVudChtZWFzdXJlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBsaXN0XG4gICAgICAgIHRoaXMubG9jYXRpb25zRm9yVXNlciA9IHRoaXMubG9jYXRpb25zRm9yVXNlci5maWx0ZXIoKHNwYWNlKSA9PiBzcGFjZS5pZCAhPT0gc3BhY2VJRCk7XG4gICAgICAgIHRoaXMubG9jYXRpb25VcGRhdGVkLm5leHQodGhpcy5sb2NhdGlvbnNGb3JVc2VyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBjdXJyZW50IHVzZXIgY2FuIGFyY2hpdmUgYSBzcGFjZSAob25seSBpZiBoaXMgb3JnYW5pc2F0aW9uIGlzIG93bmluZyB0aGUgcHJvcGVydHkgKFByb3BlcnR5VHlwZS5QUk9QRVJUWSkpXG4gICAgICogQHBhcmFtIHNwYWNlSURcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGFzeW5jIGNhbkFyY2hpdmVTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgY3VycmVudE9yZyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE9yZ2FuaXNhdGlvbihzcGFjZUlEKTtcbiAgICAgICAgY29uc3Qgb3JnUHJvcGVydGllcyA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5nZXRQcm9wZXJ0aWVzRm9yT3JnYW5pc2F0aW9uKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcmcuaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IG9yZ1Byb3BlcnRpZXMuZmluZChcbiAgICAgICAgICAgIChwcm9wZXJ0eV8pID0+IHByb3BlcnR5Xy5zcGFjZUlEID09PSBzcGFjZUlELFxuICAgICAgICApO1xuICAgICAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gUHJvcGVydHlUeXBlLlBST1BFUlRZKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
39
39
|
type: Inject,
|
|
40
40
|
args: ['currentAPIService']
|
|
41
41
|
}] }] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL3RlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxlQUFlO0lBQ3hCLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixZQUNpQyxXQUFnQjtRQUU3QyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtJQUNaLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDLEVBQUUsRUFBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQWtCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQWU7UUFDckMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQWM7UUFDbkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekYsQ0FBQzt3R0FwQ1EsZUFBZSxrQkFJWixtQkFBbUI7NEdBSnRCLGVBQWUsY0FGWixNQUFNOzs0RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBS1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVmlzaXRUZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVTZXJ2aWNlIHtcbiAgICBBUEk6IGFueTsgLy9BV1NcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcbiAgICApIHtcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcbiAgICB9XG5cbiAgICAvLyAtLUNSVUQtLS1cbiAgICBhc3luYyBjcmVhdGUodGVtcGxhdGU6IFZpc2l0VGVtcGxhdGUpOiBQcm9taXNlPFZpc2l0VGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVWaXNpdFRlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGUodGVtcGxhdGU6IGFueSk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVZpc2l0VGVtcGxhdGUodGVtcGxhdGUpO1xuICAgIH1cblxuICAgIGFzeW5jIGRldGVsZSh0ZW1wbGF0ZUlEOiBzdHJpbmcpOiBQcm9taXNlPFZpc2l0VGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVWaXNpdFRlbXBsYXRlKHtpZDp0ZW1wbGF0ZUlEfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc29mdERlbGV0ZSh0ZW1wbGF0ZUlEOiBzdHJpbmcpOiBQcm9taXNlPFZpc2l0VGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKHtpZDogdGVtcGxhdGVJRCwgZGVsZXRlZEF0OiBEYXRlLm5vdygpfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0KHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8VmlzaXRUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFZpc2l0VGVtcGxhdGUodGVtcGxhdGVJRCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0VGVtcGxhdGVzQnlTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFZpc2l0VGVtcGxhdGVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlRlbXBsYXRlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRUZW1wbGF0ZXNCeVpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFZpc2l0VGVtcGxhdGVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlRlbXBsYXRlc0J5Wm9uZSh6b25lSUQpLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyk7XG4gICAgfVxufSJdfQ==
|
|
@@ -20,9 +20,10 @@ import * as i6 from "../navigator.service";
|
|
|
20
20
|
import * as i7 from "../filter.service";
|
|
21
21
|
import * as i8 from "../intervention.service";
|
|
22
22
|
import * as i9 from "./navigation.service";
|
|
23
|
-
import * as i10 from "
|
|
24
|
-
import * as i11 from "../
|
|
25
|
-
import * as i12 from "
|
|
23
|
+
import * as i10 from "./visit.service";
|
|
24
|
+
import * as i11 from "../viewer.service";
|
|
25
|
+
import * as i12 from "../zoneChange.service";
|
|
26
|
+
import * as i13 from "@ng-bootstrap/ng-bootstrap";
|
|
26
27
|
export class TicketsService extends BaseObjectService {
|
|
27
28
|
operationService;
|
|
28
29
|
eventService;
|
|
@@ -43,6 +44,8 @@ export class TicketsService extends BaseObjectService {
|
|
|
43
44
|
ticketsUpdated = new Subject();
|
|
44
45
|
currentSpaceID;
|
|
45
46
|
zoneIDFilter;
|
|
47
|
+
/** Set while a viewer without zone navigation (Three.js) is showing a space. */
|
|
48
|
+
spaceSubscription;
|
|
46
49
|
dateFilter;
|
|
47
50
|
ticketTypeFilter;
|
|
48
51
|
reportingIcon = ReportingIcon;
|
|
@@ -60,8 +63,8 @@ export class TicketsService extends BaseObjectService {
|
|
|
60
63
|
floorsPerSpace = null;
|
|
61
64
|
selectedFloor = null;
|
|
62
65
|
destroy$ = new Subject();
|
|
63
|
-
constructor(awsKinesisAnalyticsInjected, apiInjected, operationService, eventService, affectationService, poiService, userService, navigatorService, filterService, interventionService, navigationService, viewerService, zoneChangeService, modalService) {
|
|
64
|
-
super(poiService, navigationService);
|
|
66
|
+
constructor(awsKinesisAnalyticsInjected, apiInjected, operationService, eventService, affectationService, poiService, userService, navigatorService, filterService, interventionService, navigationService, visitService, viewerService, zoneChangeService, modalService) {
|
|
67
|
+
super(poiService, navigationService, visitService);
|
|
65
68
|
this.operationService = operationService;
|
|
66
69
|
this.eventService = eventService;
|
|
67
70
|
this.affectationService = affectationService;
|
|
@@ -85,6 +88,7 @@ export class TicketsService extends BaseObjectService {
|
|
|
85
88
|
if (this.navSubscription) {
|
|
86
89
|
this.navSubscription.unsubscribe();
|
|
87
90
|
this.filterSubscription.unsubscribe();
|
|
91
|
+
this.spaceSubscription?.unsubscribe();
|
|
88
92
|
}
|
|
89
93
|
}
|
|
90
94
|
});
|
|
@@ -511,6 +515,21 @@ export class TicketsService extends BaseObjectService {
|
|
|
511
515
|
this.initTickets().catch((e) => console.log(e.message));
|
|
512
516
|
}
|
|
513
517
|
});
|
|
518
|
+
// The Three.js viewer shows a whole space at once, with no zone to navigate into, so it
|
|
519
|
+
// announces itself here instead of through `zoneChange`. Leaving the zone filter empty is what
|
|
520
|
+
// makes every ticket of the space show up, which is the right answer for a single 3D model.
|
|
521
|
+
this.spaceSubscription?.unsubscribe();
|
|
522
|
+
this.spaceSubscription = this.zoneChangeService.spaceWithoutZones.subscribe((spaceID) => {
|
|
523
|
+
this.currentSpaceID = spaceID;
|
|
524
|
+
this.zoneIDFilter = null;
|
|
525
|
+
if (!spaceID) {
|
|
526
|
+
this.ticketTags.next(null);
|
|
527
|
+
this.ticketsUpdated.next({ space: [], zone: null });
|
|
528
|
+
this.ticketTypeFilter = null;
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
this.initTickets().catch((e) => console.log(e.message));
|
|
532
|
+
});
|
|
514
533
|
this.filterSubscription = this.filterService.subscribeToDataFilterUpdate((dateRange) => {
|
|
515
534
|
this.dateFilter = dateRange;
|
|
516
535
|
this.initTickets().catch((e) => console.log(e.message));
|
|
@@ -526,7 +545,7 @@ export class TicketsService extends BaseObjectService {
|
|
|
526
545
|
this.destroy$.next(true);
|
|
527
546
|
this.destroy$.complete();
|
|
528
547
|
}
|
|
529
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketsService, deps: [{ token: 'currentAwsKinesisAnalyticsService' }, { token: 'currentAPIService' }, { token: i1.OperationService }, { token: i2.EventService }, { token: i3.AffectationService }, { token: i4.PoiService }, { token: i5.BaseUserService }, { token: i6.NavigatorService }, { token: i7.FilterService }, { token: i8.InterventionService }, { token: i9.NavigationService }, { token: i10.
|
|
548
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketsService, deps: [{ token: 'currentAwsKinesisAnalyticsService' }, { token: 'currentAPIService' }, { token: i1.OperationService }, { token: i2.EventService }, { token: i3.AffectationService }, { token: i4.PoiService }, { token: i5.BaseUserService }, { token: i6.NavigatorService }, { token: i7.FilterService }, { token: i8.InterventionService }, { token: i9.NavigationService }, { token: i10.VisitService }, { token: i11.ViewerService }, { token: i12.ZoneChangeService }, { token: i13.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
530
549
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketsService, providedIn: 'root' });
|
|
531
550
|
}
|
|
532
551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketsService, decorators: [{
|
|
@@ -540,5 +559,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
540
559
|
}] }, { type: undefined, decorators: [{
|
|
541
560
|
type: Inject,
|
|
542
561
|
args: ['currentAPIService']
|
|
543
|
-
}] }, { type: i1.OperationService }, { type: i2.EventService }, { type: i3.AffectationService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.NavigatorService }, { type: i7.FilterService }, { type: i8.InterventionService }, { type: i9.NavigationService }, { type: i10.
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy90aWNrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0Msc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRSxPQUFPLEVBR0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEVBR1AsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFLN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUQsT0FBTyxlQUFlLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxhQUFhLE1BQU0scUNBQXFDLENBQUM7QUFDaEUsT0FBTyxhQUFhLE1BQU0sMENBQTBDLENBQUM7QUFDckUsT0FBTyxlQUFlLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBU3ZELE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQWlCO0lBd0R6QztJQUNBO0lBQ0E7SUFFQTtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQWxFVixjQUFjLEdBQXdDO1FBQ3BELElBQUksRUFBRSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0lBRUYsVUFBVSxHQUE4QixJQUFJLGVBQWUsQ0FBVyxJQUFJLENBQUMsQ0FBQztJQUU1RSxlQUFlLEdBQWEsRUFB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MkJBQTJCLENBQ3RFLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FobkJVLGNBQWMsa0JBcURmLG1DQUFtQyxhQUVuQyxtQkFBbUI7NEdBdkRsQixjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXNESSxNQUFNOzJCQUFDLG1DQUFtQzs7MEJBRTFDLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgb3Blbk1vZGFsRm9yVmlzaXRTd2l0Y2gsIHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdHRlcnRhZ0RhdGEgfSBmcm9tICcuLi8uLi9tYXR0ZXJ0YWdEYXRhJztcclxuaW1wb3J0IHtcclxuICBFdmVudCxcclxuICBUaWNrZXQsXHJcbiAgVGlja2V0VHlwZSxcclxuICBUaWNrZXRQcmlvcml0eSxcclxuICBUaWNrZXRTdGF0dXMsXHJcbiAgRXZlbnRTdGF0dXMsXHJcbiAgRXZlbnRUeXBlLFxyXG4gIEFmZmVjdGF0aW9uLFxyXG4gIFBPSSxcclxuICBQb2lUeXBlLFxyXG4gIElVcGRhdGUsXHJcbiAgWm9uZSxcclxuICBTcE1vZHVsZSxcclxufSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4uL3ZpZXdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZU9iamVjdFNlcnZpY2UgfSBmcm9tICcuL2Jhc2Utb2JqZWN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3BlcmF0aW9uU2VydmljZSB9IGZyb20gJy4vb3BlcmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSAnLi9wb2kuc2VydmljZSc7XHJcbmltcG9ydCBJbmZvcm1hdGlvbkljb24gZnJvbSAnQGljb25pZnkvaWNvbnMtbWRpL2luZm9ybWF0aW9uLW91dGxpbmUnO1xyXG5pbXBvcnQgQWNjaWRlbnRJY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9hbGVydCc7XHJcbmltcG9ydCBXb3JkT3JkZXJJY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9hY2NvdW50LWhhcmQtaGF0JztcclxuaW1wb3J0IFJlcG9ydGluZ0ljb24gZnJvbSAnQGljb25pZnkvaWNvbnMtbWRpL2ZpbGUtZG9jdW1lbnQtb3V0bGluZSc7XHJcbmltcG9ydCBNYWludGVuYW5jZUljb24gZnJvbSAnQGljb25pZnkvaWNvbnMtbWRpL3Rvb2xzJztcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW50ZXJ2ZW50aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVydmVudGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWZmZWN0YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9hZmZlY3RhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGlja2V0c1NlcnZpY2UgZXh0ZW5kcyBCYXNlT2JqZWN0U2VydmljZSB7XHJcbiAgY3VycmVudFRpY2tldHM6IHsgem9uZTogVGlja2V0W107IHNwYWNlOiBUaWNrZXRbXSB9ID0ge1xyXG4gICAgem9uZTogW10sXHJcbiAgICBzcGFjZTogW10sXHJcbiAgfTtcclxuXHJcbiAgdGlja2V0VGFnczogQmVoYXZpb3JTdWJqZWN0PFRpY2tldFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGlja2V0W10+KG51bGwpO1xyXG5cclxuICB0aWNrZXRzRmlsdGVyZWQ6IFRpY2tldFtdID0gW107XHJcblxyXG4gIHRpY2tldHNVcGRhdGVkOiBTdWJqZWN0PHtcclxuICAgIHpvbmU6IFRpY2tldFtdO1xyXG4gICAgc3BhY2U6IFRpY2tldFtdO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gIGRhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgdGlja2V0VHlwZUZpbHRlcjogVGlja2V0VHlwZVtdO1xyXG5cclxuICByZXBvcnRpbmdJY29uID0gUmVwb3J0aW5nSWNvbjtcclxuXHJcbiAgbWFpbnRlbmFuY2VJY29uID0gTWFpbnRlbmFuY2VJY29uO1xyXG5cclxuICB3b3Jrb3JkZXJJY29uID0gV29yZE9yZGVySWNvbjtcclxuXHJcbiAgaW5mb3JtYXRpb25JY29uID0gSW5mb3JtYXRpb25JY29uO1xyXG5cclxuICBhY2NpZGVudEljb24gPSBBY2NpZGVudEljb247XHJcblxyXG4gIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIEFQSTogYW55O1xyXG4gIGF3c0tpbmVzaXNBbmFseXRpY3M6IGFueTsgLy9BV1NcclxuXHJcbiAgaXNNdXNldW1Vc2VyID0gZmFsc2U7XHJcblxyXG4gIG5hdlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBmaWx0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZmxvb3JzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxyXG4gICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnksXHJcbiAgICBwcml2YXRlIG9wZXJhdGlvblNlcnZpY2U6IE9wZXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhZmZlY3RhdGlvblNlcnZpY2U6IEFmZmVjdGF0aW9uU2VydmljZSxcclxuICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGludGVydmVudGlvblNlcnZpY2U6IEludGVydmVudGlvblNlcnZpY2UsXHJcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgc3VwZXIocG9pU2VydmljZSwgbmF2aWdhdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xyXG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIHRoaXMuaXNNdXNldW1Vc2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNPbmx5TXVzZXVtUm9sZSgpO1xyXG4gICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucygpO1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5pc0NoYW5nZWQuc3Vic2NyaWJlKChpc0Nvbm5lY3RlZCkgPT4ge1xyXG4gICAgICBpZiAoaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICB0aGlzLmlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgICAgICB0aGlzLmluaXRTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2U3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdlN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcclxuICAgICAgaWYgKGZsb29yKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gZmxvb3I7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdFRpY2tldHMoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyU2VydmljZS5nZXRTcE1vZHVsZSgpID09PSBTcE1vZHVsZS5NVVNFVU0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHRpY2tldHNGaWx0ZXJlZCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRpY2tldHNCeVNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpLnRoZW4oKHRpY2tldHMpID0+IHtcclxuICAgICAgICBpZiAodGlja2V0cykge1xyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gdGlja2V0cztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aWNrZXRzRmlsdGVyZWQgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlciAmJiB0aGlzLmRhdGVGaWx0ZXJbMF0gIT0gXCJJbnZhbGlkIERhdGVcIiAmJiB0aGlzLmRhdGVGaWx0ZXJbMV0gIT0gXCJJbnZhbGlkIERhdGVcIikge1xyXG4gICAgICAgIHRpY2tldHNGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxyXG4gICAgICAgICAgdGhpcy5kYXRlRmlsdGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50aWNrZXRUeXBlRmlsdGVyKSB7XHJcbiAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gdGlja2V0c0ZpbHRlcmVkLmZpbHRlcigodGlja2V0KSA9PlxyXG4gICAgICAgICAgdGhpcy50aWNrZXRUeXBlRmlsdGVyLmluY2x1ZGVzKHRpY2tldC50eXBlKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50VGlja2V0cy5zcGFjZSA9IHRpY2tldHNGaWx0ZXJlZDtcclxuICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFRpY2tldHMuem9uZSA9IHRpY2tldHNGaWx0ZXJlZDtcclxuICAgICAgdGhpcy50aWNrZXRUYWdzLm5leHQodGlja2V0c0ZpbHRlcmVkKTtcclxuICAgICAgdGhpcy50aWNrZXRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudFRpY2tldHMpO1xyXG4gICAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50aWNrZXRUYWdzLm5leHQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGFwdFRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8VGlja2V0PiB7XHJcbiAgICBpZiAodGlja2V0LmNvbW1lbnRzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGlja2V0LmNvbW1lbnRzLml0ZW1zLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGIuY3JlYXRlZEF0KSAtIG5ldyBEYXRlKGEuY3JlYXRlZEF0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRpY2tldC5ldmVudHMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBTb3J0IGV2ZW50cyBieSBkYXRlXHJcbiAgICAgIHRpY2tldC5ldmVudHMuaXRlbXMuc29ydCgoZXZlbnQxLCBldmVudDIpID0+IHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGV2ZW50Mi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoZXZlbnQxLmNyZWF0ZWRBdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGlja2V0LnByZXN0YXRhaXJlID0gYXdhaXQgdGhpcy5pbnRlcnZlbnRpb25TZXJ2aWNlLmdldFByZXN0YXRhaXJlRm9yVGlja2V0KFxyXG4gICAgICB0aWNrZXRcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGlja2V0O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJpb3JpdHlDb2xvcih0aWNrZXQ6IFRpY2tldCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRpY2tldC5wcmlvcml0eSkge1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5Lk1BWElNVU06XHJcbiAgICAgICAgcmV0dXJuICdjcmltc29uJztcclxuICAgICAgY2FzZSBUaWNrZXRQcmlvcml0eS5ISUdIOlxyXG4gICAgICAgIHJldHVybiAncmVkJztcclxuICAgICAgY2FzZSBUaWNrZXRQcmlvcml0eS5NRURJVU06XHJcbiAgICAgICAgcmV0dXJuICdvcmFuZ2UnO1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5LkxPVzpcclxuICAgICAgICByZXR1cm4gJ2dyZWVuJztcclxuICAgICAgY2FzZSBUaWNrZXRQcmlvcml0eS5NSU5JTVVNOlxyXG4gICAgICAgIHJldHVybiAnYmx1ZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdibHVlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0NvbG9yKHRpY2tldDogVGlja2V0KTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGlja2V0LnN0YXR1cykge1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5UT19CRV9QUk9DRVNTRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjQjBCMEIxJztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuUExBTk5FRDpcclxuICAgICAgICByZXR1cm4gJyNFQkRGMjcnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5JTl9QUk9HUkVTUzpcclxuICAgICAgICByZXR1cm4gJyNFQkRGMjcnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5XQUlUSU5HX0ZPUl9WQUxJREFUSU9OOlxyXG4gICAgICAgIHJldHVybiAnI0VCREYyNyc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlZBTElEQVRFRDpcclxuICAgICAgICByZXR1cm4gJyNCQ0UyRTUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5SRUpFQ1RFRDpcclxuICAgICAgICByZXR1cm4gJyNlODRjMzUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5SRVNPTFZFRDpcclxuICAgICAgICByZXR1cm4gJyNCQ0UyRTUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5BUkNISVZFRDpcclxuICAgICAgICByZXR1cm4gJyNCMEIwQjEnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5MQVRFOlxyXG4gICAgICAgIHJldHVybiAnI2U4NGMzNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkJMT0NLRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjZTg0YzM1JztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ09NUExFVEVEOlxyXG4gICAgICAgIHJldHVybiAnIzM4ODY1OSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkRFTEFZRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjREI3NTQzJztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ0FOQ0VMTEVEOlxyXG4gICAgICAgIHJldHVybiAnI2U4NGMzNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlRPX1JFRE86XHJcbiAgICAgICAgcmV0dXJuICcjREI3NTQzJztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ1JFQVRFRDpcclxuICAgICAgICByZXR1cm4gJyNCMEIwQjEnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnI0JDRTJFNSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRQcmlvcml0eU51bWJlcih0KTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0LnByaW9yaXR5ID09PSBUaWNrZXRQcmlvcml0eS5NSU5JTVVNXHJcbiAgICAgID8gLTFcclxuICAgICAgOiB0LnByaW9yaXR5ID09PSBUaWNrZXRQcmlvcml0eS5MT1dcclxuICAgICAgICA/IDBcclxuICAgICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5Lk1FRElVTVxyXG4gICAgICAgICAgPyAxXHJcbiAgICAgICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5LkhJR0hcclxuICAgICAgICAgICAgPyAyXHJcbiAgICAgICAgICAgIDogdC5wcmlvcml0eSA9PT0gVGlja2V0UHJpb3JpdHkuTUFYSU1VTVxyXG4gICAgICAgICAgICAgID8gM1xyXG4gICAgICAgICAgICAgIDogLTE7XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRJY29uKHR5cGU6IFRpY2tldFR5cGUpOiBhbnkge1xyXG4gICAgLy8gY29uc3QgdHlwZUljb24gOiBUaWNrZXRUeXBlID0gdGlja2V0LnR5cGU7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLlJFUE9SVElORzpcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXBvcnRpbmdJY29uO1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuUkVRVUVTVF9GT1JfSU5URVJWRU5USU9OOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm1haW50ZW5hbmNlSWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLlJFUVVFU1RfRk9SX01BSU5URU5BTkNFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm1haW50ZW5hbmNlSWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLldPUktfT1JERVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya29yZGVySWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLklOQ0lERU5UOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmFjY2lkZW50SWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLklORk9STUFUSU9OOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmluZm9ybWF0aW9uSWNvbjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5tYWludGVuYW5jZUljb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRFdmVudFRvVGlja2V0KHRpY2tldDogVGlja2V0LCBldmVudDogRXZlbnQpOiBQcm9taXNlPEV2ZW50PiB7XHJcbiAgICBjb25zdCBjdXJyZW50TWlzc2lvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24odGlja2V0LnNwYWNlSUQpO1xyXG4gICAgZXZlbnQuZ3JvdXAgPSBldmVudC5ncm91cCA/IGV2ZW50Lmdyb3VwIDogJ2RlZmF1bHQnO1xyXG4gICAgZXZlbnQudGlja2V0SUQgPSBldmVudC50aWNrZXRJRCA/IGV2ZW50LnRpY2tldElEIDogdGlja2V0LmlkO1xyXG4gICAgZXZlbnQuc3RhdHVzID0gZXZlbnQuc3RhdHVzID8gZXZlbnQuc3RhdHVzIDogRXZlbnRTdGF0dXMuQ1JFQVRFRDtcclxuICAgIGV2ZW50LnR5cGUgPSBldmVudC50eXBlID8gZXZlbnQudHlwZSA6IEV2ZW50VHlwZS5USUNLRVQ7XHJcbiAgICBldmVudC5vd25lcklEID0gZXZlbnQub3duZXJJRCA/IGV2ZW50Lm93bmVySUQgOiBjdXJyZW50TWlzc2lvbi5pZDtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlY2VpdmVkRXZlbnQgPSBhd2FpdCB0aGlzLmV2ZW50U2VydmljZS5jcmVhdGVFdmVudChldmVudCk7XHJcbiAgICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgZXZlbnRUeXBlOiAnVGlja2V0IENoYW5nZScsXHJcbiAgICAgICAgICAgICAgdGlja2V0SWQ6IGV2ZW50LnRpY2tldElELFxyXG4gICAgICAgICAgICAgIHRpY2tldDogdGlja2V0LFxyXG4gICAgICAgICAgICAgIHN0YXR1czogZXZlbnQuc3RhdHVzLFxyXG4gICAgICAgICAgICAgIGV2ZW50OiBldmVudCxcclxuICAgICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnRXZlbnQgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgIScpO1xyXG4gICAgICByZXR1cm4gcmVjZWl2ZWRFdmVudDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkVGlja2V0KHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxUaWNrZXQgfCB2b2lkPiB7XHJcbiAgICB0aWNrZXQuc3RhdHVzID0gVGlja2V0U3RhdHVzLkNSRUFURUQ7XHJcbiAgICBpZiAoIXRpY2tldC5vd25lck1pc3Npb25JRCkge1xyXG4gICAgICB0aWNrZXQub3duZXJNaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKFxyXG4gICAgICAgIHRpY2tldC5zcGFjZUlEXHJcbiAgICAgICkuaWQ7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZWNlaXZlZFRpY2tldCA9IGF3YWl0IHRoaXMuY3JlYXRlVGlja2V0KHRpY2tldCk7XHJcbiAgICAgIHRoaXMuYWRkRXZlbnRUb1RpY2tldChyZWNlaXZlZFRpY2tldCwge1xyXG4gICAgICAgIHRpdGxlOiAnQ3LDqWF0aW9uIGR1IHRpY2tldCcsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGBUaWNrZXQgY3LDqcOpIHBhciAtYCxcclxuICAgICAgICB0cmFuc2xhdGlvblBhdGg6ICd0aWNrZXRFdmVudC50aWNrZXQuY3JlYXRlZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUubmV4dCh0cnVlKTtcclxuICAgICAgcmV0dXJuIHJlY2VpdmVkVGlja2V0OyAvLyBpbnN0ZWFkIG9mIHRydWVcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdUaWNrZXQgY3JlYXRpb24gRkFJTEVEJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVUaWNrZXRXaXRoRXZlbnQoXHJcbiAgICB0aWNrZXQ6IElVcGRhdGUgJiBQYXJ0aWFsPFRpY2tldD4sXHJcbiAgICBldmVudD86IEV2ZW50XHJcbiAgKTogUHJvbWlzZTxUaWNrZXQ+IHtcclxuICAgIGNvbnN0IHJlY2VpdmVkVGlja2V0ID0gYXdhaXQgdGhpcy51cGRhdGVUaWNrZXQodGlja2V0KTtcclxuICAgIGlmIChyZWNlaXZlZFRpY2tldCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnVXBkYXRlZCB0aWNrZXQgOicpO1xyXG4gICAgICBjb25zb2xlLmxvZyhyZWNlaXZlZFRpY2tldCk7XHJcbiAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuYWRkRXZlbnRUb1RpY2tldChyZWNlaXZlZFRpY2tldCwgZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlY2VpdmVkVGlja2V0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlQXNzaWduZWVGcm9tVGlja2V0KFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICBhc3NpZ25lZTogQWZmZWN0YXRpb25cclxuICApOiBQcm9taXNlPFRpY2tldD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYWZmZWN0YXRpb24gPVxyXG4gICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLnNvZnREZWxldGVBZmZlY3RhdGlvbkJ5SUQoYXNzaWduZWUuaWQpO1xyXG4gICAgICBpZiAoIWFmZmVjdGF0aW9uKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgYHJlbW92ZUFzc2lnbmVlRnJvbVRpY2tldCgke3RpY2tldC5pZH0sICR7YXNzaWduZWUuaWR9KSBmYWlsZWRgXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGlja2V0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlVGlja2V0TG9jYXRpb24oXHJcbiAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgIHRhZ0RhdGE6IE1hdHRlcnRhZ0RhdGFcclxuICApOiBQcm9taXNlPFBPST4ge1xyXG4gICAgY29uc3QgcG9pSW5wdXQgPSB7XHJcbiAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxyXG4gICAgICB0eXBlOiBQb2lUeXBlLlRJQ0tFVCxcclxuICAgICAgZWxlbWVudElEOiB0aWNrZXQuaWQsXHJcbiAgICAgIG1ldGFkYXRhOiB0YWdEYXRhLmdldE1ldGFkYXRhU3RyaW5nKCksXHJcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcclxuICAgIH0gYXMgUE9JO1xyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmNyZWF0ZVBPSUZvclNwYWNlSUQocG9pSW5wdXQpO1xyXG4gICAgYXdhaXQgdGhpcy5hZGRFdmVudFRvVGlja2V0KHRpY2tldCwge1xyXG4gICAgICB0aXRsZTogJ0NoYW5nZW1lbnQgcG9zaXRpb24gZHUgdGlja2V0JyxcclxuICAgICAgZGVzY3JpcHRpb246IFwiTGUgcG9pbnQgZCdpbnTDqXLDqnQgZHUgdGlja2V0IGEgw6l0w6kgbW9kaWZpw6lcIixcclxuICAgICAgc3RhdHVzOiBFdmVudFN0YXR1cy5QT1NJVElPTl9TRVQsXHJcbiAgICAgIHRyYW5zbGF0aW9uUGF0aDogJ3RpY2tldEV2ZW50LnBvc2l0aW9uLnNldCcsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwb2k7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVTdGF0dXNPZlRpY2tldChcclxuICAgIHRpY2tldDogVGlja2V0LFxyXG4gICAgc3RhdHVzOiBUaWNrZXRTdGF0dXNcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgY3VycmVudFN0YXR1cyA9IHRpY2tldC5zdGF0dXM7XHJcbiAgICB0aWNrZXQuc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgaWYgKGN1cnJlbnRTdGF0dXMgPT09IHN0YXR1cykge1xyXG4gICAgICByZXR1cm4gdGlja2V0O1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJ1VwZGF0aW5nIHN0YXR1cycpO1xyXG4gICAgcmV0dXJuIHRoaXMudXBkYXRlVGlja2V0KHtcclxuICAgICAgaWQ6IHRpY2tldC5pZCxcclxuICAgICAgc3RhdHVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVUeXBlT2ZUaWNrZXQodGlja2V0OiBUaWNrZXQsIHR5cGU6IFRpY2tldFR5cGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgcHJldmlvdXNUeXBlID0gdGlja2V0LnR5cGU7XHJcbiAgICB0aWNrZXQudHlwZSA9IHR5cGU7XHJcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVRpY2tldFdpdGhFdmVudChcclxuICAgICAgeyBpZDogdGlja2V0LmlkLCB0eXBlOiB0aWNrZXQudHlwZSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdUeXBlIGNoYW5nw6knLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQ2hhbmdlbWVudCBkZSAke3ByZXZpb3VzVHlwZX0gdmVycyAke3RpY2tldC50eXBlfWAsXHJcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogdGlja2V0LnR5cGUgfSksXHJcbiAgICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQudGlja2V0LnR5cGUnLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRpY2tldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRpY2tldHNGb3JVc2VyRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xyXG4gICAgY29uc3QgdGlja2V0c1NwYWNlID0gYXdhaXQgdGhpcy5nZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgdGlja2V0c1NwYWNlLFxyXG4gICAgICBzcGFjZUlEXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEJhc2ljIENSVUQgb3BlcmF0aW9ucyAqL1xyXG4gIGFzeW5jIHJlYWRUaWNrZXQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRUaWNrZXQoaWQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlVGlja2V0KGlucHV0OiBUaWNrZXQpOiBQcm9taXNlPFRpY2tldD4ge1xyXG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmICEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCAmJiB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkKCkpIHtcclxuICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB7XHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGV2ZW50VHlwZTogJ09iamVjdCBDcmVhdGlvbicsXHJcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICd0aWNrZXQnLFxyXG4gICAgICAgICAgICAvL3pvbmVJZDogaW5wdXQuc3BhY2VJRCwgLy8gVE9ETzogY2hlY2sgaWYgc3BhY2VJZCA9PSB6b25lSWRcclxuICAgICAgICAgICAgZG9tYWluOiBpbnB1dC5kb21haW4sXHJcbiAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgem9uZUlkOiB0aGlzLnpvbmVJREZpbHRlcixcclxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzdHJlYW1OYW1lOiAnc21hcnRlcnBsYW5LaW5lc2lzLWFuYWx5dGljcycsXHJcbiAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnQVdTS2luZXNpcydcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgaWQsXHJcbiAgICAgIGNyZWF0ZWRBdCxcclxuICAgICAgdXBkYXRlZEF0LFxyXG4gICAgICBfX3R5cGVuYW1lLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgZG9tYWluLFxyXG4gICAgICBvd25lck1pc3Npb24sXHJcbiAgICAgIGVxdWlwbWVudHMsXHJcbiAgICAgIHByZXN0YXRhaXJlLFxyXG4gICAgICBzcGFjZSxcclxuICAgICAgcG9pcyxcclxuICAgICAgLi4uZ3JhcGhxbElucHV0XHJcbiAgICB9ID0gaW5wdXQgYXMgYW55O1xyXG5cclxuICAgIHJldHVybiB0aGlzLkFQSS5DcmVhdGVUaWNrZXQoaW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlVGlja2V0KGlucHV0OiBJVXBkYXRlICYgUGFydGlhbDxUaWNrZXQ+KTogUHJvbWlzZTxUaWNrZXQ+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlVGlja2V0KGlucHV0KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZVRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8VGlja2V0PiB7XHJcbiAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZVRpY2tldCh7IGlkOiB0aWNrZXQuaWQgfSk7XHJcblxyXG4gICAgLy8gZGVsZXRlIFBPSVxyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKHRpY2tldC5pZCk7XHJcbiAgICBpZiAocG9pKSB7XHJcbiAgICAgIHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kocG9pLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjbGVhbiBwYXJlbnRJRFxyXG4gICAgaWYgKHRpY2tldC5jaGlsZHJlbi5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRpY2tldC5jaGlsZHJlbi5pdGVtcy5tYXAoYXN5bmMgKGNoaWxkVGlja2V0KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVUaWNrZXQoe1xyXG4gICAgICAgICAgICBpZDogY2hpbGRUaWNrZXQuaWQsXHJcbiAgICAgICAgICAgIHBhcmVudElEOiBudWxsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCB1cGRhdGUgdGlja2V0JywgY2hpbGRUaWNrZXQuaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUV2ZW50KHtcclxuICAgICAgICAgIHRpdGxlOiAnVGlja2V0IHBhcmVudCBzdXBwcmltw6knLFxyXG4gICAgICAgICAgdGlja2V0SUQ6IGNoaWxkVGlja2V0LmlkLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBUaWNrZXQgXFxcIiR0aWNrZXQudGl0bGV9XFxcIiBhIMOpdMOpIHN1cHByaW3DqWAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gZGVsZXRlIGV2ZW50c1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIHRpY2tldC5ldmVudHMuaXRlbXMubWFwKGFzeW5jIChldmVudF8pID0+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRXZlbnQoeyBpZDogZXZlbnRfLmlkIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIC8vIGRlbGV0ZSBhZmZlY3RhdGlvbm5zXHJcbiAgICBpZiAodGlja2V0LmFzc2lnbmVlcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aWNrZXQuYXNzaWduZWVzLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUFmZmVjdGF0aW9uKHsgaWQ6IGVsZW1lbnQuaWQgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGRlbGV0ZSBjb21tZW50c1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIHRpY2tldC5jb21tZW50cy5pdGVtcy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlQ29tbWVudCh7IGlkOiBjb21tZW50LmlkIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5kZWxldGVPcGVyYXRpb25zRm9yVGlja2V0KHRpY2tldC5pZCk7XHJcbiAgICByZXR1cm4gZGVsZXRlZDtcclxuICB9XHJcblxyXG4gIC8qKiBDdXN0b20gcmVxdWVzdHMgKi9cclxuICBhc3luYyBnZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFRpY2tldFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5UaWNrZXRzQnlTcGFjZShzcGFjZUlEKVxyXG4gICAgICAudGhlbigodGlja2V0cykgPT4gdGlja2V0cy5pdGVtcyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVJY29uRm9yQWxsVGlja2V0c0luU3BhY2UoXHJcbiAgICB0YWdJY29uOiBzdHJpbmcsXHJcbiAgICBzcGFjZUlEOiBzdHJpbmdcclxuICApOiBQcm9taXNlPHsgdGlja2V0czogVGlja2V0W107IHBvaXM6IFBPSVtdIH0+IHtcclxuICAgIGNvbnN0IHRpY2tldHMgPSBhd2FpdCB0aGlzLmdldFRpY2tldHNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHModGlja2V0cywgdGFnSWNvbik7XHJcbiAgICByZXR1cm4geyB0aWNrZXRzLCBwb2lzIH07XHJcbiAgfVxyXG5cclxuICAvKiogQXJjaGl2ZSByZWxhdGVkICovXHJcbiAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFyY2hpdmVkIHRoaXMgdGlja2V0ICovXHJcbiAgaXNBcmNoaXZlZCh0aWNrZXQ6IFRpY2tldCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRpY2tldC5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICA/IHRpY2tldC5hcmNoaXZlZEZvck1pc3Npb25JRC5pbmNsdWRlcyhcclxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRpY2tldC5zcGFjZUlEKS5pZFxyXG4gICAgICApXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRBcmNoaXZlZCh0aWNrZXQ6IFRpY2tldCwgYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBhcmNoaXZlZExpc3QgPSB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgPyB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgOiBbXTtcclxuICAgIGNvbnN0IG1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24odGlja2V0LnNwYWNlSUQpLmlkO1xyXG5cclxuICAgIGFyY2hpdmVkTGlzdCA9IGFyY2hpdmVkTGlzdC5maWx0ZXIoKG0pID0+IG0gIT09IG1pc3Npb25JRCk7XHJcblxyXG4gICAgaWYgKGFyY2hpdmVkKSB7XHJcbiAgICAgIGFyY2hpdmVkTGlzdC5wdXNoKG1pc3Npb25JRCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudXBkYXRlVGlja2V0V2l0aEV2ZW50KHtcclxuICAgICAgaWQ6IHRpY2tldC5pZCxcclxuICAgICAgYXJjaGl2ZWRGb3JNaXNzaW9uSUQ6IGFyY2hpdmVkTGlzdCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmF2aWdhdGVUb1RpY2tldEluM0QoXHJcbiAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgIGZvcmNlU3dpdGNoVmlzaXQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICkge1xyXG4gICAgbGV0IHVybCA9IGB2aXNpdC8ke3RpY2tldC5zcGFjZUlEfWA7XHJcbiAgICBpZiAoZm9yY2VTd2l0Y2hWaXNpdCkge1xyXG4gICAgICB1cmwgKz0gYC9kZXRhaWwvJHt0aWNrZXQuaWR9YDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhbkdvVG9UYWcgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuYWN0aW9uX21vdmVfdG9fdGFnKFxyXG4gICAgICBgJHt0aWNrZXQuaWR9YFxyXG4gICAgKTtcclxuICAgIGlmIChjYW5Hb1RvVGFnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TW9kZWwzZEFuZFN3ZWVwKHRpY2tldCk7XHJcbiAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lm1vZGVsM0QpIHtcclxuICAgICAgYWxlcnQoJ0Vycm9yIHdoaWxlIGdldHRpbmcgdmlydHVhbCB2aXNpdCBtb2RlbCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWZvcmNlU3dpdGNoVmlzaXQpIHtcclxuICAgICAgLy8gY2hlY2sgaWYgd2UgYXJlIG1vdmluZyB3aXRoaW4gdGhlIHNhbWUgM0QgbW9kZWxcclxuICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21vZGVsM0QnKTtcclxuICAgICAgaWYgKGN1cnJlbnRNb2RlbCAmJiBjdXJyZW50TW9kZWwgPT09IHJlc3VsdC5tb2RlbDNEKSB7XHJcbiAgICAgICAgLy8gd2UgYWRkIHRhZyB0byB0aGUgdmlzaXRcclxuICAgICAgICBjb25zdCBwb2kgPSB0aWNrZXQucG9pcy5pdGVtc1swXTtcclxuICAgICAgICBpZiAocG9pLmNvb3JkaW5hdGUpIHtcclxuICAgICAgICAgIC8vIHdlIGZvcmNlIGFkZCBiZWNhdXNlIHdlIG1pZ2h0IGJlIGluIGFuIGFub3RoZXIgem9uZVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbkFkZE9iamVjdEZyb21QT0kodGlja2V0LCBwb2kpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyh0aWNrZXQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvKiogU2kgb24gbmUgZm9yY2UgcGFzIGxhIHZpc2l0ZSwgb24gZGVtYW5kZSBzaSBvbiB2ZXV0IGV0cmUgc3dpdGNoICovXHJcbiAgICAgICAgb3Blbk1vZGFsRm9yVmlzaXRTd2l0Y2goXHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZSxcclxuICAgICAgICAgIHJlc3VsdC5tb2RlbDNELFxyXG4gICAgICAgICAgdGlja2V0LnNwYWNlSUQsXHJcbiAgICAgICAgICB7IHN3ZWVwVG9Nb3ZlOiByZXN1bHQuc3dlZXAsIHJvdGF0aW9uOiByZXN1bHQucm90YXRpb24gfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGAke3VybH0/bW9kZWwzRD0ke3Jlc3VsdC5tb2RlbDNEfSZzd2VlcD10cnVlYCwgJ19ibGFuaycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyU2VydmljZS5nZXRTcE1vZHVsZSgpID09PSBTcE1vZHVsZS5NVVNFVU0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24gPSB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKFxyXG4gICAgICAoem9uZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLnRpY2tldFRhZ3MubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMudGlja2V0c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcclxuICAgICAgICAgIHRoaXMudGlja2V0VHlwZUZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmICh6b25lLmlkICE9PSB0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJnb2luZyB0byBpbml0IHRpY2tldHMgZnJvbSB6b25lXCIpO1xyXG4gICAgICAgICAgdGhpcy5pbml0VGlja2V0cygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyU2VydmljZS5zdWJzY3JpYmVUb0RhdGFGaWx0ZXJVcGRhdGUoXHJcbiAgICAgIChkYXRlUmFuZ2UpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSBkYXRlUmFuZ2U7XHJcbiAgICAgICAgdGhpcy5pbml0VGlja2V0cygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGF0ZUZpbHRlciA9IHRoaXMuZmlsdGVyU2VydmljZS5jdXJyZW50RGF0ZUZpbHRlcjtcclxuICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgIHRoaXMuaW5pdFRpY2tldHMoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
562
|
+
}] }, { type: i1.OperationService }, { type: i2.EventService }, { type: i3.AffectationService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.NavigatorService }, { type: i7.FilterService }, { type: i8.InterventionService }, { type: i9.NavigationService }, { type: i10.VisitService }, { type: i11.ViewerService }, { type: i12.ZoneChangeService }, { type: i13.NgbModal }] });
|
|
563
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy90aWNrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0Msc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRSxPQUFPLEVBR0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEVBR1AsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFLN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLMUQsT0FBTyxlQUFlLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxhQUFhLE1BQU0scUNBQXFDLENBQUM7QUFDaEUsT0FBTyxhQUFhLE1BQU0sMENBQTBDLENBQUM7QUFDckUsT0FBTyxlQUFlLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN2RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQTJEekM7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFHQTtJQUNBO0lBQ0E7SUF0RVYsY0FBYyxHQUF3QztRQUNwRCxJQUFJLEVBQUUsRUFBRTtRQUNSLEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQztJQUVGLFVBQVUsR0FBOEIsSUFBSSxlQUFlLENBQVcsSUFBSSxDQUFDLENBQUM7SUFFNUUsZUFBZSxHQUFhLEVB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QzFELENBQUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0F0b0JVLGNBQWMsa0JBd0RmLG1DQUFtQyxhQUVuQyxtQkFBbUI7NEdBMURsQixjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXlESSxNQUFNOzJCQUFDLG1DQUFtQzs7MEJBRTFDLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuLyogZXNsaW50LWRpc2FibGUgY29uc2lzdGVudC1yZXR1cm4gKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaCwgd2FpdFVudGlsIH0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdHRlcnRhZ0RhdGEgfSBmcm9tICcuLi8uLi9tYXR0ZXJ0YWdEYXRhJztcbmltcG9ydCB7XG4gIEV2ZW50LFxuICBUaWNrZXQsXG4gIFRpY2tldFR5cGUsXG4gIFRpY2tldFByaW9yaXR5LFxuICBUaWNrZXRTdGF0dXMsXG4gIEV2ZW50U3RhdHVzLFxuICBFdmVudFR5cGUsXG4gIEFmZmVjdGF0aW9uLFxuICBQT0ksXG4gIFBvaVR5cGUsXG4gIElVcGRhdGUsXG4gIFpvbmUsXG4gIFNwTW9kdWxlLFxufSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlT2JqZWN0U2VydmljZSB9IGZyb20gJy4vYmFzZS1vYmplY3Quc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9wZXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL29wZXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tICcuL3BvaS5zZXJ2aWNlJztcbmltcG9ydCB7IFZpc2l0U2VydmljZSB9IGZyb20gJy4vdmlzaXQuc2VydmljZSc7XG5pbXBvcnQgSW5mb3JtYXRpb25JY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9pbmZvcm1hdGlvbi1vdXRsaW5lJztcbmltcG9ydCBBY2NpZGVudEljb24gZnJvbSAnQGljb25pZnkvaWNvbnMtbWRpL2FsZXJ0JztcbmltcG9ydCBXb3JkT3JkZXJJY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9hY2NvdW50LWhhcmQtaGF0JztcbmltcG9ydCBSZXBvcnRpbmdJY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9maWxlLWRvY3VtZW50LW91dGxpbmUnO1xuaW1wb3J0IE1haW50ZW5hbmNlSWNvbiBmcm9tICdAaWNvbmlmeS9pY29ucy1tZGkvdG9vbHMnO1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEludGVydmVudGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcnZlbnRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBZmZlY3RhdGlvblNlcnZpY2UgfSBmcm9tICcuL2FmZmVjdGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUaWNrZXRzU2VydmljZSBleHRlbmRzIEJhc2VPYmplY3RTZXJ2aWNlIHtcbiAgY3VycmVudFRpY2tldHM6IHsgem9uZTogVGlja2V0W107IHNwYWNlOiBUaWNrZXRbXSB9ID0ge1xuICAgIHpvbmU6IFtdLFxuICAgIHNwYWNlOiBbXSxcbiAgfTtcblxuICB0aWNrZXRUYWdzOiBCZWhhdmlvclN1YmplY3Q8VGlja2V0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaWNrZXRbXT4obnVsbCk7XG5cbiAgdGlja2V0c0ZpbHRlcmVkOiBUaWNrZXRbXSA9IFtdO1xuXG4gIHRpY2tldHNVcGRhdGVkOiBTdWJqZWN0PHtcbiAgICB6b25lOiBUaWNrZXRbXTtcbiAgICBzcGFjZTogVGlja2V0W107XG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xuXG4gIHpvbmVJREZpbHRlcjogc3RyaW5nO1xuXG4gIC8qKiBTZXQgd2hpbGUgYSB2aWV3ZXIgd2l0aG91dCB6b25lIG5hdmlnYXRpb24gKFRocmVlLmpzKSBpcyBzaG93aW5nIGEgc3BhY2UuICovXG4gIHByaXZhdGUgc3BhY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBkYXRlRmlsdGVyOiBEYXRlW107XG5cbiAgdGlja2V0VHlwZUZpbHRlcjogVGlja2V0VHlwZVtdO1xuXG4gIHJlcG9ydGluZ0ljb24gPSBSZXBvcnRpbmdJY29uO1xuXG4gIG1haW50ZW5hbmNlSWNvbiA9IE1haW50ZW5hbmNlSWNvbjtcblxuICB3b3Jrb3JkZXJJY29uID0gV29yZE9yZGVySWNvbjtcblxuICBpbmZvcm1hdGlvbkljb24gPSBJbmZvcm1hdGlvbkljb247XG5cbiAgYWNjaWRlbnRJY29uID0gQWNjaWRlbnRJY29uO1xuXG4gIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICBBUEk6IGFueTtcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuXG4gIGlzTXVzZXVtVXNlciA9IGZhbHNlO1xuXG4gIG5hdlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xuXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXG4gICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWZmZWN0YXRpb25TZXJ2aWNlOiBBZmZlY3RhdGlvblNlcnZpY2UsXG4gICAgcG9pU2VydmljZTogUG9pU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGludGVydmVudGlvblNlcnZpY2U6IEludGVydmVudGlvblNlcnZpY2UsXG4gICAgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcbiAgKSB7XG4gICAgc3VwZXIocG9pU2VydmljZSwgbmF2aWdhdGlvblNlcnZpY2UsIHZpc2l0U2VydmljZSk7XG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xuICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XG4gICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucygpO1xuICAgIHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcbiAgICAgIGlmIChpc0Nvbm5lY3RlZCkge1xuICAgICAgICB0aGlzLmlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcbiAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMubmF2U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGhpcy5uYXZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuc3BhY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcbiAgICAgIGlmIChmbG9vcikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGluaXRUaWNrZXRzKCkge1xuICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmdldFNwTW9kdWxlKCkgPT09IFNwTW9kdWxlLk1VU0VVTSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdGlja2V0c0ZpbHRlcmVkID0gW107XG4gICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VGlja2V0c0J5U3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCkudGhlbigodGlja2V0cykgPT4ge1xuICAgICAgICBpZiAodGlja2V0cykge1xuICAgICAgICAgIHRpY2tldHNGaWx0ZXJlZCA9IHRpY2tldHM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGlja2V0c0ZpbHRlcmVkID1cbiAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JDdXJyZW50VXNlckluU3BhY2UoXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcbiAgICAgICAgKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIgJiYgdGhpcy5kYXRlRmlsdGVyWzBdICE9IFwiSW52YWxpZCBEYXRlXCIgJiYgdGhpcy5kYXRlRmlsdGVyWzFdICE9IFwiSW52YWxpZCBEYXRlXCIpIHtcbiAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3JEYXRlUmFuZ2UoXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxuICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlclxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGlja2V0VHlwZUZpbHRlcikge1xuICAgICAgICB0aWNrZXRzRmlsdGVyZWQgPSB0aWNrZXRzRmlsdGVyZWQuZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgICAgICAgdGhpcy50aWNrZXRUeXBlRmlsdGVyLmluY2x1ZGVzKHRpY2tldC50eXBlKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50VGlja2V0cy5zcGFjZSA9IHRpY2tldHNGaWx0ZXJlZDtcbiAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xuICAgICAgICB0aWNrZXRzRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRUaWNrZXRzLnpvbmUgPSB0aWNrZXRzRmlsdGVyZWQ7XG4gICAgICB0aGlzLnRpY2tldFRhZ3MubmV4dCh0aWNrZXRzRmlsdGVyZWQpO1xuICAgICAgdGhpcy50aWNrZXRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudFRpY2tldHMpO1xuICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aWNrZXRUYWdzLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWRhcHRUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFRpY2tldD4ge1xuICAgIGlmICh0aWNrZXQuY29tbWVudHMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGlja2V0LmNvbW1lbnRzLml0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRpY2tldC5ldmVudHMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gU29ydCBldmVudHMgYnkgZGF0ZVxuICAgICAgdGlja2V0LmV2ZW50cy5pdGVtcy5zb3J0KChldmVudDEsIGV2ZW50MikgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShldmVudDIuY3JlYXRlZEF0KSAtIG5ldyBEYXRlKGV2ZW50MS5jcmVhdGVkQXQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRpY2tldC5wcmVzdGF0YWlyZSA9IGF3YWl0IHRoaXMuaW50ZXJ2ZW50aW9uU2VydmljZS5nZXRQcmVzdGF0YWlyZUZvclRpY2tldChcbiAgICAgIHRpY2tldFxuICAgICk7XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfVxuXG4gIGdldFByaW9yaXR5Q29sb3IodGlja2V0OiBUaWNrZXQpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGlja2V0LnByaW9yaXR5KSB7XG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5Lk1BWElNVU06XG4gICAgICAgIHJldHVybiAnY3JpbXNvbic7XG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5LkhJR0g6XG4gICAgICAgIHJldHVybiAncmVkJztcbiAgICAgIGNhc2UgVGlja2V0UHJpb3JpdHkuTUVESVVNOlxuICAgICAgICByZXR1cm4gJ29yYW5nZSc7XG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5LkxPVzpcbiAgICAgICAgcmV0dXJuICdncmVlbic7XG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5Lk1JTklNVU06XG4gICAgICAgIHJldHVybiAnYmx1ZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2JsdWUnO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YXR1c0NvbG9yKHRpY2tldDogVGlja2V0KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRpY2tldC5zdGF0dXMpIHtcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlRPX0JFX1BST0NFU1NFRDpcbiAgICAgICAgcmV0dXJuICcjQjBCMEIxJztcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlBMQU5ORUQ6XG4gICAgICAgIHJldHVybiAnI0VCREYyNyc7XG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5JTl9QUk9HUkVTUzpcbiAgICAgICAgcmV0dXJuICcjRUJERjI3JztcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLldBSVRJTkdfRk9SX1ZBTElEQVRJT046XG4gICAgICAgIHJldHVybiAnI0VCREYyNyc7XG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5WQUxJREFURUQ6XG4gICAgICAgIHJldHVybiAnI0JDRTJFNSc7XG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5SRUpFQ1RFRDpcbiAgICAgICAgcmV0dXJuICcjZTg0YzM1JztcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlJFU09MVkVEOlxuICAgICAgICByZXR1cm4gJyNCQ0UyRTUnO1xuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQVJDSElWRUQ6XG4gICAgICAgIHJldHVybiAnI0IwQjBCMSc7XG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5MQVRFOlxuICAgICAgICByZXR1cm4gJyNlODRjMzUnO1xuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQkxPQ0tFRDpcbiAgICAgICAgcmV0dXJuICcjZTg0YzM1JztcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkNPTVBMRVRFRDpcbiAgICAgICAgcmV0dXJuICcjMzg4NjU5JztcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkRFTEFZRUQ6XG4gICAgICAgIHJldHVybiAnI0RCNzU0Myc7XG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5DQU5DRUxMRUQ6XG4gICAgICAgIHJldHVybiAnI2U4NGMzNSc7XG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5UT19SRURPOlxuICAgICAgICByZXR1cm4gJyNEQjc1NDMnO1xuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ1JFQVRFRDpcbiAgICAgICAgcmV0dXJuICcjQjBCMEIxJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnI0JDRTJFNSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGlja2V0UHJpb3JpdHlOdW1iZXIodCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5Lk1JTklNVU1cbiAgICAgID8gLTFcbiAgICAgIDogdC5wcmlvcml0eSA9PT0gVGlja2V0UHJpb3JpdHkuTE9XXG4gICAgICAgID8gMFxuICAgICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5Lk1FRElVTVxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogdC5wcmlvcml0eSA9PT0gVGlja2V0UHJpb3JpdHkuSElHSFxuICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5Lk1BWElNVU1cbiAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgIDogLTE7XG4gIH1cblxuICBnZXRUaWNrZXRJY29uKHR5cGU6IFRpY2tldFR5cGUpOiBhbnkge1xuICAgIC8vIGNvbnN0IHR5cGVJY29uIDogVGlja2V0VHlwZSA9IHRpY2tldC50eXBlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBUaWNrZXRUeXBlLlJFUE9SVElORzpcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwb3J0aW5nSWNvbjtcbiAgICAgIGNhc2UgVGlja2V0VHlwZS5SRVFVRVNUX0ZPUl9JTlRFUlZFTlRJT046XG4gICAgICAgIHJldHVybiB0aGlzLm1haW50ZW5hbmNlSWNvbjtcbiAgICAgIGNhc2UgVGlja2V0VHlwZS5SRVFVRVNUX0ZPUl9NQUlOVEVOQU5DRTpcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpbnRlbmFuY2VJY29uO1xuICAgICAgY2FzZSBUaWNrZXRUeXBlLldPUktfT1JERVI6XG4gICAgICAgIHJldHVybiB0aGlzLndvcmtvcmRlckljb247XG4gICAgICBjYXNlIFRpY2tldFR5cGUuSU5DSURFTlQ6XG4gICAgICAgIHJldHVybiB0aGlzLmFjY2lkZW50SWNvbjtcbiAgICAgIGNhc2UgVGlja2V0VHlwZS5JTkZPUk1BVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5mb3JtYXRpb25JY29uO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpbnRlbmFuY2VJY29uO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFkZEV2ZW50VG9UaWNrZXQodGlja2V0OiBUaWNrZXQsIGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+IHtcbiAgICBjb25zdCBjdXJyZW50TWlzc2lvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24odGlja2V0LnNwYWNlSUQpO1xuICAgIGV2ZW50Lmdyb3VwID0gZXZlbnQuZ3JvdXAgPyBldmVudC5ncm91cCA6ICdkZWZhdWx0JztcbiAgICBldmVudC50aWNrZXRJRCA9IGV2ZW50LnRpY2tldElEID8gZXZlbnQudGlja2V0SUQgOiB0aWNrZXQuaWQ7XG4gICAgZXZlbnQuc3RhdHVzID0gZXZlbnQuc3RhdHVzID8gZXZlbnQuc3RhdHVzIDogRXZlbnRTdGF0dXMuQ1JFQVRFRDtcbiAgICBldmVudC50eXBlID0gZXZlbnQudHlwZSA/IGV2ZW50LnR5cGUgOiBFdmVudFR5cGUuVElDS0VUO1xuICAgIGV2ZW50Lm93bmVySUQgPSBldmVudC5vd25lcklEID8gZXZlbnQub3duZXJJRCA6IGN1cnJlbnRNaXNzaW9uLmlkO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWNlaXZlZEV2ZW50ID0gYXdhaXQgdGhpcy5ldmVudFNlcnZpY2UuY3JlYXRlRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmICEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCAmJiB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkKCkpIHtcbiAgICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGV2ZW50VHlwZTogJ1RpY2tldCBDaGFuZ2UnLFxuICAgICAgICAgICAgICB0aWNrZXRJZDogZXZlbnQudGlja2V0SUQsXG4gICAgICAgICAgICAgIHRpY2tldDogdGlja2V0LFxuICAgICAgICAgICAgICBzdGF0dXM6IGV2ZW50LnN0YXR1cyxcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxuICAgICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxuICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXG4gICAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxuICAgICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ0FXU0tpbmVzaXMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBjb25zb2xlLmxvZygnRXZlbnQgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgIScpO1xuICAgICAgcmV0dXJuIHJlY2VpdmVkRXZlbnQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFkZFRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8VGlja2V0IHwgdm9pZD4ge1xuICAgIHRpY2tldC5zdGF0dXMgPSBUaWNrZXRTdGF0dXMuQ1JFQVRFRDtcbiAgICBpZiAoIXRpY2tldC5vd25lck1pc3Npb25JRCkge1xuICAgICAgdGlja2V0Lm93bmVyTWlzc2lvbklEID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihcbiAgICAgICAgdGlja2V0LnNwYWNlSURcbiAgICAgICkuaWQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWNlaXZlZFRpY2tldCA9IGF3YWl0IHRoaXMuY3JlYXRlVGlja2V0KHRpY2tldCk7XG4gICAgICB0aGlzLmFkZEV2ZW50VG9UaWNrZXQocmVjZWl2ZWRUaWNrZXQsIHtcbiAgICAgICAgdGl0bGU6ICdDcsOpYXRpb24gZHUgdGlja2V0JyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBUaWNrZXQgY3LDqcOpIHBhciAtYCxcbiAgICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQudGlja2V0LmNyZWF0ZWQnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZURvbmUubmV4dCh0cnVlKTtcbiAgICAgIHJldHVybiByZWNlaXZlZFRpY2tldDsgLy8gaW5zdGVhZCBvZiB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdUaWNrZXQgY3JlYXRpb24gRkFJTEVEJyk7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVRpY2tldFdpdGhFdmVudChcbiAgICB0aWNrZXQ6IElVcGRhdGUgJiBQYXJ0aWFsPFRpY2tldD4sXG4gICAgZXZlbnQ/OiBFdmVudFxuICApOiBQcm9taXNlPFRpY2tldD4ge1xuICAgIGNvbnN0IHJlY2VpdmVkVGlja2V0ID0gYXdhaXQgdGhpcy51cGRhdGVUaWNrZXQodGlja2V0KTtcbiAgICBpZiAocmVjZWl2ZWRUaWNrZXQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIHRpY2tldCA6Jyk7XG4gICAgICBjb25zb2xlLmxvZyhyZWNlaXZlZFRpY2tldCk7XG4gICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGRFdmVudFRvVGlja2V0KHJlY2VpdmVkVGlja2V0LCBldmVudCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZURvbmUubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY2VpdmVkVGlja2V0O1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlQXNzaWduZWVGcm9tVGlja2V0KFxuICAgIHRpY2tldDogVGlja2V0LFxuICAgIGFzc2lnbmVlOiBBZmZlY3RhdGlvblxuICApOiBQcm9taXNlPFRpY2tldD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhZmZlY3RhdGlvbiA9XG4gICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLnNvZnREZWxldGVBZmZlY3RhdGlvbkJ5SUQoYXNzaWduZWUuaWQpO1xuICAgICAgaWYgKCFhZmZlY3RhdGlvbikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYHJlbW92ZUFzc2lnbmVlRnJvbVRpY2tldCgke3RpY2tldC5pZH0sICR7YXNzaWduZWUuaWR9KSBmYWlsZWRgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVGlja2V0TG9jYXRpb24oXG4gICAgdGlja2V0OiBUaWNrZXQsXG4gICAgdGFnRGF0YTogTWF0dGVydGFnRGF0YVxuICApOiBQcm9taXNlPFBPST4ge1xuICAgIGNvbnN0IHBvaUlucHV0ID0ge1xuICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXG4gICAgICB0eXBlOiBQb2lUeXBlLlRJQ0tFVCxcbiAgICAgIGVsZW1lbnRJRDogdGlja2V0LmlkLFxuICAgICAgbWV0YWRhdGE6IHRhZ0RhdGEuZ2V0TWV0YWRhdGFTdHJpbmcoKSxcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcbiAgICB9IGFzIFBPSTtcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XG4gICAgYXdhaXQgdGhpcy5hZGRFdmVudFRvVGlja2V0KHRpY2tldCwge1xuICAgICAgdGl0bGU6ICdDaGFuZ2VtZW50IHBvc2l0aW9uIGR1IHRpY2tldCcsXG4gICAgICBkZXNjcmlwdGlvbjogXCJMZSBwb2ludCBkJ2ludMOpcsOqdCBkdSB0aWNrZXQgYSDDqXTDqSBtb2RpZmnDqVwiLFxuICAgICAgc3RhdHVzOiBFdmVudFN0YXR1cy5QT1NJVElPTl9TRVQsXG4gICAgICB0cmFuc2xhdGlvblBhdGg6ICd0aWNrZXRFdmVudC5wb3NpdGlvbi5zZXQnLFxuICAgIH0pO1xuICAgIHJldHVybiBwb2k7XG4gIH1cblxuICBhc3luYyB1cGRhdGVTdGF0dXNPZlRpY2tldChcbiAgICB0aWNrZXQ6IFRpY2tldCxcbiAgICBzdGF0dXM6IFRpY2tldFN0YXR1c1xuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSB0aWNrZXQuc3RhdHVzO1xuICAgIHRpY2tldC5zdGF0dXMgPSBzdGF0dXM7XG4gICAgaWYgKGN1cnJlbnRTdGF0dXMgPT09IHN0YXR1cykge1xuICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1VwZGF0aW5nIHN0YXR1cycpO1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZVRpY2tldCh7XG4gICAgICBpZDogdGlja2V0LmlkLFxuICAgICAgc3RhdHVzLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVHlwZU9mVGlja2V0KHRpY2tldDogVGlja2V0LCB0eXBlOiBUaWNrZXRUeXBlKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcmV2aW91c1R5cGUgPSB0aWNrZXQudHlwZTtcbiAgICB0aWNrZXQudHlwZSA9IHR5cGU7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVUaWNrZXRXaXRoRXZlbnQoXG4gICAgICB7IGlkOiB0aWNrZXQuaWQsIHR5cGU6IHRpY2tldC50eXBlIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnVHlwZSBjaGFuZ8OpJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBDaGFuZ2VtZW50IGRlICR7cHJldmlvdXNUeXBlfSB2ZXJzICR7dGlja2V0LnR5cGV9YCxcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogdGlja2V0LnR5cGUgfSksXG4gICAgICAgIHRyYW5zbGF0aW9uUGF0aDogJ3RpY2tldEV2ZW50LnRpY2tldC50eXBlJyxcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiB0aWNrZXQ7XG4gIH1cblxuICBhc3luYyBnZXRUaWNrZXRzRm9yVXNlckZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8VGlja2V0W10+IHtcbiAgICBjb25zdCB0aWNrZXRzU3BhY2UgPSBhd2FpdCB0aGlzLmdldFRpY2tldHNCeVNwYWNlKHNwYWNlSUQpO1xuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcbiAgICAgIHRpY2tldHNTcGFjZSxcbiAgICAgIHNwYWNlSURcbiAgICApO1xuICB9XG5cbiAgLyoqIEJhc2ljIENSVUQgb3BlcmF0aW9ucyAqL1xuICBhc3luYyByZWFkVGlja2V0KGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFRpY2tldChpZCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVUaWNrZXQoaW5wdXQ6IFRpY2tldCk6IFByb21pc2U8VGlja2V0PiB7XG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmICEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCAmJiB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkKCkpIHtcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICd0aWNrZXQnLFxuICAgICAgICAgICAgLy96b25lSWQ6IGlucHV0LnNwYWNlSUQsIC8vIFRPRE86IGNoZWNrIGlmIHNwYWNlSWQgPT0gem9uZUlkXG4gICAgICAgICAgICBkb21haW46IGlucHV0LmRvbWFpbixcbiAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgem9uZUlkOiB0aGlzLnpvbmVJREZpbHRlcixcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJlYW1OYW1lOiAnc21hcnRlcnBsYW5LaW5lc2lzLWFuYWx5dGljcycsXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICAnQVdTS2luZXNpcydcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZEF0LFxuICAgICAgdXBkYXRlZEF0LFxuICAgICAgX190eXBlbmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZG9tYWluLFxuICAgICAgb3duZXJNaXNzaW9uLFxuICAgICAgZXF1aXBtZW50cyxcbiAgICAgIHByZXN0YXRhaXJlLFxuICAgICAgc3BhY2UsXG4gICAgICBwb2lzLFxuICAgICAgLi4uZ3JhcGhxbElucHV0XG4gICAgfSA9IGlucHV0IGFzIGFueTtcblxuICAgIHJldHVybiB0aGlzLkFQSS5DcmVhdGVUaWNrZXQoaW5wdXQpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVGlja2V0KGlucHV0OiBJVXBkYXRlICYgUGFydGlhbDxUaWNrZXQ+KTogUHJvbWlzZTxUaWNrZXQ+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVRpY2tldChpbnB1dCk7XG4gIH1cblxuICBhc3luYyBkZWxldGVUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFRpY2tldD4ge1xuICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlVGlja2V0KHsgaWQ6IHRpY2tldC5pZCB9KTtcblxuICAgIC8vIGRlbGV0ZSBQT0lcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pQnlFbGVtZW50SWQodGlja2V0LmlkKTtcbiAgICBpZiAocG9pKSB7XG4gICAgICB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XG4gICAgfVxuXG4gICAgLy8gY2xlYW4gcGFyZW50SURcbiAgICBpZiAodGlja2V0LmNoaWxkcmVuLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRpY2tldC5jaGlsZHJlbi5pdGVtcy5tYXAoYXN5bmMgKGNoaWxkVGlja2V0KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVRpY2tldCh7XG4gICAgICAgICAgICBpZDogY2hpbGRUaWNrZXQuaWQsXG4gICAgICAgICAgICBwYXJlbnRJRDogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3QgdXBkYXRlIHRpY2tldCcsIGNoaWxkVGlja2V0LmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVFdmVudCh7XG4gICAgICAgICAgdGl0bGU6ICdUaWNrZXQgcGFyZW50IHN1cHByaW3DqScsXG4gICAgICAgICAgdGlja2V0SUQ6IGNoaWxkVGlja2V0LmlkLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgVGlja2V0IFxcXCIkdGlja2V0LnRpdGxlfVxcXCIgYSDDqXTDqSBzdXBwcmltw6lgLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBkZWxldGUgZXZlbnRzXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aWNrZXQuZXZlbnRzLml0ZW1zLm1hcChhc3luYyAoZXZlbnRfKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVFdmVudCh7IGlkOiBldmVudF8uaWQgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gZGVsZXRlIGFmZmVjdGF0aW9ubnNcbiAgICBpZiAodGlja2V0LmFzc2lnbmVlcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGlja2V0LmFzc2lnbmVlcy5pdGVtcykge1xuICAgICAgICB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlQWZmZWN0YXRpb24oeyBpZDogZWxlbWVudC5pZCB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZGVsZXRlIGNvbW1lbnRzXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aWNrZXQuY29tbWVudHMuaXRlbXMubWFwKGFzeW5jIChjb21tZW50KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVDb21tZW50KHsgaWQ6IGNvbW1lbnQuaWQgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgYXdhaXQgdGhpcy5vcGVyYXRpb25TZXJ2aWNlLmRlbGV0ZU9wZXJhdGlvbnNGb3JUaWNrZXQodGlja2V0LmlkKTtcbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIC8qKiBDdXN0b20gcmVxdWVzdHMgKi9cbiAgYXN5bmMgZ2V0VGlja2V0c0J5U3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX19cbiAgICAgIC5UaWNrZXRzQnlTcGFjZShzcGFjZUlEKVxuICAgICAgLnRoZW4oKHRpY2tldHMpID0+IHRpY2tldHMuaXRlbXMpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbFRpY2tldHNJblNwYWNlKFxuICAgIHRhZ0ljb246IHN0cmluZyxcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IHRpY2tldHM6IFRpY2tldFtdOyBwb2lzOiBQT0lbXSB9PiB7XG4gICAgY29uc3QgdGlja2V0cyA9IGF3YWl0IHRoaXMuZ2V0VGlja2V0c0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHModGlja2V0cywgdGFnSWNvbik7XG4gICAgcmV0dXJuIHsgdGlja2V0cywgcG9pcyB9O1xuICB9XG5cbiAgLyoqIEFyY2hpdmUgcmVsYXRlZCAqL1xuICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgYXJjaGl2ZWQgdGhpcyB0aWNrZXQgKi9cbiAgaXNBcmNoaXZlZCh0aWNrZXQ6IFRpY2tldCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgID8gdGlja2V0LmFyY2hpdmVkRm9yTWlzc2lvbklELmluY2x1ZGVzKFxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRpY2tldC5zcGFjZUlEKS5pZFxuICAgICAgKVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIHNldEFyY2hpdmVkKHRpY2tldDogVGlja2V0LCBhcmNoaXZlZDogYm9vbGVhbikge1xuICAgIGxldCBhcmNoaXZlZExpc3QgPSB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgID8gdGlja2V0LmFyY2hpdmVkRm9yTWlzc2lvbklEXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IG1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24odGlja2V0LnNwYWNlSUQpLmlkO1xuXG4gICAgYXJjaGl2ZWRMaXN0ID0gYXJjaGl2ZWRMaXN0LmZpbHRlcigobSkgPT4gbSAhPT0gbWlzc2lvbklEKTtcblxuICAgIGlmIChhcmNoaXZlZCkge1xuICAgICAgYXJjaGl2ZWRMaXN0LnB1c2gobWlzc2lvbklEKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51cGRhdGVUaWNrZXRXaXRoRXZlbnQoe1xuICAgICAgaWQ6IHRpY2tldC5pZCxcbiAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVRvVGlja2V0SW4zRChcbiAgICB0aWNrZXQ6IFRpY2tldCxcbiAgICBmb3JjZVN3aXRjaFZpc2l0OiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgbGV0IHVybCA9IGB2aXNpdC8ke3RpY2tldC5zcGFjZUlEfWA7XG4gICAgaWYgKGZvcmNlU3dpdGNoVmlzaXQpIHtcbiAgICAgIHVybCArPSBgL2RldGFpbC8ke3RpY2tldC5pZH1gO1xuICAgIH1cbiAgICBjb25zdCBjYW5Hb1RvVGFnID0gYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyhcbiAgICAgIGAke3RpY2tldC5pZH1gXG4gICAgKTtcbiAgICBpZiAoY2FuR29Ub1RhZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldE1vZGVsM2RBbmRTd2VlcCh0aWNrZXQpO1xuICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQubW9kZWwzRCkge1xuICAgICAgYWxlcnQoJ0Vycm9yIHdoaWxlIGdldHRpbmcgdmlydHVhbCB2aXNpdCBtb2RlbCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWZvcmNlU3dpdGNoVmlzaXQpIHtcbiAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIDNEIG1vZGVsXG4gICAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbW9kZWwzRCcpO1xuICAgICAgaWYgKGN1cnJlbnRNb2RlbCAmJiBjdXJyZW50TW9kZWwgPT09IHJlc3VsdC5tb2RlbDNEKSB7XG4gICAgICAgIC8vIHdlIGFkZCB0YWcgdG8gdGhlIHZpc2l0XG4gICAgICAgIGNvbnN0IHBvaSA9IHRpY2tldC5wb2lzLml0ZW1zWzBdO1xuICAgICAgICBpZiAocG9pLmNvb3JkaW5hdGUpIHtcbiAgICAgICAgICAvLyB3ZSBmb3JjZSBhZGQgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbiBhbiBhbm90aGVyIHpvbmVcbiAgICAgICAgICBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSSh0aWNrZXQsIHBvaSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyh0aWNrZXQuaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiogU2kgb24gbmUgZm9yY2UgcGFzIGxhIHZpc2l0ZSwgb24gZGVtYW5kZSBzaSBvbiB2ZXV0IGV0cmUgc3dpdGNoICovXG4gICAgICAgIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoKFxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLFxuICAgICAgICAgIHJlc3VsdC5tb2RlbDNELFxuICAgICAgICAgIHRpY2tldC5zcGFjZUlELFxuICAgICAgICAgIHsgc3dlZXBUb01vdmU6IHJlc3VsdC5zd2VlcCwgcm90YXRpb246IHJlc3VsdC5yb3RhdGlvbiB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5vcGVuKGAke3VybH0/bW9kZWwzRD0ke3Jlc3VsdC5tb2RlbDNEfSZzd2VlcD10cnVlYCwgJ19ibGFuaycpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRTdWJzY3JpcHRpb25zKCkge1xuICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmdldFNwTW9kdWxlKCkgPT09IFNwTW9kdWxlLk1VU0VVTSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm5hdlN1YnNjcmlwdGlvbiA9IHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoXG4gICAgICAoem9uZSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICB0aGlzLnRpY2tldFRhZ3MubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLnRpY2tldHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XG4gICAgICAgICAgdGhpcy50aWNrZXRUeXBlRmlsdGVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJnb2luZyB0byBpbml0IHRpY2tldHMgZnJvbSB6b25lXCIpO1xuICAgICAgICAgIHRoaXMuaW5pdFRpY2tldHMoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIC8vIFRoZSBUaHJlZS5qcyB2aWV3ZXIgc2hvd3MgYSB3aG9sZSBzcGFjZSBhdCBvbmNlLCB3aXRoIG5vIHpvbmUgdG8gbmF2aWdhdGUgaW50bywgc28gaXRcbiAgICAvLyBhbm5vdW5jZXMgaXRzZWxmIGhlcmUgaW5zdGVhZCBvZiB0aHJvdWdoIGB6b25lQ2hhbmdlYC4gTGVhdmluZyB0aGUgem9uZSBmaWx0ZXIgZW1wdHkgaXMgd2hhdFxuICAgIC8vIG1ha2VzIGV2ZXJ5IHRpY2tldCBvZiB0aGUgc3BhY2Ugc2hvdyB1cCwgd2hpY2ggaXMgdGhlIHJpZ2h0IGFuc3dlciBmb3IgYSBzaW5nbGUgM0QgbW9kZWwuXG4gICAgdGhpcy5zcGFjZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNwYWNlU3Vic2NyaXB0aW9uID0gdGhpcy56b25lQ2hhbmdlU2VydmljZS5zcGFjZVdpdGhvdXRab25lcy5zdWJzY3JpYmUoXG4gICAgICAoc3BhY2VJRCkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gc3BhY2VJRDtcbiAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICBpZiAoIXNwYWNlSUQpIHtcbiAgICAgICAgICB0aGlzLnRpY2tldFRhZ3MubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLnRpY2tldHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XG4gICAgICAgICAgdGhpcy50aWNrZXRUeXBlRmlsdGVyID0gbnVsbDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0VGlja2V0cygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZShcbiAgICAgIChkYXRlUmFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xuICAgICAgICB0aGlzLmluaXRUaWNrZXRzKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5kYXRlRmlsdGVyID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmN1cnJlbnREYXRlRmlsdGVyO1xuICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgdGhpcy5pbml0VGlja2V0cygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVuc3Vic2NyaWJlKCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|