@smarterplan/ngx-smarterplan-core 1.2.47 → 1.2.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
- package/esm2020/lib/components/loader/loader.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +4 -4
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +2 -2
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
- package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
- package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
- package/esm2020/lib/services/base-tab.service.mjs +4 -4
- package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
- package/esm2020/lib/services/content.service.mjs +4 -4
- package/esm2020/lib/services/filter.service.mjs +4 -4
- package/esm2020/lib/services/intervention.service.mjs +4 -4
- package/esm2020/lib/services/locale.service.mjs +4 -4
- package/esm2020/lib/services/matterport-import.service.mjs +4 -4
- package/esm2020/lib/services/matterport.service.mjs +4 -4
- package/esm2020/lib/services/models/affectation.service.mjs +4 -4
- package/esm2020/lib/services/models/base-object.service.mjs +4 -4
- package/esm2020/lib/services/models/capture.service.mjs +4 -4
- package/esm2020/lib/services/models/comment.service.mjs +4 -4
- package/esm2020/lib/services/models/domain.service.mjs +4 -4
- package/esm2020/lib/services/models/equipment.service.mjs +4 -4
- package/esm2020/lib/services/models/event.service.mjs +4 -4
- package/esm2020/lib/services/models/feature.service.mjs +4 -4
- package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
- package/esm2020/lib/services/models/layer.service.mjs +4 -4
- package/esm2020/lib/services/models/measurement.service.mjs +4 -4
- package/esm2020/lib/services/models/mission.service.mjs +4 -4
- package/esm2020/lib/services/models/navigation.service.mjs +4 -4
- package/esm2020/lib/services/models/node.service.mjs +4 -4
- package/esm2020/lib/services/models/object3D.service.mjs +4 -4
- package/esm2020/lib/services/models/operation.service.mjs +4 -4
- package/esm2020/lib/services/models/organisation.service.mjs +4 -4
- package/esm2020/lib/services/models/plan.service.mjs +4 -4
- package/esm2020/lib/services/models/poi.service.mjs +4 -4
- package/esm2020/lib/services/models/profile.service.mjs +4 -4
- package/esm2020/lib/services/models/property.service.mjs +4 -4
- package/esm2020/lib/services/models/space.service.mjs +4 -4
- package/esm2020/lib/services/models/template.service.mjs +4 -4
- package/esm2020/lib/services/models/ticket.service.mjs +4 -4
- package/esm2020/lib/services/models/visit.service.mjs +4 -4
- package/esm2020/lib/services/models/zone.service.mjs +4 -4
- package/esm2020/lib/services/navigator.service.mjs +4 -4
- package/esm2020/lib/services/search.service.mjs +4 -4
- package/esm2020/lib/services/support.service.mjs +4 -4
- package/esm2020/lib/services/tag.service.mjs +4 -4
- package/esm2020/lib/services/user.service.mjs +4 -4
- package/esm2020/lib/services/validators.service.mjs +4 -4
- package/esm2020/lib/services/viewer.service.mjs +4 -4
- package/esm2020/lib/services/zoneChange.service.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +182 -182
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +182 -182
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/package.json +13 -13
- package/src/assets/vs-app.json +67 -0
|
@@ -366,9 +366,9 @@ export class FeatureService extends BaseObjectService {
|
|
|
366
366
|
}); // for lateral menu
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
|
-
FeatureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
370
|
-
FeatureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
369
|
+
FeatureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FeatureService, deps: [{ token: 'currentAPIService' }, { token: i1.NavigatorService }, { token: i2.FilterService }, { token: i3.PoiService }, { token: i4.CommentService }, { token: i5.BaseUserService }, { token: i6.NavigationService }, { token: i7.HashtagService }, { token: i8.ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
370
|
+
FeatureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FeatureService, providedIn: "root" });
|
|
371
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FeatureService, decorators: [{
|
|
372
372
|
type: Injectable,
|
|
373
373
|
args: [{
|
|
374
374
|
providedIn: "root",
|
|
@@ -377,4 +377,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
377
377
|
type: Inject,
|
|
378
378
|
args: ['currentAPIService']
|
|
379
379
|
}] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.PoiService }, { type: i4.CommentService }, { type: i5.BaseUserService }, { type: i6.NavigationService }, { type: i7.HashtagService }, { type: i8.ZoneChangeService }]; } });
|
|
380
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQW9CLFdBQVcsRUFBRSxXQUFXLEVBQU8sT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBSW5ILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBVTFELE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQWlCO0lBdUNqRCxZQUNpQyxXQUFnQixFQUNyQyxnQkFBa0MsRUFDbEMsYUFBNEIsRUFDcEMsVUFBc0IsRUFDZCxjQUE4QixFQUM5QixXQUE0QixFQUNwQyxpQkFBb0MsRUFDNUIsY0FBOEIsRUFDOUIsaUJBQW9DO1FBRTVDLEtBQUssQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQVQ3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFFNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE3Q2hELG1CQUFjLEdBR1QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuQixvQkFBZSxHQUEyQztZQUN0RCxLQUFLLEVBQUUsRUFBRTtZQUNULElBQUksRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVG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Q0FBQyxDQUFDO1NBQy9DO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUM5QyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxXQUFXLEVBQUU7WUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSTtTQUNsQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0IsQ0FBQzs7MkdBM2RRLGNBQWMsa0JBd0NYLG1CQUFtQjsrR0F4Q3RCLGNBQWMsY0FGWCxNQUFNOzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkF5Q1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1hdHRlcnRhZ0RhdGEgfSBmcm9tIFwiLi4vLi4vbWF0dGVydGFnRGF0YVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlLCBIYXNodGFnLCBGZWF0dXJlVHlwZSwgQ29tbWVudFR5cGUsIFBPSSwgUG9pVHlwZSwgRXZlbnQsIExldmVsU3RhdHVzIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL25hdmlnYXRvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZU9iamVjdFNlcnZpY2UgfSBmcm9tIFwiLi9iYXNlLW9iamVjdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vY29tbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEhhc2h0YWdTZXJ2aWNlIH0gZnJvbSBcIi4vaGFzaHRhZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tIFwiLi9wb2kuc2VydmljZVwiO1xyXG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIGV4dGVuZHMgQmFzZU9iamVjdFNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgZmVhdHVyZVVwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgICAgIHNwYWNlOiBGZWF0dXJlW107XHJcbiAgICAgICAgem9uZTogRmVhdHVyZVtdO1xyXG4gICAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGN1cnJlbnRGZWF0dXJlczogeyBzcGFjZTogRmVhdHVyZVtdOyB6b25lOiBGZWF0dXJlW107IH0gPSB7XHJcbiAgICAgICAgc3BhY2U6IFtdLFxyXG4gICAgICAgIHpvbmU6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICBmZWF0dXJlVGFnczogU3ViamVjdDxGZWF0dXJlW10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBmZWF0dXJlRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IFtdO1xyXG5cclxuICAgIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHpvbmVJREZpbHRlcjogc3RyaW5nO1xyXG5cclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGlzVXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBmZWF0dXJlRG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gICAgZGVza0RvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGRlc2tCb29raW5nc1VwZGF0ZWQ6IFN1YmplY3Q8RXZlbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHB1YmxpYyBjdXJyZW50SGFzaHRhZ3M6IEhhc2h0YWdbXSA9IFtdO1xyXG5cclxuICAgIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGhhc2h0YWdTZXJ2aWNlOiBIYXNodGFnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHBvaVNlcnZpY2UsIG5hdmlnYXRpb25TZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzID0gbGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyICYmICF0aGlzLnVzZXJTZXJ2aWNlLmlzTXVzZXVtVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiBDUlVEXHJcbiAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRmVhdHVyZSh7IGlkOiBmZWF0dXJlLmlkIH0pO1xyXG4gICAgICAgIGlmIChkZWxldGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChmZWF0dXJlLmlkKTtcclxuICAgICAgICAgICAgaWYgKHBvaSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShwb2kuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBjb21tZW50c1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgZGVsZXRlZC5jb21tZW50cy5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnQuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmUoZmVhdHVyZTogYW55KTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldEZlYXR1cmUoaWQpKSBhcyBGZWF0dXJlO1xyXG4gICAgICAgIGZlYXR1cmUuZXZlbnRzPy5pdGVtcy5zb3J0KChhLCBiKSA9PiBiLnJlYWxTdGFydERhdGUgLSBhLnJlYWxTdGFydERhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEltYWdlcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldFZpZGVvcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50cyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEF1ZGlvKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEVtYmVkcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldElmcmFtZXMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgaW5pdEZlYXR1cmVzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVMaXN0ID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzID0gYXdhaXQgdGhpcy5oYXNodGFnU2VydmljZS5nZXRIYXNodGFnc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50SGFzaHRhZ3MpO1xyXG4gICAgICAgIGlmIChmZWF0dXJlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZlYXR1cmVMaXN0XTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSAhPT0gRmVhdHVyZVR5cGUuREVTSyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0ssXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkUG9pbnRJbnRlcmVzdC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlci5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXNrRG9tYWluRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWREZXNrcy5maWx0ZXIoKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNrRG9tYWluRmlsdGVyLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmlsdGVyZWRQb2ludEludGVyZXN0LCAuLi5maWx0ZXJlZERlc2tzXTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgKSkgYXMgRmVhdHVyZVtdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQoZmlsdGVyZWRGZWF0dXJlcyk7IC8vIGZvciB0aGlzIHpvbmVcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudEZlYXR1cmVzKTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlc0ZvclNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBrZWVwQXJjaGl2ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVhdHVyZXNGb3JVc2VyID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGlmICgha2VlcEFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzRm9yVXNlciA9IGZlYXR1cmVzRm9yVXNlci5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzRm9yVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlc0ZvclVzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNCeVNwYWNlV2l0aG91dEZpbHRlcmluZyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcztcclxuICAgIH1cclxuXHJcbiAgICBpc0Jvb2tpbmdQbGFjZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgZmVhdHVyZS5pc0Jvb2tpbmdQbGFjZSA9IGZlYXR1cmUudHlwZSA9PT0gRmVhdHVyZVR5cGUuREVTSztcclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0Q292ZXJJbWFnZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgY292ZXJJbWFnZSA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcclxuICAgICAgICAgICAgKGNvbSkgPT4gY29tLmlzQ292ZXJJbWFnZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChjb3ZlckltYWdlKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGNvdmVySW1hZ2UuYW5uZXhlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLnNvbWUoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHlvdXR1YmVDb21tZW50ID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKTtcclxuICAgICAgICAgICAgLy8gd2UgY2FuIHVzZSB0aGUgcHJldmlldyBpbWFnZSBvZiB5b3V0dWJlXHJcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGBodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8ke3lvdXR1YmVDb21tZW50LmV4dGVybmFsTGlua30vMC5qcGdgO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgZmVhdHVyZS5jb21tZW50cy5pdGVtcy5zb21lKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VDb21tZW50ID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBpbWFnZUNvbW1lbnQuYW5uZXhlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRmVhdHVyZUxvY2F0aW9uKFxyXG4gICAgICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICAgICAgdGFnRGF0YTogTWF0dGVydGFnRGF0YSxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPFBPST4ge1xyXG4gICAgICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICAgICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcclxuICAgICAgICAgICAgdHlwZTogZmVhdHVyZS5pc0Jvb2tpbmdQbGFjZSA/IFBvaVR5cGUuREVTSyA6IFBvaVR5cGUuREFUQSxcclxuICAgICAgICAgICAgZWxlbWVudElEOiBmZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogdGFnRGF0YS5nZXRNZXRhZGF0YVN0cmluZygpLFxyXG4gICAgICAgICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXHJcbiAgICAgICAgfSBhcyBQT0k7XHJcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmNyZWF0ZVBPSUZvclNwYWNlSUQocG9pSW5wdXQpO1xyXG4gICAgICAgIHJldHVybiBwb2k7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW1hZ2VzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBpbWFnZXNDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBpbWFnZXNDb21tZW50cykge1xyXG4gICAgICAgICAgICBpbWFnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBpbWFnZS5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1hZ2UuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGltYWdlLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmltYWdlcyA9IGltYWdlcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRWaWRlb3MoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IHZpZGVvc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5WSURFTyB8fCBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCB2aWRlb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHZpZGVvIG9mIHZpZGVvc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIHZpZGVvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IHZpZGVvLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUgPyAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJyArIHZpZGVvLmV4dGVybmFsTGluayA6IHZpZGVvLmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB2aWRlby50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB2aWRlby5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHR5cGU6IHZpZGVvLnR5cGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLnZpZGVvcyA9IHZpZGVvcztcclxuICAgIH1cclxuXHJcbiAgICBzZXREb2N1bWVudHMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkRPQ1VNRU5UKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGRvY3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGRvY3VtZW50Q29tbWVudHMpIHtcclxuICAgICAgICAgICAgZG9jcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGRvY3VtZW50LmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBkb2N1bWVudC50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkb2N1bWVudC5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZG9jdW1lbnRzID0gZG9jcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRBdWRpbyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgYXVkaW9Db21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuQVVESU8pXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgYXVkaW9zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBhdWRpbyBvZiBhdWRpb0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGF1ZGlvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGF1ZGlvLmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBhdWRpby50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdWRpby5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuYXVkaW9zID0gYXVkaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEV4dGVybmFsTGlua3MoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLlVSTClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBleHRlcm5hbExpbmtzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgZXh0ZXJuYWxMaW5rcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGxpbmsuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpbmsudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGluay5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogbGluay5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5leHRlcm5hbExpbmtzID0gZXh0ZXJuYWxMaW5rcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRFbWJlZHMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGVtYmVkQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkVNQkVEKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGVtYmVkcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZW1iZWQgb2YgZW1iZWRDb21tZW50cykge1xyXG4gICAgICAgICAgICBlbWJlZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBlbWJlZC5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZW1iZWQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZW1iZWQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGVtYmVkLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmVtYmVkcyA9IGVtYmVkcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRJZnJhbWVzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBpZnJhbWVDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSUZSQU1FKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGlmcmFtZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGlmcmFtZSBvZiBpZnJhbWVDb21tZW50cykge1xyXG4gICAgICAgICAgICBpZnJhbWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogaWZyYW1lLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpZnJhbWUudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaWZyYW1lLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpZnJhbWUuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuaWZyYW1lcyA9IGlmcmFtZXM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIGdldEZpcnN0RmVhdHVyZUZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gZmVhdHVyZXMuZmluZCgoZmVhdCkgPT4gZmVhdC5pbmRleCA9PT0gMSk7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUljb25Gb3JBbGxGZWF0dXJlc0luU3BhY2UoXHJcbiAgICAgICAgdGFnSWNvbjogc3RyaW5nLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBjYXRlZ29yeUlEOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgKTogUHJvbWlzZTx7IGZlYXR1cmVzOiBGZWF0dXJlW107IHBvaXM6IFBPSVtdOyB9PiB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChjYXRlZ29yeUlEKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUuZG9tYWluSUQgPT09IGNhdGVnb3J5SUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBvaXMgPSBhd2FpdCB0aGlzLnVwZGF0ZUljb25Gb3JBbGxPYmplY3RzKGZlYXR1cmVzLCB0YWdJY29uKTtcclxuICAgICAgICByZXR1cm4geyBmZWF0dXJlcywgcG9pcyB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENyZWF0ZWRJbmRpY2VzRm9yRmVhdHVyZXNJblNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8bnVtYmVyW10+IHtcclxuICAgICAgICBsZXQgZmVhdHVyZXMgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkZlYXR1cmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XHJcbiAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoKGZlYXQpID0+IGZlYXQuaW5kZXgpO1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXQpID0+IGZlYXQuaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldERlc2tzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZXMuZmlsdGVyKChmZWF0KSA9PiBmZWF0LmlzQm9va2luZ1BsYWNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgYXJjaGl2ZWQgdGhpcyBmZWF0dXJlICovXHJcbiAgICBpc0FyY2hpdmVkKGZlYXR1cmU6IEZlYXR1cmUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA/IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSUQuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGZlYXR1cmUuc3BhY2VJRCkuaWQsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBcmNoaXZlZChmZWF0dXJlOiBGZWF0dXJlLCBhcmNoaXZlZDogYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBhcmNoaXZlZExpc3QgPSBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgICAgICAgID8gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZmVhdHVyZS5zcGFjZUlEKS5pZDtcclxuXHJcbiAgICAgICAgYXJjaGl2ZWRMaXN0ID0gYXJjaGl2ZWRMaXN0LmZpbHRlcigobSkgPT4gbSAhPT0gbWlzc2lvbklEKTtcclxuXHJcbiAgICAgICAgaWYgKGFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGFyY2hpdmVkTGlzdC5wdXNoKG1pc3Npb25JRCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVGZWF0dXJlKHtcclxuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXHJcbiAgICAgICAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUR1ZVRvQ3JlYXRlKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS51bnNoaWZ0KGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUudW5zaGlmdChmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UsXHJcbiAgICAgICAgICAgIHpvbmU6IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUsXHJcbiAgICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVEdWVUb0RlbGV0ZShkZWxldGVkRmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5maW5kKFxyXG4gICAgICAgICAgICAoX2ZlYXR1cmUpID0+IF9mZWF0dXJlLmlkID09PSBkZWxldGVkRmVhdHVyZS5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChmZWF0dXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UuaW5kZXhPZihmZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgem9uZUZlYXR1cmUgPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLmZpbmQoXHJcbiAgICAgICAgICAgIChfZmVhdHVyZSkgPT4gX2ZlYXR1cmUuaWQgPT09IGRlbGV0ZWRGZWF0dXJlLmlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHpvbmVGZWF0dXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5pbmRleE9mKHpvbmVGZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UsXHJcbiAgICAgICAgICAgIHpvbmU6IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUsXHJcbiAgICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQW9CLFdBQVcsRUFBRSxXQUFXLEVBQU8sT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBSW5ILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBVTFELE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQWlCO0lBdUNqRCxZQUNpQyxXQUFnQixFQUNyQyxnQkFBa0MsRUFDbEMsYUFBNEIsRUFDcEMsVUFBc0IsRUFDZCxjQUE4QixFQUM5QixXQUE0QixFQUNwQyxpQkFBb0MsRUFDNUIsY0FBOEIsRUFDOUIsaUJBQW9DO1FBRTVDLEtBQUssQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQVQ3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFFNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE3Q2hELG1CQUFjLEdBR1QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuQixvQkFBZSxHQUEyQztZQUN0RCxLQUFLLEVBQUUsRUFBRTtZQUNULElBQUksRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUVGLGdCQUFXLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFaEQsb0JBQWUsR0FBYyxFQUFFLENBQUM7UUFFaEMsZUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBTTdDLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUzQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLHdCQUFtQixHQUFhLElBQUksQ0FBQztRQUVyQyxxQkFBZ0IsR0FBYSxJQUFJLENBQUM7UUFFbEMsd0JBQW1CLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0Msb0JBQWUsR0FBYyxFQUFFLENBQUM7UUFFdkMscUJBQWdCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbkQscUJBQWdCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFjL0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUM1QjtpQkFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDN0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdkI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbkM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7TUFFRTtJQUNGLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBZ0I7UUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksR0FBRyxFQUFFO2dCQUNMLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzNDO1lBQ0Qsa0JBQWtCO1lBQ2xCLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFZO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQVU7UUFDdkIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBWSxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUdELEtBQUssQ0FBQyxZQUFZO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUNoRSxJQUFJLENBQUMsY0FBYyxDQUN0QixDQUFDO1FBQ0YscUNBQXFDO1FBQ3JDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDeEMsSUFBSSxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQy9DLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQ2pELENBQUM7WUFDRixJQUFJLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQ2pELENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDMUIscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUNoRCxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDekIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNQLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNyRCxDQUNSLENBQUM7YUFDTDtZQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN2QixhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3RCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDUCxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDckQsQ0FDSixDQUFDO2FBQ0w7WUFDRCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzlDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUM5QixDQUFDO1lBQ0Ysd0RBQXdEO1lBQ3hELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsZ0JBQWdCO29CQUNaLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUMxQyxnQkFBZ0IsRUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FDcEIsQ0FBYyxDQUFDO2FBQ3ZCO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtZQUV6RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzdDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUM5QixDQUFDO1lBQ0YscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtTQUN0RTthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1NBQ3pFO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FDckIsT0FBZSxFQUNmLGVBQXdCLEtBQUs7UUFFN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNuRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FDL0IsQ0FBQztRQUNGLElBQUksZUFBZSxHQUNmLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FDeEQsUUFBUSxFQUNSLE9BQU8sQ0FDVixDQUFDO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNmLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUNwQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUN6QyxDQUFDO1NBQ0w7UUFDRCxLQUFLLE1BQU0sT0FBTyxJQUFJLGVBQWUsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLE9BQWU7UUFDcEQsSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNqRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FDL0IsQ0FBQztRQUNGLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUN0QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUN6QyxDQUFDO1FBQ0YsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFnQjtRQUMzQixPQUFPLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvRCxDQUFDO0lBR0QsYUFBYSxDQUFDLE9BQWdCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDMUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQzVCLENBQUM7UUFDRixJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMxQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDeEUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RiwwQ0FBMEM7WUFDMUMsT0FBTyxDQUFDLGFBQWEsR0FBRyw4QkFBOEIsY0FBYyxDQUFDLFlBQVksUUFBUSxDQUFDO1lBQzFGLE9BQU87U0FDVjtRQUNELElBQ0ksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDdEU7WUFDRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzVDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQzFDLENBQUM7WUFDRixPQUFPLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7U0FDL0M7SUFFTCxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUN2QixPQUFnQixFQUNoQixPQUFzQixFQUN0QixPQUFlO1FBRWYsTUFBTSxRQUFRLEdBQUc7WUFDYixVQUFVLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixFQUFFO1lBQ3pDLElBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTtZQUMxRCxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUNyQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFO1NBQ25DLENBQUM7UUFDVCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWdCO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUN4QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQzthQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxjQUFjLEVBQUU7WUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDUixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDOUIsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWdCO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSzthQUN4QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUM7YUFDbkYsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksY0FBYyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQy9HLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWdCO1FBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQzFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO2FBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sUUFBUSxJQUFJLGdCQUFnQixFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ04sSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUNyQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVzthQUNwQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBZ0I7UUFDckIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLGFBQWEsRUFBRTtZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDakMsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsR0FBRyxDQUFDO2FBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN6QixLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRTtZQUM5QixhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTthQUM3QixDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0I7UUFDdEIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLGFBQWEsRUFBRTtZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVTthQUM5QixDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZ0I7UUFDdkIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO2FBQ3hDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsTUFBTSxDQUFDO2FBQ2hELElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixLQUFLLE1BQU0sTUFBTSxJQUFJLGNBQWMsRUFBRTtZQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNULElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTtnQkFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQy9CLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVTthQUMvQixDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFHRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsT0FBZTtRQUN6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsK0JBQStCLENBQ2pDLE9BQWUsRUFDZixPQUFlLEVBQ2YsYUFBcUIsSUFBSTtRQUV6QixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxJQUFJLFVBQVUsRUFBRTtZQUNaLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUN0QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQy9DLENBQUM7U0FDTDtRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsbUNBQW1DLENBQ3JDLE9BQWU7UUFFZixJQUFJLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pFLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLG9CQUFvQjtZQUMvQixDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FDdEQ7WUFDRCxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZ0IsRUFBRSxRQUFpQjtRQUMzQyxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsb0JBQW9CO1lBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CO1lBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXRFLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7UUFFM0QsSUFBSSxRQUFRLEVBQUU7WUFDVixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNkLG9CQUFvQixFQUFFLFlBQVk7U0FDckMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFnQjtRQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSTtTQUNsQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxjQUF1QjtRQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzNDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQyxFQUFFLENBQ2xELENBQUM7UUFDRixJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUM5QyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxXQUFXLEVBQUU7WUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSTtTQUNsQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0IsQ0FBQzs7NEdBM2RRLGNBQWMsa0JBd0NYLG1CQUFtQjtnSEF4Q3RCLGNBQWMsY0FGWCxNQUFNOzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkF5Q1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1hdHRlcnRhZ0RhdGEgfSBmcm9tIFwiLi4vLi4vbWF0dGVydGFnRGF0YVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlLCBIYXNodGFnLCBGZWF0dXJlVHlwZSwgQ29tbWVudFR5cGUsIFBPSSwgUG9pVHlwZSwgRXZlbnQsIExldmVsU3RhdHVzIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL25hdmlnYXRvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZU9iamVjdFNlcnZpY2UgfSBmcm9tIFwiLi9iYXNlLW9iamVjdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vY29tbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEhhc2h0YWdTZXJ2aWNlIH0gZnJvbSBcIi4vaGFzaHRhZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tIFwiLi9wb2kuc2VydmljZVwiO1xyXG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIGV4dGVuZHMgQmFzZU9iamVjdFNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgZmVhdHVyZVVwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgICAgIHNwYWNlOiBGZWF0dXJlW107XHJcbiAgICAgICAgem9uZTogRmVhdHVyZVtdO1xyXG4gICAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGN1cnJlbnRGZWF0dXJlczogeyBzcGFjZTogRmVhdHVyZVtdOyB6b25lOiBGZWF0dXJlW107IH0gPSB7XHJcbiAgICAgICAgc3BhY2U6IFtdLFxyXG4gICAgICAgIHpvbmU6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICBmZWF0dXJlVGFnczogU3ViamVjdDxGZWF0dXJlW10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBmZWF0dXJlRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IFtdO1xyXG5cclxuICAgIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHpvbmVJREZpbHRlcjogc3RyaW5nO1xyXG5cclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGlzVXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBmZWF0dXJlRG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gICAgZGVza0RvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGRlc2tCb29raW5nc1VwZGF0ZWQ6IFN1YmplY3Q8RXZlbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHB1YmxpYyBjdXJyZW50SGFzaHRhZ3M6IEhhc2h0YWdbXSA9IFtdO1xyXG5cclxuICAgIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGhhc2h0YWdTZXJ2aWNlOiBIYXNodGFnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHBvaVNlcnZpY2UsIG5hdmlnYXRpb25TZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzID0gbGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyICYmICF0aGlzLnVzZXJTZXJ2aWNlLmlzTXVzZXVtVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiBDUlVEXHJcbiAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRmVhdHVyZSh7IGlkOiBmZWF0dXJlLmlkIH0pO1xyXG4gICAgICAgIGlmIChkZWxldGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChmZWF0dXJlLmlkKTtcclxuICAgICAgICAgICAgaWYgKHBvaSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShwb2kuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBjb21tZW50c1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgZGVsZXRlZC5jb21tZW50cy5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnQuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmUoZmVhdHVyZTogYW55KTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldEZlYXR1cmUoaWQpKSBhcyBGZWF0dXJlO1xyXG4gICAgICAgIGZlYXR1cmUuZXZlbnRzPy5pdGVtcy5zb3J0KChhLCBiKSA9PiBiLnJlYWxTdGFydERhdGUgLSBhLnJlYWxTdGFydERhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEltYWdlcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldFZpZGVvcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50cyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEF1ZGlvKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEVtYmVkcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldElmcmFtZXMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgaW5pdEZlYXR1cmVzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVMaXN0ID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzID0gYXdhaXQgdGhpcy5oYXNodGFnU2VydmljZS5nZXRIYXNodGFnc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50SGFzaHRhZ3MpO1xyXG4gICAgICAgIGlmIChmZWF0dXJlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZlYXR1cmVMaXN0XTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSAhPT0gRmVhdHVyZVR5cGUuREVTSyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0ssXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkUG9pbnRJbnRlcmVzdC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlci5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXNrRG9tYWluRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWREZXNrcy5maWx0ZXIoKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNrRG9tYWluRmlsdGVyLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmlsdGVyZWRQb2ludEludGVyZXN0LCAuLi5maWx0ZXJlZERlc2tzXTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgKSkgYXMgRmVhdHVyZVtdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQoZmlsdGVyZWRGZWF0dXJlcyk7IC8vIGZvciB0aGlzIHpvbmVcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudEZlYXR1cmVzKTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlc0ZvclNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBrZWVwQXJjaGl2ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVhdHVyZXNGb3JVc2VyID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGlmICgha2VlcEFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzRm9yVXNlciA9IGZlYXR1cmVzRm9yVXNlci5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzRm9yVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlc0ZvclVzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNCeVNwYWNlV2l0aG91dEZpbHRlcmluZyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcztcclxuICAgIH1cclxuXHJcbiAgICBpc0Jvb2tpbmdQbGFjZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgZmVhdHVyZS5pc0Jvb2tpbmdQbGFjZSA9IGZlYXR1cmUudHlwZSA9PT0gRmVhdHVyZVR5cGUuREVTSztcclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0Q292ZXJJbWFnZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgY292ZXJJbWFnZSA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcclxuICAgICAgICAgICAgKGNvbSkgPT4gY29tLmlzQ292ZXJJbWFnZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChjb3ZlckltYWdlKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGNvdmVySW1hZ2UuYW5uZXhlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLnNvbWUoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHlvdXR1YmVDb21tZW50ID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKTtcclxuICAgICAgICAgICAgLy8gd2UgY2FuIHVzZSB0aGUgcHJldmlldyBpbWFnZSBvZiB5b3V0dWJlXHJcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGBodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8ke3lvdXR1YmVDb21tZW50LmV4dGVybmFsTGlua30vMC5qcGdgO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgZmVhdHVyZS5jb21tZW50cy5pdGVtcy5zb21lKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VDb21tZW50ID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBpbWFnZUNvbW1lbnQuYW5uZXhlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRmVhdHVyZUxvY2F0aW9uKFxyXG4gICAgICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICAgICAgdGFnRGF0YTogTWF0dGVydGFnRGF0YSxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPFBPST4ge1xyXG4gICAgICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICAgICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcclxuICAgICAgICAgICAgdHlwZTogZmVhdHVyZS5pc0Jvb2tpbmdQbGFjZSA/IFBvaVR5cGUuREVTSyA6IFBvaVR5cGUuREFUQSxcclxuICAgICAgICAgICAgZWxlbWVudElEOiBmZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogdGFnRGF0YS5nZXRNZXRhZGF0YVN0cmluZygpLFxyXG4gICAgICAgICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXHJcbiAgICAgICAgfSBhcyBQT0k7XHJcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmNyZWF0ZVBPSUZvclNwYWNlSUQocG9pSW5wdXQpO1xyXG4gICAgICAgIHJldHVybiBwb2k7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW1hZ2VzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBpbWFnZXNDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBpbWFnZXNDb21tZW50cykge1xyXG4gICAgICAgICAgICBpbWFnZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBpbWFnZS5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1hZ2UuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGltYWdlLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmltYWdlcyA9IGltYWdlcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRWaWRlb3MoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IHZpZGVvc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5WSURFTyB8fCBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCB2aWRlb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHZpZGVvIG9mIHZpZGVvc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIHZpZGVvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IHZpZGVvLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUgPyAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJyArIHZpZGVvLmV4dGVybmFsTGluayA6IHZpZGVvLmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB2aWRlby50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB2aWRlby5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHR5cGU6IHZpZGVvLnR5cGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLnZpZGVvcyA9IHZpZGVvcztcclxuICAgIH1cclxuXHJcbiAgICBzZXREb2N1bWVudHMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkRPQ1VNRU5UKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGRvY3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIGRvY3VtZW50Q29tbWVudHMpIHtcclxuICAgICAgICAgICAgZG9jcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGRvY3VtZW50LmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBkb2N1bWVudC50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkb2N1bWVudC5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZG9jdW1lbnRzID0gZG9jcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRBdWRpbyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgYXVkaW9Db21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuQVVESU8pXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgYXVkaW9zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBhdWRpbyBvZiBhdWRpb0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGF1ZGlvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGF1ZGlvLmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBhdWRpby50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdWRpby5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuYXVkaW9zID0gYXVkaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEV4dGVybmFsTGlua3MoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLlVSTClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBleHRlcm5hbExpbmtzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgZXh0ZXJuYWxMaW5rcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGxpbmsuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpbmsudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbGluay5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogbGluay5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5leHRlcm5hbExpbmtzID0gZXh0ZXJuYWxMaW5rcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRFbWJlZHMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGVtYmVkQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkVNQkVEKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGVtYmVkcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZW1iZWQgb2YgZW1iZWRDb21tZW50cykge1xyXG4gICAgICAgICAgICBlbWJlZHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBlbWJlZC5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZW1iZWQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZW1iZWQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGVtYmVkLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmVtYmVkcyA9IGVtYmVkcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRJZnJhbWVzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBpZnJhbWVDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSUZSQU1FKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGlmcmFtZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGlmcmFtZSBvZiBpZnJhbWVDb21tZW50cykge1xyXG4gICAgICAgICAgICBpZnJhbWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogaWZyYW1lLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpZnJhbWUudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaWZyYW1lLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpZnJhbWUuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuaWZyYW1lcyA9IGlmcmFtZXM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIGdldEZpcnN0RmVhdHVyZUZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gZmVhdHVyZXMuZmluZCgoZmVhdCkgPT4gZmVhdC5pbmRleCA9PT0gMSk7XHJcbiAgICAgICAgcmV0dXJuIGZpcnN0O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUljb25Gb3JBbGxGZWF0dXJlc0luU3BhY2UoXHJcbiAgICAgICAgdGFnSWNvbjogc3RyaW5nLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBjYXRlZ29yeUlEOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgKTogUHJvbWlzZTx7IGZlYXR1cmVzOiBGZWF0dXJlW107IHBvaXM6IFBPSVtdOyB9PiB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIGlmIChjYXRlZ29yeUlEKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUuZG9tYWluSUQgPT09IGNhdGVnb3J5SUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBvaXMgPSBhd2FpdCB0aGlzLnVwZGF0ZUljb25Gb3JBbGxPYmplY3RzKGZlYXR1cmVzLCB0YWdJY29uKTtcclxuICAgICAgICByZXR1cm4geyBmZWF0dXJlcywgcG9pcyB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENyZWF0ZWRJbmRpY2VzRm9yRmVhdHVyZXNJblNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8bnVtYmVyW10+IHtcclxuICAgICAgICBsZXQgZmVhdHVyZXMgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkZlYXR1cmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XHJcbiAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoKGZlYXQpID0+IGZlYXQuaW5kZXgpO1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXQpID0+IGZlYXQuaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldERlc2tzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZXMuZmlsdGVyKChmZWF0KSA9PiBmZWF0LmlzQm9va2luZ1BsYWNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgYXJjaGl2ZWQgdGhpcyBmZWF0dXJlICovXHJcbiAgICBpc0FyY2hpdmVkKGZlYXR1cmU6IEZlYXR1cmUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA/IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSUQuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGZlYXR1cmUuc3BhY2VJRCkuaWQsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBcmNoaXZlZChmZWF0dXJlOiBGZWF0dXJlLCBhcmNoaXZlZDogYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBhcmNoaXZlZExpc3QgPSBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgICAgICAgID8gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZmVhdHVyZS5zcGFjZUlEKS5pZDtcclxuXHJcbiAgICAgICAgYXJjaGl2ZWRMaXN0ID0gYXJjaGl2ZWRMaXN0LmZpbHRlcigobSkgPT4gbSAhPT0gbWlzc2lvbklEKTtcclxuXHJcbiAgICAgICAgaWYgKGFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGFyY2hpdmVkTGlzdC5wdXNoKG1pc3Npb25JRCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVGZWF0dXJlKHtcclxuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXHJcbiAgICAgICAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUR1ZVRvQ3JlYXRlKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS51bnNoaWZ0KGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUudW5zaGlmdChmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UsXHJcbiAgICAgICAgICAgIHpvbmU6IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUsXHJcbiAgICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVEdWVUb0RlbGV0ZShkZWxldGVkRmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5maW5kKFxyXG4gICAgICAgICAgICAoX2ZlYXR1cmUpID0+IF9mZWF0dXJlLmlkID09PSBkZWxldGVkRmVhdHVyZS5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChmZWF0dXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UuaW5kZXhPZihmZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgem9uZUZlYXR1cmUgPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLmZpbmQoXHJcbiAgICAgICAgICAgIChfZmVhdHVyZSkgPT4gX2ZlYXR1cmUuaWQgPT09IGRlbGV0ZWRGZWF0dXJlLmlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHpvbmVGZWF0dXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5pbmRleE9mKHpvbmVGZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UsXHJcbiAgICAgICAgICAgIHpvbmU6IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUsXHJcbiAgICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -24,9 +24,9 @@ export class HashtagService {
|
|
|
24
24
|
return this.API.__proto__.HashtagsBySpace(spaceID).then((response) => response.items);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
HashtagService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
28
|
-
HashtagService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
27
|
+
HashtagService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: HashtagService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
HashtagService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: HashtagService, providedIn: "root" });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: HashtagService, decorators: [{
|
|
30
30
|
type: Injectable,
|
|
31
31
|
args: [{
|
|
32
32
|
providedIn: "root",
|
|
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
35
35
|
type: Inject,
|
|
36
36
|
args: ['currentAPIService']
|
|
37
37
|
}] }]; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaHRhZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvaGFzaHRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQU92QixZQUF5QyxXQUFnQjtRQUp6RCxvQkFBZSxHQUFjLEVBQUUsQ0FBQztRQUs1QixJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFnQjtRQUNoQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQWtCLElBQUk7UUFDNUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQzFELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQy9ELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO2FBQ0w7WUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ25ELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO0lBQ04sQ0FBQzs7NEdBbENRLGNBQWMsa0JBT0gsbUJBQW1CO2dIQVA5QixjQUFjLGNBRlgsTUFBTTs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSGFzaHRhZywgTm9kZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEhhc2h0YWdTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcclxuXHJcbiAgICBBUEk6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnkpIHtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEhhc2h0YWcoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldEhhc2h0YWcoaGFzaHRhZ0lEKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVIYXNodGFnKGhhc2h0YWc6IEhhc2h0YWcpOiBQcm9taXNlPEhhc2h0YWc+IHtcclxuICAgICAgICBjb25zdCBoYXNodGFnQ3JlYXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVIYXNodGFnKGhhc2h0YWcpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzLnB1c2goaGFzaHRhZ0NyZWF0ZWQpO1xyXG4gICAgICAgIHJldHVybiBoYXNodGFnQ3JlYXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRIYXNodGFnc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBQcm9taXNlPEhhc2h0YWdbXT4ge1xyXG4gICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SGFzaHRhZ3MubGVuZ3RoID09PSAwICYmIHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uSGFzaHRhZ3NCeVNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEhhc2h0YWdzO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gc3BhY2VJRDtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkhhc2h0YWdzQnlTcGFjZShzcGFjZUlEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -19,9 +19,9 @@ export class LayerService {
|
|
|
19
19
|
}).then((list) => list.items);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
LayerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
23
|
-
LayerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
22
|
+
LayerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LayerService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
LayerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LayerService, providedIn: "root" });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LayerService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: "root",
|
|
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
30
30
|
type: Inject,
|
|
31
31
|
args: ['currentAPIService']
|
|
32
32
|
}] }]; } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2xheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxZQUFZO0lBR3JCLFlBQXlDLFdBQWdCO1FBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBYTtRQUN2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCLENBQzVCLFNBQWlCLEVBQ2pCLEtBQWE7UUFFYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUNsQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUM3QixjQUFjLEVBQUUsS0FBSztTQUN4QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QixDQUFDLFNBQWlCLEVBQUUsS0FBYTtRQUNoRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDeEQsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtTQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7MEdBekJRLFlBQVksa0JBR0QsbUJBQW1COzhHQUg5QixZQUFZLGNBRlQsTUFBTTs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBSWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXllclNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRMYXllckZvck9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxMYXllcltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MYXllcnNCeU9yZ2FuaXNhdGlvbihvcmdJRCkudGhlbigobGlzdCkgPT4gbGlzdC5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlTGF5ZXJGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgbGF5ZXJOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgb3JnSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TGF5ZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUxheWVyKHtcclxuICAgICAgICAgICAgbmFtZTogbGF5ZXJOYW1lLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBvcmdJRCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRMYXllckJ5TmFtZUZvck9yZ2FuaXNhdGlvbihsYXllck5hbWU6IHN0cmluZywgb3JnSUQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGF5ZXJzQnlPcmdhbmlzYXRpb24ob3JnSUQsIG51bGwsIHtcclxuICAgICAgICAgICAgbmFtZTogeyBlcTogbGF5ZXJOYW1lLnRvVXBwZXJDYXNlKCkgfSxcclxuICAgICAgICB9KS50aGVuKChsaXN0KSA9PiBsaXN0Lml0ZW1zKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -185,9 +185,9 @@ export class MeasurementService {
|
|
|
185
185
|
this.destroy$.complete();
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
-
MeasurementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
189
|
-
MeasurementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
190
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
188
|
+
MeasurementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MeasurementService, deps: [{ token: 'currentAwsKinesisAnalyticsService' }, { token: i1.NavigatorService }, { token: i2.FilterService }, { token: i3.CommentService }, { token: i4.PoiService }, { token: i5.BaseUserService }, { token: i6.ZoneChangeService }, { token: i7.NavigationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
189
|
+
MeasurementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MeasurementService, providedIn: 'root' });
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MeasurementService, decorators: [{
|
|
191
191
|
type: Injectable,
|
|
192
192
|
args: [{
|
|
193
193
|
providedIn: 'root',
|
|
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
196
196
|
type: Inject,
|
|
197
197
|
args: ['currentAwsKinesisAnalyticsService']
|
|
198
198
|
}] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.CommentService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.ZoneChangeService }, { type: i7.NavigationService }]; } });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQWUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBRy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVN0QsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFFRSwyQkFBZ0MsRUFDeEIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLFdBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxpQkFBb0M7UUFOcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBM0M5QyxTQUFJLEdBQUcsZUFBZSxDQUFDO1FBRXZCLHdCQUFtQixHQUdmLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFNUIscUJBQWdCLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckQsd0JBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFuQixzQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7UUFFekYsZUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTdDLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUkzQyxtQkFBYyxHQUFXLElBQUksQ0FBQztRQUU5QixrQkFBYSxHQUFTLElBQUksQ0FBQztRQUVuQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQWEvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7UUFFdkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2lCQUMxQjtxQkFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUM1Qix1REFBdUQ7b0JBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2lCQUN6QjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUU7WUFDeEQsSUFBSSxLQUFLLEVBQUM7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyw4QkFBOEIsQ0FDMUQsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztZQUNGLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbkIsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQzlELFlBQVksRUFDWixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO2lCQUNIO2dCQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUMxQixZQUFZLEdBQUcsRUFBRSxDQUFDO2lCQUNuQjtnQkFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztnQkFDOUMsd0RBQXdEO2dCQUV4RCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3JCLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDaEUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUM5QyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO29CQUNGLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDN0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQ3ZDLENBQUM7aUJBQ0g7Z0JBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFFL0QsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDekIsT0FBTztvQkFDTCxhQUFhO29CQUNiLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO3dCQUM3QixhQUFhO3dCQUNiLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQzlCLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjthQUM1RTtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUF3QjtRQUM5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUM1RCxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDdkIsQ0FBQztRQUNGLElBQUksY0FBYyxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRCxNQUFNLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN4RCxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQUM7WUFDaEQsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLHlCQUF5QixDQUM3QixZQUFxQixFQUNyQixnQkFBbUQsRUFDbkQsVUFBZSxFQUNmLE9BQWU7UUFFZixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDN0MsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEUsTUFBTSxRQUFRLEdBQUc7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDekIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNkLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDZCxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDZixDQUFDO1lBQ0YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixpQkFBaUIsRUFBRSxPQUFPO1NBQ3BCLENBQUM7UUFDVCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNyRSxNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxHQUFHLEVBQUU7WUFDUCxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztnQkFDaEQsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLE1BQU0sRUFBRSxHQUFHO2FBQ1osQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLFdBQVcsR0FBRztZQUNsQixPQUFPO1lBQ1AsR0FBRztTQUNXLENBQUM7UUFFakIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN4RyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTTtZQUMzQyxhQUFhO1lBQ2I7Z0JBQ0UsSUFBSSxFQUFFO29CQUNKLFNBQVMsRUFBRSxpQkFBaUI7b0JBQzVCLFVBQVUsRUFBRSxhQUFhO29CQUN6QixXQUFXLEVBQUUsV0FBVztvQkFDeEIsa0JBQWtCO29CQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQy9CLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO2lCQUNoQztnQkFDRCxVQUFVLEVBQUUsOEJBQThCO2dCQUMxQyxvQkFBb0I7YUFDckIsRUFDRCxZQUFZLENBQ2IsQ0FBQztTQUNIO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxXQUF3QjtRQUNyRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsaUJBQWlCLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQ2YsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMscUNBQXFDLENBQ2hFLEdBQUcsQ0FBQyxpQkFBaUIsRUFDckIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQzVCLENBQUM7WUFDSixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ3BDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsOEJBQThCLENBQ2xDLE9BQWU7UUFFZixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyx1Q0FBdUMsQ0FDekUsT0FBTyxFQUNQLFFBQVEsQ0FDVCxDQUFDO1FBQ0YsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixNQUFNLFdBQVcsR0FDZixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzsrR0FqUFUsa0JBQWtCLGtCQW9DbkIsbUNBQW1DO21IQXBDbEMsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZWFzdXJlbWVudCwgUG9pVHlwZSwgQ29tbWVudCwgUE9JLCBab25lIH0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlbGV0ZUZyb21TMywgdXBsb2FkRmlsZVRvUzMgfSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuL2NvbW1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSAnLi9wb2kuc2VydmljZSc7XHJcbmltcG9ydCB7Wm9uZUNoYW5nZVNlcnZpY2V9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlbWVudFNlcnZpY2Uge1xyXG4gIHBhdGggPSAnbWVhc3VyZW1lbnRzLyc7XHJcblxyXG4gIGN1cnJlbnRNZWFzdXJlbWVudHM6IHtcclxuICAgIHNwYWNlOiBNZWFzdXJlbWVudFtdO1xyXG4gICAgem9uZTogTWVhc3VyZW1lbnRbXTtcclxuICB9ID0geyBzcGFjZTogW10sIHpvbmU6IFtdIH07XHJcblxyXG4gIG1lYXN1cmVtZW50c1RhZ3M6IFN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG1lYXN1cmVtZW50c1VwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgc3BhY2U6IE1lYXN1cmVtZW50W107XHJcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gIGRhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgbWVhc3VyZW1lbnRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgZmFsc2UgbWVhbnMgbm8gZmlsdGVyaW5nLCBldmVyeXRoaW5nIGlzIGFsbG93ZWRcclxuXHJcbiAgdXBkYXRlRG9uZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xyXG5cclxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgc2VsZWN0ZWRGbG9vcjogWm9uZSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXHJcbiAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xyXG5cclxuICAgIGNvbnN0IGlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgIGlmICghaXNNdXNldW1Vc2VyKSB7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIpIHtcclxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCBtZWFzdXJlbWVudHMgZnJvbSB6b25lXCIpO1xyXG4gICAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlRmlsdGVyID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmN1cnJlbnREYXRlRmlsdGVyO1xyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuaW5pdE1lYXN1cmVtZW50cygpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKT0+e1xyXG4gICAgICBpZiAoZmxvb3Ipe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYXN5bmMgaW5pdE1lYXN1cmVtZW50cygpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgbGV0IG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICAgKTtcclxuICAgICAgaWYgKG1lYXN1cmVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckRhdGVSYW5nZShcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcblxyXG4gICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgY29uc3QgY29tbWVudHNab25lID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+XHJcbiAgICAgICAgICAgIGNvbW1lbnRzWm9uZS5pbmNsdWRlcyhtZWFzdXJlLmNvbW1lbnQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobWVhc3VyZW1lbnRzLm1hcCgobSkgPT4gbS5jb21tZW50KSk7XHJcblxyXG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBuZXcgRGF0ZShhLmNvbW1lbnQuY3JlYXRlZEF0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuem9uZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZENvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoXHJcbiAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuaWRcclxuICAgICk7XHJcbiAgICBpZiAoZGVsZXRlZENvbW1lbnQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShtZWFzdXJlbWVudC5wb2kuaWQpO1xyXG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xyXG4gICAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5wYXRoICsgcHJlZml4fW1lc3VyZS5qcGVnYDtcclxuICAgICAgYXdhaXQgZGVsZXRlRnJvbVMzKHBhdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlTWVhc3VyZW1lbnRGb3JTcGFjZShcclxuICAgIGNvbW1lbnRJbnB1dDogQ29tbWVudCxcclxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmcgfSxcclxuICAgIHNjcmVlbnNob3Q6IGFueSxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnQ+IHtcclxuICAgIGNvbnN0IGxhc3RNZWFzdXJlID0gZGF0YU1lYXN1cmVtZW50cy5tZWFzdXJlO1xyXG4gICAgY29uc3Qgc3dlZXBJRCA9IGRhdGFNZWFzdXJlbWVudHMuc3dlZXA7XHJcbiAgICBjb25zdCBsYXN0UG9pbnQgPSBsYXN0TWVhc3VyZVtsYXN0TWVhc3VyZS5sZW5ndGggLSAxXTtcclxuICAgIGxldCBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVDb21tZW50KGNvbW1lbnRJbnB1dCk7XHJcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgY29vcmRpbmF0ZTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHg6IGxhc3RQb2ludC54LFxyXG4gICAgICAgIHk6IGxhc3RQb2ludC55LFxyXG4gICAgICAgIHo6IGxhc3RQb2ludC56LFxyXG4gICAgICB9KSxcclxuICAgICAgdHlwZTogUG9pVHlwZS5NRUFTVVJFLFxyXG4gICAgICBlbGVtZW50SUQ6IGNvbW1lbnQuaWQsXHJcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBzd2VlcElELFxyXG4gICAgfSBhcyBQT0k7XHJcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICBjb25zdCBzY3JlZW4gPSBhd2FpdCBmZXRjaChzY3JlZW5zaG90KTtcclxuICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBzY3JlZW4uYmxvYigpO1xyXG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgJ21lc3VyZS5qcGVnJywgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSk7XHJcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyh0aGlzLnBhdGgsIGZpbGUsIGNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHVybCkge1xyXG4gICAgICBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVDb21tZW50KHtcclxuICAgICAgICBpZDogY29tbWVudC5pZCxcclxuICAgICAgICBhbm5leGU6IHVybCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZWFzdXJlbWVudCA9IHtcclxuICAgICAgY29tbWVudCxcclxuICAgICAgcG9pLFxyXG4gICAgfSBhcyBNZWFzdXJlbWVudDtcclxuXHJcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgJiYgISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xyXG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcclxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ21lYXN1cmVtZW50JyxcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IG1lYXN1cmVtZW50LFxyXG4gICAgICAgICAgICAvL3pvbmVJZDogc3BhY2VJRCxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuem9uZUlERmlsdGVyLFxyXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcclxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgICdBV1NLaW5lc2lzJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZWFzdXJlbWVudDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG1lYXN1cmVtZW50LmNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcclxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xyXG4gICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnRbXT4ge1xyXG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcclxuICAgIGNvbW1lbnRzID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgc3BhY2VJRCxcclxuICAgICAgY29tbWVudHNcclxuICAgICk7XHJcbiAgICBsZXQgbWVhc3VyZW1lbnRzID0gW107XHJcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICBjb21tZW50cy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoY29tbWVudC5pZCk7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMucHVzaChtZWFzdXJlbWVudCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQWUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBRy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVN0QsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFFRSwyQkFBZ0MsRUFDeEIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLFdBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxpQkFBb0M7UUFOcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBM0M5QyxTQUFJLEdBQUcsZUFBZSxDQUFDO1FBRXZCLHdCQUFtQixHQUdmLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFNUIscUJBQWdCLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckQsd0JBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFuQixz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QUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsOEJBQThCLENBQ2xDLE9BQWU7UUFFZixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyx1Q0FBdUMsQ0FDekUsT0FBTyxFQUNQLFFBQVEsQ0FDVCxDQUFDO1FBQ0YsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixNQUFNLFdBQVcsR0FDZixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztnSEFqUFUsa0JBQWtCLGtCQW9DbkIsbUNBQW1DO29IQXBDbEMsa0JBQWtCLGNBRmpCLE1BQU07NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZWFzdXJlbWVudCwgUG9pVHlwZSwgQ29tbWVudCwgUE9JLCBab25lIH0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlbGV0ZUZyb21TMywgdXBsb2FkRmlsZVRvUzMgfSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuL2NvbW1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSAnLi9wb2kuc2VydmljZSc7XHJcbmltcG9ydCB7Wm9uZUNoYW5nZVNlcnZpY2V9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlbWVudFNlcnZpY2Uge1xyXG4gIHBhdGggPSAnbWVhc3VyZW1lbnRzLyc7XHJcblxyXG4gIGN1cnJlbnRNZWFzdXJlbWVudHM6IHtcclxuICAgIHNwYWNlOiBNZWFzdXJlbWVudFtdO1xyXG4gICAgem9uZTogTWVhc3VyZW1lbnRbXTtcclxuICB9ID0geyBzcGFjZTogW10sIHpvbmU6IFtdIH07XHJcblxyXG4gIG1lYXN1cmVtZW50c1RhZ3M6IFN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG1lYXN1cmVtZW50c1VwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgc3BhY2U6IE1lYXN1cmVtZW50W107XHJcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gIGRhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgbWVhc3VyZW1lbnRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgZmFsc2UgbWVhbnMgbm8gZmlsdGVyaW5nLCBldmVyeXRoaW5nIGlzIGFsbG93ZWRcclxuXHJcbiAgdXBkYXRlRG9uZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xyXG5cclxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgc2VsZWN0ZWRGbG9vcjogWm9uZSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXHJcbiAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xyXG5cclxuICAgIGNvbnN0IGlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgIGlmICghaXNNdXNldW1Vc2VyKSB7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIpIHtcclxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCBtZWFzdXJlbWVudHMgZnJvbSB6b25lXCIpO1xyXG4gICAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlRmlsdGVyID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmN1cnJlbnREYXRlRmlsdGVyO1xyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuaW5pdE1lYXN1cmVtZW50cygpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKT0+e1xyXG4gICAgICBpZiAoZmxvb3Ipe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYXN5bmMgaW5pdE1lYXN1cmVtZW50cygpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgbGV0IG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICAgKTtcclxuICAgICAgaWYgKG1lYXN1cmVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckRhdGVSYW5nZShcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcblxyXG4gICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgY29uc3QgY29tbWVudHNab25lID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+XHJcbiAgICAgICAgICAgIGNvbW1lbnRzWm9uZS5pbmNsdWRlcyhtZWFzdXJlLmNvbW1lbnQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobWVhc3VyZW1lbnRzLm1hcCgobSkgPT4gbS5jb21tZW50KSk7XHJcblxyXG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBuZXcgRGF0ZShhLmNvbW1lbnQuY3JlYXRlZEF0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuem9uZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZENvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoXHJcbiAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuaWRcclxuICAgICk7XHJcbiAgICBpZiAoZGVsZXRlZENvbW1lbnQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShtZWFzdXJlbWVudC5wb2kuaWQpO1xyXG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xyXG4gICAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5wYXRoICsgcHJlZml4fW1lc3VyZS5qcGVnYDtcclxuICAgICAgYXdhaXQgZGVsZXRlRnJvbVMzKHBhdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlTWVhc3VyZW1lbnRGb3JTcGFjZShcclxuICAgIGNvbW1lbnRJbnB1dDogQ29tbWVudCxcclxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmcgfSxcclxuICAgIHNjcmVlbnNob3Q6IGFueSxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnQ+IHtcclxuICAgIGNvbnN0IGxhc3RNZWFzdXJlID0gZGF0YU1lYXN1cmVtZW50cy5tZWFzdXJlO1xyXG4gICAgY29uc3Qgc3dlZXBJRCA9IGRhdGFNZWFzdXJlbWVudHMuc3dlZXA7XHJcbiAgICBjb25zdCBsYXN0UG9pbnQgPSBsYXN0TWVhc3VyZVtsYXN0TWVhc3VyZS5sZW5ndGggLSAxXTtcclxuICAgIGxldCBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVDb21tZW50KGNvbW1lbnRJbnB1dCk7XHJcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgY29vcmRpbmF0ZTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHg6IGxhc3RQb2ludC54LFxyXG4gICAgICAgIHk6IGxhc3RQb2ludC55LFxyXG4gICAgICAgIHo6IGxhc3RQb2ludC56LFxyXG4gICAgICB9KSxcclxuICAgICAgdHlwZTogUG9pVHlwZS5NRUFTVVJFLFxyXG4gICAgICBlbGVtZW50SUQ6IGNvbW1lbnQuaWQsXHJcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBzd2VlcElELFxyXG4gICAgfSBhcyBQT0k7XHJcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICBjb25zdCBzY3JlZW4gPSBhd2FpdCBmZXRjaChzY3JlZW5zaG90KTtcclxuICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBzY3JlZW4uYmxvYigpO1xyXG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgJ21lc3VyZS5qcGVnJywgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSk7XHJcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyh0aGlzLnBhdGgsIGZpbGUsIGNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHVybCkge1xyXG4gICAgICBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVDb21tZW50KHtcclxuICAgICAgICBpZDogY29tbWVudC5pZCxcclxuICAgICAgICBhbm5leGU6IHVybCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZWFzdXJlbWVudCA9IHtcclxuICAgICAgY29tbWVudCxcclxuICAgICAgcG9pLFxyXG4gICAgfSBhcyBNZWFzdXJlbWVudDtcclxuXHJcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgJiYgISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xyXG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcclxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ21lYXN1cmVtZW50JyxcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IG1lYXN1cmVtZW50LFxyXG4gICAgICAgICAgICAvL3pvbmVJZDogc3BhY2VJRCxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuem9uZUlERmlsdGVyLFxyXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcclxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgICdBV1NLaW5lc2lzJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZWFzdXJlbWVudDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG1lYXN1cmVtZW50LmNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcclxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xyXG4gICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnRbXT4ge1xyXG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcclxuICAgIGNvbW1lbnRzID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgc3BhY2VJRCxcclxuICAgICAgY29tbWVudHNcclxuICAgICk7XHJcbiAgICBsZXQgbWVhc3VyZW1lbnRzID0gW107XHJcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICBjb21tZW50cy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoY29tbWVudC5pZCk7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMucHVzaChtZWFzdXJlbWVudCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -192,9 +192,9 @@ export class MissionService {
|
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
MissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
196
|
-
MissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
197
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
195
|
+
MissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MissionService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
196
|
+
MissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MissionService, providedIn: "root" });
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MissionService, decorators: [{
|
|
198
198
|
type: Injectable,
|
|
199
199
|
args: [{
|
|
200
200
|
providedIn: "root",
|
|
@@ -203,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
203
203
|
type: Inject,
|
|
204
204
|
args: ['currentAPIService']
|
|
205
205
|
}] }]; } });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFXdkI7SUFDSSxrREFBa0Q7SUFDckIsV0FBZ0I7UUFaakQsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQWM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQWM7UUFDdEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdDQUFnQyxDQUNsQyxZQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLDZCQUE2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QUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQ0FBc0MsQ0FBQyxRQUF1QixFQUFFLFFBQW1CO1FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNuRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO2dCQUN4QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQ0QsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEYsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlFLE9BQU8sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsyR0E1UFEsY0FBYyxrQkFhWCxtQkFBbUI7K0dBYnRCLGNBQWMsY0FGWCxNQUFNOzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFjUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGRhdGVIYXNFeHBpcmVkIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uLCBPcmdhbmlzYXRpb24sIFByb2ZpbGUsIFByb2ZpbGVTdGF0dXMsIFJvbGVTdGF0dXMsIFZpc2l0VGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNaXNzaW9uU2VydmljZSB7XHJcbiAgICBjdXJyZW50TWlzc2lvbnNVcGRhdGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBsYXN0RXhwaXJlZE1pc3Npb246IE1pc3Npb247XHJcblxyXG4gICAgbmV4dE1pc3Npb25Ub1N0YXJ0OiBNaXNzaW9uO1xyXG5cclxuICAgIGN1cnJlbnRVc2VySUQ6IHN0cmluZztcclxuXHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAvLyBwcml2YXRlIGFmZmVjdGF0aW9uU2VydmljZTogQWZmZWN0YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0Zyb21Vc2VySUQodXNlcklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVVzZXIodXNlcklEKS50aGVuKChtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbnMuaXRlbXMuZmlsdGVyKChtaXMpID0+ICFtaXMuZGVsZXRlZEF0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbihcclxuICAgICAgICBvcmRlcmVkT3JnSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbihvcmRlcmVkT3JnSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5T3JnYW5pc2F0aW9uKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZShtaXNzaW9uOiBNaXNzaW9uKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgY29uc3QgdXBkTWlzc2lvbiA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVNaXNzaW9uKG1pc3Npb24pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWlzc2lvbiBjcmVhdGVkXCIsIHVwZE1pc3Npb24pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQodXBkTWlzc2lvbik7XHJcbiAgICAgICAgcmV0dXJuIHVwZE1pc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlKG1pc3Npb246IGFueSk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlTWlzc2lvbihtaXNzaW9uKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1pc3Npb24gdXBkYXRlZFwiLCB1cGRNaXNzaW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xyXG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFzc2VydFJvbGVGb3JVc2VySW5PcmcoXHJcbiAgICAgICAgdXNlcjogUHJvZmlsZSxcclxuICAgICAgICBvcmc6IE9yZ2FuaXNhdGlvbixcclxuICAgICAgICByb2xlOiBSb2xlU3RhdHVzLFxyXG4gICAgKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXIuaWQpLnRoZW4oKG1pc3Npb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWlzT3JnID0gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlzLm9yZ2FuaXNhdGlvbklEID09PSBvcmcuaWQgJiYgbWlzLnJvbGUgPT09IHJvbGU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNPcmcubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb25CeVNwYWNlKFxyXG4gICAgICAgIG9yZE9yZ0lEOiBzdHJpbmcsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShvcmRPcmdJRCwge1xyXG4gICAgICAgICAgICBlcTogc3BhY2VJRCxcclxuICAgICAgICB9KS50aGVuKChtaXMpID0+IG1pcy5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc29mdERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICAvLyBjb25zdCBoYXJkRGVsZXRlID0gYXdhaXQgdGhpcy5jYW5IYXJkRGV0ZWxlTWlzc2lvbihtaXNzaW9uLmlkKTtcclxuICAgICAgICAvLyBpZiAoaGFyZERlbGV0ZSkge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5oYXJkRGVsZXRlTWlzc2lvbihtaXNzaW9uLmlkKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTb2Z0IERlbGV0aW5nIG1pc3Npb25cIik7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvblVwZCA9IGF3YWl0IHRoaXMudXBkYXRlKHtcclxuICAgICAgICAgICAgaWQ6IG1pc3Npb25JRCxcclxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQobWlzc2lvblVwZCk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25VcGQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIGNvbnN0IG1pcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0TWlzc2lvbnMoKTtcclxuICAgICAgICByZXR1cm4gbWlzLml0ZW1zLmZpbHRlcigobSkgPT4gIW0uZGVsZXRlZEF0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhc3luYyBjYW5IYXJkRGV0ZWxlTWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gICAgIGNvbnN0IGV2ZW50cyA9IChcclxuICAgIC8vICAgICAgICAgYXdhaXQgdGhpcy5BUEkuTGlzdEV2ZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXHJcbiAgICAvLyAgICAgKS5pdGVtcztcclxuICAgIC8vICAgICBpZiAoZXZlbnRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zdCBjb21tZW50cyA9IChcclxuICAgIC8vICAgICAgICAgYXdhaXQgdGhpcy5BUEkuTGlzdENvbW1lbnRzKHsgb3duZXJJRDogeyBlcTogbWlzc2lvbklEIH0gfSlcclxuICAgIC8vICAgICApLml0ZW1zO1xyXG4gICAgLy8gICAgIGlmIChjb21tZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc3QgYWZmZWN0YXRpb25zID1cclxuICAgIC8vICAgICAgICAgYXdhaXQgdGhpcy5hZmZlY3RhdGlvblNlcnZpY2UuZ2V0QWZmZWN0YXRpb25zRnJvbU1pc3Npb25JRChcclxuICAgIC8vICAgICAgICAgICAgIG1pc3Npb25JRCxcclxuICAgIC8vICAgICAgICAgKTtcclxuICAgIC8vICAgICBpZiAoYWZmZWN0YXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBhc3luYyBoYXJkRGVsZXRlTWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlTWlzc2lvbih7IGlkOiBtaXNzaW9uSUQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWN0aXZhdGVkTWlzc2lvbnMobWlzc2lvbnM6IE1pc3Npb25bXSk6IE1pc3Npb25bXSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkID0gW107XHJcbiAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZhdGVkID1cclxuICAgICAgICAgICAgICAgIG1pc3Npb24uZ3JvdXBzICYmIG1pc3Npb24uZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKTtcclxuICAgICAgICAgICAgaWYgKGlzQWN0aXZhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmF0ZWQucHVzaChtaXNzaW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZSh6b25lSUQpKS5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+ICFtaXMuZGVsZXRlZEF0LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oKG1pc3Npb25zKSA9PiBtaXNzaW9ucy5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYWN0aXZhdGVNaXNzaW9uKG1pczogTWlzc2lvbikge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgbWlzICYmXHJcbiAgICAgICAgICAgICghbWlzLmdyb3VwcyB8fCAhbWlzLmdyb3Vwcy5pbmNsdWRlcyhQcm9maWxlU3RhdHVzLkFDVElWRSkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwcyA9IG1pcy5ncm91cHMgPyBtaXMuZ3JvdXBzIDogW107XHJcbiAgICAgICAgICAgIGdyb3Vwcy5wdXNoKFByb2ZpbGVTdGF0dXMuQUNUSVZFKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGUoeyBpZDogbWlzLmlkLCBncm91cHMgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlUZW1wbGF0ZSh0ZW1wbGF0ZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlUZW1wbGF0ZSh0ZW1wbGF0ZUlEKSkuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldE1pc3Npb24obWlzc2lvbklEKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5Wm9uZUJ5Um9sZShcclxuICAgICAgICB6b25lSUQ6IHN0cmluZyxcclxuICAgICAgICByb2xlOiBSb2xlU3RhdHVzLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVpvbmVCeVJvbGUoXHJcbiAgICAgICAgICAgICAgICB6b25lSUQsXHJcbiAgICAgICAgICAgICAgICB7IGVxOiByb2xlIH0sXHJcbiAgICAgICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICAgeyBkZWxldGVkQXQ6IHsgYXR0cmlidXRlRXhpc3RzOiBmYWxzZSB9IH0sXHJcbiAgICAgICAgICAgICAgICAyMDAsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApLml0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKGNoYW5nZWRNaXNzaW9uOiBNaXNzaW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVzZXJJRCA9PT0gY2hhbmdlZE1pc3Npb24udXNlcklEKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zVXBkYXRlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbnN0YW50TWlzc2lvbnNPZkN1cnJlbnQoXHJcbiAgICAgICAgY3VycmVudFVzZXJJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uW10gfCBudWxsPiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlcklEID0gY3VycmVudFVzZXJJRDtcclxuICAgICAgICBsZXQgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRChjdXJyZW50VXNlcklEKTtcclxuXHJcbiAgICAgICAgLyoqIEZpbHRlciB0byBrZWVwIG9ubHkgYXZhaWxhYmxlIG1pc3Npb25zICovXHJcbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaGFzRXhwaXJlZCA9IGRhdGVIYXNFeHBpcmVkKG1pc3Npb24uZW5kRGF0ZVRpbWUpO1xyXG5cclxuICAgICAgICAgICAgLyoqIFVwZGF0ZSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiAqL1xyXG4gICAgICAgICAgICBpZiAoaGFzRXhwaXJlZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdEV4cGlyZWREYXRlID0gdGhpcy5sYXN0RXhwaXJlZE1pc3Npb25cclxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uLmVuZERhdGVUaW1lKVxyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVFeHBpcmVkID0gbmV3IERhdGUobWlzc2lvbi5lbmREYXRlVGltZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxhc3RFeHBpcmVkRGF0ZSB8fCBkYXRlRXhwaXJlZCA+IGxhc3RFeHBpcmVkRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uID0gbWlzc2lvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gIWhhc0V4cGlyZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChtaXNzaW9ucy5zb21lKChtaXMpID0+IG1pcy5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNKSAmJiBtaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHdvcmtmbG93IGZvciBWSVNJVE9SX01VU0VVTVxyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKiBLZWVwIG9ubHkgc3RhcnRlZCBtaXNzaW9ucyAqL1xyXG4gICAgICAgIGxldCBuZXh0TWlzc2lvbkRhdGUgPSBudWxsO1xyXG4gICAgICAgIG1pc3Npb25zID0gbWlzc2lvbnMuZmlsdGVyKChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ZWQgPSBtaXNzaW9uLnN0YXJ0RGF0ZVRpbWVcclxuICAgICAgICAgICAgICAgID8gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5zdGFydERhdGVUaW1lKVxyXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xyXG4gICAgICAgICAgICAvKiogVXBkYXRlIG5leHQgbWlzc2lvbiB0byBzdGFydCAqL1xyXG4gICAgICAgICAgICBpZiAoIXN0YXJ0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc3Npb25EYXRlID0gbmV3IERhdGUobWlzc2lvbi5zdGFydERhdGVUaW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICghbmV4dE1pc3Npb25EYXRlIHx8IG1pc3Npb25EYXRlIDwgbmV4dE1pc3Npb25EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0TWlzc2lvblRvU3RhcnQgPSBtaXNzaW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHRNaXNzaW9uRGF0ZSA9IG1pc3Npb25EYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzdGFydGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5sZW5ndGggPiAwID8gbWlzc2lvbnMgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsdGVycyB0aGUgbWlzc2lvbnMgdGhhdCBhc3Npc3RlZCB0byBsaXZlIG9mIHRoZSB2aXNpdCAoYnkgY29tcGFyaW5nIHRoZSByZWFsU3RhcnRUaW1lIG9mIFZpc2l0VGVtcGxhdGUgYW5kIGNvbm5lY3RlZEF0IHRpbWUpXHJcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgVmlzaXRUZW1wbGF0ZSBcclxuICAgICAqIEBwYXJhbSBtaXNzaW9ucyBNaXNzaW9uW10gbWlzc2lvbnMgZm9yIHRoaXMgdmlzaXRcclxuICAgICAqIEByZXR1cm5zIE1pc3Npb25bXSBmaWx0ZXJlZCBtaXNzaW9uc1xyXG4gICAgICovXHJcbiAgICBmaWx0ZXJNaXNzaW9uc0Fzc2l0ZWRUb0xpdmVGb3JUZW1wbGF0ZSh0ZW1wbGF0ZTogVmlzaXRUZW1wbGF0ZSwgbWlzc2lvbnM6IE1pc3Npb25bXSk6IE1pc3Npb25bXSB7XHJcbiAgICAgICAgY29uc3QgdmlzaXRTdGFydFRpbWVzdGFtcCA9IHRlbXBsYXRlLnJlYWxTdGFydGVkQXQ7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghbWlzLmNvbm5lY3RlZFRvTGl2ZUF0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG1pcy5jb25uZWN0ZWRUb0xpdmVBdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBsYXN0Q29ubmVjdGVkQXQgPSBtaXMuY29ubmVjdGVkVG9MaXZlQXRbbWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0Q29ubmVjdGVkQXRUaW1lc3RhbXAgPSBEYXRlVGltZS5mcm9tSVNPKGxhc3RDb25uZWN0ZWRBdCkudG9NaWxsaXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGxhc3RDb25uZWN0ZWRBdFRpbWVzdGFtcCA+IHZpc2l0U3RhcnRUaW1lc3RhbXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFXdkI7SUFDSSxrREFBa0Q7SUFDckIsV0FBZ0I7UUFaakQsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQWM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQWM7UUFDdEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDL0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdDQUFnQyxDQUNsQyxZQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLDZCQUE2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QUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQ0FBc0MsQ0FBQyxRQUF1QixFQUFFLFFBQW1CO1FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNuRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO2dCQUN4QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQ0QsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEYsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlFLE9BQU8sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs0R0E1UFEsY0FBYyxrQkFhWCxtQkFBbUI7Z0hBYnRCLGNBQWMsY0FGWCxNQUFNOzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFjUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGRhdGVIYXNFeHBpcmVkIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uLCBPcmdhbmlzYXRpb24sIFByb2ZpbGUsIFByb2ZpbGVTdGF0dXMsIFJvbGVTdGF0dXMsIFZpc2l0VGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNaXNzaW9uU2VydmljZSB7XHJcbiAgICBjdXJyZW50TWlzc2lvbnNVcGRhdGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBsYXN0RXhwaXJlZE1pc3Npb246IE1pc3Npb247XHJcblxyXG4gICAgbmV4dE1pc3Npb25Ub1N0YXJ0OiBNaXNzaW9uO1xyXG5cclxuICAgIGN1cnJlbnRVc2VySUQ6IHN0cmluZztcclxuXHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAvLyBwcml2YXRlIGFmZmVjdGF0aW9uU2VydmljZTogQWZmZWN0YXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0Zyb21Vc2VySUQodXNlcklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVVzZXIodXNlcklEKS50aGVuKChtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbnMuaXRlbXMuZmlsdGVyKChtaXMpID0+ICFtaXMuZGVsZXRlZEF0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbihcclxuICAgICAgICBvcmRlcmVkT3JnSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbihvcmRlcmVkT3JnSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5T3JnYW5pc2F0aW9uKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZShtaXNzaW9uOiBNaXNzaW9uKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgY29uc3QgdXBkTWlzc2lvbiA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVNaXNzaW9uKG1pc3Npb24pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWlzc2lvbiBjcmVhdGVkXCIsIHVwZE1pc3Npb24pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQodXBkTWlzc2lvbik7XHJcbiAgICAgICAgcmV0dXJuIHVwZE1pc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlKG1pc3Npb246IGFueSk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlTWlzc2lvbihtaXNzaW9uKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1pc3Npb24gdXBkYXRlZFwiLCB1cGRNaXNzaW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xyXG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFzc2VydFJvbGVGb3JVc2VySW5PcmcoXHJcbiAgICAgICAgdXNlcjogUHJvZmlsZSxcclxuICAgICAgICBvcmc6IE9yZ2FuaXNhdGlvbixcclxuICAgICAgICByb2xlOiBSb2xlU3RhdHVzLFxyXG4gICAgKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXIuaWQpLnRoZW4oKG1pc3Npb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWlzT3JnID0gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlzLm9yZ2FuaXNhdGlvbklEID09PSBvcmcuaWQgJiYgbWlzLnJvbGUgPT09IHJvbGU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNPcmcubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb25CeVNwYWNlKFxyXG4gICAgICAgIG9yZE9yZ0lEOiBzdHJpbmcsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShvcmRPcmdJRCwge1xyXG4gICAgICAgICAgICBlcTogc3BhY2VJRCxcclxuICAgICAgICB9KS50aGVuKChtaXMpID0+IG1pcy5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc29mdERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICAvLyBjb25zdCBoYXJkRGVsZXRlID0gYXdhaXQgdGhpcy5jYW5IYXJkRGV0ZWxlTWlzc2lvbihtaXNzaW9uLmlkKTtcclxuICAgICAgICAvLyBpZiAoaGFyZERlbGV0ZSkge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5oYXJkRGVsZXRlTWlzc2lvbihtaXNzaW9uLmlkKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTb2Z0IERlbGV0aW5nIG1pc3Npb25cIik7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvblVwZCA9IGF3YWl0IHRoaXMudXBkYXRlKHtcclxuICAgICAgICAgICAgaWQ6IG1pc3Npb25JRCxcclxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQobWlzc2lvblVwZCk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25VcGQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIGNvbnN0IG1pcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0TWlzc2lvbnMoKTtcclxuICAgICAgICByZXR1cm4gbWlzLml0ZW1zLmZpbHRlcigobSkgPT4gIW0uZGVsZXRlZEF0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhc3luYyBjYW5IYXJkRGV0ZWxlTWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gICAgIGNvbnN0IGV2ZW50cyA9IChcclxuICAgIC8vICAgICAgICAgYXdhaXQgdGhpcy5BUEkuTGlzdEV2ZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXHJcbiAgICAvLyAgICAgKS5pdGVtcztcclxuICAgIC8vICAgICBpZiAoZXZlbnRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zdCBjb21tZW50cyA9IChcclxuICAgIC8vICAgICAgICAgYXdhaXQgdGhpcy5BUEkuTGlzdENvbW1lbnRzKHsgb3duZXJJRDogeyBlcTogbWlzc2lvbklEIH0gfSlcclxuICAgIC8vICAgICApLml0ZW1zO1xyXG4gICAgLy8gICAgIGlmIChjb21tZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc3QgYWZmZWN0YXRpb25zID1cclxuICAgIC8vICAgICAgICAgYXdhaXQgdGhpcy5hZmZlY3RhdGlvblNlcnZpY2UuZ2V0QWZmZWN0YXRpb25zRnJvbU1pc3Npb25JRChcclxuICAgIC8vICAgICAgICAgICAgIG1pc3Npb25JRCxcclxuICAgIC8vICAgICAgICAgKTtcclxuICAgIC8vICAgICBpZiAoYWZmZWN0YXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBhc3luYyBoYXJkRGVsZXRlTWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlTWlzc2lvbih7IGlkOiBtaXNzaW9uSUQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWN0aXZhdGVkTWlzc2lvbnMobWlzc2lvbnM6IE1pc3Npb25bXSk6IE1pc3Npb25bXSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkID0gW107XHJcbiAgICAgICAgbWlzc2lvbnMubWFwKGFzeW5jIChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZhdGVkID1cclxuICAgICAgICAgICAgICAgIG1pc3Npb24uZ3JvdXBzICYmIG1pc3Npb24uZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKTtcclxuICAgICAgICAgICAgaWYgKGlzQWN0aXZhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBhY3RpdmF0ZWQucHVzaChtaXNzaW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZSh6b25lSUQpKS5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+ICFtaXMuZGVsZXRlZEF0LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oKG1pc3Npb25zKSA9PiBtaXNzaW9ucy5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYWN0aXZhdGVNaXNzaW9uKG1pczogTWlzc2lvbikge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgbWlzICYmXHJcbiAgICAgICAgICAgICghbWlzLmdyb3VwcyB8fCAhbWlzLmdyb3Vwcy5pbmNsdWRlcyhQcm9maWxlU3RhdHVzLkFDVElWRSkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwcyA9IG1pcy5ncm91cHMgPyBtaXMuZ3JvdXBzIDogW107XHJcbiAgICAgICAgICAgIGdyb3Vwcy5wdXNoKFByb2ZpbGVTdGF0dXMuQUNUSVZFKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGUoeyBpZDogbWlzLmlkLCBncm91cHMgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlUZW1wbGF0ZSh0ZW1wbGF0ZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlUZW1wbGF0ZSh0ZW1wbGF0ZUlEKSkuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldE1pc3Npb24obWlzc2lvbklEKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5Wm9uZUJ5Um9sZShcclxuICAgICAgICB6b25lSUQ6IHN0cmluZyxcclxuICAgICAgICByb2xlOiBSb2xlU3RhdHVzLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVpvbmVCeVJvbGUoXHJcbiAgICAgICAgICAgICAgICB6b25lSUQsXHJcbiAgICAgICAgICAgICAgICB7IGVxOiByb2xlIH0sXHJcbiAgICAgICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICAgeyBkZWxldGVkQXQ6IHsgYXR0cmlidXRlRXhpc3RzOiBmYWxzZSB9IH0sXHJcbiAgICAgICAgICAgICAgICAyMDAsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApLml0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKGNoYW5nZWRNaXNzaW9uOiBNaXNzaW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVzZXJJRCA9PT0gY2hhbmdlZE1pc3Npb24udXNlcklEKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zVXBkYXRlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbnN0YW50TWlzc2lvbnNPZkN1cnJlbnQoXHJcbiAgICAgICAgY3VycmVudFVzZXJJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uW10gfCBudWxsPiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlcklEID0gY3VycmVudFVzZXJJRDtcclxuICAgICAgICBsZXQgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRChjdXJyZW50VXNlcklEKTtcclxuXHJcbiAgICAgICAgLyoqIEZpbHRlciB0byBrZWVwIG9ubHkgYXZhaWxhYmxlIG1pc3Npb25zICovXHJcbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaGFzRXhwaXJlZCA9IGRhdGVIYXNFeHBpcmVkKG1pc3Npb24uZW5kRGF0ZVRpbWUpO1xyXG5cclxuICAgICAgICAgICAgLyoqIFVwZGF0ZSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiAqL1xyXG4gICAgICAgICAgICBpZiAoaGFzRXhwaXJlZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdEV4cGlyZWREYXRlID0gdGhpcy5sYXN0RXhwaXJlZE1pc3Npb25cclxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uLmVuZERhdGVUaW1lKVxyXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVFeHBpcmVkID0gbmV3IERhdGUobWlzc2lvbi5lbmREYXRlVGltZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxhc3RFeHBpcmVkRGF0ZSB8fCBkYXRlRXhwaXJlZCA+IGxhc3RFeHBpcmVkRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uID0gbWlzc2lvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gIWhhc0V4cGlyZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChtaXNzaW9ucy5zb21lKChtaXMpID0+IG1pcy5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNKSAmJiBtaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHdvcmtmbG93IGZvciBWSVNJVE9SX01VU0VVTVxyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKiBLZWVwIG9ubHkgc3RhcnRlZCBtaXNzaW9ucyAqL1xyXG4gICAgICAgIGxldCBuZXh0TWlzc2lvbkRhdGUgPSBudWxsO1xyXG4gICAgICAgIG1pc3Npb25zID0gbWlzc2lvbnMuZmlsdGVyKChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ZWQgPSBtaXNzaW9uLnN0YXJ0RGF0ZVRpbWVcclxuICAgICAgICAgICAgICAgID8gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5zdGFydERhdGVUaW1lKVxyXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xyXG4gICAgICAgICAgICAvKiogVXBkYXRlIG5leHQgbWlzc2lvbiB0byBzdGFydCAqL1xyXG4gICAgICAgICAgICBpZiAoIXN0YXJ0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc3Npb25EYXRlID0gbmV3IERhdGUobWlzc2lvbi5zdGFydERhdGVUaW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICghbmV4dE1pc3Npb25EYXRlIHx8IG1pc3Npb25EYXRlIDwgbmV4dE1pc3Npb25EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0TWlzc2lvblRvU3RhcnQgPSBtaXNzaW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHRNaXNzaW9uRGF0ZSA9IG1pc3Npb25EYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzdGFydGVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5sZW5ndGggPiAwID8gbWlzc2lvbnMgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsdGVycyB0aGUgbWlzc2lvbnMgdGhhdCBhc3Npc3RlZCB0byBsaXZlIG9mIHRoZSB2aXNpdCAoYnkgY29tcGFyaW5nIHRoZSByZWFsU3RhcnRUaW1lIG9mIFZpc2l0VGVtcGxhdGUgYW5kIGNvbm5lY3RlZEF0IHRpbWUpXHJcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgVmlzaXRUZW1wbGF0ZSBcclxuICAgICAqIEBwYXJhbSBtaXNzaW9ucyBNaXNzaW9uW10gbWlzc2lvbnMgZm9yIHRoaXMgdmlzaXRcclxuICAgICAqIEByZXR1cm5zIE1pc3Npb25bXSBmaWx0ZXJlZCBtaXNzaW9uc1xyXG4gICAgICovXHJcbiAgICBmaWx0ZXJNaXNzaW9uc0Fzc2l0ZWRUb0xpdmVGb3JUZW1wbGF0ZSh0ZW1wbGF0ZTogVmlzaXRUZW1wbGF0ZSwgbWlzc2lvbnM6IE1pc3Npb25bXSk6IE1pc3Npb25bXSB7XHJcbiAgICAgICAgY29uc3QgdmlzaXRTdGFydFRpbWVzdGFtcCA9IHRlbXBsYXRlLnJlYWxTdGFydGVkQXQ7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghbWlzLmNvbm5lY3RlZFRvTGl2ZUF0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG1pcy5jb25uZWN0ZWRUb0xpdmVBdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBsYXN0Q29ubmVjdGVkQXQgPSBtaXMuY29ubmVjdGVkVG9MaXZlQXRbbWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0Q29ubmVjdGVkQXRUaW1lc3RhbXAgPSBEYXRlVGltZS5mcm9tSVNPKGxhc3RDb25uZWN0ZWRBdCkudG9NaWxsaXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGxhc3RDb25uZWN0ZWRBdFRpbWVzdGFtcCA+IHZpc2l0U3RhcnRUaW1lc3RhbXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|