@c8y/ngx-components 1018.0.211 → 1018.0.214

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.
@@ -97,9 +97,9 @@ export class SubscriptionModalComponent {
97
97
  }
98
98
  }
99
99
  SubscriptionModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubscriptionModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.EcosystemService }, { token: i3.TabsService }, { token: i3.ModalService }, { token: i4.ApplicationService }, { token: i3.AlertService }, { token: i3.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component });
100
- SubscriptionModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SubscriptionModalComponent, selector: "c8y-subscription-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }] });
100
+ SubscriptionModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SubscriptionModalComponent, selector: "c8y-subscription-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message | translate }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
101
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubscriptionModalComponent, decorators: [{
102
102
  type: Component,
103
- args: [{ selector: 'c8y-subscription-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n" }]
103
+ args: [{ selector: 'c8y-subscription-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message | translate }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n" }]
104
104
  }], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.EcosystemService }, { type: i3.TabsService }, { type: i3.ModalService }, { type: i4.ApplicationService }, { type: i3.AlertService }, { type: i3.ContextRouteService }]; } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL3N1YnNjcmlwdGlvbi1tb2RhbC9zdWJzY3JpcHRpb24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMvc3Vic2NyaXB0aW9uLW1vZGFsL3N1YnNjcmlwdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBMkMsTUFBTSxhQUFhLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLDBCQUEwQjtJQWNyQyxZQUNVLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixLQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsbUJBQXdDO1FBTnhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQXBCekMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFHOUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQWtCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFFQSxTQUFJLEdBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFXbEQsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBbUM7UUFDaEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQ3BCLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0UsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVc7UUFDdkIsSUFBSTtZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRTtnQkFDckMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE1BQU0sR0FBRyxHQUE4QixDQUNyQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ2pFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDM0M7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELHdCQUF3QixDQUFDLEVBQTZCO1FBQzVELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3RFLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBYztRQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQ1IsTUFBTSxLQUFLLFdBQVc7WUFDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQywrRUFBK0UsQ0FBQztZQUMxRixDQUFDLENBQUMsT0FBTyxDQUNMLDZGQUE2RixDQUM5RixDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O3VIQXZHVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw4RENsQnZDLHNWQVdBOzJGRE9hLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlLCBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdWJzY3JpcHRpb24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlYWRvbmx5IFJFVFJZX1RJTUVPVVQgPSAzMDAwO1xuICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICByZXN1bHQ6IFByb21pc2U8dm9pZD4gPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgfSk7XG4gIGlzU3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgcmV0cnlDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IFRBQlM6IHN0cmluZ1tdID0gWydMb2dzJywgJ1N0YXR1cyddO1xuICBwcml2YXRlIF9yZXNvbHZlOiAodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uU2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgPSAwO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdTdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zdWJzY3JpYmVBcHAodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5nZXRTdGF0dXNEZXRhaWxzKCdzdWJzY3JpYmUnKTtcbiAgfVxuXG4gIGFzeW5jIHVuc3Vic2NyaWJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmV0cnlDb3VudGVyID0gMDtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnVW5zdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS51bnN1YnNjcmliZUFwcCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmdldFN0YXR1c0RldGFpbHMoJ3Vuc3Vic2NyaWJlJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFN0YXR1c0RldGFpbHMoYWN0aW9uOiAnc3Vic2NyaWJlJyB8ICd1bnN1YnNjcmliZScpIHtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICBjb25zdCBhY3Rpb25TdWNjZXNzZnVsID1cbiAgICAgIGFjdGlvbiA9PT0gJ3N1YnNjcmliZScgPyBhd2FpdCB0aGlzLm9uU3Vic2NyaWJlKCkgOiB0aGlzLm9uVW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoYWN0aW9uU3VjY2Vzc2Z1bCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlkZVN1YnNjcmlwdGlvbk1vZGFsKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJldHJ5Q291bnRlciA9PT0gNCkge1xuICAgICAgdGhpcy5zaG93V2FybmluZ01vZGFsKGFjdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5oaWRlU3Vic2NyaXB0aW9uTW9kYWwoKTtcbiAgICB9XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgKz0gMTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuZ2V0U3RhdHVzRGV0YWlscyhhY3Rpb24pO1xuICAgIH0sIHRoaXMuUkVUUllfVElNRU9VVCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uU3Vic2NyaWJlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb24uYWN0aXZlVmVyc2lvbklkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRTdGF0dXNEZXRhaWxzKHRoaXMuYXBwbGljYXRpb24pXG4gICAgICApLmRhdGFbMF07XG4gICAgICByZXR1cm4gdGhpcy5zaG91bGRTaG93TVNTcGVjaWZpY1RhYnMocmVzKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZSBVSSBzaG91bGQgc2hvdyB0YWJzIHdpdGggbG9ncyBhbmQgc3RhdHVzXG4gIHByaXZhdGUgc2hvdWxkU2hvd01TU3BlY2lmaWNUYWJzKG1vOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VtcHR5KG1vLmM4eV9TdGF0dXM/Lmluc3RhbmNlcykgJiYgISFtby5jOHlfU3VwcG9ydGVkTG9ncztcbiAgfVxuXG4gIHByaXZhdGUgb25VbnN1YnNjcmliZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudGFic1NlcnZpY2UuYXJlQXZhaWxhYmxlKHRoaXMuVEFCUyk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVTdWJzY3JpcHRpb25Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNvbHZlKCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2FybmluZ01vZGFsKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGUgPSBnZXR0ZXh0KCdXYXJuaW5nJyk7XG4gICAgY29uc3QgYm9keSA9XG4gICAgICBhY3Rpb24gPT09ICdzdWJzY3JpYmUnXG4gICAgICAgID8gZ2V0dGV4dCgnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJlc3Vic2NyaWJlIHRoZSBhcHBsaWNhdGlvbi4nKVxuICAgICAgICA6IGdldHRleHQoXG4gICAgICAgICAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJldHJ5IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIGFwcGxpY2F0aW9uLidcbiAgICAgICAgICApO1xuICAgIHRoaXMubW9kYWwuYWNrbm93bGVkZ2UodGl0bGUsIGJvZHksIFN0YXR1cy5XQVJOSU5HLCBnZXR0ZXh0KCdDbG9zZScpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIGM4eUljb249XCJjOHktYXRvbVwiPjwvaT5cbiAgICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiPnt7IG1lc3NhZ2UgfX08L2g0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBpZD1cIm1vZGFsLWJvZHlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL3N1YnNjcmlwdGlvbi1tb2RhbC9zdWJzY3JpcHRpb24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMvc3Vic2NyaXB0aW9uLW1vZGFsL3N1YnNjcmlwdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBMkMsTUFBTSxhQUFhLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLDBCQUEwQjtJQWNyQyxZQUNVLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixLQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsbUJBQXdDO1FBTnhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZ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QyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELHdCQUF3QixDQUFDLEVBQTZCO1FBQzVELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3RFLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBYztRQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQ1IsTUFBTSxLQUFLLFdBQVc7WUFDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQywrRUFBK0UsQ0FBQztZQUMxRixDQUFDLENBQUMsT0FBTyxDQUNMLDZGQUE2RixDQUM5RixDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O3VIQXZHVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw4RENsQnZDLGtXQVdBOzJGRE9hLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlLCBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdWJzY3JpcHRpb24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlYWRvbmx5IFJFVFJZX1RJTUVPVVQgPSAzMDAwO1xuICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICByZXN1bHQ6IFByb21pc2U8dm9pZD4gPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgfSk7XG4gIGlzU3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgcmV0cnlDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IFRBQlM6IHN0cmluZ1tdID0gWydMb2dzJywgJ1N0YXR1cyddO1xuICBwcml2YXRlIF9yZXNvbHZlOiAodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uU2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgPSAwO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdTdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zdWJzY3JpYmVBcHAodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5nZXRTdGF0dXNEZXRhaWxzKCdzdWJzY3JpYmUnKTtcbiAgfVxuXG4gIGFzeW5jIHVuc3Vic2NyaWJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmV0cnlDb3VudGVyID0gMDtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnVW5zdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS51bnN1YnNjcmliZUFwcCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmdldFN0YXR1c0RldGFpbHMoJ3Vuc3Vic2NyaWJlJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFN0YXR1c0RldGFpbHMoYWN0aW9uOiAnc3Vic2NyaWJlJyB8ICd1bnN1YnNjcmliZScpIHtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICBjb25zdCBhY3Rpb25TdWNjZXNzZnVsID1cbiAgICAgIGFjdGlvbiA9PT0gJ3N1YnNjcmliZScgPyBhd2FpdCB0aGlzLm9uU3Vic2NyaWJlKCkgOiB0aGlzLm9uVW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoYWN0aW9uU3VjY2Vzc2Z1bCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlkZVN1YnNjcmlwdGlvbk1vZGFsKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJldHJ5Q291bnRlciA9PT0gNCkge1xuICAgICAgdGhpcy5zaG93V2FybmluZ01vZGFsKGFjdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5oaWRlU3Vic2NyaXB0aW9uTW9kYWwoKTtcbiAgICB9XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgKz0gMTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuZ2V0U3RhdHVzRGV0YWlscyhhY3Rpb24pO1xuICAgIH0sIHRoaXMuUkVUUllfVElNRU9VVCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uU3Vic2NyaWJlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb24uYWN0aXZlVmVyc2lvbklkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRTdGF0dXNEZXRhaWxzKHRoaXMuYXBwbGljYXRpb24pXG4gICAgICApLmRhdGFbMF07XG4gICAgICByZXR1cm4gdGhpcy5zaG91bGRTaG93TVNTcGVjaWZpY1RhYnMocmVzKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZSBVSSBzaG91bGQgc2hvdyB0YWJzIHdpdGggbG9ncyBhbmQgc3RhdHVzXG4gIHByaXZhdGUgc2hvdWxkU2hvd01TU3BlY2lmaWNUYWJzKG1vOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VtcHR5KG1vLmM4eV9TdGF0dXM/Lmluc3RhbmNlcykgJiYgISFtby5jOHlfU3VwcG9ydGVkTG9ncztcbiAgfVxuXG4gIHByaXZhdGUgb25VbnN1YnNjcmliZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudGFic1NlcnZpY2UuYXJlQXZhaWxhYmxlKHRoaXMuVEFCUyk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVTdWJzY3JpcHRpb25Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNvbHZlKCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2FybmluZ01vZGFsKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGUgPSBnZXR0ZXh0KCdXYXJuaW5nJyk7XG4gICAgY29uc3QgYm9keSA9XG4gICAgICBhY3Rpb24gPT09ICdzdWJzY3JpYmUnXG4gICAgICAgID8gZ2V0dGV4dCgnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJlc3Vic2NyaWJlIHRoZSBhcHBsaWNhdGlvbi4nKVxuICAgICAgICA6IGdldHRleHQoXG4gICAgICAgICAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJldHJ5IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIGFwcGxpY2F0aW9uLidcbiAgICAgICAgICApO1xuICAgIHRoaXMubW9kYWwuYWNrbm93bGVkZ2UodGl0bGUsIGJvZHksIFN0YXR1cy5XQVJOSU5HLCBnZXR0ZXh0KCdDbG9zZScpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIGM4eUljb249XCJjOHktYXRvbVwiPjwvaT5cbiAgICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiPnt7IG1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBpZD1cIm1vZGFsLWJvZHlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -79,17 +79,17 @@ export class ClusterMapComponent extends MapComponent {
79
79
  cancelReload() {
80
80
  this.reloadTrigger$.next(false);
81
81
  }
82
- listenToClusterChanges() {
82
+ listenToClusterAndIntervalChanges() {
83
83
  const timerStart$ = new Subject();
84
84
  const timerEnd$ = new Subject();
85
- const documentHiddenEvent$ = fromEvent(document, 'visibilitychange').pipe(takeUntil(this.destroy$));
85
+ const documentHiddenEvent$ = fromEvent(document, 'visibilitychange').pipe(takeUntil(this.unsubscribeTrigger$));
86
86
  const interval$ = timerStart$.pipe(map(() => this.config.refreshInterval), switchMap(configInterval => {
87
87
  if (!configInterval) {
88
88
  return NEVER;
89
89
  }
90
90
  return interval(1000).pipe(map(value => value * 1000), tap(value => this.msUntilRefresh$.next(configInterval - value)), filter(value => value >= this.MIN_INTERVAL && value >= configInterval), first(), takeUntil(timerEnd$));
91
- }), switchMap(() => (document.hidden ? documentHiddenEvent$ : of(true))), takeUntil(this.destroy$));
92
- const mapChange$ = merge(fromEvent(this.map, 'move'), fromEvent(this.map, 'moveend')).pipe(debounceTime(this.EVENT_THROTTLE_TIME), tap(event => this.mapChange.emit(event)), takeUntil(this.destroy$));
91
+ }), switchMap(() => (document.hidden ? documentHiddenEvent$ : of(true))), takeUntil(this.unsubscribeTrigger$));
92
+ const mapChange$ = this.getMapChangeObservable();
93
93
  merge(this.reloadTrigger$, mapChange$, interval$)
94
94
  .pipe(tap(() => {
95
95
  timerEnd$.next(true);
@@ -97,7 +97,7 @@ export class ClusterMapComponent extends MapComponent {
97
97
  this.isLoading$.next(true);
98
98
  }), switchMap(value => value === false
99
99
  ? of([])
100
- : from(this.mapService.getClusterSize(this.map.getBounds())).pipe(mergeMap((clusterSize) => this.getClusterRects(clusterSize, this.map.getBounds())), mergeMap(rects => this.createOrUpdateCluster(rects)))), takeUntil(this.destroy$))
100
+ : from(this.mapService.getClusterSize(this.map.getBounds())).pipe(mergeMap((clusterSize) => this.getClusterRects(clusterSize, this.map.getBounds())), mergeMap(rects => this.createOrUpdateCluster(rects)))), takeUntil(this.unsubscribeTrigger$))
101
101
  .subscribe((clusters) => {
102
102
  clusters.forEach(cluster => cluster.render(this.map));
103
103
  this.isLoading$.next(false);
@@ -105,6 +105,9 @@ export class ClusterMapComponent extends MapComponent {
105
105
  this.msUntilRefresh$.next(this.config.refreshInterval);
106
106
  });
107
107
  }
108
+ listenToClusterMapChanges() {
109
+ this.getMapChangeObservable().subscribe();
110
+ }
108
111
  refreshMarkers() {
109
112
  if (this.assets) {
110
113
  super.refreshMarkers();
@@ -123,11 +126,13 @@ export class ClusterMapComponent extends MapComponent {
123
126
  if (isPositionDevice) {
124
127
  this.assets = mo;
125
128
  this.refreshMarkers();
126
- return;
129
+ this.listenToClusterMapChanges();
130
+ }
131
+ else {
132
+ this.assets = null;
133
+ this.listenToClusterAndIntervalChanges();
134
+ this.reload();
127
135
  }
128
- this.assets = null;
129
- this.listenToClusterChanges();
130
- this.reload();
131
136
  }
132
137
  async getClusterRects(levelThreshold = ClusterSize.FOUR, viewBounds, level = 0) {
133
138
  let rects = [];
@@ -216,6 +221,9 @@ export class ClusterMapComponent extends MapComponent {
216
221
  });
217
222
  return Promise.all(updatePromise);
218
223
  }
224
+ getMapChangeObservable() {
225
+ return merge(fromEvent(this.map, 'move'), fromEvent(this.map, 'moveend')).pipe(debounceTime(this.EVENT_THROTTLE_TIME), tap(event => this.mapChange.emit(event)), takeUntil(this.unsubscribeTrigger$));
226
+ }
219
227
  }
220
228
  ClusterMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ClusterMapComponent, deps: [{ token: i1.ManagedObjectRealtimeService }, { token: i2.MapService }, { token: MAP_TILE_LAYER, optional: true }, { token: MAP_DEFAULT_CONFIG, optional: true }, { token: i3.TranslateService }, { token: i0.IterableDiffers }, { token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component });
221
229
  ClusterMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ClusterMapComponent, selector: "c8y-cluster-map", inputs: { config: "config", rootNode: "rootNode", assets: ["asset", "assets"], showClusterColor: "showClusterColor" }, outputs: { mapChange: "mapChange" }, providers: [ManagedObjectRealtimeService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map\">\n <div #map></div>\n</div>\n<ng-content></ng-content>\n" });
@@ -244,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
244
252
  }], mapChange: [{
245
253
  type: Output
246
254
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL2NsdXN0ZXItbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21hcC9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0YsT0FBTyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFHaEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU8zQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQXdCbkQsWUFDWSxpQkFBK0MsRUFDL0MsVUFBc0IsRUFDYyxN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c0VDNUMzQyxrRkFJQTsyRkQwQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQixhQUVoQixDQUFDLDRCQUE0QixDQUFDOzhIQTZCZSxLQUFLOzBCQUExRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjtvSUF2QnhDLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO3VCQUFDLE9BQU87Z0JBSWQsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDb2xvclNlcnZpY2UsIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgbWVyZ2UsIE5FVkVSLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsdXN0ZXJNYXAgfSBmcm9tICcuL2NsdXN0ZXItbWFwJztcbmltcG9ydCB7IE1hcENvbXBvbmVudCB9IGZyb20gJy4vbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbHVzdGVyTWFwQ29uZmlnLFxuICBDbHVzdGVyU2l6ZSxcbiAgZGVmYXVsdExheWVyLFxuICBkZWZhdWx0TWFwQ29uZmlnLFxuICBNYXBEZWZhdWx0Q29uZmlnLFxuICBNYXBUaWxlTGF5ZXIsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTUFQX1RJTEVfTEFZRVIsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jbHVzdGVyLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW01hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXBDb21wb25lbnQgZXh0ZW5kcyBNYXBDb21wb25lbnQge1xuICBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIG1zVW50aWxSZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoNTAwMCk7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHJvb3ROb2RlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoJ2Fzc2V0JylcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2hvd0NsdXN0ZXJDb2xvciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBtYXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIHByaXZhdGUgcmVsb2FkVHJpZ2dlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBjbHVzdGVyczogQ2x1c3Rlck1hcFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOX0lOVEVSVkFMID0gNTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBFVkVOVF9USFJPVFRMRV9USU1FID0gNzUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtb1JlYWx0aW1lU2VydmljZTogTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BUF9USUxFX0xBWUVSKSBwcm90ZWN0ZWQgbGF5ZXJzOiBBcnJheTxNYXBUaWxlTGF5ZXIgfCBNYXBUaWxlTGF5ZXJbXT4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVBfREVGQVVMVF9DT05GSUcpIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnOiBNYXBEZWZhdWx0Q29uZmlnLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlcmFibGU6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwcml2YXRlIGNvbG9yU2VydmljZTogQ29sb3JTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKG1vUmVhbHRpbWVTZXJ2aWNlLCBtYXBTZXJ2aWNlLCBsYXllcnMsIGRlZmF1bHRDb25maWcsIHRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIGlmICghdGhpcy5sYXllcnMpIHtcbiAgICAgIHRoaXMubGF5ZXJzID0gW2RlZmF1bHRMYXllcl07XG4gICAgfVxuICAgIGlmICghdGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSBkZWZhdWx0TWFwQ29uZmlnO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGNlbnRlcjogdGhpcy5kZWZhdWx0Q29uZmlnLmNlbnRlclxuICAgIH07XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJvb3ROb2RlPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLnJvb3ROb2RlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlUm9vdE5vZGUoY2hhbmdlcy5yb290Tm9kZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZUNvbmZpZyhjaGFuZ2VzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgLy8gb24gZm9sbG93aW5nLCBjYW5jZWwgcmVsb2FkIHRvIGF2b2lkIHN0YWxlIHN0YXRlXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUuZm9sbG93ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNhbmNlbFJlbG9hZCgpO1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY3VycmVudFZhbHVlLnJlZnJlc2hJbnRlcnZhbCAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUucmVmcmVzaEludGVydmFsKSB7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgICBzdXBlci5jaGFuZ2VDb25maWcoY2hhbmdlKTtcbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubGVhZmxldCkge1xuICAgICAgdGhpcy5sZWFmbGV0ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldExlYWZsZXQoKTtcbiAgICB9XG4gICAgdGhpcy5pbml0TWFwKCk7XG4gICAgdGhpcy5jaGFuZ2VSb290Tm9kZSh0aGlzLnJvb3ROb2RlKTtcbiAgICB0aGlzLmNoYW5nZUNvbmZpZyhuZXcgU2ltcGxlQ2hhbmdlKHt9LCB0aGlzLmNvbmZpZywgZmFsc2UpKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBhd2FpdCB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuVG9DbHVzdGVyQ2hhbmdlcygpIHtcbiAgICBjb25zdCB0aW1lclN0YXJ0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgdGltZXJFbmQkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0IGRvY3VtZW50SGlkZGVuRXZlbnQkID0gZnJvbUV2ZW50PGJvb2xlYW4+KGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScpLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgY29uc3QgaW50ZXJ2YWwkID0gdGltZXJTdGFydCQucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwpLFxuICAgICAgc3dpdGNoTWFwKGNvbmZpZ0ludGVydmFsID0+IHtcbiAgICAgICAgaWYgKCFjb25maWdJbnRlcnZhbCkge1xuICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW50ZXJ2YWwoMTAwMCkucGlwZShcbiAgICAgICAgICBtYXAodmFsdWUgPT4gdmFsdWUgKiAxMDAwKSxcbiAgICAgICAgICB0YXAodmFsdWUgPT4gdGhpcy5tc1VudGlsUmVmcmVzaCQubmV4dChjb25maWdJbnRlcnZhbCAtIHZhbHVlKSksXG4gICAgICAgICAgZmlsdGVyKHZhbHVlID0+IHZhbHVlID49IHRoaXMuTUlOX0lOVEVSVkFMICYmIHZhbHVlID49IGNvbmZpZ0ludGVydmFsKSxcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aW1lckVuZCQpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiAoZG9jdW1lbnQuaGlkZGVuID8gZG9jdW1lbnRIaWRkZW5FdmVudCQgOiBvZih0cnVlKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIGNvbnN0IG1hcENoYW5nZSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudDxMLkxlYWZsZXRFdmVudD4odGhpcy5tYXAsICdtb3ZlJyksXG4gICAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnbW92ZWVuZCcpXG4gICAgKS5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuRVZFTlRfVEhST1RUTEVfVElNRSksXG4gICAgICB0YXAoZXZlbnQgPT4gdGhpcy5tYXBDaGFuZ2UuZW1pdChldmVudCkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIG1lcmdlKHRoaXMucmVsb2FkVHJpZ2dlciQsIG1hcENoYW5nZSQsIGludGVydmFsJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRpbWVyRW5kJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMubXNVbnRpbFJlZnJlc2gkLm5leHQoMCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT5cbiAgICAgICAgICB2YWx1ZSA9PT0gZmFsc2VcbiAgICAgICAgICAgID8gb2YoW10pXG4gICAgICAgICAgICA6IGZyb20odGhpcy5tYXBTZXJ2aWNlLmdldENsdXN0ZXJTaXplKHRoaXMubWFwLmdldEJvdW5kcygpKSkucGlwZShcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoY2x1c3RlclNpemU6IENsdXN0ZXJTaXplKSA9PlxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDbHVzdGVyUmVjdHMoY2x1c3RlclNpemUsIHRoaXMubWFwLmdldEJvdW5kcygpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAocmVjdHMgPT4gdGhpcy5jcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHMpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2x1c3RlcnM6IENsdXN0ZXJNYXBbXSkgPT4ge1xuICAgICAgICBjbHVzdGVycy5mb3JFYWNoKGNsdXN0ZXIgPT4gY2x1c3Rlci5yZW5kZXIodGhpcy5tYXApKTtcblxuICAgICAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIHRpbWVyU3RhcnQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5tc1VudGlsUmVmcmVzaCQubmV4dCh0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwpO1xuICAgICAgfSk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICBpZiAodGhpcy5hc3NldHMpIHtcbiAgICAgIHN1cGVyLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVJvb3ROb2RlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIHRoaXMuY2xlYXJDbHVzdGVycygpO1xuXG4gICAgY29uc3QgaXNQb3NpdGlvbkRldmljZSA9IG1vPy5jOHlfUG9zaXRpb24gJiYgbW8/LmM4eV9Jc0RldmljZTtcbiAgICBpZiAoaXNQb3NpdGlvbkRldmljZSkge1xuICAgICAgdGhpcy5hc3NldHMgPSBtbyBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXNzZXRzID0gbnVsbDtcbiAgICB0aGlzLmxpc3RlblRvQ2x1c3RlckNoYW5nZXMoKTtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDbHVzdGVyUmVjdHMoXG4gICAgbGV2ZWxUaHJlc2hvbGQ6IENsdXN0ZXJTaXplID0gQ2x1c3RlclNpemUuRk9VUixcbiAgICB2aWV3Qm91bmRzOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBsZXZlbCA9IDBcbiAgKTogUHJvbWlzZTxMLlJlY3RhbmdsZVtdPiB7XG4gICAgbGV0IHJlY3RzID0gW107XG5cbiAgICBpZiAobGV2ZWxUaHJlc2hvbGQgPT09IENsdXN0ZXJTaXplLk5PTkUpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3Qodmlld0JvdW5kcyk7XG4gICAgICByZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cblxuICAgIGlmIChsZXZlbCA+PSBsZXZlbFRocmVzaG9sZCkge1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cbiAgICBsZXZlbCsrO1xuXG4gICAgY29uc3QgeyBsYXQ6IHgxLCBsbmc6IHkxIH0gPSB2aWV3Qm91bmRzLmdldFNvdXRoV2VzdCgpO1xuICAgIGNvbnN0IHsgbGF0OiB4MiwgbG5nOiB5MiB9ID0gdmlld0JvdW5kcy5nZXROb3J0aEVhc3QoKTtcbiAgICBjb25zdCBuZXdYMiA9ICh4MSArIHgyKSAvIDI7XG4gICAgY29uc3QgbmV3WTIgPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgY29uc3QgYm91bmRzOiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV1bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFtuZXdYMiwgbmV3WTJdXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbbmV3WDIsIG5ld1kyXSxcbiAgICAgICAgW3gyLCB5Ml1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFt4MSwgbmV3WTJdLFxuICAgICAgICBbbmV3WDIsIHkyXVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgW25ld1gyLCB5MV0sXG4gICAgICAgIFt4MiwgbmV3WTJdXG4gICAgICBdXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IGJvdW5kIG9mIGJvdW5kcykge1xuICAgICAgY29uc3QgbGF0TG5nQm91bmQgPSB0aGlzLmxlYWZsZXQubGF0TG5nQm91bmRzKGJvdW5kKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3QobGF0TG5nQm91bmQpO1xuICAgICAgcmVjdHMgPSBbLi4ucmVjdHMsIC4uLihhd2FpdCB0aGlzLmdldENsdXN0ZXJSZWN0cyhsZXZlbFRocmVzaG9sZCwgbGF0TG5nQm91bmQsIGxldmVsKSldO1xuXG4gICAgICBpZiAobGV2ZWwgPT09IGxldmVsVGhyZXNob2xkKSB7XG4gICAgICAgIHJlY3RzLnB1c2gocmVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWN0KGxhdExuZ0JvdW5kOiBMLkxhdExuZ0JvdW5kcykge1xuICAgIGxldCBjb2xvciA9ICdub25lJztcbiAgICBpZiAodGhpcy5zaG93Q2x1c3RlckNvbG9yKSB7XG4gICAgICBjb2xvciA9IGF3YWl0IHRoaXMuY29sb3JTZXJ2aWNlLmdlbmVyYXRlQ29sb3IobGF0TG5nQm91bmQudG9CQm94U3RyaW5nKCkpO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5sZWFmbGV0LnJlY3RhbmdsZShsYXRMbmdCb3VuZCwge1xuICAgICAgY29sb3IsXG4gICAgICB3ZWlnaHQ6IGNvbG9yID09PSAnbm9uZScgPyAwIDogMSxcbiAgICAgIGludGVyYWN0aXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNsdXN0ZXJzKCkge1xuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMuY2x1c3RlcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ2x1c3RlcihjbHVzdGVyOiBDbHVzdGVyTWFwKSB7XG4gICAgY29uc3QgY2x1c3RlckNvdW50ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldFBvc2l0aW9uTU9zRnJvbUJvdW5kQ291bnQoXG4gICAgICBjbHVzdGVyLnJlY3QuZ2V0Qm91bmRzKCksXG4gICAgICB0aGlzLnJvb3ROb2RlXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckNvdW50ID4gdGhpcy5tYXBTZXJ2aWNlLk1BWF9ERVZJQ0VfUEVSX0NMVVNURVIpIHtcbiAgICAgIGNsdXN0ZXIuc2V0Q2x1c3RlclRvQmlnTWFya2VyKHRoaXMubWFwLCBjbHVzdGVyQ291bnQsIHRoaXMubGVhZmxldCk7XG4gICAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuIGNsdXN0ZXI7XG4gICAgfVxuXG4gICAgY2x1c3Rlci5yZW1vdmVDbHVzdGVyVG9CaWdNYXJrZXIoKTtcbiAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRQb3NpdGlvbk1PcyhcbiAgICAgIGNsdXN0ZXIucmVjdC5nZXRCb3VuZHMoKSxcbiAgICAgIHRoaXMucm9vdE5vZGVcbiAgICApO1xuICAgIHJldHVybiBjbHVzdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHM6IEwuUmVjdGFuZ2xlPHVua25vd24+W10pIHtcbiAgICBjb25zdCBpc05ldyA9IHJlY3RzLmxlbmd0aCAhPT0gdGhpcy5jbHVzdGVycy5sZW5ndGg7XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICB0aGlzLmNsZWFyQ2x1c3RlcnMoKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZSA9IHJlY3RzLm1hcCgocmVjdCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpc05ldykge1xuICAgICAgICBjb25zdCBjbHVzdGVyID0gbmV3IENsdXN0ZXJNYXAoXG4gICAgICAgICAgdGhpcy5pdGVyYWJsZSxcbiAgICAgICAgICBhc3NldCA9PiB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jbHVzdGVycy5wdXNoKGNsdXN0ZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jbHVzdGVyc1tpbmRleF0ucmVjdCA9IHJlY3Q7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHVzdGVyKHRoaXMuY2x1c3RlcnNbaW5kZXhdKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL2NsdXN0ZXItbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21hcC9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0YsT0FBTyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFHaEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU8zQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQXdCbkQsWUFDWSxpQkFBK0MsRUFDL0MsVUFBc0IsRUFDYyxN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QVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDeEMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUNwQyxDQUFDO0lBQ0osQ0FBQzs7Z0hBalRVLG1CQUFtQix3RkEyQlIsY0FBYyw2QkFDZCxrQkFBa0I7b0dBNUI3QixtQkFBbUIsc01BRm5CLENBQUMsNEJBQTRCLENBQUMsc0VDNUMzQyxrRkFJQTsyRkQwQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQixhQUVoQixDQUFDLDRCQUE0QixDQUFDOzhIQTZCZSxLQUFLOzBCQUExRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjtvSUF2QnhDLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO3VCQUFDLE9BQU87Z0JBSWQsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDb2xvclNlcnZpY2UsIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgbWVyZ2UsIE5FVkVSLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsdXN0ZXJNYXAgfSBmcm9tICcuL2NsdXN0ZXItbWFwJztcbmltcG9ydCB7IE1hcENvbXBvbmVudCB9IGZyb20gJy4vbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbHVzdGVyTWFwQ29uZmlnLFxuICBDbHVzdGVyU2l6ZSxcbiAgZGVmYXVsdExheWVyLFxuICBkZWZhdWx0TWFwQ29uZmlnLFxuICBNYXBEZWZhdWx0Q29uZmlnLFxuICBNYXBUaWxlTGF5ZXIsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTUFQX1RJTEVfTEFZRVIsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jbHVzdGVyLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW01hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXBDb21wb25lbnQgZXh0ZW5kcyBNYXBDb21wb25lbnQge1xuICBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIG1zVW50aWxSZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoNTAwMCk7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHJvb3ROb2RlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoJ2Fzc2V0JylcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2hvd0NsdXN0ZXJDb2xvciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBtYXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIHByaXZhdGUgcmVsb2FkVHJpZ2dlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBjbHVzdGVyczogQ2x1c3Rlck1hcFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOX0lOVEVSVkFMID0gNTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBFVkVOVF9USFJPVFRMRV9USU1FID0gNzUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtb1JlYWx0aW1lU2VydmljZTogTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BUF9USUxFX0xBWUVSKSBwcm90ZWN0ZWQgbGF5ZXJzOiBBcnJheTxNYXBUaWxlTGF5ZXIgfCBNYXBUaWxlTGF5ZXJbXT4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVBfREVGQVVMVF9DT05GSUcpIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnOiBNYXBEZWZhdWx0Q29uZmlnLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlcmFibGU6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwcml2YXRlIGNvbG9yU2VydmljZTogQ29sb3JTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKG1vUmVhbHRpbWVTZXJ2aWNlLCBtYXBTZXJ2aWNlLCBsYXllcnMsIGRlZmF1bHRDb25maWcsIHRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIGlmICghdGhpcy5sYXllcnMpIHtcbiAgICAgIHRoaXMubGF5ZXJzID0gW2RlZmF1bHRMYXllcl07XG4gICAgfVxuICAgIGlmICghdGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSBkZWZhdWx0TWFwQ29uZmlnO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGNlbnRlcjogdGhpcy5kZWZhdWx0Q29uZmlnLmNlbnRlclxuICAgIH07XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJvb3ROb2RlPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLnJvb3ROb2RlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlUm9vdE5vZGUoY2hhbmdlcy5yb290Tm9kZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZUNvbmZpZyhjaGFuZ2VzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgLy8gb24gZm9sbG93aW5nLCBjYW5jZWwgcmVsb2FkIHRvIGF2b2lkIHN0YWxlIHN0YXRlXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUuZm9sbG93ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNhbmNlbFJlbG9hZCgpO1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY3VycmVudFZhbHVlLnJlZnJlc2hJbnRlcnZhbCAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUucmVmcmVzaEludGVydmFsKSB7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgICBzdXBlci5jaGFuZ2VDb25maWcoY2hhbmdlKTtcbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubGVhZmxldCkge1xuICAgICAgdGhpcy5sZWFmbGV0ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldExlYWZsZXQoKTtcbiAgICB9XG4gICAgdGhpcy5pbml0TWFwKCk7XG4gICAgdGhpcy5jaGFuZ2VSb290Tm9kZSh0aGlzLnJvb3ROb2RlKTtcbiAgICB0aGlzLmNoYW5nZUNvbmZpZyhuZXcgU2ltcGxlQ2hhbmdlKHt9LCB0aGlzLmNvbmZpZywgZmFsc2UpKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBhd2FpdCB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuVG9DbHVzdGVyQW5kSW50ZXJ2YWxDaGFuZ2VzKCkge1xuICAgIGNvbnN0IHRpbWVyU3RhcnQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBjb25zdCB0aW1lckVuZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3QgZG9jdW1lbnRIaWRkZW5FdmVudCQgPSBmcm9tRXZlbnQ8Ym9vbGVhbj4oZG9jdW1lbnQsICd2aXNpYmlsaXR5Y2hhbmdlJykucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgKTtcblxuICAgIGNvbnN0IGludGVydmFsJCA9IHRpbWVyU3RhcnQkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsKSxcbiAgICAgIHN3aXRjaE1hcChjb25maWdJbnRlcnZhbCA9PiB7XG4gICAgICAgIGlmICghY29uZmlnSW50ZXJ2YWwpIHtcbiAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGludGVydmFsKDEwMDApLnBpcGUoXG4gICAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlICogMTAwMCksXG4gICAgICAgICAgdGFwKHZhbHVlID0+IHRoaXMubXNVbnRpbFJlZnJlc2gkLm5leHQoY29uZmlnSW50ZXJ2YWwgLSB2YWx1ZSkpLFxuICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiB2YWx1ZSA+PSB0aGlzLk1JTl9JTlRFUlZBTCAmJiB2YWx1ZSA+PSBjb25maWdJbnRlcnZhbCksXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICB0YWtlVW50aWwodGltZXJFbmQkKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gKGRvY3VtZW50LmhpZGRlbiA/IGRvY3VtZW50SGlkZGVuRXZlbnQkIDogb2YodHJ1ZSkpKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgKTtcblxuICAgIGNvbnN0IG1hcENoYW5nZSQgPSB0aGlzLmdldE1hcENoYW5nZU9ic2VydmFibGUoKTtcblxuICAgIG1lcmdlKHRoaXMucmVsb2FkVHJpZ2dlciQsIG1hcENoYW5nZSQsIGludGVydmFsJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRpbWVyRW5kJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMubXNVbnRpbFJlZnJlc2gkLm5leHQoMCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT5cbiAgICAgICAgICB2YWx1ZSA9PT0gZmFsc2VcbiAgICAgICAgICAgID8gb2YoW10pXG4gICAgICAgICAgICA6IGZyb20odGhpcy5tYXBTZXJ2aWNlLmdldENsdXN0ZXJTaXplKHRoaXMubWFwLmdldEJvdW5kcygpKSkucGlwZShcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoY2x1c3RlclNpemU6IENsdXN0ZXJTaXplKSA9PlxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDbHVzdGVyUmVjdHMoY2x1c3RlclNpemUsIHRoaXMubWFwLmdldEJvdW5kcygpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAocmVjdHMgPT4gdGhpcy5jcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHMpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjbHVzdGVyczogQ2x1c3Rlck1hcFtdKSA9PiB7XG4gICAgICAgIGNsdXN0ZXJzLmZvckVhY2goY2x1c3RlciA9PiBjbHVzdGVyLnJlbmRlcih0aGlzLm1hcCkpO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGltZXJTdGFydCQubmV4dCgpO1xuICAgICAgICB0aGlzLm1zVW50aWxSZWZyZXNoJC5uZXh0KHRoaXMuY29uZmlnLnJlZnJlc2hJbnRlcnZhbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGxpc3RlblRvQ2x1c3Rlck1hcENoYW5nZXMoKSB7XG4gICAgdGhpcy5nZXRNYXBDaGFuZ2VPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICBpZiAodGhpcy5hc3NldHMpIHtcbiAgICAgIHN1cGVyLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVJvb3ROb2RlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIHRoaXMuY2xlYXJDbHVzdGVycygpO1xuXG4gICAgY29uc3QgaXNQb3NpdGlvbkRldmljZSA9IG1vPy5jOHlfUG9zaXRpb24gJiYgbW8/LmM4eV9Jc0RldmljZTtcbiAgICBpZiAoaXNQb3NpdGlvbkRldmljZSkge1xuICAgICAgdGhpcy5hc3NldHMgPSBtbyBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICB0aGlzLmxpc3RlblRvQ2x1c3Rlck1hcENoYW5nZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NldHMgPSBudWxsO1xuICAgICAgdGhpcy5saXN0ZW5Ub0NsdXN0ZXJBbmRJbnRlcnZhbENoYW5nZXMoKTtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDbHVzdGVyUmVjdHMoXG4gICAgbGV2ZWxUaHJlc2hvbGQ6IENsdXN0ZXJTaXplID0gQ2x1c3RlclNpemUuRk9VUixcbiAgICB2aWV3Qm91bmRzOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBsZXZlbCA9IDBcbiAgKTogUHJvbWlzZTxMLlJlY3RhbmdsZVtdPiB7XG4gICAgbGV0IHJlY3RzID0gW107XG5cbiAgICBpZiAobGV2ZWxUaHJlc2hvbGQgPT09IENsdXN0ZXJTaXplLk5PTkUpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3Qodmlld0JvdW5kcyk7XG4gICAgICByZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cblxuICAgIGlmIChsZXZlbCA+PSBsZXZlbFRocmVzaG9sZCkge1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cbiAgICBsZXZlbCsrO1xuXG4gICAgY29uc3QgeyBsYXQ6IHgxLCBsbmc6IHkxIH0gPSB2aWV3Qm91bmRzLmdldFNvdXRoV2VzdCgpO1xuICAgIGNvbnN0IHsgbGF0OiB4MiwgbG5nOiB5MiB9ID0gdmlld0JvdW5kcy5nZXROb3J0aEVhc3QoKTtcbiAgICBjb25zdCBuZXdYMiA9ICh4MSArIHgyKSAvIDI7XG4gICAgY29uc3QgbmV3WTIgPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgY29uc3QgYm91bmRzOiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV1bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFtuZXdYMiwgbmV3WTJdXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbbmV3WDIsIG5ld1kyXSxcbiAgICAgICAgW3gyLCB5Ml1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFt4MSwgbmV3WTJdLFxuICAgICAgICBbbmV3WDIsIHkyXVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgW25ld1gyLCB5MV0sXG4gICAgICAgIFt4MiwgbmV3WTJdXG4gICAgICBdXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IGJvdW5kIG9mIGJvdW5kcykge1xuICAgICAgY29uc3QgbGF0TG5nQm91bmQgPSB0aGlzLmxlYWZsZXQubGF0TG5nQm91bmRzKGJvdW5kKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3QobGF0TG5nQm91bmQpO1xuICAgICAgcmVjdHMgPSBbLi4ucmVjdHMsIC4uLihhd2FpdCB0aGlzLmdldENsdXN0ZXJSZWN0cyhsZXZlbFRocmVzaG9sZCwgbGF0TG5nQm91bmQsIGxldmVsKSldO1xuXG4gICAgICBpZiAobGV2ZWwgPT09IGxldmVsVGhyZXNob2xkKSB7XG4gICAgICAgIHJlY3RzLnB1c2gocmVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWN0KGxhdExuZ0JvdW5kOiBMLkxhdExuZ0JvdW5kcykge1xuICAgIGxldCBjb2xvciA9ICdub25lJztcbiAgICBpZiAodGhpcy5zaG93Q2x1c3RlckNvbG9yKSB7XG4gICAgICBjb2xvciA9IGF3YWl0IHRoaXMuY29sb3JTZXJ2aWNlLmdlbmVyYXRlQ29sb3IobGF0TG5nQm91bmQudG9CQm94U3RyaW5nKCkpO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5sZWFmbGV0LnJlY3RhbmdsZShsYXRMbmdCb3VuZCwge1xuICAgICAgY29sb3IsXG4gICAgICB3ZWlnaHQ6IGNvbG9yID09PSAnbm9uZScgPyAwIDogMSxcbiAgICAgIGludGVyYWN0aXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNsdXN0ZXJzKCkge1xuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMuY2x1c3RlcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ2x1c3RlcihjbHVzdGVyOiBDbHVzdGVyTWFwKSB7XG4gICAgY29uc3QgY2x1c3RlckNvdW50ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldFBvc2l0aW9uTU9zRnJvbUJvdW5kQ291bnQoXG4gICAgICBjbHVzdGVyLnJlY3QuZ2V0Qm91bmRzKCksXG4gICAgICB0aGlzLnJvb3ROb2RlXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckNvdW50ID4gdGhpcy5tYXBTZXJ2aWNlLk1BWF9ERVZJQ0VfUEVSX0NMVVNURVIpIHtcbiAgICAgIGNsdXN0ZXIuc2V0Q2x1c3RlclRvQmlnTWFya2VyKHRoaXMubWFwLCBjbHVzdGVyQ291bnQsIHRoaXMubGVhZmxldCk7XG4gICAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuIGNsdXN0ZXI7XG4gICAgfVxuXG4gICAgY2x1c3Rlci5yZW1vdmVDbHVzdGVyVG9CaWdNYXJrZXIoKTtcbiAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRQb3NpdGlvbk1PcyhcbiAgICAgIGNsdXN0ZXIucmVjdC5nZXRCb3VuZHMoKSxcbiAgICAgIHRoaXMucm9vdE5vZGVcbiAgICApO1xuICAgIHJldHVybiBjbHVzdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHM6IEwuUmVjdGFuZ2xlPHVua25vd24+W10pIHtcbiAgICBjb25zdCBpc05ldyA9IHJlY3RzLmxlbmd0aCAhPT0gdGhpcy5jbHVzdGVycy5sZW5ndGg7XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICB0aGlzLmNsZWFyQ2x1c3RlcnMoKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZSA9IHJlY3RzLm1hcCgocmVjdCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpc05ldykge1xuICAgICAgICBjb25zdCBjbHVzdGVyID0gbmV3IENsdXN0ZXJNYXAoXG4gICAgICAgICAgdGhpcy5pdGVyYWJsZSxcbiAgICAgICAgICBhc3NldCA9PiB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jbHVzdGVycy5wdXNoKGNsdXN0ZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jbHVzdGVyc1tpbmRleF0ucmVjdCA9IHJlY3Q7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHVzdGVyKHRoaXMuY2x1c3RlcnNbaW5kZXhdKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFwQ2hhbmdlT2JzZXJ2YWJsZSgpIHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnbW92ZScpLFxuICAgICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ21vdmVlbmQnKVxuICAgICkucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLkVWRU5UX1RIUk9UVExFX1RJTUUpLFxuICAgICAgdGFwKGV2ZW50ID0+IHRoaXMubWFwQ2hhbmdlLmVtaXQoZXZlbnQpKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { gettext } from '@c8y/ngx-components';
2
- import { getStatus } from './map.model';
2
+ import { MapService } from './map.service';
3
3
  export class ClusterMap {
4
4
  constructor(iterable, addAssetCallback, translateService) {
5
5
  this.iterable = iterable;
@@ -78,7 +78,12 @@ export class ClusterMap {
78
78
  }
79
79
  }
80
80
  trackBy(index, item) {
81
- const trackItems = [item.id, item.c8y_Position.lat, item.c8y_Position.lng, getStatus(item)];
81
+ const trackItems = [
82
+ item.id,
83
+ item.c8y_Position.lat,
84
+ item.c8y_Position.lng,
85
+ MapService.getStatus(item)
86
+ ];
82
87
  return trackItems.join('');
83
88
  }
84
89
  removeMarkerFromMap(device) {
@@ -86,4 +91,4 @@ export class ClusterMap {
86
91
  markers.forEach(marker => marker.remove());
87
92
  }
88
93
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvY2x1c3Rlci1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBYSxTQUFTLEVBQXlCLE1BQU0sYUFBYSxDQUFDO0FBRTFFLE1BQU0sT0FBTyxVQUFVO0lBNEJyQixZQUNVLFFBQXlCLEVBQ3pCLGdCQUE2RCxFQUM3RCxnQkFBa0M7UUFGbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE2QztRQUM3RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBOUI1QyxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUMxQixjQUFTLEdBQTRCLEVBQUUsQ0FBQztRQStCdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBOUJELElBQUksYUFBYSxDQUFDLElBQWE7UUFDN0IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBaUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNyQjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQWNELE1BQU0sQ0FBQyxHQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsR0FBVTtRQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUE2QixFQUFFLEdBQVU7UUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQVUsRUFBRSxLQUFLLEVBQUUsT0FBaUI7UUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDaEMsSUFBSSxFQUFFLGlEQUFpRCxLQUFLLFlBQVksSUFBSSxVQUFVO1NBQ3ZGLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2xELElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBbUQsRUFBRSxFQUFFO2dCQUNqRixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBbUQsRUFBRSxFQUFFO2dCQUMvRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxPQUFPLENBQUMsS0FBYSxFQUFFLElBQTJCO1FBQ3hELE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1RixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQTZCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVyYWJsZUNoYW5nZVJlY29yZCwgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQzh5TWFya2VyLCBnZXRTdGF0dXMsIFBvc2l0aW9uTWFuYWdlZE9iamVjdCB9IGZyb20gJy4vbWFwLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXAge1xuICBtYXJrZXJzOiBDOHlNYXJrZXJbXSA9IFtdO1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdID0gW107XG5cbiAgc2V0IGNsdXN0ZXJNYXJrZXIoaXRlbTogTC5MYXllcikge1xuICAgIHRoaXMucmVtb3ZlQ2x1c3RlclRvQmlnTWFya2VyKCk7XG4gICAgdGhpcy5fY2x1c3Rlck1hcmtlciA9IGl0ZW07XG4gIH1cblxuICBnZXQgY2x1c3Rlck1hcmtlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2x1c3Rlck1hcmtlcjtcbiAgfVxuXG4gIHNldCByZWN0KGl0ZW06IEwuUmVjdGFuZ2xlKSB7XG4gICAgaWYgKHRoaXMuX3JlY3QpIHtcbiAgICAgIHRoaXMuX3JlY3QucmVtb3ZlKCk7XG4gICAgfVxuICAgIHRoaXMuX3JlY3QgPSBpdGVtO1xuICB9XG5cbiAgZ2V0IHJlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY3Q7XG4gIH1cblxuICBwcml2YXRlIF9jbHVzdGVyTWFya2VyOiBMLkxheWVyO1xuICBwcml2YXRlIF9yZWN0OiBMLlJlY3RhbmdsZTtcbiAgcHJpdmF0ZSBpdGVyYWJsZURpZmZlcjogSXRlcmFibGVEaWZmZXI8UG9zaXRpb25NYW5hZ2VkT2JqZWN0PiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpdGVyYWJsZTogSXRlcmFibGVEaWZmZXJzLFxuICAgIHByaXZhdGUgYWRkQXNzZXRDYWxsYmFjazogKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpID0+IEM4eU1hcmtlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pdGVyYWJsZURpZmZlciA9IHRoaXMuaXRlcmFibGUuZmluZCh0aGlzLnBvc2l0aW9ucykuY3JlYXRlKHRoaXMudHJhY2tCeSk7XG4gIH1cblxuICByZW5kZXIobWFwOiBMLk1hcCkge1xuICAgIGlmICh0aGlzLl9yZWN0KSB7XG4gICAgICB0aGlzLl9yZWN0LmFkZFRvKG1hcCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhtYXApO1xuICAgIGlmICh0aGlzLl9jbHVzdGVyTWFya2VyKSB7XG4gICAgICB0aGlzLl9jbHVzdGVyTWFya2VyLmFkZFRvKG1hcCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIobWFwOiBMLk1hcCkge1xuICAgIHRoaXMucmVtb3ZlQ2x1c3RlclRvQmlnTWFya2VyKCk7XG4gICAgdGhpcy5fcmVjdC5yZW1vdmUoKTtcbiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdO1xuICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhtYXApO1xuICB9XG5cbiAgcmVtb3ZlQ2x1c3RlclRvQmlnTWFya2VyKCkge1xuICAgIGlmICh0aGlzLl9jbHVzdGVyTWFya2VyKSB7XG4gICAgICB0aGlzLl9jbHVzdGVyTWFya2VyLnJlbW92ZSgpO1xuICAgICAgdGhpcy5fY2x1c3Rlck1hcmtlciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYWRkTWFya2VyVG9NYXAoZGV2aWNlOiBQb3NpdGlvbk1hbmFnZWRPYmplY3QsIG1hcDogTC5NYXApIHtcbiAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmFkZEFzc2V0Q2FsbGJhY2soZGV2aWNlKTtcbiAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpO1xuICAgIG1hcmtlci5hZGRUbyhtYXApO1xuICB9XG5cbiAgc2V0Q2x1c3RlclRvQmlnTWFya2VyKG1hcDogTC5NYXAsIGNvdW50LCBsZWFmbGV0OiB0eXBlb2YgTCkge1xuICAgIGNvbnN0IGJvdW5kID0gdGhpcy5yZWN0LmdldEJvdW5kcygpO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdab29tIGluJykpO1xuICAgIGNvbnN0IGRpdk1hcmtlciA9IGxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImM4eS1tYXAtbWFya2VyLWNvdW50XCIgZGF0YS1jb3VudD1cIiR7Y291bnR9XCIgdGl0bGU9XCIke3RleHR9XCI+PC9kaXY+YFxuICAgIH0pO1xuICAgIGNvbnN0IGxhYmVsSWNvbiA9IGxlYWZsZXQubWFya2VyKGJvdW5kLmdldENlbnRlcigpLCB7XG4gICAgICBpY29uOiBkaXZNYXJrZXJcbiAgICB9KTtcbiAgICBsYWJlbEljb24uYWRkVG8obWFwKTtcbiAgICBsYWJlbEljb24ub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgbWFwLmZpdEJvdW5kcyhib3VuZCk7XG4gICAgfSk7XG4gICAgdGhpcy5jbHVzdGVyTWFya2VyID0gbGFiZWxJY29uO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGFuZ2VzKG1hcDogTC5NYXApIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMucG9zaXRpb25zKTtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHJlY29yZDogSXRlcmFibGVDaGFuZ2VSZWNvcmQ8UG9zaXRpb25NYW5hZ2VkT2JqZWN0PikgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZU1hcmtlckZyb21NYXAocmVjb3JkLml0ZW0pO1xuICAgICAgfSk7XG5cbiAgICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbSgocmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkTWFya2VyVG9NYXAocmVjb3JkLml0ZW0sIG1hcCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgdHJhY2tJdGVtcyA9IFtpdGVtLmlkLCBpdGVtLmM4eV9Qb3NpdGlvbi5sYXQsIGl0ZW0uYzh5X1Bvc2l0aW9uLmxuZywgZ2V0U3RhdHVzKGl0ZW0pXTtcbiAgICByZXR1cm4gdHJhY2tJdGVtcy5qb2luKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWFya2VyRnJvbU1hcChkZXZpY2U6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IG1hcmtlcnMgPSB0aGlzLm1hcmtlcnMuZmlsdGVyKChtYXJrZXI6IEM4eU1hcmtlcikgPT4gbWFya2VyLmFzc2V0Py5pZCA9PT0gZGV2aWNlLmlkKTtcbiAgICBtYXJrZXJzLmZvckVhY2gobWFya2VyID0+IG1hcmtlci5yZW1vdmUoKSk7XG4gIH1cbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvY2x1c3Rlci1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxPQUFPLFVBQVU7SUE0QnJCLFlBQ1UsUUFBeUIsRUFDekIsZ0JBQTZELEVBQzdELGdCQUFrQztRQUZsQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTZDO1FBQzdELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE5QjVDLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBNEIsRUFBRSxDQUFDO1FBK0J0QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUE5QkQsSUFBSSxhQUFhLENBQUMsSUFBYTtRQUM3QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFpQjtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBY0QsTUFBTSxDQUFDLEdBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFVO1FBQ2QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQTZCLEVBQUUsR0FBVTtRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVSxFQUFFLEtBQUssRUFBRSxPQUFpQjtRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxJQUFJLEVBQUUsaURBQWlELEtBQUssWUFBWSxJQUFJLFVBQVU7U0FDdkYsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDekIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBVTtRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFtRCxFQUFFLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFtRCxFQUFFLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBMkI7UUFDeEQsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUc7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHO1lBQ3JCLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzNCLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQTZCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVyYWJsZUNoYW5nZVJlY29yZCwgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQzh5TWFya2VyLCBQb3NpdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBDbHVzdGVyTWFwIHtcbiAgbWFya2VyczogQzh5TWFya2VyW10gPSBbXTtcbiAgcG9zaXRpb25zOiBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSA9IFtdO1xuXG4gIHNldCBjbHVzdGVyTWFya2VyKGl0ZW06IEwuTGF5ZXIpIHtcbiAgICB0aGlzLnJlbW92ZUNsdXN0ZXJUb0JpZ01hcmtlcigpO1xuICAgIHRoaXMuX2NsdXN0ZXJNYXJrZXIgPSBpdGVtO1xuICB9XG5cbiAgZ2V0IGNsdXN0ZXJNYXJrZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsdXN0ZXJNYXJrZXI7XG4gIH1cblxuICBzZXQgcmVjdChpdGVtOiBMLlJlY3RhbmdsZSkge1xuICAgIGlmICh0aGlzLl9yZWN0KSB7XG4gICAgICB0aGlzLl9yZWN0LnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLl9yZWN0ID0gaXRlbTtcbiAgfVxuXG4gIGdldCByZWN0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfY2x1c3Rlck1hcmtlcjogTC5MYXllcjtcbiAgcHJpdmF0ZSBfcmVjdDogTC5SZWN0YW5nbGU7XG4gIHByaXZhdGUgaXRlcmFibGVEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPFBvc2l0aW9uTWFuYWdlZE9iamVjdD4gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaXRlcmFibGU6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwcml2YXRlIGFkZEFzc2V0Q2FsbGJhY2s6IChhc3NldDogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KSA9PiBDOHlNYXJrZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXRlcmFibGVEaWZmZXIgPSB0aGlzLml0ZXJhYmxlLmZpbmQodGhpcy5wb3NpdGlvbnMpLmNyZWF0ZSh0aGlzLnRyYWNrQnkpO1xuICB9XG5cbiAgcmVuZGVyKG1hcDogTC5NYXApIHtcbiAgICBpZiAodGhpcy5fcmVjdCkge1xuICAgICAgdGhpcy5fcmVjdC5hZGRUbyhtYXApO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUNoYW5nZXMobWFwKTtcbiAgICBpZiAodGhpcy5fY2x1c3Rlck1hcmtlcikge1xuICAgICAgdGhpcy5fY2x1c3Rlck1hcmtlci5hZGRUbyhtYXApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKG1hcDogTC5NYXApIHtcbiAgICB0aGlzLnJlbW92ZUNsdXN0ZXJUb0JpZ01hcmtlcigpO1xuICAgIHRoaXMuX3JlY3QucmVtb3ZlKCk7XG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZUNoYW5nZXMobWFwKTtcbiAgfVxuXG4gIHJlbW92ZUNsdXN0ZXJUb0JpZ01hcmtlcigpIHtcbiAgICBpZiAodGhpcy5fY2x1c3Rlck1hcmtlcikge1xuICAgICAgdGhpcy5fY2x1c3Rlck1hcmtlci5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX2NsdXN0ZXJNYXJrZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFkZE1hcmtlclRvTWFwKGRldmljZTogUG9zaXRpb25NYW5hZ2VkT2JqZWN0LCBtYXA6IEwuTWFwKSB7XG4gICAgY29uc3QgbWFya2VyID0gdGhpcy5hZGRBc3NldENhbGxiYWNrKGRldmljZSk7XG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICBtYXJrZXIuYWRkVG8obWFwKTtcbiAgfVxuXG4gIHNldENsdXN0ZXJUb0JpZ01hcmtlcihtYXA6IEwuTWFwLCBjb3VudCwgbGVhZmxldDogdHlwZW9mIEwpIHtcbiAgICBjb25zdCBib3VuZCA9IHRoaXMucmVjdC5nZXRCb3VuZHMoKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnWm9vbSBpbicpKTtcbiAgICBjb25zdCBkaXZNYXJrZXIgPSBsZWFmbGV0LmRpdkljb24oe1xuICAgICAgaHRtbDogYDxkaXYgY2xhc3M9XCJjOHktbWFwLW1hcmtlci1jb3VudFwiIGRhdGEtY291bnQ9XCIke2NvdW50fVwiIHRpdGxlPVwiJHt0ZXh0fVwiPjwvZGl2PmBcbiAgICB9KTtcbiAgICBjb25zdCBsYWJlbEljb24gPSBsZWFmbGV0Lm1hcmtlcihib3VuZC5nZXRDZW50ZXIoKSwge1xuICAgICAgaWNvbjogZGl2TWFya2VyXG4gICAgfSk7XG4gICAgbGFiZWxJY29uLmFkZFRvKG1hcCk7XG4gICAgbGFiZWxJY29uLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgIG1hcC5maXRCb3VuZHMoYm91bmQpO1xuICAgIH0pO1xuICAgIHRoaXMuY2x1c3Rlck1hcmtlciA9IGxhYmVsSWNvbjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhbmdlcyhtYXA6IEwuTWFwKSB7XG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuaXRlcmFibGVEaWZmZXIuZGlmZih0aGlzLnBvc2l0aW9ucyk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPFBvc2l0aW9uTWFuYWdlZE9iamVjdD4pID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVNYXJrZXJGcm9tTWFwKHJlY29yZC5pdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDogSXRlcmFibGVDaGFuZ2VSZWNvcmQ8UG9zaXRpb25NYW5hZ2VkT2JqZWN0PikgPT4ge1xuICAgICAgICB0aGlzLmFkZE1hcmtlclRvTWFwKHJlY29yZC5pdGVtLCBtYXApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHRyYWNrSXRlbXMgPSBbXG4gICAgICBpdGVtLmlkLFxuICAgICAgaXRlbS5jOHlfUG9zaXRpb24ubGF0LFxuICAgICAgaXRlbS5jOHlfUG9zaXRpb24ubG5nLFxuICAgICAgTWFwU2VydmljZS5nZXRTdGF0dXMoaXRlbSlcbiAgICBdO1xuICAgIHJldHVybiB0cmFja0l0ZW1zLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNYXJrZXJGcm9tTWFwKGRldmljZTogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgbWFya2VycyA9IHRoaXMubWFya2Vycy5maWx0ZXIoKG1hcmtlcjogQzh5TWFya2VyKSA9PiBtYXJrZXIuYXNzZXQ/LmlkID09PSBkZXZpY2UuaWQpO1xuICAgIG1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4gbWFya2VyLnJlbW92ZSgpKTtcbiAgfVxufVxuIl19
@@ -10,7 +10,7 @@ export class MapStatusComponent {
10
10
  constructor() {
11
11
  this.configChange = new EventEmitter();
12
12
  this.onUnfollow = new EventEmitter();
13
- this.showCenter = false;
13
+ this.centerMapButtonDisabled = true;
14
14
  this.destroy$ = new Subject();
15
15
  }
16
16
  ngOnInit() {
@@ -60,16 +60,30 @@ export class MapStatusComponent {
60
60
  this.clusterMap.mapChange.pipe(takeUntil(this.destroy$)).subscribe((event) => {
61
61
  if (this.config?.center && event.sourceTarget?.getBounds) {
62
62
  const bounds = event.sourceTarget.getBounds();
63
- this.showCenter = !bounds.getCenter().equals(this.config.center, 3);
63
+ this.centerMapButtonDisabled = this.shouldDisableCenterButton(bounds);
64
64
  }
65
65
  });
66
66
  }
67
+ /**
68
+ * Checks if Center button should be disabled according to provided bounds.
69
+ * Provided bounds contain coordinates of current map rectangle corners.
70
+ * Center button should be disabled if distance between center coordinates (from config) and center of current bounds
71
+ * is less than 1/4 of bounds dimensions.
72
+ * To achieve it we just need to check if center coordinates (from config) are contained in the boundaries of
73
+ * current bounds shrunk by 25%.
74
+ * @param bounds Current map view boundaries.
75
+ * @returns True if distance between config center and current boundaries center is bigger than 1/4 of boundaries dimensions
76
+ */
77
+ shouldDisableCenterButton(bounds) {
78
+ const shrunkBounds = bounds.pad(-0.25);
79
+ return shrunkBounds.contains(this.config.center);
80
+ }
67
81
  }
68
82
  MapStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
- MapStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MapStatusComponent, selector: "c8y-map-status", inputs: { config: "config", clusterMap: "clusterMap" }, outputs: { configChange: "configChange", onUnfollow: "onUnfollow" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"!showCenter || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Unfollow' | translate }}\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n type=\"button\"\n title=\"{{ 'Follow' | translate }}\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
83
+ MapStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MapStatusComponent, selector: "c8y-map-status", inputs: { config: "config", clusterMap: "clusterMap" }, outputs: { configChange: "configChange", onUnfollow: "onUnfollow" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Unfollow' | translate }}\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n type=\"button\"\n title=\"{{ 'Follow' | translate }}\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
70
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapStatusComponent, decorators: [{
71
85
  type: Component,
72
- args: [{ selector: 'c8y-map-status', template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"!showCenter || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Unfollow' | translate }}\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n type=\"button\"\n title=\"{{ 'Follow' | translate }}\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n" }]
86
+ args: [{ selector: 'c8y-map-status', template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Unfollow' | translate }}\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n type=\"button\"\n title=\"{{ 'Follow' | translate }}\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n" }]
73
87
  }], propDecorators: { config: [{
74
88
  type: Input
75
89
  }], configChange: [{
@@ -79,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
79
93
  }], clusterMap: [{
80
94
  type: Input
81
95
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUt0QyxNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBU0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdwRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLbEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUdYLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0tBa0VsQztJQWhFQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLGFBQWEsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRTtZQUMxRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQ3pCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUMzRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFO2dCQUN4RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyRTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBakZVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdNQ1YvQixrbkZBbUZBOzJGRHpFYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQUsxQixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2x1c3Rlck1hcENvbXBvbmVudCB9IGZyb20gJy4vY2x1c3Rlci1tYXAuY29tcG9uZW50JztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb25maWcgfSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbWFwLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtc3RhdHVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNYXBTdGF0dXNDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBjb25maWc6IENsdXN0ZXJNYXBDb25maWc7XG5cbiAgQE91dHB1dCgpXG4gIGNvbmZpZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25VbmZvbGxvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBASW5wdXQoKVxuICBjbHVzdGVyTWFwOiBDbHVzdGVyTWFwQ29tcG9uZW50O1xuXG4gIHNob3dDZW50ZXIgPSBmYWxzZTtcbiAgc2Vjb25kc1VudGlsUmVmcmVzaCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaW5pdENvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29uZmlnID0gY2xvbmVEZWVwKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jbHVzdGVyTWFwPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLmNsdXN0ZXJNYXA/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGVja0lmTWFwSXNBbHJlYWR5Q2VudGVyZWQoKTtcblxuICAgICAgdGhpcy5zZWNvbmRzVW50aWxSZWZyZXNoJCA9IHRoaXMuY2x1c3Rlck1hcC5tc1VudGlsUmVmcmVzaCQucGlwZShcbiAgICAgICAgbWFwKG1pbGxpc2Vjb25kcyA9PiBgJHtNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApfWApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY2VudGVyKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5jZW50ZXIoKTtcbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAucmVsb2FkKCk7XG4gIH1cblxuICBjYW5jZWxSZWxvYWQoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLmNhbmNlbFJlbG9hZCgpO1xuICB9XG5cbiAgdG9nZ2xlUmVhbHRpbWUoKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIHJlYWx0aW1lOiAhdGhpcy5jb25maWcucmVhbHRpbWVcbiAgICB9O1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgdW5mb2xsb3coKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNsdXN0ZXJNYXAuY29uZmlnLFxuICAgICAgZm9sbG93OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vblVuZm9sbG93LmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgZm9sbG93KCkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICBmb2xsb3c6IHRydWVcbiAgICB9O1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZNYXBJc0FscmVhZHlDZW50ZXJlZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAubWFwQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50OiBMLkxlYWZsZXRFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5jZW50ZXIgJiYgZXZlbnQuc291cmNlVGFyZ2V0Py5nZXRCb3VuZHMpIHtcbiAgICAgICAgY29uc3QgYm91bmRzID0gZXZlbnQuc291cmNlVGFyZ2V0LmdldEJvdW5kcygpO1xuICAgICAgICB0aGlzLnNob3dDZW50ZXIgPSAhYm91bmRzLmdldENlbnRlcigpLmVxdWFscyh0aGlzLmNvbmZpZy5jZW50ZXIsIDMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcC1zdGF0dXNcIj5cbiAgPGRpdiBjbGFzcz1cImxlYWZsZXQtdG91Y2hcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVhZmxldC1iYXJcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRpdGxlPVwie3sgJ1JlYWx0aW1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNsYXNzPVwiYzh5LXJlYWx0aW1lXCJcbiAgICAgICAgKm5nSWY9XCJpbml0Q29uZmlnLnJlYWx0aW1lIHx8IGNsdXN0ZXJNYXAuY29uZmlnLmZvbGxvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWFsdGltZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjOHktcHVsc2VcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogY2x1c3Rlck1hcD8uY29uZmlnLnJlYWx0aW1lIH1cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidGltZS1lbGxhcHNlZFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY2x1c3Rlck1hcD8uY29uZmlnLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgICAgIChzZWNvbmRzVW50aWxSZWZyZXNoJCB8IGFzeW5jKSAmJlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XG4gICAgICAgIFwiXG4gICAgICAgIGRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICB0aXRsZT1cInt7IHNlY29uZHNVbnRpbFJlZnJlc2gkIHwgYXN5bmMgfX1zIC8ge3tcbiAgICAgICAgICBjbHVzdGVyTWFwPy5jb25maWcucmVmcmVzaEludGVydmFsIC8gMTAwMFxuICAgICAgICB9fXNcIlxuICAgICAgICBbc3R5bGUuLS10aW1lc2NvcGVdPVwiY2x1c3Rlck1hcD8uY29uZmlnLnJlZnJlc2hJbnRlcnZhbCArIDEwMDAgKyAnbXMnXCJcbiAgICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RpbWUtb24nOiAhKGNsdXN0ZXJNYXA/LmlzTG9hZGluZyQgfCBhc3luYykgfVwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjIwXCIgY3k9XCIyMFwiIHI9XCIxNS44XCIgc3Ryb2tlPVwidmFyKC0tYzh5LWJyYW5kLXByaW1hcnkpXCIgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XG4gICAgICAgIDwvc3ZnPlxuXG4gICAgICAgIDxzcGFuPnt7IHNlY29uZHNVbnRpbFJlZnJlc2gkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsIHJlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAoY2xpY2spPVwiY2FuY2VsUmVsb2FkKClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiIGNsYXNzPVwiaWNvbi1zcGluXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcucmVhbHRpbWUgJiYgIWNsdXN0ZXJNYXA/LmFzc2V0cyAmJiAhKGNsdXN0ZXJNYXA/LmlzTG9hZGluZyQgfCBhc3luYylcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cInJlbG9hZCgpXCJcbiAgICAgICAgW3RpdGxlXT1cIidSZWxvYWQnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cInJlZnJlc2hcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJjZW50ZXIoKVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0NlbnRlciBtYXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFzaG93Q2VudGVyIHx8IGNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwidGFyZ2V0MVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnVW5mb2xsb3cnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKm5nSWY9XCJjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cInVuZm9sbG93KClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwibWFya2VyLW9mZlwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0aXRsZT1cInt7ICdGb2xsb3cnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKm5nSWY9XCJpbml0Q29uZmlnLmZvbGxvdyAmJiAhY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICAgIChjbGljayk9XCJmb2xsb3coKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtYXJrZXJcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUt0QyxNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBU0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdwRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLbEQsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBR3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0tBaUZsQztJQS9FQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLGFBQWEsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRTtZQUMxRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQ3pCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUMzRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFO2dCQUN4RCxNQUFNLE1BQU0sR0FBbUIsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2RTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLHlCQUF5QixDQUFDLE1BQXNCO1FBQ3RELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDOzsrR0FoR1Usa0JBQWtCO21HQUFsQixrQkFBa0Isd01DVi9CLDhuRkFtRkE7MkZEekVhLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBSzFCLE1BQU07c0JBREwsS0FBSztnQkFJTixZQUFZO3NCQURYLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbHVzdGVyTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2x1c3Rlck1hcENvbmZpZyB9IGZyb20gJy4vbWFwLm1vZGVsJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAtc3RhdHVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1zdGF0dXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFN0YXR1c0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcblxuICBAT3V0cHV0KClcbiAgY29uZmlnQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDbHVzdGVyTWFwQ29uZmlnPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblVuZm9sbG93ID0gbmV3IEV2ZW50RW1pdHRlcjxDbHVzdGVyTWFwQ29uZmlnPigpO1xuXG4gIEBJbnB1dCgpXG4gIGNsdXN0ZXJNYXA6IENsdXN0ZXJNYXBDb21wb25lbnQ7XG5cbiAgY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICBzZWNvbmRzVW50aWxSZWZyZXNoJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpbml0Q29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRDb25maWcgPSBjbG9uZURlZXAodGhpcy5jb25maWcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNsdXN0ZXJNYXA/LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMuY2x1c3Rlck1hcD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoZWNrSWZNYXBJc0FscmVhZHlDZW50ZXJlZCgpO1xuXG4gICAgICB0aGlzLnNlY29uZHNVbnRpbFJlZnJlc2gkID0gdGhpcy5jbHVzdGVyTWFwLm1zVW50aWxSZWZyZXNoJC5waXBlKFxuICAgICAgICBtYXAobWlsbGlzZWNvbmRzID0+IGAke01hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCl9YCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLmNlbnRlcigpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5yZWxvYWQoKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAuY2FuY2VsUmVsb2FkKCk7XG4gIH1cblxuICB0b2dnbGVSZWFsdGltZSgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgcmVhbHRpbWU6ICF0aGlzLmNvbmZpZy5yZWFsdGltZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICB1bmZvbGxvdygpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY2x1c3Rlck1hcC5jb25maWcsXG4gICAgICBmb2xsb3c6IGZhbHNlXG4gICAgfTtcbiAgICB0aGlzLmNvbmZpZ0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLm9uVW5mb2xsb3cuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBmb2xsb3coKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIGZvbGxvdzogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZk1hcElzQWxyZWFkeUNlbnRlcmVkKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5tYXBDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWc/LmNlbnRlciAmJiBldmVudC5zb3VyY2VUYXJnZXQ/LmdldEJvdW5kcykge1xuICAgICAgICBjb25zdCBib3VuZHM6IEwuTGF0TG5nQm91bmRzID0gZXZlbnQuc291cmNlVGFyZ2V0LmdldEJvdW5kcygpO1xuICAgICAgICB0aGlzLmNlbnRlck1hcEJ1dHRvbkRpc2FibGVkID0gdGhpcy5zaG91bGREaXNhYmxlQ2VudGVyQnV0dG9uKGJvdW5kcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIENlbnRlciBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGFjY29yZGluZyB0byBwcm92aWRlZCBib3VuZHMuXG4gICAqIFByb3ZpZGVkIGJvdW5kcyBjb250YWluIGNvb3JkaW5hdGVzIG9mIGN1cnJlbnQgbWFwIHJlY3RhbmdsZSBjb3JuZXJzLlxuICAgKiBDZW50ZXIgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpZiBkaXN0YW5jZSBiZXR3ZWVuIGNlbnRlciBjb29yZGluYXRlcyAoZnJvbSBjb25maWcpIGFuZCBjZW50ZXIgb2YgY3VycmVudCBib3VuZHNcbiAgICogaXMgbGVzcyB0aGFuIDEvNCBvZiBib3VuZHMgZGltZW5zaW9ucy5cbiAgICogVG8gYWNoaWV2ZSBpdCB3ZSBqdXN0IG5lZWQgdG8gY2hlY2sgaWYgY2VudGVyIGNvb3JkaW5hdGVzIChmcm9tIGNvbmZpZykgYXJlIGNvbnRhaW5lZCBpbiB0aGUgYm91bmRhcmllcyBvZlxuICAgKiBjdXJyZW50IGJvdW5kcyBzaHJ1bmsgYnkgMjUlLlxuICAgKiBAcGFyYW0gYm91bmRzIEN1cnJlbnQgbWFwIHZpZXcgYm91bmRhcmllcy5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBkaXN0YW5jZSBiZXR3ZWVuIGNvbmZpZyBjZW50ZXIgYW5kIGN1cnJlbnQgYm91bmRhcmllcyBjZW50ZXIgaXMgYmlnZ2VyIHRoYW4gMS80IG9mIGJvdW5kYXJpZXMgZGltZW5zaW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGREaXNhYmxlQ2VudGVyQnV0dG9uKGJvdW5kczogTC5MYXRMbmdCb3VuZHMpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaHJ1bmtCb3VuZHMgPSBib3VuZHMucGFkKC0wLjI1KTtcbiAgICByZXR1cm4gc2hydW5rQm91bmRzLmNvbnRhaW5zKHRoaXMuY29uZmlnLmNlbnRlcik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktbWFwLXN0YXR1c1wiPlxuICA8ZGl2IGNsYXNzPVwibGVhZmxldC10b3VjaFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWFmbGV0LWJhclwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVhbHRpbWUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgY2xhc3M9XCJjOHktcmVhbHRpbWVcIlxuICAgICAgICAqbmdJZj1cImluaXRDb25maWcucmVhbHRpbWUgfHwgY2x1c3Rlck1hcC5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlYWx0aW1lKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImM4eS1wdWxzZVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBjbHVzdGVyTWFwPy5jb25maWcucmVhbHRpbWUgfVwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0aW1lLWVsbGFwc2VkXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjbHVzdGVyTWFwPy5jb25maWcucmVmcmVzaEludGVydmFsICYmXG4gICAgICAgICAgKHNlY29uZHNVbnRpbFJlZnJlc2gkIHwgYXN5bmMpICYmXG4gICAgICAgICAgIWNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcbiAgICAgICAgXCJcbiAgICAgICAgZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIHRpdGxlPVwie3sgc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYyB9fXMgLyB7e1xuICAgICAgICAgIGNsdXN0ZXJNYXA/LmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgLyAxMDAwXG4gICAgICAgIH19c1wiXG4gICAgICAgIFtzdHlsZS4tLXRpbWVzY29wZV09XCJjbHVzdGVyTWFwPy5jb25maWcucmVmcmVzaEludGVydmFsICsgMTAwMCArICdtcydcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAndGltZS1vbic6ICEoY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jKSB9XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMjBcIiBjeT1cIjIwXCIgcj1cIjE1LjhcIiBzdHJva2U9XCJ2YXIoLS1jOHktYnJhbmQtcHJpbWFyeSlcIiBzdHJva2Utd2lkdGg9XCI2XCIgLz5cbiAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgPHNwYW4+e3sgc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJjbHVzdGVyTWFwPy5pc0xvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICB0aXRsZT1cInt7ICdDYW5jZWwgcmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIChjbGljayk9XCJjYW5jZWxSZWxvYWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJyZWZyZXNoXCIgY2xhc3M9XCJpY29uLXNwaW5cIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWNsdXN0ZXJNYXA/LmNvbmZpZy5yZWFsdGltZSAmJiAhY2x1c3Rlck1hcD8uYXNzZXRzICYmICEoY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jKVxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgICAgICBbdGl0bGVdPVwiJ1JlbG9hZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNlbnRlcigpXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2VudGVyIG1hcCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgfHwgY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ0YXJnZXQxXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0aXRsZT1cInt7ICdVbmZvbGxvdycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAqbmdJZj1cImNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcIlxuICAgICAgICAoY2xpY2spPVwidW5mb2xsb3coKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtYXJrZXItb2ZmXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0ZvbGxvdycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAqbmdJZj1cImluaXRDb25maWcuZm9sbG93ICYmICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cImZvbGxvdygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cIm1hcmtlclwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19