@smarterplan/ngx-smarterplan-core 1.4.4 → 1.4.6

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.
Files changed (79) hide show
  1. package/esm2022/lib/components/csv-export/csv-export.component.mjs +5 -6
  2. package/esm2022/lib/components/loader/loader.component.mjs +7 -8
  3. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +6 -7
  4. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +7 -8
  5. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +8 -9
  6. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +6 -7
  7. package/esm2022/lib/components/search-bar/search-bar.component.mjs +6 -7
  8. package/esm2022/lib/components/support-modal/support-modal.component.mjs +6 -7
  9. package/esm2022/lib/helpers.service.mjs +1 -1
  10. package/esm2022/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +1 -1
  11. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  12. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +1 -1
  18. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +1 -1
  19. package/esm2022/lib/mattertagData.mjs +1 -1
  20. package/esm2022/lib/ngx-smarterplan-core.module.mjs +6 -7
  21. package/esm2022/lib/ngx-smarterplan-core.service.mjs +6 -7
  22. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +6 -7
  23. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +6 -7
  24. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +6 -7
  25. package/esm2022/lib/pipes/safe-url.pipe.mjs +6 -7
  26. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +9 -10
  27. package/esm2022/lib/pipes/username-from-id.pipe.mjs +6 -7
  28. package/esm2022/lib/services/amplify-cache.service.mjs +7 -8
  29. package/esm2022/lib/services/base-tab.service.mjs +6 -7
  30. package/esm2022/lib/services/baseVisibility.service.mjs +6 -7
  31. package/esm2022/lib/services/content.service.mjs +6 -7
  32. package/esm2022/lib/services/filter.service.mjs +6 -7
  33. package/esm2022/lib/services/intervention.service.mjs +6 -7
  34. package/esm2022/lib/services/locale.service.mjs +9 -10
  35. package/esm2022/lib/services/matterport-import.service.mjs +6 -7
  36. package/esm2022/lib/services/matterport.service.mjs +7 -8
  37. package/esm2022/lib/services/models/affectation.service.mjs +7 -8
  38. package/esm2022/lib/services/models/base-object.service.mjs +6 -7
  39. package/esm2022/lib/services/models/capture.service.mjs +7 -8
  40. package/esm2022/lib/services/models/comment.service.mjs +7 -8
  41. package/esm2022/lib/services/models/domain.service.mjs +7 -8
  42. package/esm2022/lib/services/models/equipment.service.mjs +7 -8
  43. package/esm2022/lib/services/models/event.service.mjs +7 -8
  44. package/esm2022/lib/services/models/feature.service.mjs +7 -8
  45. package/esm2022/lib/services/models/hashtag.service.mjs +7 -8
  46. package/esm2022/lib/services/models/layer.service.mjs +7 -8
  47. package/esm2022/lib/services/models/measurement.service.mjs +7 -8
  48. package/esm2022/lib/services/models/mission.service.mjs +7 -8
  49. package/esm2022/lib/services/models/navigation.service.mjs +7 -8
  50. package/esm2022/lib/services/models/node.service.mjs +7 -8
  51. package/esm2022/lib/services/models/object3D.service.mjs +7 -8
  52. package/esm2022/lib/services/models/operation.service.mjs +7 -8
  53. package/esm2022/lib/services/models/organisation.service.mjs +7 -8
  54. package/esm2022/lib/services/models/plan.service.mjs +8 -10
  55. package/esm2022/lib/services/models/poi.service.mjs +7 -8
  56. package/esm2022/lib/services/models/profile.service.mjs +7 -8
  57. package/esm2022/lib/services/models/property.service.mjs +7 -8
  58. package/esm2022/lib/services/models/space.service.mjs +7 -8
  59. package/esm2022/lib/services/models/template.service.mjs +7 -8
  60. package/esm2022/lib/services/models/ticket.service.mjs +7 -8
  61. package/esm2022/lib/services/models/visit.service.mjs +6 -7
  62. package/esm2022/lib/services/models/zone.service.mjs +7 -8
  63. package/esm2022/lib/services/navigator.service.mjs +6 -7
  64. package/esm2022/lib/services/s3.service.mjs +1 -1
  65. package/esm2022/lib/services/search.service.mjs +6 -7
  66. package/esm2022/lib/services/support.service.mjs +6 -7
  67. package/esm2022/lib/services/tag.service.mjs +6 -7
  68. package/esm2022/lib/services/user.service.mjs +9 -10
  69. package/esm2022/lib/services/validators.service.mjs +6 -7
  70. package/esm2022/lib/services/viewer.service.mjs +6 -7
  71. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  72. package/esm2022/lib/services/zoneChange.service.mjs +6 -7
  73. package/esm2022/lib/types.service.mjs +1 -1
  74. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  75. package/esm2022/lib/validators/number.directive.mjs +1 -1
  76. package/esm2022/lib/validators/text.directive.mjs +1 -1
  77. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +277 -278
  78. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  79. package/package.json +26 -6
@@ -20,7 +20,7 @@ var FilterType;
20
20
  FilterType["SPACE"] = "SPACE";
21
21
  FilterType["HASHTAG"] = "HASHTAG";
22
22
  })(FilterType || (FilterType = {}));
23
- class FilterService {
23
+ export class FilterService {
24
24
  userService;
25
25
  zoneService;
26
26
  poiService;
@@ -595,14 +595,13 @@ class FilterService {
595
595
  }
596
596
  return finalFeatures;
597
597
  }
598
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterService, deps: [{ token: i1.BaseUserService }, { token: i2.ZoneService }, { token: i3.PoiService }], target: i0.ɵɵFactoryTarget.Injectable });
599
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterService, providedIn: "root" });
598
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterService, deps: [{ token: i1.BaseUserService }, { token: i2.ZoneService }, { token: i3.PoiService }], target: i0.ɵɵFactoryTarget.Injectable });
599
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterService, providedIn: "root" });
600
600
  }
601
- export { FilterService };
602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterService, decorators: [{
601
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterService, decorators: [{
603
602
  type: Injectable,
604
603
  args: [{
605
604
  providedIn: "root",
606
605
  }]
607
- }], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i2.ZoneService }, { type: i3.PoiService }]; } });
608
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMsaUNBQWlDO0FBQ2pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsSSxPQUFPLEVBT0gsT0FBTyxFQUNQLGFBQWEsRUFDYixVQUFVLEVBT2IsTUFBTSxrQkFBa0IsQ0FBQztBQVkxQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFSekMsSUFBSyxVQU9KO0FBUEQsV0FBSyxVQUFVO0lBQ1gsK0JBQWlCLENBQUE7SUFDakIsNkJBQWUsQ0FBQTtJQUNmLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLGlDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFQSSxVQUFVLEtBQVYsVUFBVSxRQU9kO0FBRUQsTUFHYSxhQUFhO0lBTVY7SUFDQTtJQUNBO0lBUEosZ0JBQWdCLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkQsaUJBQWlCLENBQVM7SUFFakMsWUFDWSxXQUE0QixFQUM1QixXQUF3QixFQUN4QixVQUFzQjtRQUZ0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM5QixDQUFDO0lBRUwscUJBQXFCLENBQUMsZUFBeUIsRUFBRSxN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LE1BQU0sT0FBTyxJQUFJLGFBQWEsRUFBRTtZQUNqQyxJQUNJLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUNqQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNoQztnQkFDRSxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO3dHQTN5QlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7U0FFVCxhQUFhOzRGQUFiLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZ2V0TGV2ZWxzQmVsb3csIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zLCBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zLCBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQgfSBmcm9tIFwiLi4vaGVscGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBab25lLFxyXG4gICAgRXF1aXBtZW50LFxyXG4gICAgTGV2ZWxTdGF0dXMsXHJcbiAgICBNZWFzdXJlbWVudCxcclxuICAgIE1pc3Npb24sXHJcbiAgICBPcmdhbmlzYXRpb24sXHJcbiAgICBQb2lUeXBlLFxyXG4gICAgUHJvZmlsZUVudGl0eSxcclxuICAgIFJvbGVTdGF0dXMsXHJcbiAgICBTcGFjZSxcclxuICAgIFRpY2tldCxcclxuICAgIERiT2JqZWN0VHlwZSxcclxuICAgIEZlYXR1cmUsXHJcbiAgICBDb21tZW50LFxyXG4gICAgVmlzaXRUZW1wbGF0ZSwgT2JqZWN0M0RcclxufSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3BvaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3pvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi91c2VyLnNlcnZpY2VcIjtcclxuZW51bSBGaWx0ZXJUeXBlIHtcclxuICAgIERPTUFJTiA9IFwiRE9NQUlOXCIsXHJcbiAgICBMRVZFTCA9IFwiTEVWRUxcIixcclxuICAgIFJPTEUgPSBcIlJPTEVcIixcclxuICAgIFpPTkUgPSBcIlpPTkVcIixcclxuICAgIFNQQUNFID0gXCJTUEFDRVwiLFxyXG4gICAgSEFTSFRBRyA9IFwiSEFTSFRBR1wiLFxyXG59XHJcbmltcG9ydCBsZXZlbnNodGVpbiBmcm9tICdqcy1sZXZlbnNodGVpbic7XHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHVwZGF0ZURhdGVGaWx0ZXI6IFN1YmplY3Q8RGF0ZVtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgcHVibGljIGN1cnJlbnREYXRlRmlsdGVyOiBEYXRlW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcG9pU2VydmljZTogUG9pU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgZmlsdGVyVGlja2V0c0J5RG9tYWluKHRpY2tldHNUb0ZpbHRlcjogVGlja2V0W10sIGRvbWFpbjogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRpY2tldHNUb0ZpbHRlci5maWx0ZXIoKHRpYykgPT4gdGljLmRvbWFpbklEID09PSBkb21haW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlck9iamVjdHNCeUxldmVsKG9iamVjdHNUb0ZpbHRlcjogYW55W10sIGxldmVsOiBMZXZlbFN0YXR1cyk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCB2aXNpYmxlTGV2ZWxzID0gZ2V0TGV2ZWxzQmVsb3cobGV2ZWwpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gb2JqZWN0c1RvRmlsdGVyLmZpbHRlcigodGljKSA9PlxyXG4gICAgICAgICAgICB2aXNpYmxlTGV2ZWxzLmluY2x1ZGVzKHRpYy5sZXZlbCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyVGlja2V0c0Zvck1pc3Npb24oXHJcbiAgICAgICAgdGlja2V0c1RvRmlsdGVyOiBUaWNrZXRbXSxcclxuICAgICAgICBtaXNzaW9uOiBNaXNzaW9uLFxyXG4gICAgKTogVGlja2V0W10ge1xyXG4gICAgICAgIGNvbnN0IG1hbmFnZXJSb2xlczogUm9sZVN0YXR1c1tdID0gW1xyXG4gICAgICAgICAgICBSb2xlU3RhdHVzLk1BTkFHRVIsXHJcbiAgICAgICAgICAgIFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgICAgIFJvbGVTdGF0dXMuT1dORVIsXHJcbiAgICAgICAgXTtcclxuICAgICAgICBpZiAoIW1hbmFnZXJSb2xlcy5pbmNsdWRlcyhtaXNzaW9uLnJvbGUpKSB7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuU0VSVklDRSkge1xyXG4gICAgICAgICAgICAgICAgLy8gU0VSVklDRSBjYW4gc2VlIHRpY2tldHMgdG8gd2hpY2ggaGUgaXMgYXNzaWduZWRcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpY2tldHNBc3NpZ25lZCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRpY2tldHNUb0ZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LmFzc2lnbmVlcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXNzaWdubWVudCBvZiB0LmFzc2lnbmVlcy5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFzc2lnbm1lbnQubWlzc2lvbklEID09PSBtaXNzaW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0c0Fzc2lnbmVkLnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGlja2V0c0Fzc2lnbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIE9DQ1VQQU5UIGFuZCBWSVNJVE9SIGNhbiBzZWUgb25seSB0aWNrZXRzIHRoYXQgdGhleSBjcmVhdGVkXHJcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXRzVG9GaWx0ZXIuZmlsdGVyKCh0aWNrZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWNrZXQub3duZXJNaXNzaW9uSUQgPT09IG1pc3Npb24uaWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGlja2V0c1RvRmlsdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlcnNGb3JSb2xlKHJvbGU6IFJvbGVTdGF0dXMpOiBGaWx0ZXJUeXBlW10ge1xyXG4gICAgICAgIHN3aXRjaCAocm9sZSkge1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuQURNSU46XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuTUFOQUdFUjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5aT05FLCBGaWx0ZXJUeXBlLkxFVkVMXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLk9XTkVSOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtGaWx0ZXJUeXBlLlpPTkUsIEZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuU0VSVklDRTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5aT05FLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuTEVWRUwsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ET01BSU4sXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ST0xFLCAvLyB0aGF0IGlzIHRoZSBtb3N0IHNldmVyZSBmaWx0ZXJcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5PQ0NVUEFOVDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5aT05FLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuRE9NQUlOLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuUk9MRSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkxFVkVMLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuSEFTSFRBRyxcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5WSVNJVE9SOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5MRVZFTCxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkRPTUFJTixcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlJPTEUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5IQVNIVEFHLFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtGaWx0ZXJUeXBlLlpPTkUsIEZpbHRlclR5cGUuTEVWRUwsIEZpbHRlclR5cGUuSEFTSFRBR107XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5HVUlERV9NVVNFVU06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtGaWx0ZXJUeXBlLkxFVkVMXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyT2JqZWN0c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICBvYmplY3RzOiBPYmplY3QzRFtdLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8T2JqZWN0M0RbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsT2JqZWN0M0RzOiBPYmplY3QzRFtdID0gW107XHJcbiAgICAgICAgbGV0IGRvbUZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBsZXQgbGV2ZWxGaWx0ZXJlZDogT2JqZWN0M0RbXSA9IG9iamVjdHM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogT2JqZWN0M0RbXSA9IG9iamVjdHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvYmogb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQuaW5jbHVkZXMob2JqKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQuaW5jbHVkZXMob2JqKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbE9iamVjdDNEcy5wdXNoKG9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbE9iamVjdDNEcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJUaWNrZXRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgIHRpY2tldHM6IFRpY2tldFtdLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8VGlja2V0W10+IHtcclxuICAgICAgICBjb25zdCBmaW5hbFRpY2tldHM6IFRpY2tldFtdID0gW107XHJcbiAgICAgICAgbGV0IGRvbUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgbGV0IHJvbGVGaWx0ZXJlZDogVGlja2V0W10gPSB0aWNrZXRzO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogVGlja2V0W10gPSB0aWNrZXRzO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbnM7XHJcbiAgICAgICAgaWYgKG1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTcGFjZU1pc3Npb25zID0gbWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKG0pID0+IG0uc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGFjZU1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RMZWxlbCA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMoY3VycmVudFNwYWNlTWlzc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMoY3VycmVudFNwYWNlTWlzc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJIaWdoZXN0IGxldmVsOiBcIiwgaGlnaGVzdExlbGVsLCBcIiwgSGlnaGVzdCBSb2xlOiBcIiwgaGlnaGVzdFJvbGUpXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUoaGlnaGVzdFJvbGUpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuRE9NQUlOKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb21haW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgY3VycmVudFNwYWNlTWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtLmRvbWFpbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5zID0gWy4uLmRvbWFpbnMsIC4uLm0uZG9tYWluc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFsbERvbWFpbnNGaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGQgb2YgZG9tYWlucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudERvbUZpbHRlcmVkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclRpY2tldHNCeURvbWFpbih0aWNrZXRzLCBkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbERvbWFpbnNGaWx0ZXJlZCA9IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hbGxEb21haW5zRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudERvbUZpbHRlcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21GaWx0ZXJlZCA9IGFsbERvbWFpbnNGaWx0ZXJlZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ST0xFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlTWlzc2lvbiA9IGN1cnJlbnRTcGFjZU1pc3Npb25zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSkgPT4gbS5yb2xlID09PSBoaWdoZXN0Um9sZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZUZpbHRlcmVkID0gdGhpcy5maWx0ZXJUaWNrZXRzRm9yTWlzc2lvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdoZXN0Um9sZU1pc3Npb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkxFVkVMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsRmlsdGVyZWQgPSB0aGlzLmZpbHRlck9iamVjdHNCeUxldmVsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3RMZWxlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuWk9ORSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGtlZXAgb25seSB0aWNrZXRzIHByZXNlbnQgaW4gYWxsIGZpbHRlcmVkIGFycmF5c1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZG9tRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocm9sZUZpbHRlcmVkKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGxldmVsRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coem9uZUZpbHRlcmVkKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdGljIG9mIGxldmVsRmlsdGVyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUZpbHRlcmVkLmluY2x1ZGVzKHRpYykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZUZpbHRlcmVkLmluY2x1ZGVzKHRpYykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKHRpYylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxUaWNrZXRzLnB1c2godGljKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZmluYWxUaWNrZXRzKTtcclxuICAgICAgICByZXR1cm4gZmluYWxUaWNrZXRzO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZShcclxuICAgICAgICBuZXh0PzogKHZhbHVlOiBhbnkpID0+IHZvaWQsXHJcbiAgICAgICAgZXJyb3I/OiAoZXJyb3I6IGFueSkgPT4gdm9pZCxcclxuICAgICAgICBjb21wbGV0ZT86ICgpID0+IHZvaWQsXHJcbiAgICApOiBTdWJzY3JpcHRpb24ge1xyXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLnVwZGF0ZURhdGVGaWx0ZXIuc3Vic2NyaWJlKG5leHQsIGVycm9yLCBjb21wbGV0ZSk7XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9XHJcblxyXG4gICAgZGF0ZUZpbHRlclVwZGF0ZWQoZGF0ZVJhbmdlOiBEYXRlW10gfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZUZpbHRlciA9IGRhdGVSYW5nZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhdGVGaWx0ZXIubmV4dChkYXRlUmFuZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlck9iamVjdHNGb3JEYXRlUmFuZ2Uob2JqZWN0czogYW55W10sIGRhdGVSYW5nZTogRGF0ZVtdKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBvYmplY3RzLmZpbHRlcigob2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRBdERhdGUgPSBuZXcgRGF0ZShvYmplY3QuY3JlYXRlZEF0KTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdERhdGUgPj0gZGF0ZVJhbmdlWzBdICYmIGNyZWF0ZWRBdERhdGUgPD0gZGF0ZVJhbmdlWzFdXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyTWVhc3VyZW1lbnRzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgIG1lYXN1cmVtZW50czogTWVhc3VyZW1lbnRbXSxcclxuICAgICAgICBkYXRlUmFuZ2U6IERhdGVbXSxcclxuICAgICk6IE1lYXN1cmVtZW50W10ge1xyXG4gICAgICAgIGNvbnN0IGlzSW52YWxpZERhdGUgPSAoZDogRGF0ZSkgPT4gZCBpbnN0YW5jZW9mIERhdGUgJiYgaXNOYU4oZC5nZXRUaW1lKCkpO1xyXG5cclxuICAgICAgICBpZiAoZGF0ZVJhbmdlLmV2ZXJ5KGQgPT4gZCBpbnN0YW5jZW9mIERhdGUgJiYgaXNJbnZhbGlkRGF0ZShkKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1lYXN1cmVtZW50cztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZWFzdXJlbWVudHMuZmlsdGVyKChtZWFzdXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRBdERhdGUgPSBuZXcgRGF0ZShtZWFzdXJlLmNvbW1lbnQuY3JlYXRlZEF0KTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdERhdGUgPj0gZGF0ZVJhbmdlWzBdICYmIGNyZWF0ZWRBdERhdGUgPD0gZGF0ZVJhbmdlWzFdXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgb2JqZWN0czogYW55W10sIC8vIFRPRE86IHJlbW92ZSBhbnkgaGVyZS4uXHJcbiAgICAgICAgem9uZUlEOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgICAgIHpvbmU6IFpvbmUgPSBudWxsLFxyXG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkT2JqZWN0cyA9IFtdO1xyXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBvYmplY3RzLm1hcChhc3luYyAob2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbcG9pXSA9IG9iamVjdC5wb2lzLml0ZW1zO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBvaSAmJiB6b25lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyhwb2kubWF0dGVycG9ydFN3ZWVwSUQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvaVNlcnZpY2UucG9pSXNWaXJ0dWFsKHBvaSkgJiYgem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09IFwiRkxPT1JcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaW5jbHVkZSBpbiBGbG9vciB6b25lIG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBvaVNlcnZpY2UucG9pSXNWaXJ0dWFsKHBvaSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pICYmICF6b25lICYmIHpvbmVJRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0Zvck9iamVjdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lcy5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHpvbmVfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVfLmlkID09PSB6b25lSUQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b25lXy5wYXJlbnRJRCA9PT0gem9uZUlELFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cy5wdXNoKG9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZE9iamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRXF1aXBtZW50c0J5RG9tYWluTGlzdChcclxuICAgICAgICBlcXVpcG1lbnRzOiBFcXVpcG1lbnRbXSxcclxuICAgICAgICBkb21haW5JRExpc3Q6IHN0cmluZ1tdLFxyXG4gICAgKTogRXF1aXBtZW50W10ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQnlEb21haW4gPSBlcXVpcG1lbnRzLmZpbHRlcigoZXF1aXApID0+XHJcbiAgICAgICAgICAgIGRvbWFpbklETGlzdC5pbmNsdWRlcyhlcXVpcC5kb21haW5JRCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmaWx0ZXJlZCA9IFsuLi5maWx0ZXJlZCwgLi4uZmlsdGVyZWRCeURvbWFpbl07XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeVBhcmVudERvbWFpbiA9IGVxdWlwbWVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXF1aXApID0+XHJcbiAgICAgICAgICAgICAgICBlcXVpcC5kb21haW4gJiZcclxuICAgICAgICAgICAgICAgIGVxdWlwLmRvbWFpbi5wYXJlbnRJRCAmJlxyXG4gICAgICAgICAgICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKGVxdWlwLmRvbWFpbi5wYXJlbnRJRCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmaWx0ZXJlZCA9IFsuLi5maWx0ZXJlZCwgLi4uZmlsdGVyZWRCeVBhcmVudERvbWFpbl07XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChmaWx0ZXJlZCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQhXHJcbiAgICAvLyBmaWx0ZXJPYmplY3RzM0RCeURvbWFpbkxpc3QoXHJcbiAgICAvLyAgIG9iamVjdHMzRDogT2JqZWN0M0RbXSxcclxuICAgIC8vICAgZG9tYWluSURMaXN0OiBzdHJpbmdbXSxcclxuICAgIC8vICk6IE9iamVjdDNEW10ge1xyXG4gICAgLy8gICBsZXQgZmlsdGVyZWQgPSBbXTtcclxuICAgIC8vICAgY29uc3QgZmlsdGVyZWRCeURvbWFpbiA9IG9iamVjdHMzRC5maWx0ZXIoKGVxdWlwKSA9PlxyXG4gICAgLy8gICAgIGRvbWFpbklETGlzdC5pbmNsdWRlcyhlcXVpcC5kb21haW5JRCksXHJcbiAgICAvLyAgICk7XHJcbiAgICAvLyAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5RG9tYWluXTtcclxuICAgIC8vICAgY29uc3QgZmlsdGVyZWRCeVBhcmVudERvbWFpbiA9IG9iamVjdHMzRC5maWx0ZXIoXHJcbiAgICAvLyAgICAgKG9iaikgPT5cclxuICAgIC8vICAgICAgIG9iai5kb21haW4gJiZcclxuICAgIC8vICAgICAgIG9iai5kb21haW4ucGFyZW50SUQgJiZcclxuICAgIC8vICAgICAgIGRvbWFpbklETGlzdC5pbmNsdWRlcyhvYmouZG9tYWluLnBhcmVudElEKSxcclxuICAgIC8vICAgKTtcclxuICAgIC8vICAgZmlsdGVyZWQgPSBbLi4uZmlsdGVyZWQsIC4uLmZpbHRlcmVkQnlQYXJlbnREb21haW5dO1xyXG4gICAgLy8gICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGZpbHRlcmVkKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBmaWx0ZXJFcXVpcG1lbnRzRm9yVGVybShlcXVpcHM6IEVxdWlwbWVudFtdLCB0ZXJtOiBzdHJpbmcpOiBFcXVpcG1lbnRbXSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIGRvbWFpbnNcclxuICAgICAgICBsZXQgYnlEb21haW4gPSBlcXVpcHMuZmlsdGVyKChlcSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXEuZG9tYWluICYmIGVxLmRvbWFpbi5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRG9tYWluID0gZXEuZG9tYWluLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxldiA9IGxldmVuc2h0ZWluKG5vcm1hbGl6ZWREb21haW4sIHRlcm0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxldiA8PSAyIHx8IG5vcm1hbGl6ZWREb21haW4uaW5jbHVkZXModGVybSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGJ5UGFyZW50RG9tYWluID0gZXF1aXBzLmZpbHRlcigoZXEpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVxLmRvbWFpbiAmJiBlcS5kb21haW4ucGFyZW50SUQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXJlbnQgPSBlcS5kb21haW4ucGFyZW50Lm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxldiA9IGxldmVuc2h0ZWluKG5vcm1hbGl6ZWRQYXJlbnQsIHRlcm0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxldiA8PSAyIHx8IG5vcm1hbGl6ZWRQYXJlbnQuaW5jbHVkZXModGVybSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJ5RG9tYWluID0gWy4uLmJ5RG9tYWluLCAuLi5ieVBhcmVudERvbWFpbl07XHJcbiAgICAgICAgLy8gZmlsdGVyIG5hbWVcclxuICAgICAgICBsZXQgYnlOYW1lID0gW107XHJcbiAgICAgICAgY29uc3QgdGVybXMgPSB0ZXJtLnNwbGl0KFwiIFwiKS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5sZW5ndGggPiAyKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVxIG9mIGVxdWlwcykge1xyXG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IGVxLm5hbWVcclxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCIgXCIpXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubGVuZ3RoID4gMik7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiB0ZXJtcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVuc2h0ZWluKHRva2VuLCB3b3JkKSA8PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQucHVzaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGVkLmxlbmd0aCA9PT0gdGVybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBieU5hbWUucHVzaChlcSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGJ5TmFtZVNpbXBsZSA9IGVxdWlwcy5maWx0ZXIoKGVxKSA9PlxyXG4gICAgICAgICAgICBlcS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBieU5hbWUgPSBbLi4uYnlOYW1lLCAuLi5ieU5hbWVTaW1wbGVdO1xyXG4gICAgICAgIC8vIGJ5IHNlcmlhbCBudW1iZXJcclxuICAgICAgICBjb25zdCBieVNlcmlhbE51bWJlciA9IGVxdWlwcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlcSkgPT4gZXEuc2VyaWFsTnVtYmVyICYmIGVxLnNlcmlhbE51bWJlci50b0xvd2VyQ2FzZSgpID09PSB0ZXJtLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gWy4uLmJ5RG9tYWluLCAuLi5ieU5hbWUsIC4uLmJ5U2VyaWFsTnVtYmVyXTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyVGlja2V0c0ZvclRlcm0odGlja2V0czogVGlja2V0W10sIHRlcm06IHN0cmluZyk6IFRpY2tldFtdIHtcclxuICAgICAgICAvLyBmaWx0ZXIgdGVybSBpbiB0aXRsZSBhbmQgZGVzY3JpcHRpb25cclxuICAgICAgICBjb25zdCBieVRpdGxlID0gdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybSh0aWNrZXRzLCB0ZXJtKTtcclxuICAgICAgICAvLyBieSBlcXVpcG1lbnRcclxuICAgICAgICBjb25zdCBieUVxdWlwbWVudCA9IHRpY2tldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAodGlja2V0KSA9PlxyXG4gICAgICAgICAgICAgICAgdGlja2V0LmVxdWlwbWVudHMgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0odGlja2V0LmVxdWlwbWVudHMsIHRlcm0pLmxlbmd0aCA+XHJcbiAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlUaXRsZSwgLi4uYnlFcXVpcG1lbnRdKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJMb2NhdGlvbnNGb3JUZXJtKGxvY2F0aW9uczogU3BhY2VbXSwgdGVybTogc3RyaW5nKTogU3BhY2VbXSB7XHJcbiAgICAgICAgLy8gYnkgbmFtZVxyXG4gICAgICAgIGNvbnN0IGJ5TmFtZSA9IGxvY2F0aW9ucy5maWx0ZXIoKGxvYykgPT5cclxuICAgICAgICAgICAgbG9jLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGJ5IGFkZHJlc3NcclxuICAgICAgICBjb25zdCBieUFkZHJlc3MgPSBsb2NhdGlvbnMuZmlsdGVyKChsb2MpID0+XHJcbiAgICAgICAgICAgIGxvYy5hZGRyZXNzZXMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoWy4uLmJ5TmFtZSwgLi4uYnlBZGRyZXNzXSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT3JnYW5pc2F0aW9uc0ZvclRlcm0oXHJcbiAgICAgICAgb3JnczogT3JnYW5pc2F0aW9uW10sXHJcbiAgICAgICAgdGVybTogc3RyaW5nLFxyXG4gICAgKTogT3JnYW5pc2F0aW9uW10ge1xyXG4gICAgICAgIGNvbnN0IGJ5TmFtZSA9IG9yZ3MuZmlsdGVyKChvcmcpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBvcmcubmFtZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHdvcmRzLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHdvcmQpID0+IHdvcmQubGVuZ3RoID4gMiAmJiBsZXZlbnNodGVpbih3b3JkLCB0ZXJtKSA8PSAxLFxyXG4gICAgICAgICAgICAgICAgKSB8fCBvcmcubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGJ5TmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJVc2Vyc0ZvclRlcm0odXNlcnM6IFByb2ZpbGVFbnRpdHlbXSwgdGVybTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gdXNlci5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHdvcmRzLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHdvcmQpID0+IHdvcmQubGVuZ3RoID4gMiAmJiBsZXZlbnNodGVpbih3b3JkLCB0ZXJtKSA8PSAxLFxyXG4gICAgICAgICAgICAgICAgKSB8fCB1c2VyLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYnlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgIGZlYXR1cmVzOiBGZWF0dXJlW10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcclxuICAgICAgICBjb25zdCBmaW5hbEZlYXR1cmVzOiBGZWF0dXJlW10gPSBbXTtcclxuICAgICAgICBsZXQgbGV2ZWxGaWx0ZXJlZDogRmVhdHVyZVtdID0gZmVhdHVyZXM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogRmVhdHVyZVtdID0gZmVhdHVyZXM7XHJcbiAgICAgICAgbGV0IGhhc2h0YWdGaWx0ZXJlZDogRmVhdHVyZVtdID0gZmVhdHVyZXM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUoaGlnaGVzdFJvbGUpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyT2JqZWN0c0J5TGV2ZWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3RMZWxlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkhBU0hUQUcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhZ0ZpbHRlcmVkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRmVhdHVyZXNCeUhhc2h0YWdzQW5kTG9jYWxlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhZ0ZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZC5pbmNsdWRlcyhmZWF0dXJlKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEZlYXR1cmVzLnB1c2goZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbEZlYXR1cmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlckZlYXR1cmVzRm9yVGVybShmZWF0dXJlczogRmVhdHVyZVtdLCB0ZXJtOiBzdHJpbmcpOiBGZWF0dXJlW10ge1xyXG4gICAgICAgIC8vIGZpbHRlciB0ZXJtIGluIHRpdGxlXHJcbiAgICAgICAgY29uc3QgYnlUaXRsZSA9IHRoaXMuZmlsdGVyT2JqZWN0c0ZvclRlcm0oZmVhdHVyZXMsIHRlcm0pO1xyXG4gICAgICAgIC8vIGJ5IGNvbW1lbnRzXHJcbiAgICAgICAgY29uc3QgYnlDb21tZW50ID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyT2JqZWN0c0ZvclRlcm0oZmVhdHVyZS5jb21tZW50cy5pdGVtcywgdGVybSkubGVuZ3RoID5cclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKFsuLi5ieVRpdGxlLCAuLi5ieUNvbW1lbnRdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb2JqZWN0cyBBcnJheSBvZiBDb21tZW50cywgVGlja2V0cywgRmVhdHVyZXMuIE9ibGlnYXRvcnkgcHJvcG9ydGllczogdGl0bGUsIGRlc2NyaXB0aW9uXHJcbiAgICAgKiBAcGFyYW0gdGVybSBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgZmlsdGVyT2JqZWN0c0ZvclRlcm0ob2JqZWN0czogYW55W10sIHRlcm06IHN0cmluZyk6IGFueVtdIHtcclxuICAgICAgICAvLyBmaWx0ZXIgdGVybSBpbiB0aXRsZVxyXG4gICAgICAgIGNvbnN0IGJ5VGl0bGUgPSBvYmplY3RzLmZpbHRlcigoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IGZlYXR1cmUudGl0bGUudG9Mb3dlckNhc2UoKS5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICB3b3Jkcy5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICh3b3JkKSA9PiB3b3JkLmxlbmd0aCA+IDIgJiYgbGV2ZW5zaHRlaW4od29yZCwgdGVybSkgPD0gMSxcclxuICAgICAgICAgICAgICAgICkgfHwgZmVhdHVyZS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gdGVybSBwcmVzZW50IGluIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgY29uc3QgYnlEZXNjcmlwdGlvbiA9IG9iamVjdHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT5cclxuICAgICAgICAgICAgICAgIGZlYXR1cmUuZGVzY3JpcHRpb24gJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoWy4uLmJ5VGl0bGUsIC4uLmJ5RGVzY3JpcHRpb25dKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJNaXNzaW9uQnlTdGFydFRpbWVEYXRlRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgIG1pc3Npb25zOiBhbnlbXSxcclxuICAgICAgICBkYXRlUmFuZ2U6IERhdGVbXSxcclxuICAgICk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnMuZmlsdGVyKChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZVRpbWUgPSBuZXcgRGF0ZShtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgc3RhcnREYXRlVGltZSA+PSBkYXRlUmFuZ2VbMF0gJiYgc3RhcnREYXRlVGltZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9uczogTWlzc2lvbltdLFxyXG4gICAgICAgIG9iamVjdHM6IGFueVtdLFxyXG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIGNvbnN0IGFsbG93ZWRab25lcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgbWlzc2lvbiBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbi56b25lSUQpIHtcclxuICAgICAgICAgICAgICAgIGFsbG93ZWRab25lcy5wdXNoKG1pc3Npb24uem9uZUlEKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWxsb3dlZFpvbmVzLmxlbmd0aCA9PT0gY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBhbGxab25lRmlsdGVyZWQgPSBbXTtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICBhbGxvd2VkWm9uZXMubWFwKGFzeW5jICh6b25lSUQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Wm9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUlELFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsWm9uZUZpbHRlcmVkID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hbGxab25lRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRab25lRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGFsbFpvbmVGaWx0ZXJlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvYmplY3RzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlckVxdWlwbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgICAgIGVxdWlwczogRXF1aXBtZW50W10sXHJcbiAgICApOiBQcm9taXNlPEVxdWlwbWVudFtdPiB7XHJcbiAgICAgICAgY29uc3QgZmluYWxFcXVpcHM6IEVxdWlwbWVudFtdID0gW107XHJcbiAgICAgICAgbGV0IGRvbUZpbHRlcmVkOiBFcXVpcG1lbnRbXSA9IGVxdWlwcztcclxuICAgICAgICBjb25zdCByb2xlRmlsdGVyZWQ6IEVxdWlwbWVudFtdID0gZXF1aXBzO1xyXG4gICAgICAgIGNvbnN0IGxldmVsRmlsdGVyZWQ6IEVxdWlwbWVudFtdID0gZXF1aXBzO1xyXG4gICAgICAgIGxldCB6b25lRmlsdGVyZWQ6IEVxdWlwbWVudFtdID0gZXF1aXBzO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbnM7XHJcbiAgICAgICAgaWYgKG1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTcGFjZU1pc3Npb25zID0gbWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKG0pID0+IG0uc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGFjZU1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RMZWxlbCA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMoY3VycmVudFNwYWNlTWlzc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGUgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMoY3VycmVudFNwYWNlTWlzc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJIaWdoZXN0IGxldmVsOiBcIiwgaGlnaGVzdExlbGVsLCBcIiwgSGlnaGVzdCBSb2xlOiBcIiwgaGlnaGVzdFJvbGUpXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUoaGlnaGVzdFJvbGUpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuRE9NQUlOKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb21haW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgY3VycmVudFNwYWNlTWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtLmRvbWFpbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5zID0gWy4uLmRvbWFpbnMsIC4uLm0uZG9tYWluc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbGxEb21haW5zRmlsdGVyZWQgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREb21GaWx0ZXJlZCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoZXF1aXBzLCBkb21haW5zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9tYWluc0ZpbHRlcmVkID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWxsRG9tYWluc0ZpbHRlcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudERvbUZpbHRlcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21GaWx0ZXJlZCA9IGFsbERvbWFpbnNGaWx0ZXJlZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ST0xFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGhpZ2hlc3RSb2xlTWlzc2lvbiA9IGN1cnJlbnRTcGFjZU1pc3Npb25zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAobSkgPT4gbS5yb2xlID09PSBoaWdoZXN0Um9sZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPLCBlcXVpcG1lbnQgZG9lcyBub3QgaGF2ZSBsZXZlbFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRpYyBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21GaWx0ZXJlZC5pbmNsdWRlcyh0aWMpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVGaWx0ZXJlZC5pbmNsdWRlcyh0aWMpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZC5pbmNsdWRlcyh0aWMpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRXF1aXBzLnB1c2godGljKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsRXF1aXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgY29tbWVudHM6IENvbW1lbnRbXSxcclxuICAgICk6IFByb21pc2U8Q29tbWVudFtdPiB7XHJcbiAgICAgICAgbGV0IGZpbmFsTWVhc3VyZW1lbnRzOiBDb21tZW50W10gPSBbXTtcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBDb21tZW50W10gPSBjb21tZW50cztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUoaGlnaGVzdFJvbGUpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuWk9ORSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmaW5hbE1lYXN1cmVtZW50cyA9IHpvbmVGaWx0ZXJlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmluYWxNZWFzdXJlbWVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaXNPYmplY3RBbGxvd2VkRm9yVXNlckluU3BhY2UoXHJcbiAgICAgICAgb2JqZWN0OiBPYmplY3QsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc0ZvclJvbGUobWlzc2lvbi5yb2xlKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCAmJlxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgXCJsZXZlbFwiKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxldmVsRmlsdGVyZWQgPSB0aGlzLmZpbHRlck9iamVjdHNCeUxldmVsKFxyXG4gICAgICAgICAgICAgICAgICAgIFtvYmplY3RdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pc3Npb24ubGV2ZWwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxldmVsRmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuWk9ORSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICBbbWlzc2lvbl0sXHJcbiAgICAgICAgICAgICAgICAgICAgW29iamVjdF0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKHpvbmVGaWx0ZXJlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyVGVtcGxhdGVzRm9yVGVybShtaXNzaW9uczogTWlzc2lvbltdLCB0ZXJtOiBzdHJpbmcpOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIC8vIHRlcm0gcHJlc2VudCBpbiBkZXNjcmlwdGlvblxyXG4gICAgICAgIGNvbnN0IGJ5RGVzY3JpcHRpb24gPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+XHJcbiAgICAgICAgICAgICAgICBtaXMuZGVzY3JpcHRpb24gJiYgbWlzLmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBieSB1c2VyIGxhc3ROYW1lIHdoaWNoIGlzIHRoZSBuYW1lIG9mIHRoZSB2aXNpdDpcclxuICAgICAgICAvLyBtZXRhZGF0YTogXCJ7XFxcImZpcnN0TmFtZVxcXCI6XFxcIlxcXCIsXFxcImxhc3ROYW1lXFxcIjpcXFwiVmlzaXRlIGR1IDUgSnVpbGxldFxcXCJ9XCJcclxuICAgICAgICBjb25zdCB1c2VyUHJvZmlsZXMgPSBtaXNzaW9ucy5tYXAoKG1pcykgPT4gbmV3IFByb2ZpbGVFbnRpdHkobWlzLnVzZXIpKTtcclxuICAgICAgICBjb25zdCBieVVzZXJMYXN0bmFtZSA9IHRoaXMuZmlsdGVyVXNlcnNGb3JUZXJtKHVzZXJQcm9maWxlcywgdGVybSk7XHJcbiAgICAgICAgY29uc3QgdXNlcklkcyA9IG5ldyBTZXQoYnlVc2VyTGFzdG5hbWUubWFwKCh1c2VyKSA9PiB1c2VyLmlkKSk7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnNCeVVzZXIgPSBtaXNzaW9ucy5maWx0ZXIoKG1pcykgPT5cclxuICAgICAgICAgICAgdXNlcklkcy5oYXMobWlzLnVzZXJJRCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKFsuLi5ieURlc2NyaXB0aW9uLCAuLi5taXNzaW9uc0J5VXNlcl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlck9iamVjdHNGb3JTd2VlcChcclxuICAgICAgICBvYmplY3RzOiBhbnlbXSxcclxuICAgICAgICBvYmplY3RUeXBlOiBQb2lUeXBlLFxyXG4gICAgICAgIHN3ZWVwOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgbGV0IGZpbHRlcmVkID0gW107XHJcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwb2lzID1cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pc0J5TWF0dGVycG9ydFN3ZWVwQnlUeXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2VlcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0VHlwZSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXF1aXBJRHMgPSBuZXcgU2V0KHBvaXMubWFwKChwb2kpID0+IHBvaS5lbGVtZW50SUQpKTtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkID0gb2JqZWN0cy5maWx0ZXIoKG9iamVjdCkgPT4gZXF1aXBJRHMuaGFzKG9iamVjdC5pZCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlckZlYXR1cmVzQnlIYXNodGFnc0FuZExvY2FsZShcclxuICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9uczogTWlzc2lvbltdLFxyXG4gICAgICAgIGZlYXR1cmVzOiBGZWF0dXJlW10sXHJcbiAgICApOiBGZWF0dXJlW10ge1xyXG4gICAgICAgIGNvbnN0IFtjdXJyZW50TWlzc2lvbl0gPSBjdXJyZW50U3BhY2VNaXNzaW9ucztcclxuICAgICAgICAvLyBmaWx0ZXIgYnkgbG9jYWxlXHJcbiAgICAgICAgbGV0IGZpbHRlcmVkTG9jYWxlID0gWy4uLmZlYXR1cmVzXTtcclxuICAgICAgICBpZiAoY3VycmVudE1pc3Npb24ubG9jYWxlKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcmVkTG9jYWxlID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5sb2NhbGUgJiYgZmVhdHVyZS5sb2NhbGUgPT09IGN1cnJlbnRNaXNzaW9uLmxvY2FsZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZmlsdGVyIGJ5IGhhc2h0YWdzXHJcbiAgICAgICAgaWYgKGN1cnJlbnRNaXNzaW9uLmhhc2h0YWdzICYmIGN1cnJlbnRNaXNzaW9uLmhhc2h0YWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRCeUhhc2h0YWdzID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmaWx0ZXJlZExvY2FsZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmZWF0dXJlLmhhc2h0YWdzIHx8IGZlYXR1cmUuaGFzaHRhZ3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRmVhdHVyZSB3aXRob3V0IGhhc2h0YWcgaXMgYXZhaWxhYmxlIGZvciBldmVyeWJvZHlcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEJ5SGFzaHRhZ3MucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pc3Npb24uaGFzaHRhZ3MuZXZlcnkoKGhhc2h0YWcpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuaGFzaHRhZ3MuaW5jbHVkZXMoaGFzaHRhZyksXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRCeUhhc2h0YWdzLnB1c2goZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQnlIYXNodGFncztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkTG9jYWxlO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlckZlYXR1cmVzRm9yTWlzc2lvbldpdGhvdXRab25lKFxyXG4gICAgICAgIGZlYXR1cmVzOiBGZWF0dXJlW10sXHJcbiAgICAgICAgbWlzc2lvbjogTWlzc2lvbixcclxuICAgICk6IEZlYXR1cmVbXSB7XHJcbiAgICAgICAgY29uc3QgZmluYWxGZWF0dXJlczogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgbGV0IGxldmVsRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IGZlYXR1cmVzO1xyXG4gICAgICAgIGxldCB6b25lRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IGZlYXR1cmVzO1xyXG4gICAgICAgIGxldCBoYXNodGFnRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IGZlYXR1cmVzO1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShtaXNzaW9uLnJvbGUpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgbGV2ZWxGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyT2JqZWN0c0J5TGV2ZWwoXHJcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5sZXZlbCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB6b25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAvLyAgICAgKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkhBU0hUQUcpIHtcclxuICAgICAgICAgICAgICAgIGhhc2h0YWdGaWx0ZXJlZCA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGZWF0dXJlc0J5SGFzaHRhZ3NBbmRMb2NhbGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaXNzaW9uXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQuaW5jbHVkZXMoZmVhdHVyZSkgJiZcclxuICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZC5pbmNsdWRlcyhmZWF0dXJlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGZpbmFsRmVhdHVyZXMucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmluYWxGZWF0dXJlcztcclxuICAgIH1cclxufVxyXG4iXX0=
606
+ }], ctorParameters: () => [{ type: i1.BaseUserService }, { type: i2.ZoneService }, { type: i3.PoiService }] });
607
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMsaUNBQWlDO0FBQ2pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsSSxPQUFPLEVBT0gsT0FBTyxFQUNQLGFBQWEsRUFDYixVQUFVLEVBT2IsTUFBTSxrQkFBa0IsQ0FBQztBQVkxQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFSekMsSUFBSyxVQU9KO0FBUEQsV0FBSyxVQUFVO0lBQ1gsK0JBQWlCLENBQUE7SUFDakIsNkJBQWUsQ0FBQTtJQUNmLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0lBQ2IsNkJBQWUsQ0FBQTtJQUNmLGlDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFQSSxVQUFVLEtBQVYsVUFBVSxRQU9kO0FBS0QsTUFBTSxPQUFPLGFBQWE7SUFNVjtJQUNBO0lBQ0E7SUFQSixnQkFBZ0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuRCxpQkFBaUIsQ0FBUztJQUVqQyxZQUNZLFdBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLFVBQXNCO1FBRnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQzlCLENBQUM7SUFFTCxxQkFBcUIsQ0FBQyxlQUF5QixF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LGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO3dHQTN5QlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGd1YXJkLWZvci1pbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXZlbHNCZWxvdywgZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMsIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMsIGZpbHRlclVuaXF1ZUFycmF5QnlJRCB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICAgIFpvbmUsXHJcbiAgICBFcXVpcG1lbnQsXHJcbiAgICBMZXZlbFN0YXR1cyxcclxuICAgIE1lYXN1cmVtZW50LFxyXG4gICAgTWlzc2lvbixcclxuICAgIE9yZ2FuaXNhdGlvbixcclxuICAgIFBvaVR5cGUsXHJcbiAgICBQcm9maWxlRW50aXR5LFxyXG4gICAgUm9sZVN0YXR1cyxcclxuICAgIFNwYWNlLFxyXG4gICAgVGlja2V0LFxyXG4gICAgRGJPYmplY3RUeXBlLFxyXG4gICAgRmVhdHVyZSxcclxuICAgIENvbW1lbnQsXHJcbiAgICBWaXNpdFRlbXBsYXRlLCBPYmplY3QzRFxyXG59IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvcG9pLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvem9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuL3VzZXIuc2VydmljZVwiO1xyXG5lbnVtIEZpbHRlclR5cGUge1xyXG4gICAgRE9NQUlOID0gXCJET01BSU5cIixcclxuICAgIExFVkVMID0gXCJMRVZFTFwiLFxyXG4gICAgUk9MRSA9IFwiUk9MRVwiLFxyXG4gICAgWk9ORSA9IFwiWk9ORVwiLFxyXG4gICAgU1BBQ0UgPSBcIlNQQUNFXCIsXHJcbiAgICBIQVNIVEFHID0gXCJIQVNIVEFHXCIsXHJcbn1cclxuaW1wb3J0IGxldmVuc2h0ZWluIGZyb20gJ2pzLWxldmVuc2h0ZWluJztcclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgdXBkYXRlRGF0ZUZpbHRlcjogU3ViamVjdDxEYXRlW10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBwdWJsaWMgY3VycmVudERhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzQnlEb21haW4odGlja2V0c1RvRmlsdGVyOiBUaWNrZXRbXSwgZG9tYWluOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGlja2V0c1RvRmlsdGVyLmZpbHRlcigodGljKSA9PiB0aWMuZG9tYWluSUQgPT09IGRvbWFpbik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT2JqZWN0c0J5TGV2ZWwob2JqZWN0c1RvRmlsdGVyOiBhbnlbXSwgbGV2ZWw6IExldmVsU3RhdHVzKTogYW55W10ge1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVMZXZlbHMgPSBnZXRMZXZlbHNCZWxvdyhsZXZlbCk7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBvYmplY3RzVG9GaWx0ZXIuZmlsdGVyKCh0aWMpID0+XHJcbiAgICAgICAgICAgIHZpc2libGVMZXZlbHMuaW5jbHVkZXModGljLmxldmVsKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzRm9yTWlzc2lvbihcclxuICAgICAgICB0aWNrZXRzVG9GaWx0ZXI6IFRpY2tldFtdLFxyXG4gICAgICAgIG1pc3Npb246IE1pc3Npb24sXHJcbiAgICApOiBUaWNrZXRbXSB7XHJcbiAgICAgICAgY29uc3QgbWFuYWdlclJvbGVzOiBSb2xlU3RhdHVzW10gPSBbXHJcbiAgICAgICAgICAgIFJvbGVTdGF0dXMuTUFOQUdFUixcclxuICAgICAgICAgICAgUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICAgICAgUm9sZVN0YXR1cy5PV05FUixcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICghbWFuYWdlclJvbGVzLmluY2x1ZGVzKG1pc3Npb24ucm9sZSkpIHtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTRVJWSUNFIGNhbiBzZWUgdGlja2V0cyB0byB3aGljaCBoZSBpcyBhc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdGlja2V0c0Fzc2lnbmVkID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGlja2V0c1RvRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQuYXNzaWduZWVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIHQuYXNzaWduZWVzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXNzaWdubWVudC5taXNzaW9uSUQgPT09IG1pc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzQXNzaWduZWQucHVzaCh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWNrZXRzQXNzaWduZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gT0NDVVBBTlQgYW5kIFZJU0lUT1IgY2FuIHNlZSBvbmx5IHRpY2tldHMgdGhhdCB0aGV5IGNyZWF0ZWRcclxuICAgICAgICAgICAgcmV0dXJuIHRpY2tldHNUb0ZpbHRlci5maWx0ZXIoKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpY2tldC5vd25lck1pc3Npb25JRCA9PT0gbWlzc2lvbi5pZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aWNrZXRzVG9GaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVyc0ZvclJvbGUocm9sZTogUm9sZVN0YXR1cyk6IEZpbHRlclR5cGVbXSB7XHJcbiAgICAgICAgc3dpdGNoIChyb2xlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5BRE1JTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5NQU5BR0VSOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtGaWx0ZXJUeXBlLlpPTkUsIEZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuT1dORVI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuWk9ORSwgRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGNhc2UgUm9sZVN0YXR1cy5TRVJWSUNFOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5MRVZFTCxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkRPTUFJTixcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlJPTEUsIC8vIHRoYXQgaXMgdGhlIG1vc3Qgc2V2ZXJlIGZpbHRlclxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLk9DQ1VQQU5UOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLlpPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ET01BSU4sXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5ST0xFLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuTEVWRUwsXHJcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVHlwZS5IQVNIVEFHLFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLlZJU0lUT1I6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuWk9ORSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkxFVkVMLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuRE9NQUlOLFxyXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclR5cGUuUk9MRSxcclxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUeXBlLkhBU0hUQUcsXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBjYXNlIFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuWk9ORSwgRmlsdGVyVHlwZS5MRVZFTCwgRmlsdGVyVHlwZS5IQVNIVEFHXTtcclxuICAgICAgICAgICAgY2FzZSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBbRmlsdGVyVHlwZS5MRVZFTF07XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW0ZpbHRlclR5cGUuTEVWRUxdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgIG9iamVjdHM6IE9iamVjdDNEW10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxPYmplY3QzRFtdPiB7XHJcbiAgICAgICAgY29uc3QgZmluYWxPYmplY3QzRHM6IE9iamVjdDNEW10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IE9iamVjdDNEW10gPSBvYmplY3RzO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBPYmplY3QzRFtdID0gb2JqZWN0cztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21GaWx0ZXJlZC5pbmNsdWRlcyhvYmopICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZC5pbmNsdWRlcyhvYmopXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0M0RzLnB1c2gob2JqKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsT2JqZWN0M0RzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlclRpY2tldHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgdGlja2V0czogVGlja2V0W10sXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsVGlja2V0czogVGlja2V0W10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IFRpY2tldFtdID0gdGlja2V0cztcclxuICAgICAgICBsZXQgcm9sZUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgbGV0IGxldmVsRmlsdGVyZWQ6IFRpY2tldFtdID0gdGlja2V0cztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBUaWNrZXRbXSA9IHRpY2tldHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkhpZ2hlc3QgbGV2ZWw6IFwiLCBoaWdoZXN0TGVsZWwsIFwiLCBIaWdoZXN0IFJvbGU6IFwiLCBoaWdoZXN0Um9sZSlcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ET01BSU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvbWFpbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0uZG9tYWlucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbnMgPSBbLi4uZG9tYWlucywgLi4ubS5kb21haW5zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWxsRG9tYWluc0ZpbHRlcmVkID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZCBvZiBkb21haW5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RG9tRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyVGlja2V0c0J5RG9tYWluKHRpY2tldHMsIGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRG9tYWluc0ZpbHRlcmVkID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbERvbWFpbnNGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50RG9tRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUZpbHRlcmVkID0gYWxsRG9tYWluc0ZpbHRlcmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlJPTEUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdFJvbGVNaXNzaW9uID0gY3VycmVudFNwYWNlTWlzc2lvbnMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtKSA9PiBtLnJvbGUgPT09IGhpZ2hlc3RSb2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQgPSB0aGlzLmZpbHRlclRpY2tldHNGb3JNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hlc3RSb2xlTWlzc2lvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuTEVWRUwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyT2JqZWN0c0J5TGV2ZWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdExlbGVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8ga2VlcCBvbmx5IHRpY2tldHMgcHJlc2VudCBpbiBhbGwgZmlsdGVyZWQgYXJyYXlzXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkb21GaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyb2xlRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobGV2ZWxGaWx0ZXJlZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh6b25lRmlsdGVyZWQpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0aWMgb2YgbGV2ZWxGaWx0ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9tRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlRmlsdGVyZWQuaW5jbHVkZXModGljKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lRmlsdGVyZWQuaW5jbHVkZXModGljKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFRpY2tldHMucHVzaCh0aWMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhmaW5hbFRpY2tldHMpO1xyXG4gICAgICAgIHJldHVybiBmaW5hbFRpY2tldHM7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlVG9EYXRhRmlsdGVyVXBkYXRlKFxyXG4gICAgICAgIG5leHQ/OiAodmFsdWU6IGFueSkgPT4gdm9pZCxcclxuICAgICAgICBlcnJvcj86IChlcnJvcjogYW55KSA9PiB2b2lkLFxyXG4gICAgICAgIGNvbXBsZXRlPzogKCkgPT4gdm9pZCxcclxuICAgICk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgY29uc3QgcyA9IHRoaXMudXBkYXRlRGF0ZUZpbHRlci5zdWJzY3JpYmUobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcclxuICAgICAgICByZXR1cm4gcztcclxuICAgIH1cclxuXHJcbiAgICBkYXRlRmlsdGVyVXBkYXRlZChkYXRlUmFuZ2U6IERhdGVbXSB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnREYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGF0ZUZpbHRlci5uZXh0KGRhdGVSYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyT2JqZWN0c0ZvckRhdGVSYW5nZShvYmplY3RzOiBhbnlbXSwgZGF0ZVJhbmdlOiBEYXRlW10pOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdHMuZmlsdGVyKChvYmplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKG9iamVjdC5jcmVhdGVkQXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0RGF0ZSA+PSBkYXRlUmFuZ2VbMF0gJiYgY3JlYXRlZEF0RGF0ZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJNZWFzdXJlbWVudHNGb3JEYXRlUmFuZ2UoXHJcbiAgICAgICAgbWVhc3VyZW1lbnRzOiBNZWFzdXJlbWVudFtdLFxyXG4gICAgICAgIGRhdGVSYW5nZTogRGF0ZVtdLFxyXG4gICAgKTogTWVhc3VyZW1lbnRbXSB7XHJcbiAgICAgICAgY29uc3QgaXNJbnZhbGlkRGF0ZSA9IChkOiBEYXRlKSA9PiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBpc05hTihkLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgIGlmIChkYXRlUmFuZ2UuZXZlcnkoZCA9PiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBpc0ludmFsaWREYXRlKGQpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKG1lYXN1cmUuY29tbWVudC5jcmVhdGVkQXQpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0RGF0ZSA+PSBkYXRlUmFuZ2VbMF0gJiYgY3JlYXRlZEF0RGF0ZSA8PSBkYXRlUmFuZ2VbMV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICBvYmplY3RzOiBhbnlbXSwgLy8gVE9ETzogcmVtb3ZlIGFueSBoZXJlLi5cclxuICAgICAgICB6b25lSUQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICAgICAgem9uZTogWm9uZSA9IG51bGwsXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPYmplY3RzID0gW107XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIG9iamVjdHMubWFwKGFzeW5jIChvYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtwb2ldID0gb2JqZWN0LnBvaXMuaXRlbXM7XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pICYmIHpvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucG9pU2VydmljZS5wb2lJc1ZpcnR1YWwocG9pKSAmJiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJGTE9PUlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBpbmNsdWRlIGluIEZsb29yIHpvbmUgb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucG9pU2VydmljZS5wb2lJc1ZpcnR1YWwocG9pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwb2kgJiYgIXpvbmUgJiYgem9uZUlEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzRm9yT2JqZWN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVzLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoem9uZV8pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9uZV8uaWQgPT09IHpvbmVJRCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVfLnBhcmVudElEID09PSB6b25lSUQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRPYmplY3RzLnB1c2gob2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkT2JqZWN0cztcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KFxyXG4gICAgICAgIGVxdWlwbWVudHM6IEVxdWlwbWVudFtdLFxyXG4gICAgICAgIGRvbWFpbklETGlzdDogc3RyaW5nW10sXHJcbiAgICApOiBFcXVpcG1lbnRbXSB7XHJcbiAgICAgICAgbGV0IGZpbHRlcmVkID0gW107XHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeURvbWFpbiA9IGVxdWlwbWVudHMuZmlsdGVyKChlcXVpcCkgPT5cclxuICAgICAgICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKGVxdWlwLmRvbWFpbklEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5RG9tYWluXTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZEJ5UGFyZW50RG9tYWluID0gZXF1aXBtZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChlcXVpcCkgPT5cclxuICAgICAgICAgICAgICAgIGVxdWlwLmRvbWFpbiAmJlxyXG4gICAgICAgICAgICAgICAgZXF1aXAuZG9tYWluLnBhcmVudElEICYmXHJcbiAgICAgICAgICAgICAgICBkb21haW5JRExpc3QuaW5jbHVkZXMoZXF1aXAuZG9tYWluLnBhcmVudElEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZpbHRlcmVkID0gWy4uLmZpbHRlcmVkLCAuLi5maWx0ZXJlZEJ5UGFyZW50RG9tYWluXTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKGZpbHRlcmVkKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gTm90IGltcGxlbWVudGVkIHlldCFcclxuICAgIC8vIGZpbHRlck9iamVjdHMzREJ5RG9tYWluTGlzdChcclxuICAgIC8vICAgb2JqZWN0czNEOiBPYmplY3QzRFtdLFxyXG4gICAgLy8gICBkb21haW5JRExpc3Q6IHN0cmluZ1tdLFxyXG4gICAgLy8gKTogT2JqZWN0M0RbXSB7XHJcbiAgICAvLyAgIGxldCBmaWx0ZXJlZCA9IFtdO1xyXG4gICAgLy8gICBjb25zdCBmaWx0ZXJlZEJ5RG9tYWluID0gb2JqZWN0czNELmZpbHRlcigoZXF1aXApID0+XHJcbiAgICAvLyAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKGVxdWlwLmRvbWFpbklEKSxcclxuICAgIC8vICAgKTtcclxuICAgIC8vICAgZmlsdGVyZWQgPSBbLi4uZmlsdGVyZWQsIC4uLmZpbHRlcmVkQnlEb21haW5dO1xyXG4gICAgLy8gICBjb25zdCBmaWx0ZXJlZEJ5UGFyZW50RG9tYWluID0gb2JqZWN0czNELmZpbHRlcihcclxuICAgIC8vICAgICAob2JqKSA9PlxyXG4gICAgLy8gICAgICAgb2JqLmRvbWFpbiAmJlxyXG4gICAgLy8gICAgICAgb2JqLmRvbWFpbi5wYXJlbnRJRCAmJlxyXG4gICAgLy8gICAgICAgZG9tYWluSURMaXN0LmluY2x1ZGVzKG9iai5kb21haW4ucGFyZW50SUQpLFxyXG4gICAgLy8gICApO1xyXG4gICAgLy8gICBmaWx0ZXJlZCA9IFsuLi5maWx0ZXJlZCwgLi4uZmlsdGVyZWRCeVBhcmVudERvbWFpbl07XHJcbiAgICAvLyAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoZmlsdGVyZWQpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGZpbHRlckVxdWlwbWVudHNGb3JUZXJtKGVxdWlwczogRXF1aXBtZW50W10sIHRlcm06IHN0cmluZyk6IEVxdWlwbWVudFtdIHtcclxuICAgICAgICAvLyBmaWx0ZXIgZG9tYWluc1xyXG4gICAgICAgIGxldCBieURvbWFpbiA9IGVxdWlwcy5maWx0ZXIoKGVxKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcS5kb21haW4gJiYgZXEuZG9tYWluLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREb21haW4gPSBlcS5kb21haW4ubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGV2ID0gbGV2ZW5zaHRlaW4obm9ybWFsaXplZERvbWFpbiwgdGVybSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbGV2IDw9IDIgfHwgbm9ybWFsaXplZERvbWFpbi5pbmNsdWRlcyh0ZXJtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgYnlQYXJlbnREb21haW4gPSBlcXVpcHMuZmlsdGVyKChlcSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXEuZG9tYWluICYmIGVxLmRvbWFpbi5wYXJlbnRJRCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhcmVudCA9IGVxLmRvbWFpbi5wYXJlbnQubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGV2ID0gbGV2ZW5zaHRlaW4obm9ybWFsaXplZFBhcmVudCwgdGVybSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbGV2IDw9IDIgfHwgbm9ybWFsaXplZFBhcmVudC5pbmNsdWRlcyh0ZXJtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnlEb21haW4gPSBbLi4uYnlEb21haW4sIC4uLmJ5UGFyZW50RG9tYWluXTtcclxuICAgICAgICAvLyBmaWx0ZXIgbmFtZVxyXG4gICAgICAgIGxldCBieU5hbWUgPSBbXTtcclxuICAgICAgICBjb25zdCB0ZXJtcyA9IHRlcm0uc3BsaXQoXCIgXCIpLmZpbHRlcigodG9rZW4pID0+IHRva2VuLmxlbmd0aCA+IDIpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXEgb2YgZXF1aXBzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gZXEubmFtZVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5zcGxpdChcIiBcIilcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5sZW5ndGggPiAyKTtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRlcm1zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGV2ZW5zaHRlaW4odG9rZW4sIHdvcmQpIDw9IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5wdXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG1hdGNoZWQubGVuZ3RoID09PSB0ZXJtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGJ5TmFtZS5wdXNoKGVxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYnlOYW1lU2ltcGxlID0gZXF1aXBzLmZpbHRlcigoZXEpID0+XHJcbiAgICAgICAgICAgIGVxLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGJ5TmFtZSA9IFsuLi5ieU5hbWUsIC4uLmJ5TmFtZVNpbXBsZV07XHJcbiAgICAgICAgLy8gYnkgc2VyaWFsIG51bWJlclxyXG4gICAgICAgIGNvbnN0IGJ5U2VyaWFsTnVtYmVyID0gZXF1aXBzLmZpbHRlcihcclxuICAgICAgICAgICAgKGVxKSA9PiBlcS5zZXJpYWxOdW1iZXIgJiYgZXEuc2VyaWFsTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT09IHRlcm0sXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBbLi4uYnlEb21haW4sIC4uLmJ5TmFtZSwgLi4uYnlTZXJpYWxOdW1iZXJdO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQocmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJUaWNrZXRzRm9yVGVybSh0aWNrZXRzOiBUaWNrZXRbXSwgdGVybTogc3RyaW5nKTogVGlja2V0W10ge1xyXG4gICAgICAgIC8vIGZpbHRlciB0ZXJtIGluIHRpdGxlIGFuZCBkZXNjcmlwdGlvblxyXG4gICAgICAgIGNvbnN0IGJ5VGl0bGUgPSB0aGlzLmZpbHRlck9iamVjdHNGb3JUZXJtKHRpY2tldHMsIHRlcm0pO1xyXG4gICAgICAgIC8vIGJ5IGVxdWlwbWVudFxyXG4gICAgICAgIGNvbnN0IGJ5RXF1aXBtZW50ID0gdGlja2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh0aWNrZXQpID0+XHJcbiAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJFcXVpcG1lbnRzRm9yVGVybSh0aWNrZXQuZXF1aXBtZW50cywgdGVybSkubGVuZ3RoID5cclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKFsuLi5ieVRpdGxlLCAuLi5ieUVxdWlwbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlckxvY2F0aW9uc0ZvclRlcm0obG9jYXRpb25zOiBTcGFjZVtdLCB0ZXJtOiBzdHJpbmcpOiBTcGFjZVtdIHtcclxuICAgICAgICAvLyBieSBuYW1lXHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gbG9jYXRpb25zLmZpbHRlcigobG9jKSA9PlxyXG4gICAgICAgICAgICBsb2MubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gYnkgYWRkcmVzc1xyXG4gICAgICAgIGNvbnN0IGJ5QWRkcmVzcyA9IGxvY2F0aW9ucy5maWx0ZXIoKGxvYykgPT5cclxuICAgICAgICAgICAgbG9jLmFkZHJlc3Nlcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlOYW1lLCAuLi5ieUFkZHJlc3NdKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJPcmdhbmlzYXRpb25zRm9yVGVybShcclxuICAgICAgICBvcmdzOiBPcmdhbmlzYXRpb25bXSxcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICApOiBPcmdhbmlzYXRpb25bXSB7XHJcbiAgICAgICAgY29uc3QgYnlOYW1lID0gb3Jncy5maWx0ZXIoKG9yZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IG9yZy5uYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgd29yZHMuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAod29yZCkgPT4gd29yZC5sZW5ndGggPiAyICYmIGxldmVuc2h0ZWluKHdvcmQsIHRlcm0pIDw9IDEsXHJcbiAgICAgICAgICAgICAgICApIHx8IG9yZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYnlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclVzZXJzRm9yVGVybSh1c2VyczogUHJvZmlsZUVudGl0eVtdLCB0ZXJtOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBieU5hbWUgPSB1c2Vycy5maWx0ZXIoKHVzZXIpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSB1c2VyLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgd29yZHMuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAod29yZCkgPT4gd29yZC5sZW5ndGggPiAyICYmIGxldmVuc2h0ZWluKHdvcmQsIHRlcm0pIDw9IDEsXHJcbiAgICAgICAgICAgICAgICApIHx8IHVzZXIuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBieU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyRmVhdHVyZXNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsRmVhdHVyZXM6IEZlYXR1cmVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBsZXZlbEZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgem9uZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBsZXQgaGFzaHRhZ0ZpbHRlcmVkOiBGZWF0dXJlW10gPSBmZWF0dXJlcztcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb25zO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0TGVsZWwgPVxyXG4gICAgICAgICAgICAgICAgICAgIGdldEhpZ2hlc3RMZXZlbEZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5MRVZFTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGVzdExlbGVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuSEFTSFRBRykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGZWF0dXJlc0J5SGFzaHRhZ3NBbmRMb2NhbGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFnRmlsdGVyZWQuaW5jbHVkZXMoZmVhdHVyZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpXHJcbiAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRmVhdHVyZXMucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsRmVhdHVyZXM7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRmVhdHVyZXNGb3JUZXJtKGZlYXR1cmVzOiBGZWF0dXJlW10sIHRlcm06IHN0cmluZyk6IEZlYXR1cmVbXSB7XHJcbiAgICAgICAgLy8gZmlsdGVyIHRlcm0gaW4gdGl0bGVcclxuICAgICAgICBjb25zdCBieVRpdGxlID0gdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybShmZWF0dXJlcywgdGVybSk7XHJcbiAgICAgICAgLy8gYnkgY29tbWVudHNcclxuICAgICAgICBjb25zdCBieUNvbW1lbnQgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJPYmplY3RzRm9yVGVybShmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLCB0ZXJtKS5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgMCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoWy4uLmJ5VGl0bGUsIC4uLmJ5Q29tbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmplY3RzIEFycmF5IG9mIENvbW1lbnRzLCBUaWNrZXRzLCBGZWF0dXJlcy4gT2JsaWdhdG9yeSBwcm9wb3J0aWVzOiB0aXRsZSwgZGVzY3JpcHRpb25cclxuICAgICAqIEBwYXJhbSB0ZXJtIHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBmaWx0ZXJPYmplY3RzRm9yVGVybShvYmplY3RzOiBhbnlbXSwgdGVybTogc3RyaW5nKTogYW55W10ge1xyXG4gICAgICAgIC8vIGZpbHRlciB0ZXJtIGluIHRpdGxlXHJcbiAgICAgICAgY29uc3QgYnlUaXRsZSA9IG9iamVjdHMuZmlsdGVyKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gZmVhdHVyZS50aXRsZS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHdvcmRzLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHdvcmQpID0+IHdvcmQubGVuZ3RoID4gMiAmJiBsZXZlbnNodGVpbih3b3JkLCB0ZXJtKSA8PSAxLFxyXG4gICAgICAgICAgICAgICAgKSB8fCBmZWF0dXJlLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0ZXJtIHByZXNlbnQgaW4gZGVzY3JpcHRpb25cclxuICAgICAgICBjb25zdCBieURlc2NyaXB0aW9uID0gb2JqZWN0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5kZXNjcmlwdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChbLi4uYnlUaXRsZSwgLi4uYnlEZXNjcmlwdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlck1pc3Npb25CeVN0YXJ0VGltZURhdGVGb3JEYXRlUmFuZ2UoXHJcbiAgICAgICAgbWlzc2lvbnM6IGFueVtdLFxyXG4gICAgICAgIGRhdGVSYW5nZTogRGF0ZVtdLFxyXG4gICAgKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlVGltZSA9IG5ldyBEYXRlKG1pc3Npb24uc3RhcnREYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGVUaW1lID49IGRhdGVSYW5nZVswXSAmJiBzdGFydERhdGVUaW1lIDw9IGRhdGVSYW5nZVsxXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zOiBNaXNzaW9uW10sXHJcbiAgICAgICAgb2JqZWN0czogYW55W10sXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgY29uc3QgYWxsb3dlZFpvbmVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBtaXNzaW9uIG9mIGN1cnJlbnRTcGFjZU1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uLnpvbmVJRCkge1xyXG4gICAgICAgICAgICAgICAgYWxsb3dlZFpvbmVzLnB1c2gobWlzc2lvbi56b25lSUQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhbGxvd2VkWm9uZXMubGVuZ3RoID09PSBjdXJyZW50U3BhY2VNaXNzaW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGFsbFpvbmVGaWx0ZXJlZCA9IFtdO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIGFsbG93ZWRab25lcy5tYXAoYXN5bmMgKHpvbmVJRCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB6b25lSUQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBhbGxab25lRmlsdGVyZWQgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFsbFpvbmVGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFpvbmVGaWx0ZXJlZCxcclxuICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoYWxsWm9uZUZpbHRlcmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyRXF1aXBtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgZXF1aXBzOiBFcXVpcG1lbnRbXSxcclxuICAgICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgICAgICBjb25zdCBmaW5hbEVxdWlwczogRXF1aXBtZW50W10gPSBbXTtcclxuICAgICAgICBsZXQgZG9tRmlsdGVyZWQ6IEVxdWlwbWVudFtdID0gZXF1aXBzO1xyXG4gICAgICAgIGNvbnN0IHJvbGVGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgY29uc3QgbGV2ZWxGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogRXF1aXBtZW50W10gPSBlcXVpcHM7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9ucztcclxuICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudFNwYWNlTWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGVzdExlbGVsID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoaWdoZXN0Um9sZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyhjdXJyZW50U3BhY2VNaXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkhpZ2hlc3QgbGV2ZWw6IFwiLCBoaWdoZXN0TGVsZWwsIFwiLCBIaWdoZXN0IFJvbGU6IFwiLCBoaWdoZXN0Um9sZSlcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5ET01BSU4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvbWFpbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBjdXJyZW50U3BhY2VNaXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0uZG9tYWlucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbnMgPSBbLi4uZG9tYWlucywgLi4ubS5kb21haW5zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFsbERvbWFpbnNGaWx0ZXJlZCA9IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudERvbUZpbHRlcmVkID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyRXF1aXBtZW50c0J5RG9tYWluTGlzdChlcXVpcHMsIGRvbWFpbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxEb21haW5zRmlsdGVyZWQgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hbGxEb21haW5zRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50RG9tRmlsdGVyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUZpbHRlcmVkID0gYWxsRG9tYWluc0ZpbHRlcmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlJPTEUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgaGlnaGVzdFJvbGVNaXNzaW9uID0gY3VycmVudFNwYWNlTWlzc2lvbnMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIChtKSA9PiBtLnJvbGUgPT09IGhpZ2hlc3RSb2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkxFVkVMKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8sIGVxdWlwbWVudCBkb2VzIG5vdCBoYXZlIGxldmVsXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkID0gYXdhaXQgdGhpcy5hcHBseVpvbmVGaWx0ZXJGb3JNaXNzaW9ucyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdGljIG9mIGxldmVsRmlsdGVyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUZpbHRlcmVkLmluY2x1ZGVzKHRpYykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZUZpbHRlcmVkLmluY2x1ZGVzKHRpYykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKHRpYylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxFcXVpcHMucHVzaCh0aWMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmluYWxFcXVpcHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyTWVhc3VyZW1lbnRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBjb21tZW50czogQ29tbWVudFtdLFxyXG4gICAgKTogUHJvbWlzZTxDb21tZW50W10+IHtcclxuICAgICAgICBsZXQgZmluYWxNZWFzdXJlbWVudHM6IENvbW1lbnRbXSA9IFtdO1xyXG4gICAgICAgIGxldCB6b25lRmlsdGVyZWQ6IENvbW1lbnRbXSA9IGNvbW1lbnRzO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbnM7XHJcbiAgICAgICAgaWYgKG1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTcGFjZU1pc3Npb25zID0gbWlzc2lvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKG0pID0+IG0uc3BhY2VJRCA9PT0gc3BhY2VJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGFjZU1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID1cclxuICAgICAgICAgICAgICAgICAgICBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zKGN1cnJlbnRTcGFjZU1pc3Npb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShoaWdoZXN0Um9sZSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3BhY2VNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZpbmFsTWVhc3VyZW1lbnRzID0gem9uZUZpbHRlcmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbE1lYXN1cmVtZW50cztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpc09iamVjdEFsbG93ZWRGb3JVc2VySW5TcGFjZShcclxuICAgICAgICBvYmplY3Q6IE9iamVjdCxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihzcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzRm9yUm9sZShtaXNzaW9uLnJvbGUpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyID09PSBGaWx0ZXJUeXBlLkxFVkVMICYmXHJcbiAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBcImxldmVsXCIpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGV2ZWxGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyT2JqZWN0c0J5TGV2ZWwoXHJcbiAgICAgICAgICAgICAgICAgICAgW29iamVjdF0sXHJcbiAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5sZXZlbCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWxGaWx0ZXJlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gRmlsdGVyVHlwZS5aT05FKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB6b25lRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmFwcGx5Wm9uZUZpbHRlckZvck1pc3Npb25zKFxyXG4gICAgICAgICAgICAgICAgICAgIFttaXNzaW9uXSxcclxuICAgICAgICAgICAgICAgICAgICBbb2JqZWN0XSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoem9uZUZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJUZW1wbGF0ZXNGb3JUZXJtKG1pc3Npb25zOiBNaXNzaW9uW10sIHRlcm06IHN0cmluZyk6IE1pc3Npb25bXSB7XHJcbiAgICAgICAgLy8gdGVybSBwcmVzZW50IGluIGRlc2NyaXB0aW9uXHJcbiAgICAgICAgY29uc3QgYnlEZXNjcmlwdGlvbiA9IG1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG1pcykgPT5cclxuICAgICAgICAgICAgICAgIG1pcy5kZXNjcmlwdGlvbiAmJiBtaXMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGJ5IHVzZXIgbGFzdE5hbWUgd2hpY2ggaXMgdGhlIG5hbWUgb2YgdGhlIHZpc2l0OlxyXG4gICAgICAgIC8vIG1ldGFkYXRhOiBcIntcXFwiZmlyc3ROYW1lXFxcIjpcXFwiXFxcIixcXFwibGFzdE5hbWVcXFwiOlxcXCJWaXNpdGUgZHUgNSBKdWlsbGV0XFxcIn1cIlxyXG4gICAgICAgIGNvbnN0IHVzZXJQcm9maWxlcyA9IG1pc3Npb25zLm1hcCgobWlzKSA9PiBuZXcgUHJvZmlsZUVudGl0eShtaXMudXNlcikpO1xyXG4gICAgICAgIGNvbnN0IGJ5VXNlckxhc3RuYW1lID0gdGhpcy5maWx0ZXJVc2Vyc0ZvclRlcm0odXNlclByb2ZpbGVzLCB0ZXJtKTtcclxuICAgICAgICBjb25zdCB1c2VySWRzID0gbmV3IFNldChieVVzZXJMYXN0bmFtZS5tYXAoKHVzZXIpID0+IHVzZXIuaWQpKTtcclxuICAgICAgICBjb25zdCBtaXNzaW9uc0J5VXNlciA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PlxyXG4gICAgICAgICAgICB1c2VySWRzLmhhcyhtaXMudXNlcklEKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJVbmlxdWVBcnJheUJ5SUQoWy4uLmJ5RGVzY3JpcHRpb24sIC4uLm1pc3Npb25zQnlVc2VyXSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmlsdGVyT2JqZWN0c0ZvclN3ZWVwKFxyXG4gICAgICAgIG9iamVjdHM6IGFueVtdLFxyXG4gICAgICAgIG9iamVjdFR5cGU6IFBvaVR5cGUsXHJcbiAgICAgICAgc3dlZXA6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBsZXQgZmlsdGVyZWQgPSBbXTtcclxuICAgICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkVRVUlQTUVOVDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBvaXMgPVxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lzQnlNYXR0ZXJwb3J0U3dlZXBCeVR5cGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3ZWVwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcXVpcElEcyA9IG5ldyBTZXQocG9pcy5tYXAoKHBvaSkgPT4gcG9pLmVsZW1lbnRJRCkpO1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBvYmplY3RzLmZpbHRlcigob2JqZWN0KSA9PiBlcXVpcElEcy5oYXMob2JqZWN0LmlkKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRmVhdHVyZXNCeUhhc2h0YWdzQW5kTG9jYWxlKFxyXG4gICAgICAgIGN1cnJlbnRTcGFjZU1pc3Npb25zOiBNaXNzaW9uW10sXHJcbiAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcclxuICAgICk6IEZlYXR1cmVbXSB7XHJcbiAgICAgICAgY29uc3QgW2N1cnJlbnRNaXNzaW9uXSA9IGN1cnJlbnRTcGFjZU1pc3Npb25zO1xyXG4gICAgICAgIC8vIGZpbHRlciBieSBsb2NhbGVcclxuICAgICAgICBsZXQgZmlsdGVyZWRMb2NhbGUgPSBbLi4uZmVhdHVyZXNdO1xyXG4gICAgICAgIGlmIChjdXJyZW50TWlzc2lvbi5sb2NhbGUpIHtcclxuICAgICAgICAgICAgZmlsdGVyZWRMb2NhbGUgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmxvY2FsZSAmJiBmZWF0dXJlLmxvY2FsZSA9PT0gY3VycmVudE1pc3Npb24ubG9jYWxlLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmaWx0ZXIgYnkgaGFzaHRhZ3NcclxuICAgICAgICBpZiAoY3VycmVudE1pc3Npb24uaGFzaHRhZ3MgJiYgY3VycmVudE1pc3Npb24uaGFzaHRhZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEJ5SGFzaHRhZ3MgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZpbHRlcmVkTG9jYWxlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZlYXR1cmUuaGFzaHRhZ3MgfHwgZmVhdHVyZS5oYXNodGFncy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBGZWF0dXJlIHdpdGhvdXQgaGFzaHRhZyBpcyBhdmFpbGFibGUgZm9yIGV2ZXJ5Ym9keVxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQnlIYXNodGFncy5wdXNoKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TWlzc2lvbi5oYXNodGFncy5ldmVyeSgoaGFzaHRhZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5oYXNodGFncy5pbmNsdWRlcyhoYXNodGFnKSxcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEJ5SGFzaHRhZ3MucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRCeUhhc2h0YWdzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWRMb2NhbGU7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyRmVhdHVyZXNGb3JNaXNzaW9uV2l0aG91dFpvbmUoXHJcbiAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcclxuICAgICAgICBtaXNzaW9uOiBNaXNzaW9uLFxyXG4gICAgKTogRmVhdHVyZVtdIHtcclxuICAgICAgICBjb25zdCBmaW5hbEZlYXR1cmVzOiBGZWF0dXJlW10gPSBbXTtcclxuICAgICAgICBsZXQgbGV2ZWxGaWx0ZXJlZDogRmVhdHVyZVtdID0gZmVhdHVyZXM7XHJcbiAgICAgICAgbGV0IHpvbmVGaWx0ZXJlZDogRmVhdHVyZVtdID0gZmVhdHVyZXM7XHJcbiAgICAgICAgbGV0IGhhc2h0YWdGaWx0ZXJlZDogRmVhdHVyZVtdID0gZmVhdHVyZXM7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNGb3JSb2xlKG1pc3Npb24ucm9sZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLkxFVkVMKSB7XHJcbiAgICAgICAgICAgICAgICBsZXZlbEZpbHRlcmVkID0gdGhpcy5maWx0ZXJPYmplY3RzQnlMZXZlbChcclxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLmxldmVsLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiAoZmlsdGVyID09PSBGaWx0ZXJUeXBlLlpPTkUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHpvbmVGaWx0ZXJlZCA9IGF3YWl0IHRoaXMuYXBwbHlab25lRmlsdGVyRm9yTWlzc2lvbnMoXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY3VycmVudFNwYWNlTWlzc2lvbnMsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgIC8vICAgICApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IEZpbHRlclR5cGUuSEFTSFRBRykge1xyXG4gICAgICAgICAgICAgICAgaGFzaHRhZ0ZpbHRlcmVkID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckZlYXR1cmVzQnlIYXNodGFnc0FuZExvY2FsZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21pc3Npb25dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBsZXZlbEZpbHRlcmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGhhc2h0YWdGaWx0ZXJlZC5pbmNsdWRlcyhmZWF0dXJlKSAmJlxyXG4gICAgICAgICAgICAgICAgem9uZUZpbHRlcmVkLmluY2x1ZGVzKGZlYXR1cmUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgZmluYWxGZWF0dXJlcy5wdXNoKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaW5hbEZlYXR1cmVzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -4,7 +4,7 @@ import { EventStatus, EventType, ProfileEntity } from "../types.service";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./models/event.service";
6
6
  import * as i2 from "./models/mission.service";
7
- class InterventionService {
7
+ export class InterventionService {
8
8
  eventService;
9
9
  missionService;
10
10
  interventionEventTypes = [
@@ -226,14 +226,13 @@ class InterventionService {
226
226
  }
227
227
  return date;
228
228
  }
229
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterventionService, deps: [{ token: i1.EventService }, { token: i2.MissionService }], target: i0.ɵɵFactoryTarget.Injectable });
230
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterventionService, providedIn: "root" });
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InterventionService, deps: [{ token: i1.EventService }, { token: i2.MissionService }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InterventionService, providedIn: "root" });
231
231
  }
232
- export { InterventionService };
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterventionService, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InterventionService, decorators: [{
234
233
  type: Injectable,
235
234
  args: [{
236
235
  providedIn: "root",
237
236
  }]
238
- }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MissionService }]; } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2ZW50aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ludGVydmVudGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxXQUFXLEVBQUUsU0FBUyxFQUFlLGFBQWEsRUFBK0IsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUkxSCxNQUdhLG1CQUFtQjtJQVNoQjtJQUNBO0lBVFosc0JBQXNCLEdBQUc7UUFDckIsU0FBUyxDQUFDLDRCQUE0QjtRQUN0QyxTQUFTLENBQUMsd0JBQXdCO1FBQ2xDLFNBQVMsQ0FBQyxTQUFTO1FBQ25CLFNBQVMsQ0FBQyx3QkFBd0I7S0FDckMsQ0FBQztJQUVGLFlBQ1ksWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3ZDLENBQUM7SUFFSixLQUFLLENBQUMsZ0NBQWdDLENBQ2xDLE1BQWM7UUFFZCxNQUFNLE1BQU0sR0FDUixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsbUNBQW1DLENBQ3ZELE1BQU0sQ0FBQyxFQUFFLENBQ1osQ0FBQztRQUNOLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMzQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDcEQsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQ3BDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyx3QkFBd0IsQ0FDakUs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TUFBTSxDQUFDLGlCQUFpQixDQUFDO2dCQUM3QyxNQUFNO2FBQ1Q7U0FDSjtRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztJQUVELDRCQUE0QixDQUFDLE1BQWU7UUFDeEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0UsS0FBSyxNQUFNLE1BQU0sSUFBSSxZQUFZLEVBQUU7WUFDL0IsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDOUIsTUFBTTthQUNUO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO3dHQXBUUSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZoQixNQUFNOztTQUVULG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEV2ZW50LCBFdmVudFN0YXR1cywgRXZlbnRUeXBlLCBQcmVzdGF0YWlyZSwgUHJvZmlsZUVudGl0eSwgUmVxdWVzdEludGVydmVudGlvbiwgVGlja2V0IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2V2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVydmVudGlvblNlcnZpY2Uge1xyXG4gICAgaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcyA9IFtcclxuICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OLFxyXG4gICAgICAgIEV2ZW50VHlwZS5SRVBPUlRJTkcsXHJcbiAgICAgICAgRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBhc3luYyBnZXRSZXF1ZXN0SW50ZXJ2ZW50aW9uRnJvbVRpY2tldChcclxuICAgICAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgICk6IFByb21pc2U8UmVxdWVzdEludGVydmVudGlvbj4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXZlbnRTZXJ2aWNlLmdldEV2ZW50c0J5VGlja2V0SURTb3J0ZWRCeURhdGVEZXNjKFxyXG4gICAgICAgICAgICAgICAgdGlja2V0LmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlbGF0ZWRFdmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudF8pID0+XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcy5pbmNsdWRlcyhldmVudF8udHlwZSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxSZXF1ZXN0cyA9IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PiBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChhbGxSZXF1ZXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnQgPSBhbGxSZXF1ZXN0c1swXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2VkUmVxdWVzdCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50VG9SZXF1ZXN0SW50ZXJ2ZW50aW9uKG1vc3RSZWNlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvc2VkUmVxdWVzdC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNBTkNFTExFRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VkUmVxdWVzdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0ID0gcmVsYXRlZEV2ZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50Lmdyb3VwID09PSBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIGlmIChldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGJhY2sgY29tcGF0aWJpbGl0eVxyXG4gICAgICAgICAgICAgICAgZXZlbnRzRm9yTW9zdFJlY2VudFJlcXVlc3QgPSByZWxhdGVkRXZlbnRzO1xyXG4gICAgICAgICAgICAgICAgLy8gZ2V0IGludGVydmVudGlvblxyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGVkRXZlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0IGR1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QucmVhbER1cmF0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldER1cmF0aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEV2ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICBldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxEdXJhdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREdXJhdGlvbkZvclJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5lc3RpbWF0ZVN0YXJ0RGF0ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNb3N0UmVjZW50RXN0aW1hdGVTdGFydERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxTdGFydERhdGUgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFYXJsaWVzdFJlYWxTdGFydERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1vc3RSZWNlbnRFc3RpbWF0ZUVuZERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxFbmREYXRlID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGF0ZXN0UmVhbEVuZERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5pbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIHJldHVybiBjb21wb3NlZFJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvc2VJbnRlcnZlbnRpb25Gb3JSZXF1ZXN0KFxyXG4gICAgICAgIHJlbGF0ZWRFdmVudHM6IEV2ZW50W10sXHJcbiAgICAgICAgcmVxdWVzdElEOiBzdHJpbmcsXHJcbiAgICApOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2ZW50aW9ucyA9IHJlcXVlc3RJRFxyXG4gICAgICAgICAgICA/IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb25zWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdEludGVydmVudGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UHJlc3RhdGFpcmVGb3JUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFByZXN0YXRhaXJlPiB7XHJcbiAgICAgICAgaWYgKHRpY2tldC5hc3NpZ25lZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRBZmZlY3RhdGlvbnMgPSB0aWNrZXQuYXNzaWduZWVzLml0ZW1zLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uSURwcmVzdGEgPSBzb3J0ZWRBZmZlY3RhdGlvbnNbMF0ubWlzc2lvbklEO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGFNaXNzaW9uID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbklEcHJlc3RhLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyUHJlc3RhdGFpcmUgPSBuZXcgUHJvZmlsZUVudGl0eShwcmVzdGFNaXNzaW9uLnVzZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGF0YWlyZSA9IHtcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjogcHJlc3RhTWlzc2lvbi5vcmdhbmlzYXRpb24sXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uOiBwcmVzdGFNaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogdXNlclByZXN0YXRhaXJlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlclByZXN0YXRhaXJlLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4gcHJlc3RhdGFpcmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVhcmxpZXN0UmVhbFN0YXJ0RGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhpbnRlcnZlbnRpb25zKTtcclxuICAgICAgICBpZiAoc29ydGVkSW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2Ygc29ydGVkSW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlYWxTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gZXZlbnQucmVhbFN0YXJ0RGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYXRlc3RSZWFsRW5kRGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoaW50ZXJ2ZW50aW9ucyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEludGVydmVudGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHNvcnRlZEludGVydmVudGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5yZWFsRW5kRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudC5yZWFsRW5kRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREdXJhdGlvbkZvclJlcXVlc3QoZXZlbnRzOiBFdmVudFtdLCByZXF1ZXN0SUQ6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gMDsgLy8gaW4gbWlsaXNlY29uZHNcclxuICAgICAgICBjb25zdCBpbnRlcnZlbnRpb25zID0gcmVxdWVzdElEXHJcbiAgICAgICAgICAgID8gZXZlbnRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGV2ZW50XykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgIChldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTikgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy5ncm91cCA9PT0gcmVxdWVzdElELFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5DT05UUkFDVFVBTF9JTlRFUlZFTlRJT04gfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgaW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudGltZVNwZW50KSB7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiArPSBldmVudC50aW1lU3BlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludGVydmVudGlvbihldmVudHMpOiBFdmVudCB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbnRlcnZlbnRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdEludGVydmVudGlvbiA9IGludGVydmVudGlvbnNbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBsYXN0SW50ZXJ2ZW50aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBldmVudFRvUmVxdWVzdEludGVydmVudGlvbihldmVudDogRXZlbnQpOiBSZXF1ZXN0SW50ZXJ2ZW50aW9uIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICBpZDogZXZlbnQuZ3JvdXAgPT09IFwiZGVmYXVsdFwiID8gZXZlbnQuaWQgOiBldmVudC5ncm91cCxcclxuICAgICAgICAgICAgcmVhbEVuZERhdGU6IGV2ZW50LnJlYWxFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsU3RhcnREYXRlOiBldmVudC5yZWFsU3RhcnREYXRlLFxyXG4gICAgICAgICAgICBlc3RpbWF0ZVN0YXJ0RGF0ZTogZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXHJcbiAgICAgICAgICAgIGVzdGltYXRlRW5kRGF0ZTogZXZlbnQuZXN0aW1hdGVFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsRHVyYXRpb246IGV2ZW50LnRpbWVTcGVudCxcclxuICAgICAgICAgICAgdHlwZTogZXZlbnQudHlwZSxcclxuICAgICAgICAgICAgc3RhdHVzOiBldmVudC5zdGF0dXMsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogZXZlbnQuY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IGV2ZW50LnVwZGF0ZWRBdCxcclxuICAgICAgICAgICAgdGlja2V0SUQ6IGV2ZW50LnRpY2tldElELFxyXG4gICAgICAgIH0gYXMgUmVxdWVzdEludGVydmVudGlvbjtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNb3N0UmVjZW50VGltZVNwZW50KGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCB0aW1lU3BlbnQgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnRfIG9mIHNvcnRlZEV2ZW50cykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRfLnRpbWVTcGVudCkge1xyXG4gICAgICAgICAgICAgICAgdGltZVNwZW50ID0gZXZlbnRfLnRpbWVTcGVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aW1lU3BlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcclxuICAgICAgICBjb25zdCBldmVudHNBZnRlcjogRXZlbnRbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnRlcnZlbnRpb24gPSB0aGlzLmdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHMpO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZXZlbnRTZXJ2aWNlLnNvcnRFdmVudHNCeUNyZWF0ZWRBdERhdGVEZXNjKGV2ZW50cyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEV2ZW50cy5sZW5ndGggPiAwICYmIGN1cnJlbnRJbnRlcnZlbnRpb24pIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBldmVudF8gb2Ygc29ydGVkRXZlbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudHNBZnRlci5wdXNoKGV2ZW50Xyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRfLmlkID09PSBjdXJyZW50SW50ZXJ2ZW50aW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50c0FmdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHM6IEV2ZW50W10pOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBsZXQgY3VycmVudEludGVydmVudGlvbjtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNSRUFURUQpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZlbnRpb24gPSBldmVudF87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgIT09IEV2ZW50U3RhdHVzLkNSRUFURUQgJiYgY3VycmVudEludGVydmVudGlvbikge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRJbnRlcnZlbnRpb247XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlU3RhcnREYXRlKGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCBlc3RpbWF0ZVN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5nZXRBbGxFdmVudHNBZnRlckxhc3RDcmVhdGVkKGV2ZW50cyk7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZVN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZXN0aW1hdGVTdGFydERhdGUgPSBldmVudF8uZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlRW5kRGF0ZShldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZUVuZERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8uZXN0aW1hdGVFbmREYXRlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0TW9zdFJlY2VudFJlYWxTdGFydERhdGUoZXZlbnRzOiBFdmVudFtdKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAvLyAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgLy8gICAgIC8vIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgIC8vICAgICBjb25zdCBzb3J0ZWRFdmVudHMgPSB0aGlzLmdldEFsbEV2ZW50c0FmdGVyTGFzdENyZWF0ZWQoZXZlbnRzKTtcclxuICAgIC8vICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgaWYgKGV2ZW50Xy5yZWFsU3RhcnREYXRlKSB7XHJcbiAgICAvLyAgICAgICAgICAgICBkYXRlID0gZXZlbnRfLnJlYWxTdGFydERhdGU7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBnZXRNb3N0UmVjZW50UmVhbFN0YXJ0RGF0ZUdsb2JhbChldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgIC8vICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAvLyAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5zb3J0RXZlbnRzQnlDcmVhdGVkQXREYXRlRGVzYyhldmVudHMpO1xyXG4gICAgLy8gICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgLy8gICAgIGlmIChzb3J0ZWRFdmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgICAgIGlmIChldmVudF8ucmVhbFN0YXJ0RGF0ZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8ucmVhbFN0YXJ0RGF0ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxufVxyXG4iXX0=
237
+ }], ctorParameters: () => [{ type: i1.EventService }, { type: i2.MissionService }] });
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2ZW50aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ludGVydmVudGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxXQUFXLEVBQUUsU0FBUyxFQUFlLGFBQWEsRUFBK0IsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQU8xSCxNQUFNLE9BQU8sbUJBQW1CO0lBU2hCO0lBQ0E7SUFUWixzQkFBc0IsR0FBRztRQUNyQixTQUFTLENBQUMsNEJBQTRCO1FBQ3RDLFNBQVMsQ0FBQyx3QkFBd0I7UUFDbEMsU0FBUyxDQUFDLFNBQVM7UUFDbkIsU0FBUyxDQUFDLHdCQUF3QjtLQUNyQyxDQUFDO0lBRUYsWUFDWSxZQUEwQixFQUMxQixjQUE4QjtRQUQ5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkMsQ0FBQztJQUVKLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FDbEMsTUFBYztRQUVkLE1BQU0sTUFBTSxHQUNSLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQ0FBbUMsQ0FDdkQsTUFBTSxDQUFDLEVBQUUsQ0FDWixDQUFDO1FBQ04sTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzNDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUNwRCxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLHdCQUF3QixD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Q0QsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsOEJBQThCLENBQUMsTUFBZTtRQUMxQyxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM3QixrRUFBa0U7UUFDbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RSxLQUFLLE1BQU0sTUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2hDLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0MsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsNEJBQTRCLENBQUMsTUFBZTtRQUN4QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RSxLQUFLLE1BQU0sTUFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2hDLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzt3R0FwVFEsbUJBQW1COzRHQUFuQixtQkFBbUIsY0FGaEIsTUFBTTs7NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEV2ZW50LCBFdmVudFN0YXR1cywgRXZlbnRUeXBlLCBQcmVzdGF0YWlyZSwgUHJvZmlsZUVudGl0eSwgUmVxdWVzdEludGVydmVudGlvbiwgVGlja2V0IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2V2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVydmVudGlvblNlcnZpY2Uge1xyXG4gICAgaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcyA9IFtcclxuICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OLFxyXG4gICAgICAgIEV2ZW50VHlwZS5SRVBPUlRJTkcsXHJcbiAgICAgICAgRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBhc3luYyBnZXRSZXF1ZXN0SW50ZXJ2ZW50aW9uRnJvbVRpY2tldChcclxuICAgICAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgICk6IFByb21pc2U8UmVxdWVzdEludGVydmVudGlvbj4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXZlbnRTZXJ2aWNlLmdldEV2ZW50c0J5VGlja2V0SURTb3J0ZWRCeURhdGVEZXNjKFxyXG4gICAgICAgICAgICAgICAgdGlja2V0LmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlbGF0ZWRFdmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudF8pID0+XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcy5pbmNsdWRlcyhldmVudF8udHlwZSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxSZXF1ZXN0cyA9IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PiBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChhbGxSZXF1ZXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnQgPSBhbGxSZXF1ZXN0c1swXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2VkUmVxdWVzdCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50VG9SZXF1ZXN0SW50ZXJ2ZW50aW9uKG1vc3RSZWNlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvc2VkUmVxdWVzdC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNBTkNFTExFRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VkUmVxdWVzdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0ID0gcmVsYXRlZEV2ZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50Lmdyb3VwID09PSBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIGlmIChldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGJhY2sgY29tcGF0aWJpbGl0eVxyXG4gICAgICAgICAgICAgICAgZXZlbnRzRm9yTW9zdFJlY2VudFJlcXVlc3QgPSByZWxhdGVkRXZlbnRzO1xyXG4gICAgICAgICAgICAgICAgLy8gZ2V0IGludGVydmVudGlvblxyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGVkRXZlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0IGR1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QucmVhbER1cmF0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldER1cmF0aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEV2ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICBldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxEdXJhdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREdXJhdGlvbkZvclJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5lc3RpbWF0ZVN0YXJ0RGF0ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNb3N0UmVjZW50RXN0aW1hdGVTdGFydERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxTdGFydERhdGUgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFYXJsaWVzdFJlYWxTdGFydERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1vc3RSZWNlbnRFc3RpbWF0ZUVuZERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxFbmREYXRlID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGF0ZXN0UmVhbEVuZERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5pbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIHJldHVybiBjb21wb3NlZFJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvc2VJbnRlcnZlbnRpb25Gb3JSZXF1ZXN0KFxyXG4gICAgICAgIHJlbGF0ZWRFdmVudHM6IEV2ZW50W10sXHJcbiAgICAgICAgcmVxdWVzdElEOiBzdHJpbmcsXHJcbiAgICApOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2ZW50aW9ucyA9IHJlcXVlc3RJRFxyXG4gICAgICAgICAgICA/IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb25zWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdEludGVydmVudGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UHJlc3RhdGFpcmVGb3JUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFByZXN0YXRhaXJlPiB7XHJcbiAgICAgICAgaWYgKHRpY2tldC5hc3NpZ25lZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRBZmZlY3RhdGlvbnMgPSB0aWNrZXQuYXNzaWduZWVzLml0ZW1zLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uSURwcmVzdGEgPSBzb3J0ZWRBZmZlY3RhdGlvbnNbMF0ubWlzc2lvbklEO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGFNaXNzaW9uID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbklEcHJlc3RhLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyUHJlc3RhdGFpcmUgPSBuZXcgUHJvZmlsZUVudGl0eShwcmVzdGFNaXNzaW9uLnVzZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGF0YWlyZSA9IHtcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjogcHJlc3RhTWlzc2lvbi5vcmdhbmlzYXRpb24sXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uOiBwcmVzdGFNaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogdXNlclByZXN0YXRhaXJlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlclByZXN0YXRhaXJlLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4gcHJlc3RhdGFpcmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVhcmxpZXN0UmVhbFN0YXJ0RGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhpbnRlcnZlbnRpb25zKTtcclxuICAgICAgICBpZiAoc29ydGVkSW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2Ygc29ydGVkSW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlYWxTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gZXZlbnQucmVhbFN0YXJ0RGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYXRlc3RSZWFsRW5kRGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoaW50ZXJ2ZW50aW9ucyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEludGVydmVudGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHNvcnRlZEludGVydmVudGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5yZWFsRW5kRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudC5yZWFsRW5kRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREdXJhdGlvbkZvclJlcXVlc3QoZXZlbnRzOiBFdmVudFtdLCByZXF1ZXN0SUQ6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gMDsgLy8gaW4gbWlsaXNlY29uZHNcclxuICAgICAgICBjb25zdCBpbnRlcnZlbnRpb25zID0gcmVxdWVzdElEXHJcbiAgICAgICAgICAgID8gZXZlbnRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGV2ZW50XykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgIChldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTikgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy5ncm91cCA9PT0gcmVxdWVzdElELFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5DT05UUkFDVFVBTF9JTlRFUlZFTlRJT04gfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgaW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudGltZVNwZW50KSB7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiArPSBldmVudC50aW1lU3BlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludGVydmVudGlvbihldmVudHMpOiBFdmVudCB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbnRlcnZlbnRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdEludGVydmVudGlvbiA9IGludGVydmVudGlvbnNbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBsYXN0SW50ZXJ2ZW50aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBldmVudFRvUmVxdWVzdEludGVydmVudGlvbihldmVudDogRXZlbnQpOiBSZXF1ZXN0SW50ZXJ2ZW50aW9uIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICBpZDogZXZlbnQuZ3JvdXAgPT09IFwiZGVmYXVsdFwiID8gZXZlbnQuaWQgOiBldmVudC5ncm91cCxcclxuICAgICAgICAgICAgcmVhbEVuZERhdGU6IGV2ZW50LnJlYWxFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsU3RhcnREYXRlOiBldmVudC5yZWFsU3RhcnREYXRlLFxyXG4gICAgICAgICAgICBlc3RpbWF0ZVN0YXJ0RGF0ZTogZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXHJcbiAgICAgICAgICAgIGVzdGltYXRlRW5kRGF0ZTogZXZlbnQuZXN0aW1hdGVFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsRHVyYXRpb246IGV2ZW50LnRpbWVTcGVudCxcclxuICAgICAgICAgICAgdHlwZTogZXZlbnQudHlwZSxcclxuICAgICAgICAgICAgc3RhdHVzOiBldmVudC5zdGF0dXMsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogZXZlbnQuY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IGV2ZW50LnVwZGF0ZWRBdCxcclxuICAgICAgICAgICAgdGlja2V0SUQ6IGV2ZW50LnRpY2tldElELFxyXG4gICAgICAgIH0gYXMgUmVxdWVzdEludGVydmVudGlvbjtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNb3N0UmVjZW50VGltZVNwZW50KGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCB0aW1lU3BlbnQgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnRfIG9mIHNvcnRlZEV2ZW50cykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRfLnRpbWVTcGVudCkge1xyXG4gICAgICAgICAgICAgICAgdGltZVNwZW50ID0gZXZlbnRfLnRpbWVTcGVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aW1lU3BlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcclxuICAgICAgICBjb25zdCBldmVudHNBZnRlcjogRXZlbnRbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnRlcnZlbnRpb24gPSB0aGlzLmdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHMpO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZXZlbnRTZXJ2aWNlLnNvcnRFdmVudHNCeUNyZWF0ZWRBdERhdGVEZXNjKGV2ZW50cyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEV2ZW50cy5sZW5ndGggPiAwICYmIGN1cnJlbnRJbnRlcnZlbnRpb24pIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBldmVudF8gb2Ygc29ydGVkRXZlbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudHNBZnRlci5wdXNoKGV2ZW50Xyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRfLmlkID09PSBjdXJyZW50SW50ZXJ2ZW50aW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50c0FmdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHM6IEV2ZW50W10pOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBsZXQgY3VycmVudEludGVydmVudGlvbjtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNSRUFURUQpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZlbnRpb24gPSBldmVudF87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgIT09IEV2ZW50U3RhdHVzLkNSRUFURUQgJiYgY3VycmVudEludGVydmVudGlvbikge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRJbnRlcnZlbnRpb247XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlU3RhcnREYXRlKGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCBlc3RpbWF0ZVN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5nZXRBbGxFdmVudHNBZnRlckxhc3RDcmVhdGVkKGV2ZW50cyk7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZVN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZXN0aW1hdGVTdGFydERhdGUgPSBldmVudF8uZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlRW5kRGF0ZShldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZUVuZERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8uZXN0aW1hdGVFbmREYXRlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0TW9zdFJlY2VudFJlYWxTdGFydERhdGUoZXZlbnRzOiBFdmVudFtdKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAvLyAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgLy8gICAgIC8vIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgIC8vICAgICBjb25zdCBzb3J0ZWRFdmVudHMgPSB0aGlzLmdldEFsbEV2ZW50c0FmdGVyTGFzdENyZWF0ZWQoZXZlbnRzKTtcclxuICAgIC8vICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgaWYgKGV2ZW50Xy5yZWFsU3RhcnREYXRlKSB7XHJcbiAgICAvLyAgICAgICAgICAgICBkYXRlID0gZXZlbnRfLnJlYWxTdGFydERhdGU7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBnZXRNb3N0UmVjZW50UmVhbFN0YXJ0RGF0ZUdsb2JhbChldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgIC8vICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAvLyAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5zb3J0RXZlbnRzQnlDcmVhdGVkQXREYXRlRGVzYyhldmVudHMpO1xyXG4gICAgLy8gICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgLy8gICAgIGlmIChzb3J0ZWRFdmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgICAgIGlmIChldmVudF8ucmVhbFN0YXJ0RGF0ZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8ucmVhbFN0YXJ0RGF0ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxufVxyXG4iXX0=
@@ -2,7 +2,7 @@ import { Injectable } from "@angular/core";
2
2
  import { Subject } from "rxjs";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@ngx-translate/core";
5
- class LocaleService {
5
+ export class LocaleService {
6
6
  translate;
7
7
  currentLocale = "en";
8
8
  // Observable string sources
@@ -29,19 +29,18 @@ class LocaleService {
29
29
  this.translate.use(`_${lang}`); // because files are "_en.json"
30
30
  }
31
31
  getLocale() {
32
- const lang = this.translate.currentLang
33
- ? this.translate.currentLang
34
- : this.translate.defaultLang;
32
+ const lang = this.translate.getCurrentLang()
33
+ ? this.translate.getCurrentLang()
34
+ : this.translate.getFallbackLang();
35
35
  return lang.slice(1);
36
36
  }
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocaleService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
38
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocaleService, providedIn: "root" });
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocaleService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocaleService, providedIn: "root" });
39
39
  }
40
- export { LocaleService };
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocaleService, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocaleService, decorators: [{
42
41
  type: Injectable,
43
42
  args: [{
44
43
  providedIn: "root",
45
44
  }]
46
- }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRS9CLE1BR2EsYUFBYTtJQVFIO0lBUG5CLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFckIsNEJBQTRCO0lBQ3BCLGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXhDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWpELFlBQW1CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUcsQ0FBQztJQUVsRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLElBQVk7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQywrQkFBK0I7SUFDbkUsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVc7WUFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7d0dBbENRLGFBQWE7NEdBQWIsYUFBYSxjQUZWLE1BQU07O1NBRVQsYUFBYTs0RkFBYixhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsZVNlcnZpY2Uge1xyXG4gICAgY3VycmVudExvY2FsZSA9IFwiZW5cIjtcclxuXHJcbiAgICAvLyBPYnNlcnZhYmxlIHN0cmluZyBzb3VyY2VzXHJcbiAgICBwcml2YXRlIHNob3dNb2RhbFNvdXJjZSA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgc2hvd01vZGFsJCA9IHRoaXMuc2hvd01vZGFsU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XHJcblxyXG4gICAgbW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWxTb3VyY2UubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbG9hZCB0aGUgYXBwIHRvIGFub3RoZXIgbGFuZ3VhZ2UuXHJcbiAgICAgKlxyXG4gICAgICogTmF2aWdhdGlvbiBpcyByZXF1aXJlZCBiZWNhdXNlIG9mIHRoZSB3YXkgYW5ndWxhciBsb2NhbGl6ZXM6IGxvY2FsZXMgYXJlXHJcbiAgICAgKiBjb21wbGV0ZWx5IGRpZmZlcmVudCBjb21waWxhdGlvbiBidW5kbGVzLCBpbiBzZXBhcmF0ZSBkaXJlY3RvcmllcywgaGVuY2VcclxuICAgICAqIHlvdSBuZWVkIHRvIHJlbG9hZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbGFuZ1xyXG4gICAgICovXHJcbiAgICBjaGFuZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTd2l0Y2hpbmcgdG9cIiwgbGFuZyk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYWxlID0gbGFuZztcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UoYF8ke2xhbmd9YCk7IC8vIGJlY2F1c2UgZmlsZXMgYXJlIFwiX2VuLmpzb25cIlxyXG4gICAgfVxyXG5cclxuICAgIGdldExvY2FsZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nXHJcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGUuZGVmYXVsdExhbmc7XHJcbiAgICAgICAgcmV0dXJuIGxhbmcuc2xpY2UoMSk7XHJcbiAgICB9XHJcbn1cclxuIl19
45
+ }], ctorParameters: () => [{ type: i1.TranslateService }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSy9CLE1BQU0sT0FBTyxhQUFhO0lBUUg7SUFQbkIsYUFBYSxHQUFHLElBQUksQ0FBQztJQUVyQiw0QkFBNEI7SUFDcEIsZUFBZSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFFeEMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFakQsWUFBbUIsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRWxELEtBQUs7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtJQUNuRSxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFO1lBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRTtZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQzt3R0FsQ1EsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMb2NhbGUgPSBcImVuXCI7XHJcblxyXG4gICAgLy8gT2JzZXJ2YWJsZSBzdHJpbmcgc291cmNlc1xyXG4gICAgcHJpdmF0ZSBzaG93TW9kYWxTb3VyY2UgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHNob3dNb2RhbCQgPSB0aGlzLnNob3dNb2RhbFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxyXG5cclxuICAgIG1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd01vZGFsU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWQgdGhlIGFwcCB0byBhbm90aGVyIGxhbmd1YWdlLlxyXG4gICAgICpcclxuICAgICAqIE5hdmlnYXRpb24gaXMgcmVxdWlyZWQgYmVjYXVzZSBvZiB0aGUgd2F5IGFuZ3VsYXIgbG9jYWxpemVzOiBsb2NhbGVzIGFyZVxyXG4gICAgICogY29tcGxldGVseSBkaWZmZXJlbnQgY29tcGlsYXRpb24gYnVuZGxlcywgaW4gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIGhlbmNlXHJcbiAgICAgKiB5b3UgbmVlZCB0byByZWxvYWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGxhbmdcclxuICAgICAqL1xyXG4gICAgY2hhbmdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoaW5nIHRvXCIsIGxhbmcpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExvY2FsZSA9IGxhbmc7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGBfJHtsYW5nfWApOyAvLyBiZWNhdXNlIGZpbGVzIGFyZSBcIl9lbi5qc29uXCJcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy50cmFuc2xhdGUuZ2V0Q3VycmVudExhbmcoKVxyXG4gICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKClcclxuICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZS5nZXRGYWxsYmFja0xhbmcoKTtcclxuICAgICAgICByZXR1cm4gbGFuZy5zbGljZSgxKTtcclxuICAgIH1cclxufVxyXG4iXX0=