@openziti/ziti-console-lib 0.8.0 → 0.8.2

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 (105) hide show
  1. package/esm2022/lib/features/card-list/card-list.component.mjs +12 -11
  2. package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +13 -3
  3. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +1 -1
  4. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +13 -3
  5. package/esm2022/lib/features/login/login-dialog.component.mjs +123 -0
  6. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +2 -2
  7. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +3 -15
  8. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +4 -3
  9. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +3 -15
  10. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +2 -2
  11. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +2 -2
  12. package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +3 -15
  13. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -2
  14. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +3 -15
  15. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +2 -2
  16. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +3 -15
  17. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +2 -2
  18. package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +3 -15
  19. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +24 -4
  20. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +3 -15
  21. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +24 -4
  22. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +2 -2
  23. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +3 -15
  24. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +7 -7
  25. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +2 -2
  26. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +3 -15
  27. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +2 -2
  28. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +3 -15
  29. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +2 -2
  30. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +1 -4
  31. package/esm2022/lib/models/jwt-signer.mjs +2 -1
  32. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +6 -3
  33. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -1
  34. package/esm2022/lib/services/login-service.class.mjs +5 -1
  35. package/esm2022/lib/services/node-data.service.mjs +8 -13
  36. package/esm2022/lib/services/validation.service.mjs +2 -2
  37. package/esm2022/lib/services/ziti-data.service.mjs +8 -2
  38. package/esm2022/lib/shared/list-page-service.class.mjs +4 -4
  39. package/esm2022/lib/version.mjs +2 -2
  40. package/esm2022/lib/ziti-console-lib.module.mjs +10 -5
  41. package/esm2022/public-api.mjs +2 -1
  42. package/fesm2022/openziti-ziti-console-lib.mjs +255 -199
  43. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  44. package/lib/features/card-list/card-list.component.d.ts +3 -2
  45. package/lib/features/card-list/card-list.component.d.ts.map +1 -1
  46. package/lib/features/dynamic-widgets/password/password-input.component.d.ts +3 -1
  47. package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +1 -1
  48. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +3 -1
  49. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +1 -1
  50. package/lib/features/login/login-dialog.component.d.ts +29 -0
  51. package/lib/features/login/login-dialog.component.d.ts.map +1 -0
  52. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +1 -1
  53. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -1
  54. package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +1 -1
  55. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +1 -1
  56. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +1 -1
  57. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts.map +1 -1
  58. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +1 -1
  59. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +1 -1
  60. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -1
  61. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  62. package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +1 -1
  63. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +1 -1
  64. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  65. package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +1 -1
  66. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +1 -1
  67. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  68. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +1 -1
  69. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +1 -1
  70. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  71. package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +1 -1
  72. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +4 -1
  73. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
  74. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts.map +1 -1
  75. package/lib/features/projectable-forms/projectable-form.class.d.ts +5 -1
  76. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
  77. package/lib/features/projectable-forms/service/service-form.component.d.ts +1 -1
  78. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  79. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  80. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +3 -2
  81. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  82. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +1 -1
  83. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
  84. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +1 -1
  85. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +1 -1
  86. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  87. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
  88. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +1 -1
  89. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -1
  90. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
  91. package/lib/models/jwt-signer.d.ts +1 -0
  92. package/lib/models/jwt-signer.d.ts.map +1 -1
  93. package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts.map +1 -1
  94. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  95. package/lib/services/login-service.class.d.ts +6 -2
  96. package/lib/services/login-service.class.d.ts.map +1 -1
  97. package/lib/services/node-data.service.d.ts +1 -0
  98. package/lib/services/node-data.service.d.ts.map +1 -1
  99. package/lib/services/ziti-data.service.d.ts +3 -0
  100. package/lib/services/ziti-data.service.d.ts.map +1 -1
  101. package/lib/ziti-console-lib.module.d.ts +19 -18
  102. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  103. package/package.json +1 -1
  104. package/public-api.d.ts +1 -0
  105. package/public-api.d.ts.map +1 -1
@@ -25,7 +25,7 @@ import * as i14 from "../../../services/settings.service";
25
25
  import * as i15 from "../../../services/ziti-data.service";
26
26
  class ServiceEdgeRouterPolicyFormComponent extends ProjectableForm {
27
27
  constructor(settingsService, svc, zitiService, growlerService, extService, router, route, location) {
28
- super(growlerService, extService, zitiService, router, route, location);
28
+ super(growlerService, extService, zitiService, router, route, location, settingsService);
29
29
  this.settingsService = settingsService;
30
30
  this.svc = svc;
31
31
  this.zitiService = zitiService;
@@ -273,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
273
273
  }], close: [{
274
274
  type: Output
275
275
  }] } });
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3kvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3kvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUFxQyw0Q0FBNEMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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SixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUk7U0FDMUIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdELElBQUksT0FBTyxDQUFDLElBQUk7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSztJQUNMLENBQUM7K0dBOVFVLG9DQUFvQyxrQkFvQm5DLGdCQUFnQiwrREFFaEIsaUJBQWlCLDJDQUVqQiw0Q0FBNEM7bUdBeEI3QyxvQ0FBb0MsNkhBUHBDO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLFFBQVEsRUFBRSxFQUFFO2FBQ2I7U0FDRixzRUNwQ0gsbTJPQTJIeUY7O1NEckY1RSxvQ0FBb0M7NEZBQXBDLG9DQUFvQztrQkFYaEQsU0FBUzsrQkFDRSxxQ0FBcUMsYUFHcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLFlBQVk7NEJBQ3JCLFFBQVEsRUFBRSxFQUFFO3lCQUNiO3FCQUNGOzswQkFzQkksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsNENBQTRDO3FIQXZCL0MsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9qZWN0YWJsZUZvcm19IGZyb20gXCIuLi9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtpc0VtcHR5LCBjbG9uZURlZXAsIGludmVydH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtTZXJ2aWNlRWRnZVJvdXRlclBvbGljeUZvcm1TZXJ2aWNlLCBTRVJWSUNFX0VER0VfUk9VVEVSX1BPTElDWV9FWFRFTlNJT05fU0VSVklDRX0gZnJvbSAnLi9zZXJ2aWNlLWVkZ2Utcm91dGVyLXBvbGljeS1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHtNYXREaWFsb2dSZWZ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7U2VydmljZUVkZ2VSb3V0ZXJQb2xpY3l9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3lcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLWVkZ2Utcm91dGVyLXBvbGljeS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXREaWFsb2dSZWYsXG4gICAgICB1c2VWYWx1ZToge31cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3lGb3JtQ29tcG9uZW50IGV4dGVuZHMgUHJvamVjdGFibGVGb3JtIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGZvcm1EYXRhOiBTZXJ2aWNlRWRnZVJvdXRlclBvbGljeSB8IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuXG4gIGZvcm1WaWV3ID0gJ3NpbXBsZSc7XG4gIGlzRWRpdGluZyA9IGZhbHNlO1xuICBlZGdlUm91dGVyc0xvYWRpbmcgPSBmYWxzZTtcbiAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuXG4gIG92ZXJyaWRlIGVudGl0eVR5cGUgPSAnc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY2llcyc7XG4gIG92ZXJyaWRlIGVudGl0eUNsYXNzID0gU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3k7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHB1YmxpYyBzdmM6IFNlcnZpY2VFZGdlUm91dGVyUG9saWN5Rm9ybVNlcnZpY2UsXG4gICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBvdmVycmlkZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChTRVJWSUNFX0VER0VfUk9VVEVSX1BPTElDWV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgc3VwZXIoZ3Jvd2xlclNlcnZpY2UsIGV4dFNlcnZpY2UsIHppdGlTZXJ2aWNlLCByb3V0ZXIsIHJvdXRlLCBsb2NhdGlvbik7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBuZXcgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICB0aGlzLmluaXRTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhLmlzRW1wdHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGE7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN2Yy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICB0aGlzLmxvYWRBdHRyaWJ1dGVzKCk7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBuZXcgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICB0aGlzLmluaXRTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhLmlzRW1wdHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGE7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN2Yy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5leHRTZXJ2aWNlLmNsb3NlZC5lbWl0KHt9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuaXNFZGl0aW5nID0gIWlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCk7XG4gIH1cblxuICBsb2FkQXR0cmlidXRlcygpIHtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0RWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0U2VydmljZVJvbGVBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0RWRnZVJvdXRlck5hbWVkQXR0cmlidXRlcygpKTtcbiAgICBwcm9taXNlcy5wdXNoKHRoaXMuc3ZjLmdldFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMoKSk7XG4gICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbml0U2VsZWN0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0U2VsZWN0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIGlmIChpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpKSB7XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMgPSBbXTtcbiAgICAgIHRoaXMuc3ZjLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbXTtcbiAgICAgIHRoaXMuc3ZjLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IFtdO1xuICAgICAgdGhpcy5zdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlZGdlUm91dGVySWRBdHRyaWJ1dGVzTWFwID0gaW52ZXJ0KHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IHNlcnZpY2VJZEF0dHJpYnV0ZXNNYXAgPSBpbnZlcnQodGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gICAgdGhpcy5mb3JtRGF0YS5lZGdlUm91dGVyUm9sZXM/LmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBpZiAoYXR0ci5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMucHVzaChlZGdlUm91dGVySWRBdHRyaWJ1dGVzTWFwW2F0dHIuc3Vic3RyaW5nKDEpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzLnB1c2goYXR0ci5zdWJzdHJpbmcoMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzPy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgaWYgKGF0dHIuaW5kZXhPZignQCcpID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLnB1c2goc2VydmljZUlkQXR0cmlidXRlc01hcFthdHRyLnN1YnN0cmluZygxKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcy5wdXNoKGF0dHIuc3Vic3RyaW5nKDEpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkU2VydmljZXNCeUF0dHJpYnV0ZSh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcyk7XG4gIH1cblxuICBoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgc3dpdGNoKGFjdGlvbi5uYW1lKSB7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5zYXZlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgIHRoaXMuZm9ybVZpZXcgPSBhY3Rpb24uZGF0YTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudD8pIHtcbiAgICB0aGlzLmZvcm1EYXRhLm5hbWUgPSB0aGlzLmZvcm1EYXRhLm5hbWUudHJpbSgpO1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgaXNFeHRWYWxpZCA9IGF3YWl0IHRoaXMuZXh0U2VydmljZS52YWxpZGF0ZURhdGEoKTtcbiAgICBpZighaXNWYWxpZCB8fCAhaXNFeHRWYWxpZCkge1xuICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICBgRGF0YSBJbnZhbGlkYCxcbiAgICAgICAgICBgU2VydmljZSBFZGdlIFJvdXRlciBQb2xpY3kgZGF0YSBpcyBpbnZhbGlkLiBQbGVhc2UgdXBkYXRlIHRoZSBoaWdobGlnaHRlZCBmaWVsZHMgYW5kIHRyeSBhZ2Fpbi5gLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYXBwbHlTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdD8uZGF0YT8uaWQgPyByZXN1bHQuZGF0YSA6IHJlc3VsdDtcbiAgICAgIHRoaXMuX2RhdGFDaGFuZ2UgPSBmYWxzZTtcbiAgICAgIGlmICghaXNFbXB0eShkYXRhLmlkKSkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhID0gZGF0YSB8fCB0aGlzLmZvcm1EYXRhO1xuICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdD8uY2xvc2UpIHtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKHRydWUsIHRydWUpO1xuICAgICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBhcHBseVNlbGVjdGVkQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmZvcm1EYXRhLmVkZ2VSb3V0ZXJSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGlmIChpc0VtcHR5KHRoaXMuZm9ybURhdGEubmFtZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWyduYW1lJ10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycyk7XG4gIH1cblxuICBhcGlBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgc3dpdGNoIChhY3Rpb24uaWQpIHtcbiAgICAgIGNhc2UgJ2NsaSc6XG4gICAgICAgIHRoaXMuY29weUNMSUNvbW1hbmQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjdXJsJzpcbiAgICAgICAgdGhpcy5jb3B5Q1VSTENvbW1hbmQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29weUNMSUNvbW1hbmQoKSB7XG4gICAgY29uc3QgZXJSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGxldCBlclJvbGVzVmFyID0gdGhpcy5nZXRSb2xlc0NMSVZhcmlhYmxlKGVyUm9sZXMpO1xuXG4gICAgY29uc3Qgc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgbGV0IHNlcnZpY2VSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDTElWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGB6aXRpIGVkZ2UgJHt0aGlzLmZvcm1EYXRhLmlkID8gJ3VwZGF0ZScgOiAnY3JlYXRlJ30gc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3kgJHt0aGlzLmZvcm1EYXRhLmlkID8gYCcke3RoaXMuZm9ybURhdGEuaWR9J2AgOiAnJ30gJHt0aGlzLmZvcm1EYXRhLmlkID8gJy0tbmFtZScgOiAnJ30gJyR7dGhpcy5mb3JtRGF0YS5uYW1lfScke3RoaXMuZm9ybURhdGEuaWQgPyAnJyA6IGAgLS1zZW1hbnRpYyAnJHt0aGlzLmZvcm1EYXRhLnNlbWFudGljfWB9IC0tZWRnZS1yb3V0ZXItcm9sZXMgJyR7ZXJSb2xlc1Zhcn0nIC0tc2VydmljZS1yb2xlcyAnJHtzZXJ2aWNlUm9sZXNWYXJ9J2A7XG5cbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb21tYW5kKTtcbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICBgQ0xJIGNvbW1hbmQgY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgKTtcbiAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICB9XG5cbiAgY29weUNVUkxDb21tYW5kKCkge1xuICAgIGNvbnN0IGVyUm9sZXMgPSB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICBsZXQgZXJSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDVVJMVmFyaWFibGUoZXJSb2xlcyk7XG5cbiAgICBjb25zdCBzZXJ2aWNlUm9sZXMgPSB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICBsZXQgc2VydmljZVJvbGVzVmFyID0gdGhpcy5nZXRSb2xlc0NVUkxWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGBjdXJsICcke3RoaXMuYXBpQ2FsbFVSTH0nIFxcXFxcbiR7dGhpcy5mb3JtRGF0YS5pZCA/ICctLXJlcXVlc3QgUEFUQ0ggXFxcXCcgOiAnJ31cbiAgLUggJ2FjY2VwdDogYXBwbGljYXRpb24vanNvbicgXFxcXFxuICAtSCAnY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uJyBcXFxcXG4gIC1IICd6dC1zZXNzaW9uOiAke3RoaXMuc2V0dGluZ3Muc2Vzc2lvbi5pZH0nIFxcXFxcbiAgLS1kYXRhLXJhdyAne1wibmFtZVwiOlwiJHt0aGlzLmZvcm1EYXRhLm5hbWV9XCIsXCJlZGdlUm91dGVyUm9sZXNcIjoke2VyUm9sZXNWYXJ9LFwic2VydmljZVJvbGVzXCI6JHtzZXJ2aWNlUm9sZXNWYXJ9LFwic2VtYW50aWNcIjpcIiR7dGhpcy5mb3JtRGF0YS5zZW1hbnRpY31cIn0nYDtcblxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbW1hbmQpO1xuICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgIGBDVVJMIGNvbW1hbmQgY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgKTtcbiAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICB9XG5cbiAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciArICcvZWRnZS9tYW5hZ2VtZW50L3YxL3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnICsgKHRoaXMuZm9ybURhdGEuaWQgPyBgLyR7dGhpcy5mb3JtRGF0YS5pZH1gIDogJycpO1xuICB9XG5cbiAgZ2V0IGFwaURhdGEoKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgbmFtZTogdGhpcy5mb3JtRGF0YT8ubmFtZSB8fCAnJyxcbiAgICAgIGFwcERhdGE6IHRoaXMuZm9ybURhdGE/LmFwcERhdGEgfHwgJycsXG4gICAgICBlZGdlUm91dGVyUm9sZXM6IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApLFxuICAgICAgc2VydmljZVJvbGVzOiB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKSxcbiAgICAgIHNlbWFudGljOiB0aGlzLmZvcm1EYXRhPy5zZW1hbnRpYyxcbiAgICAgIHRhZ3M6IHRoaXMuZm9ybURhdGE/LnRhZ3NcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBfYXBpRGF0YSA9IHt9O1xuICBzZXQgYXBpRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fYXBpRGF0YSA9IGRhdGE7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBTZXJ2aWNlIEVkZ2UgUm91dGVyIFBvbGljeTogJyA6ICdDcmVhdGUgTmV3IFNlcnZpY2UgRWRnZSBSb3V0ZXIgUG9saWN5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLWVkZ2Utcm91dGVyLXBvbGljeS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ1NlcnZpY2UgRWRnZSBSb3V0ZXIgUG9saWN5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgdGhpcyBzZXJ2aWNlIGVkZ2UgZWRnZSByb3V0ZXIgcG9saWN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZXJyb3I6IGVycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbmFtZUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCBFZGdlIFJvdXRlciBBdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFN0eWxlXT1cIid6LWluZGV4OiAxMDAwMDMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQ2hvb3NlIHdoaWNoIGVkZ2Ugcm91dGVyIHRvIGFzc29jaWF0ZSB0byB0aGlzIHBvbGljeSBieSBwaWNraW5nIGZyb20gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE5hbWVkQXR0cmlidXRlcyldPVwic2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic3ZjLmVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZU5hbWVkQXR0cmlidXRlc109XCJzdmMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzQ2hhbmdlKT1cInN2Yy5nZXRBc3NvY2lhdGVkRWRnZVJvdXRlcnNCeUF0dHJpYnV0ZShzZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHNlbGVjdGVkRWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBlZGdlIHJvdXRlciBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi10YWctc2VsZWN0b3I+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3QgU2VydmljZSBBdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFN0eWxlXT1cIid6LWluZGV4OiAxMDAwMDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQ2hvb3NlIHdoaWNoIHNlcnZpY2VzIHRvIGFzc29jaWF0ZSB0byB0aGlzIHBvbGljeSBieSBwaWNraW5nIGZyb20gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE5hbWVkQXR0cmlidXRlcyldPVwic2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic3ZjLnNlcnZpY2VSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZU5hbWVkQXR0cmlidXRlc109XCJzdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzQ2hhbmdlKT1cInN2Yy5nZXRBc3NvY2lhdGVkU2VydmljZXNCeUF0dHJpYnV0ZShzZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcywgc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBzZXJ2aWNlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbWFudGljJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIlBvbGljeVNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQW55T2ZcIj5BbnlPZjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbE9mXCI+QWxsT2Y8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0N1c3RvbSBUYWdzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgRWRnZSBSb3V0ZXJzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY291bnRdPVwic3ZjLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaGlkZS1vdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIEVkZ2UgUm91dGVycyB0aGF0IHRoaXMgU2VydmljZSBFZGdlIFJvdXRlciBQb2xpY3kgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cImVkZ2VSb3V0ZXJzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cInN2Yy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXByZXZpZXctbGlzdD5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIFNlcnZpY2VzIHRoYXQgdGhpcyBTZXJ2aWNlIEVkZ2UgUm91dGVyIFBvbGljeSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwic2VydmljZXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyQWN0aW9uc109XCJhcGlPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwiYXBpQWN0aW9uUmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKGFwaUNhbGxVUkwpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJhcGlEYXRhXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbc2hvd0NvcHldPVwidHJ1ZVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3JhdydcIj5cbiAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImZvcm1EYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3kvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3kvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUFxQyw0Q0FBNEMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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LENBQUM7WUFDcEosUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUTtZQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJO1NBQzFCLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxJQUFJLE9BQU8sQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUs7SUFDTCxDQUFDOytHQTlRVSxvQ0FBb0Msa0JBb0JuQyxnQkFBZ0IsK0RBRWhCLGlCQUFpQiwyQ0FFakIsNENBQTRDO21HQXhCN0Msb0NBQW9DLDZIQVBwQztZQUNUO2dCQUNFLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixRQUFRLEVBQUUsRUFBRTthQUNiO1NBQ0Ysc0VDcENILG0yT0EySHlGOztTRHJGNUUsb0NBQW9DOzRGQUFwQyxvQ0FBb0M7a0JBWGhELFNBQVM7K0JBQ0UscUNBQXFDLGFBR3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxZQUFZOzRCQUNyQixRQUFRLEVBQUUsRUFBRTt5QkFDYjtxQkFDRjs7MEJBc0JJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFFdkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLDRDQUE0QztxSEF2Qi9DLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7UHJvamVjdGFibGVGb3JtfSBmcm9tIFwiLi4vcHJvamVjdGFibGUtZm9ybS5jbGFzc1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7aXNFbXB0eSwgY2xvbmVEZWVwLCBpbnZlcnR9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7U2VydmljZUVkZ2VSb3V0ZXJQb2xpY3lGb3JtU2VydmljZSwgU0VSVklDRV9FREdFX1JPVVRFUl9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0V9IGZyb20gJy4vc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge1NlcnZpY2VFZGdlUm91dGVyUG9saWN5fSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5XCI7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7TG9jYXRpb259IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTWF0RGlhbG9nUmVmLFxuICAgICAgdXNlVmFsdWU6IHt9XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VFZGdlUm91dGVyUG9saWN5Rm9ybUNvbXBvbmVudCBleHRlbmRzIFByb2plY3RhYmxlRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBmb3JtRGF0YTogU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3kgfCBhbnkgPSB7fTtcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNlbGVjdGVkRWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkRWRnZVJvdXRlck5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICBzZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcyA9IFtdO1xuICBzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMgPSBbXTtcblxuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgZWRnZVJvdXRlcnNMb2FkaW5nID0gZmFsc2U7XG4gIHNlcnZpY2VzTG9hZGluZyA9IGZhbHNlO1xuXG4gIHNldHRpbmdzOiBhbnkgPSB7fTtcblxuICBvdmVycmlkZSBlbnRpdHlUeXBlID0gJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnO1xuICBvdmVycmlkZSBlbnRpdHlDbGFzcyA9IFNlcnZpY2VFZGdlUm91dGVyUG9saWN5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwdWJsaWMgc3ZjOiBTZXJ2aWNlRWRnZVJvdXRlclBvbGljeUZvcm1TZXJ2aWNlLFxuICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgb3ZlcnJpZGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgIEBJbmplY3QoU0VSVklDRV9FREdFX1JPVVRFUl9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0UpIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgbG9jYXRpb246IExvY2F0aW9uXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSwgbG9jYXRpb24sIHNldHRpbmdzU2VydmljZSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBuZXcgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICB0aGlzLmluaXRTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhLmlzRW1wdHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGE7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN2Yy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZW50aXR5VXBkYXRlZCgpIHtcbiAgICB0aGlzLmxvYWRBdHRyaWJ1dGVzKCk7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBuZXcgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICB0aGlzLmluaXRTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhLmlzRW1wdHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGE7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN2Yy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwID0gdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcDtcbiAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5leHRTZXJ2aWNlLmNsb3NlZC5lbWl0KHt9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuaXNFZGl0aW5nID0gIWlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCk7XG4gIH1cblxuICBsb2FkQXR0cmlidXRlcygpIHtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0RWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0U2VydmljZVJvbGVBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0RWRnZVJvdXRlck5hbWVkQXR0cmlidXRlcygpKTtcbiAgICBwcm9taXNlcy5wdXNoKHRoaXMuc3ZjLmdldFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMoKSk7XG4gICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbml0U2VsZWN0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0U2VsZWN0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIGlmIChpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpKSB7XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMgPSBbXTtcbiAgICAgIHRoaXMuc3ZjLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbXTtcbiAgICAgIHRoaXMuc3ZjLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IFtdO1xuICAgICAgdGhpcy5zdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlZGdlUm91dGVySWRBdHRyaWJ1dGVzTWFwID0gaW52ZXJ0KHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IHNlcnZpY2VJZEF0dHJpYnV0ZXNNYXAgPSBpbnZlcnQodGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gICAgdGhpcy5mb3JtRGF0YS5lZGdlUm91dGVyUm9sZXM/LmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBpZiAoYXR0ci5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMucHVzaChlZGdlUm91dGVySWRBdHRyaWJ1dGVzTWFwW2F0dHIuc3Vic3RyaW5nKDEpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzLnB1c2goYXR0ci5zdWJzdHJpbmcoMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzPy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgaWYgKGF0dHIuaW5kZXhPZignQCcpID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLnB1c2goc2VydmljZUlkQXR0cmlidXRlc01hcFthdHRyLnN1YnN0cmluZygxKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcy5wdXNoKGF0dHIuc3Vic3RyaW5nKDEpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkU2VydmljZXNCeUF0dHJpYnV0ZSh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcyk7XG4gIH1cblxuICBoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgc3dpdGNoKGFjdGlvbi5uYW1lKSB7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5zYXZlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgIHRoaXMuZm9ybVZpZXcgPSBhY3Rpb24uZGF0YTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudD8pIHtcbiAgICB0aGlzLmZvcm1EYXRhLm5hbWUgPSB0aGlzLmZvcm1EYXRhLm5hbWUudHJpbSgpO1xuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgaXNFeHRWYWxpZCA9IGF3YWl0IHRoaXMuZXh0U2VydmljZS52YWxpZGF0ZURhdGEoKTtcbiAgICBpZighaXNWYWxpZCB8fCAhaXNFeHRWYWxpZCkge1xuICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICBgRGF0YSBJbnZhbGlkYCxcbiAgICAgICAgICBgU2VydmljZSBFZGdlIFJvdXRlciBQb2xpY3kgZGF0YSBpcyBpbnZhbGlkLiBQbGVhc2UgdXBkYXRlIHRoZSBoaWdobGlnaHRlZCBmaWVsZHMgYW5kIHRyeSBhZ2Fpbi5gLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuYXBwbHlTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdD8uZGF0YT8uaWQgPyByZXN1bHQuZGF0YSA6IHJlc3VsdDtcbiAgICAgIHRoaXMuX2RhdGFDaGFuZ2UgPSBmYWxzZTtcbiAgICAgIGlmICghaXNFbXB0eShkYXRhLmlkKSkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhID0gZGF0YSB8fCB0aGlzLmZvcm1EYXRhO1xuICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdD8uY2xvc2UpIHtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKHRydWUsIHRydWUpO1xuICAgICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBhcHBseVNlbGVjdGVkQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmZvcm1EYXRhLmVkZ2VSb3V0ZXJSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgIGlmIChpc0VtcHR5KHRoaXMuZm9ybURhdGEubmFtZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWyduYW1lJ10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycyk7XG4gIH1cblxuICBhcGlBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgc3dpdGNoIChhY3Rpb24uaWQpIHtcbiAgICAgIGNhc2UgJ2NsaSc6XG4gICAgICAgIHRoaXMuY29weUNMSUNvbW1hbmQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjdXJsJzpcbiAgICAgICAgdGhpcy5jb3B5Q1VSTENvbW1hbmQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29weUNMSUNvbW1hbmQoKSB7XG4gICAgY29uc3QgZXJSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGxldCBlclJvbGVzVmFyID0gdGhpcy5nZXRSb2xlc0NMSVZhcmlhYmxlKGVyUm9sZXMpO1xuXG4gICAgY29uc3Qgc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgbGV0IHNlcnZpY2VSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDTElWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGB6aXRpIGVkZ2UgJHt0aGlzLmZvcm1EYXRhLmlkID8gJ3VwZGF0ZScgOiAnY3JlYXRlJ30gc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3kgJHt0aGlzLmZvcm1EYXRhLmlkID8gYCcke3RoaXMuZm9ybURhdGEuaWR9J2AgOiAnJ30gJHt0aGlzLmZvcm1EYXRhLmlkID8gJy0tbmFtZScgOiAnJ30gJyR7dGhpcy5mb3JtRGF0YS5uYW1lfScke3RoaXMuZm9ybURhdGEuaWQgPyAnJyA6IGAgLS1zZW1hbnRpYyAnJHt0aGlzLmZvcm1EYXRhLnNlbWFudGljfWB9IC0tZWRnZS1yb3V0ZXItcm9sZXMgJyR7ZXJSb2xlc1Zhcn0nIC0tc2VydmljZS1yb2xlcyAnJHtzZXJ2aWNlUm9sZXNWYXJ9J2A7XG5cbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb21tYW5kKTtcbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICBgQ0xJIGNvbW1hbmQgY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgKTtcbiAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICB9XG5cbiAgY29weUNVUkxDb21tYW5kKCkge1xuICAgIGNvbnN0IGVyUm9sZXMgPSB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICBsZXQgZXJSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDVVJMVmFyaWFibGUoZXJSb2xlcyk7XG5cbiAgICBjb25zdCBzZXJ2aWNlUm9sZXMgPSB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICBsZXQgc2VydmljZVJvbGVzVmFyID0gdGhpcy5nZXRSb2xlc0NVUkxWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGBjdXJsICcke3RoaXMuYXBpQ2FsbFVSTH0nIFxcXFxcbiR7dGhpcy5mb3JtRGF0YS5pZCA/ICctLXJlcXVlc3QgUEFUQ0ggXFxcXCcgOiAnJ31cbiAgLUggJ2FjY2VwdDogYXBwbGljYXRpb24vanNvbicgXFxcXFxuICAtSCAnY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uJyBcXFxcXG4gIC1IICd6dC1zZXNzaW9uOiAke3RoaXMuc2V0dGluZ3Muc2Vzc2lvbi5pZH0nIFxcXFxcbiAgLS1kYXRhLXJhdyAne1wibmFtZVwiOlwiJHt0aGlzLmZvcm1EYXRhLm5hbWV9XCIsXCJlZGdlUm91dGVyUm9sZXNcIjoke2VyUm9sZXNWYXJ9LFwic2VydmljZVJvbGVzXCI6JHtzZXJ2aWNlUm9sZXNWYXJ9LFwic2VtYW50aWNcIjpcIiR7dGhpcy5mb3JtRGF0YS5zZW1hbnRpY31cIn0nYDtcblxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbW1hbmQpO1xuICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgIGBDVVJMIGNvbW1hbmQgY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgKTtcbiAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICB9XG5cbiAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciArICcvZWRnZS9tYW5hZ2VtZW50L3YxL3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnICsgKHRoaXMuZm9ybURhdGEuaWQgPyBgLyR7dGhpcy5mb3JtRGF0YS5pZH1gIDogJycpO1xuICB9XG5cbiAgZ2V0IGFwaURhdGEoKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgbmFtZTogdGhpcy5mb3JtRGF0YT8ubmFtZSB8fCAnJyxcbiAgICAgIGFwcERhdGE6IHRoaXMuZm9ybURhdGE/LmFwcERhdGEgfHwgJycsXG4gICAgICBlZGdlUm91dGVyUm9sZXM6IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXNNYXApLFxuICAgICAgc2VydmljZVJvbGVzOiB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKSxcbiAgICAgIHNlbWFudGljOiB0aGlzLmZvcm1EYXRhPy5zZW1hbnRpYyxcbiAgICAgIHRhZ3M6IHRoaXMuZm9ybURhdGE/LnRhZ3NcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBfYXBpRGF0YSA9IHt9O1xuICBzZXQgYXBpRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fYXBpRGF0YSA9IGRhdGE7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBTZXJ2aWNlIEVkZ2UgUm91dGVyIFBvbGljeTogJyA6ICdDcmVhdGUgTmV3IFNlcnZpY2UgRWRnZSBSb3V0ZXIgUG9saWN5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLWVkZ2Utcm91dGVyLXBvbGljeS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ1NlcnZpY2UgRWRnZSBSb3V0ZXIgUG9saWN5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgdGhpcyBzZXJ2aWNlIGVkZ2UgZWRnZSByb3V0ZXIgcG9saWN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZXJyb3I6IGVycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbmFtZUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCBFZGdlIFJvdXRlciBBdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFN0eWxlXT1cIid6LWluZGV4OiAxMDAwMDMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQ2hvb3NlIHdoaWNoIGVkZ2Ugcm91dGVyIHRvIGFzc29jaWF0ZSB0byB0aGlzIHBvbGljeSBieSBwaWNraW5nIGZyb20gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE5hbWVkQXR0cmlidXRlcyldPVwic2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic3ZjLmVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZU5hbWVkQXR0cmlidXRlc109XCJzdmMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzQ2hhbmdlKT1cInN2Yy5nZXRBc3NvY2lhdGVkRWRnZVJvdXRlcnNCeUF0dHJpYnV0ZShzZWxlY3RlZEVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcywgc2VsZWN0ZWRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHNlbGVjdGVkRWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBlZGdlIHJvdXRlciBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi10YWctc2VsZWN0b3I+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3QgU2VydmljZSBBdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFN0eWxlXT1cIid6LWluZGV4OiAxMDAwMDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInQ2hvb3NlIHdoaWNoIHNlcnZpY2VzIHRvIGFzc29jaWF0ZSB0byB0aGlzIHBvbGljeSBieSBwaWNraW5nIGZyb20gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE5hbWVkQXR0cmlidXRlcyldPVwic2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic3ZjLnNlcnZpY2VSb2xlQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZU5hbWVkQXR0cmlidXRlc109XCJzdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzQ2hhbmdlKT1cInN2Yy5nZXRBc3NvY2lhdGVkU2VydmljZXNCeUF0dHJpYnV0ZShzZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcywgc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBzZXJ2aWNlIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbWFudGljJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIlBvbGljeVNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQW55T2ZcIj5BbnlPZjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbE9mXCI+QWxsT2Y8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0N1c3RvbSBUYWdzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgRWRnZSBSb3V0ZXJzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY291bnRdPVwic3ZjLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaGlkZS1vdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIEVkZ2UgUm91dGVycyB0aGF0IHRoaXMgU2VydmljZSBFZGdlIFJvdXRlciBQb2xpY3kgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cImVkZ2VSb3V0ZXJzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cInN2Yy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXByZXZpZXctbGlzdD5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIFNlcnZpY2VzIHRoYXQgdGhpcyBTZXJ2aWNlIEVkZ2UgUm91dGVyIFBvbGljeSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwic2VydmljZXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyQWN0aW9uc109XCJhcGlPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwiYXBpQWN0aW9uUmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKGFwaUNhbGxVUkwpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJhcGlEYXRhXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbc2hvd0NvcHldPVwidHJ1ZVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3JhdydcIj5cbiAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImZvcm1EYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
@@ -48,20 +48,8 @@ class ServiceEdgeRouterPolicyFormService {
48
48
  return false;
49
49
  });
50
50
  }).catch((resp) => {
51
- let errorMessage;
52
- if (resp?.error?.error?.cause?.message) {
53
- errorMessage = resp?.error?.error?.cause?.message;
54
- }
55
- else if (resp?.error?.error?.cause?.reason) {
56
- errorMessage = resp?.error?.error?.cause?.reason;
57
- }
58
- else if (resp?.error?.message) {
59
- errorMessage = resp?.error?.message;
60
- }
61
- else {
62
- errorMessage = 'An unknown error occurred';
63
- }
64
- const growlerData = new GrowlerModel('error', 'Error', `Error Creating Edge Router Policy`, errorMessage);
51
+ const errorMessage = this.zitiService.getErrorMessage(resp);
52
+ const growlerData = new GrowlerModel('error', 'Error', `Error ${isUpdate ? 'Updating' : 'Creating'} Service Edge Router Policy`, errorMessage);
65
53
  this.growlerService.show(growlerData);
66
54
  throw resp;
67
55
  });
@@ -178,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
178
166
  type: Inject,
179
167
  args: [SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE]
180
168
  }] }]; } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5L3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE9BQU8sRUFBUyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7QUFFbkYsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQUcsSUFBSSxjQUFjLENBQU0sOENBQThDLENBQUMsQ0FBQztBQUVwSSxNQUdhLGtDQUFrQztJQWdCM0MsWUFDcUMsZUFBZ0MsRUFDOUIsV0FBNEIsRUFDdkQsY0FBOEIsRUFDdUIsVUFBNEI7UUFIeEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDdUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFsQjdGLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUM3QiwyQkFBc0IsR0FB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QUNiLGtDQUFrQyxDQUNyQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCO1FBQy9ELE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hELE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQTtRQUNGLE1BQU0sd0JBQXdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFELE9BQU8sR0FBRyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBL0tRLGtDQUFrQyxrQkFpQi9CLGdCQUFnQixhQUNoQixpQkFBaUIsMkNBRWpCLDRDQUE0QzttSEFwQi9DLGtDQUFrQyxjQUYvQixNQUFNOztTQUVULGtDQUFrQzs0RkFBbEMsa0NBQWtDO2tCQUg5QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBa0JRLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7aXNFbXB0eSwgdW5zZXQsIGtleXN9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuXG5pbXBvcnQge3NvcnRlZFVuaXF9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7U2VydmljZUVkZ2VSb3V0ZXJQb2xpY3l9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3lcIjtcblxuZXhwb3J0IGNvbnN0IFNFUlZJQ0VfRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ1NFUlZJQ0VfRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3lGb3JtU2VydmljZSB7XG5cbiAgICBhc3NvY2lhdGVkU2VydmljZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRTZXJ2aWNlTmFtZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRFZGdlUm91dGVyczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lczogYW55ID0gW107XG5cbiAgICBlZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcbiAgICBzZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcblxuICAgIHNlcnZpY2VOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuICAgIGVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuXG4gICAgZWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBzZXJ2aWNlUm9sZUF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNFUlZJQ0VfRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZVxuICAgICkge31cblxuICAgIHNhdmUoZm9ybURhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSk7XG4gICAgICAgIGNvbnN0IHN2YyA9IGlzVXBkYXRlID8gdGhpcy56aXRpU2VydmljZS5wYXRjaC5iaW5kKHRoaXMueml0aVNlcnZpY2UpIDogdGhpcy56aXRpU2VydmljZS5wb3N0LmJpbmQodGhpcy56aXRpU2VydmljZSk7XG4gICAgICAgIHJldHVybiBzdmMoJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBkYXRhLCBmb3JtRGF0YS5pZCkudGhlbihhc3luYyAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzdWx0Py5kYXRhPy5pZCB8fCBmb3JtRGF0YS5pZDtcbiAgICAgICAgICAgIGxldCByb3V0ZXIgPSBhd2FpdCB0aGlzLnppdGlTZXJ2aWNlLmdldFN1YmRhdGEoJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBpZCwgJycpLnRoZW4oKHJvdXRlckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVyRGF0YS5kYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhU2F2ZWQocm91dGVyKS50aGVuKChmb3JtU2F2ZWRSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcm91dGVyLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZTogdGhpcy5leHRTZXJ2aWNlLmNsb3NlQWZ0ZXJTYXZlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICBgRWRnZSBSb3V0ZXIgUG9saWN5ICR7aXNVcGRhdGUgPyAnVXBkYXRlZCcgOiAnQ3JlYXRlZCd9YCxcbiAgICAgICAgICAgICAgICAgICAgYFN1Y2Nlc3NmdWxseSAke2lzVXBkYXRlID8gJ3VwZGF0ZWQnIDogJ2NyZWF0ZWQnfSBFZGdlIFJvdXRlciBQb2xpY3k6ICR7Zm9ybURhdGEubmFtZX1gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsO1xuICAgICAgICAgICAgfSkuY2F0Y2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaCgocmVzcCkgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIGlmIChyZXNwPy5lcnJvcj8uZXJyb3I/LmNhdXNlPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ubWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ucmVhc29uKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ucmVhc29uO1xuICAgICAgICAgICAgfWVsc2UgaWYgKHJlc3A/LmVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcD8uZXJyb3I/Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYEVycm9yIENyZWF0aW5nIEVkZ2UgUm91dGVyIFBvbGljeWAsXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICB0aHJvdyByZXNwO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRFZGdlUm91dGVyc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMueml0aVNlcnZpY2UuZ2V0Um9sZUZpbHRlcihyb2xlQXR0cmlidXRlcyk7XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnZWRnZS1yb3V0ZXJzJywgcGFnaW5nLCBmaWx0ZXJzKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJzLm1hcCgoc3ZjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzLCAuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gc29ydGVkVW5pcSh0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBc3NvY2lhdGVkU2VydmljZXNCeUF0dHJpYnV0ZShyb2xlQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVzKSB7XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IFtdO1xuICAgICAgICBpZiAoaXNFbXB0eShyb2xlQXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IFsuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLnppdGlTZXJ2aWNlLmdldFJvbGVGaWx0ZXIocm9sZUF0dHJpYnV0ZXMpO1xuICAgICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLnppdGlTZXJ2aWNlLkRFRkFVTFRfUEFHSU5HO1xuICAgICAgICBwYWdpbmcubm9TZWFyY2ggPSBmYWxzZTtcbiAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXQoJ3NlcnZpY2VzJywgcGFnaW5nLCBmaWx0ZXJzKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzLm1hcCgoc3ZjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSBbLi4udGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzLCAuLi5uYW1lZEF0dHJpYnV0ZXNdO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gc29ydGVkVW5pcSh0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2VkZ2Utcm91dGVyLXJvbGUtYXR0cmlidXRlcycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkZ2VSb3V0ZXJSb2xlQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnc2VydmljZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZWRBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGEubWFwKChzZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwW3NlcnZpY2UubmFtZV0gPSBzZXJ2aWNlLmlkO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZU5hbWVkQXR0cmlidXRlcyA9IG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgICAgIHJldHVybiBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2VkZ2Utcm91dGVycycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lZEF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YS5tYXAoKHJvdXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlc01hcFtyb3V0ZXIubmFtZV0gPSByb3V0ZXIuaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlci5uYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICByZXR1cm4gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VydmljZVJvbGVBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ3NlcnZpY2Utcm9sZS1hdHRyaWJ1dGVzJywge30sIFtdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZVJvbGVBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSkge1xuICAgICAgICBjb25zdCBzYXZlTW9kZWwgPSBuZXcgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3koKTtcbiAgICAgICAgY29uc3QgbW9kZWxQcm9wZXJ0aWVzID0ga2V5cyhzYXZlTW9kZWwpO1xuICAgICAgICBtb2RlbFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKHByb3ApIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzYXZlTW9kZWw7XG4gICAgfVxuXG4gICAgY29weVRvQ2xpcGJvYXJkKHZhbCkge1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh2YWwpO1xuICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICAgICAgYEFQSSBjYWxsIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZFJvbGVzKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlTWFwKSB7XG4gICAgICAgIGNvbnN0IHByZXBlbmRlZFJvbGVBdHRyaWJ1dGVzID0gcm9sZUF0dHJpYnV0ZXMubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJyMnICsgYXR0cjtcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcHJlcGVuZGVkTmFtZWRBdHRyaWJ1dGVzID0gbmFtZWRBdHRyaWJ1dGVzLm1hcCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICdAJyArIG5hbWVkQXR0cmlidXRlTWFwW2F0dHJdO1xuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gWy4uLnByZXBlbmRlZFJvbGVBdHRyaWJ1dGVzLCAuLi5wcmVwZW5kZWROYW1lZEF0dHJpYnV0ZXNdO1xuICAgIH1cbn0iXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3ktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5L3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE9BQU8sRUFBUyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFHckYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7QUFFbkYsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQUcsSUFBSSxjQUFjLENBQU0sOENBQThDLENBQUMsQ0FBQztBQUVwSSxNQUdhLGtDQUFrQztJQWdCM0MsWUFDcUMsZUFBZ0MsRUFDOUIsV0FBNEIsRUFDdkQsY0FBOEIsRUFDdUIsVUFBNEI7UUFIeEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDdUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFsQjdGLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUM3QiwyQkFBc0IsR0FB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QzFELE9BQU8sR0FBRyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBdEtRLGtDQUFrQyxrQkFpQi9CLGdCQUFnQixhQUNoQixpQkFBaUIsMkNBRWpCLDRDQUE0QzttSEFwQi9DLGtDQUFrQyxjQUYvQixNQUFNOztTQUVULGtDQUFrQzs0RkFBbEMsa0NBQWtDO2tCQUg5QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBa0JRLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7aXNFbXB0eSwgdW5zZXQsIGtleXN9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuXG5pbXBvcnQge3NvcnRlZFVuaXF9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7U2VydmljZUVkZ2VSb3V0ZXJQb2xpY3l9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY3lcIjtcblxuZXhwb3J0IGNvbnN0IFNFUlZJQ0VfRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ1NFUlZJQ0VfRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUVkZ2VSb3V0ZXJQb2xpY3lGb3JtU2VydmljZSB7XG5cbiAgICBhc3NvY2lhdGVkU2VydmljZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRTZXJ2aWNlTmFtZXM6IGFueSA9IFtdO1xuICAgIGFzc29jaWF0ZWRFZGdlUm91dGVyczogYW55ID0gW107XG4gICAgYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lczogYW55ID0gW107XG5cbiAgICBlZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcbiAgICBzZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwOiBhbnkgPSB7fTtcblxuICAgIHNlcnZpY2VOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuICAgIGVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuXG4gICAgZWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzOiBhbnkgPSBbXTtcbiAgICBzZXJ2aWNlUm9sZUF0dHJpYnV0ZXM6IGFueSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNFUlZJQ0VfRURHRV9ST1VURVJfUE9MSUNZX0VYVEVOU0lPTl9TRVJWSUNFKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZVxuICAgICkge31cblxuICAgIHNhdmUoZm9ybURhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBpc1VwZGF0ZSA9ICFpc0VtcHR5KGZvcm1EYXRhLmlkKTtcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5nZXRFZGdlUm91dGVyUG9saWN5RGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSk7XG4gICAgICAgIGNvbnN0IHN2YyA9IGlzVXBkYXRlID8gdGhpcy56aXRpU2VydmljZS5wYXRjaC5iaW5kKHRoaXMueml0aVNlcnZpY2UpIDogdGhpcy56aXRpU2VydmljZS5wb3N0LmJpbmQodGhpcy56aXRpU2VydmljZSk7XG4gICAgICAgIHJldHVybiBzdmMoJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBkYXRhLCBmb3JtRGF0YS5pZCkudGhlbihhc3luYyAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzdWx0Py5kYXRhPy5pZCB8fCBmb3JtRGF0YS5pZDtcbiAgICAgICAgICAgIGxldCByb3V0ZXIgPSBhd2FpdCB0aGlzLnppdGlTZXJ2aWNlLmdldFN1YmRhdGEoJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnLCBpZCwgJycpLnRoZW4oKHJvdXRlckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVyRGF0YS5kYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhU2F2ZWQocm91dGVyKS50aGVuKChmb3JtU2F2ZWRSZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcm91dGVyLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZTogdGhpcy5leHRTZXJ2aWNlLmNsb3NlQWZ0ZXJTYXZlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICBgRWRnZSBSb3V0ZXIgUG9saWN5ICR7aXNVcGRhdGUgPyAnVXBkYXRlZCcgOiAnQ3JlYXRlZCd9YCxcbiAgICAgICAgICAgICAgICAgICAgYFN1Y2Nlc3NmdWxseSAke2lzVXBkYXRlID8gJ3VwZGF0ZWQnIDogJ2NyZWF0ZWQnfSBFZGdlIFJvdXRlciBQb2xpY3k6ICR7Zm9ybURhdGEubmFtZX1gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsO1xuICAgICAgICAgICAgfSkuY2F0Y2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaCgocmVzcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy56aXRpU2VydmljZS5nZXRFcnJvck1lc3NhZ2UocmVzcCk7XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnRXJyb3InLFxuICAgICAgICAgICAgICAgIGBFcnJvciAke2lzVXBkYXRlID8gJ1VwZGF0aW5nJyA6ICdDcmVhdGluZyd9IFNlcnZpY2UgRWRnZSBSb3V0ZXIgUG9saWN5YCxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgICAgIHRocm93IHJlc3A7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZEVkZ2VSb3V0ZXJzQnlBdHRyaWJ1dGUocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcykge1xuICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbXTtcbiAgICAgICAgaWYgKGlzRW1wdHkocm9sZUF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBbLi4ubmFtZWRBdHRyaWJ1dGVzXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy56aXRpU2VydmljZS5nZXRSb2xlRmlsdGVyKHJvbGVBdHRyaWJ1dGVzKTtcbiAgICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy56aXRpU2VydmljZS5ERUZBVUxUX1BBR0lORztcbiAgICAgICAgcGFnaW5nLm5vU2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdlZGdlLXJvdXRlcnMnLCBwYWdpbmcsIGZpbHRlcnMpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVycyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlck5hbWVzID0gdGhpcy5hc3NvY2lhdGVkRWRnZVJvdXRlcnMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lcyA9IFsuLi50aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMsIC4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRFZGdlUm91dGVyTmFtZXMgPSBzb3J0ZWRVbmlxKHRoaXMuYXNzb2NpYXRlZEVkZ2VSb3V0ZXJOYW1lcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHJvbGVBdHRyaWJ1dGVzLCBuYW1lZEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gW107XG4gICAgICAgIGlmIChpc0VtcHR5KHJvbGVBdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gWy4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMueml0aVNlcnZpY2UuZ2V0Um9sZUZpbHRlcihyb2xlQXR0cmlidXRlcyk7XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMueml0aVNlcnZpY2UuREVGQVVMVF9QQUdJTkc7XG4gICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnc2VydmljZXMnLCBwYWdpbmcsIGZpbHRlcnMpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ZjLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IFsuLi50aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMsIC4uLm5hbWVkQXR0cmlidXRlc107XG4gICAgICAgICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXMgPSBzb3J0ZWRVbmlxKHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFZGdlUm91dGVyUm9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnZWRnZS1yb3V0ZXItcm9sZS1hdHRyaWJ1dGVzJywge30sIFtdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRnZVJvdXRlclJvbGVBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VydmljZU5hbWVkQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdzZXJ2aWNlcycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lZEF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YS5tYXAoKHNlcnZpY2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNNYXBbc2VydmljZS5uYW1lXSA9IHNlcnZpY2UuaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzID0gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVkZ2VSb3V0ZXJOYW1lZEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnZWRnZS1yb3V0ZXJzJywge30sIFtdKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVkQXR0cmlidXRlcyA9IHJlc3VsdC5kYXRhLm1hcCgocm91dGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGdlUm91dGVyTmFtZWRBdHRyaWJ1dGVzTWFwW3JvdXRlci5uYW1lXSA9IHJvdXRlci5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVyLm5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZWRnZVJvdXRlck5hbWVkQXR0cmlidXRlcyA9IG5hbWVkQXR0cmlidXRlcztcbiAgICAgICAgICAgIHJldHVybiBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnc2VydmljZS1yb2xlLWF0dHJpYnV0ZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlUm9sZUF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEVkZ2VSb3V0ZXJQb2xpY3lEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHNhdmVNb2RlbCA9IG5ldyBTZXJ2aWNlRWRnZVJvdXRlclBvbGljeSgpO1xuICAgICAgICBjb25zdCBtb2RlbFByb3BlcnRpZXMgPSBrZXlzKHNhdmVNb2RlbCk7XG4gICAgICAgIG1vZGVsUHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2gocHJvcCkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHNhdmVNb2RlbFtwcm9wXSA9IGZvcm1EYXRhW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNhdmVNb2RlbDtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbCk7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgQVBJIGNhbGwgVVJMIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkUm9sZXMocm9sZUF0dHJpYnV0ZXMsIG5hbWVkQXR0cmlidXRlcywgbmFtZWRBdHRyaWJ1dGVNYXApIHtcbiAgICAgICAgY29uc3QgcHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMgPSByb2xlQXR0cmlidXRlcy5tYXAoKGF0dHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyBhdHRyO1xuICAgICAgICB9KVxuICAgICAgICBjb25zdCBwcmVwZW5kZWROYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXMubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gJ0AnICsgbmFtZWRBdHRyaWJ1dGVNYXBbYXR0cl07XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBbLi4ucHJlcGVuZGVkUm9sZUF0dHJpYnV0ZXMsIC4uLnByZXBlbmRlZE5hbWVkQXR0cmlidXRlc107XG4gICAgfVxufSJdfQ==
@@ -25,7 +25,7 @@ import * as i14 from "../../../services/settings.service";
25
25
  import * as i15 from "../../../services/ziti-data.service";
26
26
  class ServicePolicyFormComponent extends ProjectableForm {
27
27
  constructor(settingsService, svc, zitiService, growlerService, extService, router, route, location) {
28
- super(growlerService, extService, zitiService, router, route, location);
28
+ super(growlerService, extService, zitiService, router, route, location, settingsService);
29
29
  this.settingsService = settingsService;
30
30
  this.svc = svc;
31
31
  this.zitiService = zitiService;
@@ -277,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
277
277
  }], close: [{
278
278
  type: Output
279
279
  }] } });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1wb2xpY3kvc2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1wb2xpY3kvc2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUEyQixnQ0FBZ0MsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUkzRCxNQVdhLDBCQUEyQixTQUFRLGVBQWU7SUFzQjdELFlBQ3FDLGVBQWdDLEVBQzFELEdBQTZCLEVBQ0EsV0FBNEIsRUFDaEUsY0FBOEIsRUFDWSxVQUE0QixFQUNuRCxNQUFjLEVBQ2QsS0FBcUIsRUFDeEMsUUFBa0I7UUFFcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFUckMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBQ0EsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRzdDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQTVCbkMsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFDbEMsVUFBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdELGtDQUE2QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxtQ0FBOEIsR0FBRyxFQUFFLENBQUM7UUFDcEMsbUNBQThCLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLG9DQUErQixHQUFHLEVBQUUsQ0FBQztRQUNyQyxrQ0FBNkIsR0FBRyxFQUFFLENBQUM7UUFDbkMsbUNBQThCLEdBQUcsRUFBRSxDQUFDO1FBRXBDLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFDcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdCLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFFVixlQUFVLEdBQUcsa0JBQWtCLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxhQUFhLENBQUM7UUFxUHJDLGFBQVEsR0FBRyxFQUFFLENBQUM7SUF4T2QsQ0FBQztJQUVRLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0lBRVEsYUFBYTtRQUNwQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUNuRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDcEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUNyRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO1lBQzFDLE9BQU87U0FDUjtRQUNELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMxRSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDNUUsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsOEJBQThCLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQywrQkFBK0IsR0FBRyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsOEJBQThCLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2RjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDdkgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQU07UUFDMUIsUUFBTyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUM1QixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFNO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4RCxJQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUNoQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLGNBQWMsRUFDZCxxRkFBcUYsQ0FDeEYsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdCO1lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQy9CO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNwSyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3hLLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMzSyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDNUI7UUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQU07UUFDdkIsUUFBUSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ2pCLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUosTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEssTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN2SixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckQsTUFBTSxPQUFPLEdBQUcsYUFBYSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLG1CQUFtQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsZUFBZSx1QkFBdUIsZ0JBQWdCLDRCQUE0QixVQUFVLEdBQUcsQ0FBQztRQUV4YSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFlBQVksQ0FDaEMsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLEVBQ2IsaUNBQWlDLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUosTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEssTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN2SixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEQsTUFBTSxPQUFPLEdBQUcsU0FBUyxJQUFJLENBQUMsVUFBVTtNQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUk7OztzQkFHOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTsyQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLG9CQUFvQixlQUFlLG9CQUFvQixnQkFBZ0Isd0JBQXdCLFVBQVUsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxhQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUM7UUFFN04sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQ2hDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGtDQUFrQyxDQUNyQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsR0FBRyxzQ0FBc0MsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFJLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxNQUFNLElBQUksR0FBUTtZQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtZQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksRUFBRTtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7WUFDcEosYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3hKLGlCQUFpQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO1lBQ3pKLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVE7WUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSTtZQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJO1NBQzFCLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxJQUFJLE9BQU8sQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUs7SUFDTCxDQUFDOytHQS9RVSwwQkFBMEIsa0JBdUJ6QixnQkFBZ0IscURBRWhCLGlCQUFpQiwyQ0FFakIsZ0NBQWdDO21HQTNCakMsMEJBQTBCLGlIQVAxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixRQUFRLEVBQUUsRUFBRTthQUNiO1NBQ0Ysc0VDcENILDZoVEErSnlGOztTRHpINUUsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBWHRDLFNBQVM7K0JBQ0UseUJBQXlCLGFBR3hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxZQUFZOzRCQUNyQixRQUFRLEVBQUUsRUFBRTt5QkFDYjtxQkFDRjs7MEJBeUJJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFFdkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLGdDQUFnQztxSEExQm5DLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7UHJvamVjdGFibGVGb3JtfSBmcm9tIFwiLi4vcHJvamVjdGFibGUtZm9ybS5jbGFzc1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7aXNFbXB0eSwgY2xvbmVEZWVwLCBpbnZlcnR9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7U2VydmljZVBvbGljeUZvcm1TZXJ2aWNlLCBTRVJWSUNFX1BPTElDWV9FWFRFTlNJT05fU0VSVklDRX0gZnJvbSAnLi9zZXJ2aWNlLXBvbGljeS1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHtNYXREaWFsb2dSZWZ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7U2VydmljZVBvbGljeX0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9zZXJ2aWNlLXBvbGljeVwiO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZXJ2aWNlLXBvbGljeS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlcnZpY2UtcG9saWN5LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXJ2aWNlLXBvbGljeS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1hdERpYWxvZ1JlZixcbiAgICAgIHVzZVZhbHVlOiB7fVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlUG9saWN5Rm9ybUNvbXBvbmVudCBleHRlbmRzIFByb2plY3RhYmxlRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBmb3JtRGF0YTogU2VydmljZVBvbGljeSB8IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcyA9IFtdO1xuICBzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuXG4gIGZvcm1WaWV3ID0gJ3NpbXBsZSc7XG4gIGlzRWRpdGluZyA9IGZhbHNlO1xuICBzZXJ2aWNlc0xvYWRpbmcgPSBmYWxzZTtcbiAgaWRlbnRpdGllc0xvYWRpbmcgPSBmYWxzZTtcbiAgcG9zdHVyZUNoZWNrc0xvYWRpbmcgPSBmYWxzZTtcblxuICBzZXR0aW5nczogYW55ID0ge307XG5cbiAgb3ZlcnJpZGUgZW50aXR5VHlwZSA9ICdzZXJ2aWNlLXBvbGljaWVzJztcbiAgb3ZlcnJpZGUgZW50aXR5Q2xhc3MgPSBTZXJ2aWNlUG9saWN5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwdWJsaWMgc3ZjOiBTZXJ2aWNlUG9saWN5Rm9ybVNlcnZpY2UsXG4gICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBvdmVycmlkZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChTRVJWSUNFX1BPTElDWV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgc3VwZXIoZ3Jvd2xlclNlcnZpY2UsIGV4dFNlcnZpY2UsIHppdGlTZXJ2aWNlLCByb3V0ZXIsIHJvdXRlLCBsb2NhdGlvbik7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBlbnRpdHlVcGRhdGVkKCkge1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgcHJvbWlzZXMucHVzaCh0aGlzLnN2Yy5nZXRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMoKSk7XG4gICAgcHJvbWlzZXMucHVzaCh0aGlzLnN2Yy5nZXRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0U2VydmljZU5hbWVkQXR0cmlidXRlcygpKTtcbiAgICBwcm9taXNlcy5wdXNoKHRoaXMuc3ZjLmdldElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0UG9zdHVyZU5hbWVkQXR0cmlidXRlcygpKTtcbiAgICBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmluaXRTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB9KTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKSkge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IG5ldyBTZXJ2aWNlUG9saWN5KCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgdGhpcy5leHRTZXJ2aWNlLnVwZGF0ZUZvcm1EYXRhKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSBkYXRhO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZXh0U2VydmljZS5jbG9zZWQuZW1pdCh7fSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmlzRWRpdGluZyA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICB9XG5cbiAgaW5pdFNlbGVjdGVkQXR0cmlidXRlcygpIHtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKSkge1xuICAgICAgdGhpcy5zdmMuYXNzb2NpYXRlZFNlcnZpY2VzID0gW107XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gW107XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkSWRlbnRpdGllcyA9IFtdO1xuICAgICAgdGhpcy5zdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbXTtcbiAgICAgIHRoaXMuc3ZjLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzID0gW107XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VydmljZUlkQXR0cmlidXRlc01hcCA9IGludmVydCh0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICBjb25zdCBpZGVudGl0eUlkQXR0cmlidXRlc01hcCA9IGludmVydCh0aGlzLnN2Yy5pZGVudGl0eU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgY29uc3QgcG9zdHVyZUlkQXR0cmlidXRlc01hcCA9IGludmVydCh0aGlzLnN2Yy5wb3N0dXJlTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICB0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRQb3N0dXJlUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzPy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgaWYgKGF0dHIuaW5kZXhPZignQCcpID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLnB1c2goc2VydmljZUlkQXR0cmlidXRlc01hcFthdHRyLnN1YnN0cmluZygxKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcy5wdXNoKGF0dHIuc3Vic3RyaW5nKDEpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1EYXRhLmlkZW50aXR5Um9sZXM/LmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBpZiAoYXR0ci5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzLnB1c2goaWRlbnRpdHlJZEF0dHJpYnV0ZXNNYXBbYXR0ci5zdWJzdHJpbmcoMSldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLnB1c2goYXR0ci5zdWJzdHJpbmcoMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybURhdGEucG9zdHVyZUNoZWNrUm9sZXM/LmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBpZiAoYXR0ci5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMucHVzaChwb3N0dXJlSWRBdHRyaWJ1dGVzTWFwW2F0dHIuc3Vic3RyaW5nKDEpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzLnB1c2goYXR0ci5zdWJzdHJpbmcoMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkSWRlbnRpdGllc0J5QXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkSWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXMpO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzQnlBdHRyaWJ1dGUodGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgaGVhZGVyQWN0aW9uUmVxdWVzdGVkKGFjdGlvbikge1xuICAgIHN3aXRjaChhY3Rpb24ubmFtZSkge1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9nZ2xlLXZpZXcnOlxuICAgICAgICB0aGlzLmZvcm1WaWV3ID0gYWN0aW9uLmRhdGE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoZXZlbnQ/KSB7XG4gICAgdGhpcy5mb3JtRGF0YS5uYW1lID0gdGhpcy5mb3JtRGF0YS5uYW1lLnRyaW0oKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGNvbnN0IGlzRXh0VmFsaWQgPSBhd2FpdCB0aGlzLmV4dFNlcnZpY2UudmFsaWRhdGVEYXRhKCk7XG4gICAgaWYoIWlzVmFsaWQgfHwgIWlzRXh0VmFsaWQpIHtcbiAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgYERhdGEgSW52YWxpZGAsXG4gICAgICAgICAgYFNlcnZpY2UgUG9saWN5IGRhdGEgaXMgaW52YWxpZC4gUGxlYXNlIHVwZGF0ZSB0aGUgaGlnaGxpZ2h0ZWQgZmllbGRzIGFuZCB0cnkgYWdhaW4uYCxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFwcGx5U2VsZWN0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5zdmMuc2F2ZSh0aGlzLmZvcm1EYXRhKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQ/LmNsb3NlKSB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQ/LmRhdGE/LmlkID8gcmVzdWx0LmRhdGEgOiByZXN1bHQ7XG4gICAgICB0aGlzLl9kYXRhQ2hhbmdlID0gZmFsc2U7XG4gICAgICBpZiAoIWlzRW1wdHkoZGF0YS5pZCkpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGEgfHwgdGhpcy5mb3JtRGF0YTtcbiAgICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5U2VsZWN0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgdGhpcy5mb3JtRGF0YS5pZGVudGl0eVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5pZGVudGl0eU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgdGhpcy5mb3JtRGF0YS5wb3N0dXJlQ2hlY2tSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHkodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgYXBpQWN0aW9uUmVxdWVzdGVkKGFjdGlvbikge1xuICAgIHN3aXRjaCAoYWN0aW9uLmlkKSB7XG4gICAgICBjYXNlICdjbGknOlxuICAgICAgICB0aGlzLmNvcHlDTElDb21tYW5kKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VybCc6XG4gICAgICAgIHRoaXMuY29weUNVUkxDb21tYW5kKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvcHlDTElDb21tYW5kKCkge1xuICAgIGNvbnN0IHNlcnZpY2VSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IHNlcnZpY2VSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDTElWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgaWRlbnRpdHlSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IGlkZW50aXR5Um9sZXNWYXIgPSB0aGlzLmdldFJvbGVzQ0xJVmFyaWFibGUoaWRlbnRpdHlSb2xlcyk7XG5cbiAgICBjb25zdCBwY1JvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMucG9zdHVyZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgY29uc3QgcGNSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDTElWYXJpYWJsZShwY1JvbGVzKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBgeml0aSBlZGdlICR7dGhpcy5mb3JtRGF0YS5pZCA/ICd1cGRhdGUnIDogJ2NyZWF0ZSd9IHNlcnZpY2UtcG9saWN5ICR7dGhpcy5mb3JtRGF0YS5pZCA/IGAnJHt0aGlzLmZvcm1EYXRhLmlkfSdgIDogJyd9ICR7dGhpcy5mb3JtRGF0YS5pZCA/ICctLW5hbWUnIDogJyd9ICcke3RoaXMuZm9ybURhdGEubmFtZX0nICR7dGhpcy5mb3JtRGF0YS5pZCA/ICcnIDogdGhpcy5mb3JtRGF0YS50eXBlfSR7dGhpcy5mb3JtRGF0YS5pZCA/ICcnIDogYCAtLXNlbWFudGljICcke3RoaXMuZm9ybURhdGEuc2VtYW50aWN9J2B9IC0tc2VydmljZS1yb2xlcyAnJHtzZXJ2aWNlUm9sZXNWYXJ9JyAtLWlkZW50aXR5LXJvbGVzICcke2lkZW50aXR5Um9sZXNWYXJ9JyAtLXBvc3R1cmUtY2hlY2stcm9sZXMgJyR7cGNSb2xlc1Zhcn0nYDtcblxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbW1hbmQpO1xuICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgIGBDTEkgY29tbWFuZCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICApO1xuICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gIH1cblxuICBjb3B5Q1VSTENvbW1hbmQoKSB7XG4gICAgY29uc3Qgc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgY29uc3Qgc2VydmljZVJvbGVzVmFyID0gdGhpcy5nZXRSb2xlc0NVUkxWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgaWRlbnRpdHlSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IGlkZW50aXR5Um9sZXNWYXIgPSB0aGlzLmdldFJvbGVzQ1VSTFZhcmlhYmxlKGlkZW50aXR5Um9sZXMpO1xuXG4gICAgY29uc3QgcGNSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IHBjUm9sZXNWYXIgPSB0aGlzLmdldFJvbGVzQ1VSTFZhcmlhYmxlKHBjUm9sZXMpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGBjdXJsICcke3RoaXMuYXBpQ2FsbFVSTH0nIFxcXFxcbiAgICAke3RoaXMuZm9ybURhdGEuaWQgPyAnLS1yZXF1ZXN0IFBBVENIIFxcXFwnIDogJ1xcXFwnfVxuICAgIC1IICdhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nIFxcXFxcbiAgICAtSCAnY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uJyBcXFxcXG4gICAgLUggJ3p0LXNlc3Npb246ICR7dGhpcy5zZXR0aW5ncy5zZXNzaW9uLmlkfScgXFxcXFxuICAgIC0tZGF0YS1yYXcgJ3tcIm5hbWVcIjpcIiR7dGhpcy5mb3JtRGF0YS5uYW1lfVwiLFwic2VydmljZVJvbGVzXCI6JHtzZXJ2aWNlUm9sZXNWYXJ9LFwiaWRlbnRpdHlSb2xlc1wiOiR7aWRlbnRpdHlSb2xlc1Zhcn0sXCJwb3N0dXJlQ2hlY2tSb2xlc1wiOiR7cGNSb2xlc1Zhcn0sXCJzZW1hbnRpY1wiOlwiJHt0aGlzLmZvcm1EYXRhLnNlbWFudGljfVwiLFwidHlwZVwiOlwiJHt0aGlzLmZvcm1EYXRhLnR5cGV9XCJ9J2A7XG5cbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb21tYW5kKTtcbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICBgQ1VSTCBjb21tYW5kIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICk7XG4gICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgfVxuXG4gIGdldCBhcGlDYWxsVVJMKCkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgKyAnL2VkZ2UvbWFuYWdlbWVudC92MS9zZXJ2aWNlLXBvbGljaWVzJyArICh0aGlzLmZvcm1EYXRhLmlkID8gYC8ke3RoaXMuZm9ybURhdGEuaWR9YCA6ICcnKTtcbiAgfVxuXG4gIGdldCBhcGlEYXRhKCkge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIG5hbWU6IHRoaXMuZm9ybURhdGE/Lm5hbWUgfHwgJycsXG4gICAgICBhcHBEYXRhOiB0aGlzLmZvcm1EYXRhPy5hcHBEYXRhIHx8ICcnLFxuICAgICAgc2VydmljZVJvbGVzOiB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKSxcbiAgICAgIGlkZW50aXR5Um9sZXM6IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXApLFxuICAgICAgcG9zdHVyZUNoZWNrUm9sZXM6IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXApLFxuICAgICAgc2VtYW50aWM6IHRoaXMuZm9ybURhdGE/LnNlbWFudGljLFxuICAgICAgdHlwZTogdGhpcy5mb3JtRGF0YT8udHlwZSxcbiAgICAgIHRhZ3M6IHRoaXMuZm9ybURhdGE/LnRhZ3NcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBfYXBpRGF0YSA9IHt9O1xuICBzZXQgYXBpRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fYXBpRGF0YSA9IGRhdGE7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBTZXJ2aWNlIFBvbGljeTogJyA6ICdDcmVhdGUgTmV3IFNlcnZpY2UgUG9saWN5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLXBvbGljeS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ1NlcnZpY2UgUG9saWN5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgdGhpcyBlZGdlIHNlcnZpY2UgcG9saWN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZXJyb3I6IGVycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbmFtZUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCBTZXJ2aWNlIEF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDEwMDAwMydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidDaG9vc2Ugd2hpY2ggc2VydmljZXMgdG8gYXNzb2NpYXRlIHRvIHRoaXMgcG9saWN5IGJ5IHBpY2tpbmcgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi10YWctc2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpXT1cInNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVSb2xlQXR0cmlidXRlc109XCJzdmMuc2VydmljZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTmFtZWRBdHRyaWJ1dGVzXT1cInN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRSb2xlQXR0cmlidXRlc0NoYW5nZSk9XCJzdmMuZ2V0QXNzb2NpYXRlZFNlcnZpY2VzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IHNlcnZpY2UgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IElkZW50aXR5IEF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDEwMDAwMidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidDaG9vc2Ugd2hpY2ggaWRlbnRpdGllcyB0byBhc3NvY2lhdGUgdG8gdGhpcyBwb2xpY3kgYnkgcGlja2luZyBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwic2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic3ZjLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVOYW1lZEF0dHJpYnV0ZXNdPVwic3ZjLmlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRJZGVudGl0aWVzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRJZGVudGl0aWVzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgaWRlbnRpdHkgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IFBvc3R1cmUgQ2hlY2sgQXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRTdHlsZV09XCInei1pbmRleDogMTAwMDAxJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0Nob29zZSB3aGljaCBwb3N0dXJlIGNoZWNrcyB0byBhc3NvY2lhdGUgdG8gdGhpcyBwb2xpY3kgYnkgcGlja2luZyBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwic2VsZWN0ZWRQb3N0dXJlUm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMpXT1cInNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzdmMucG9zdHVyZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTmFtZWRBdHRyaWJ1dGVzXT1cInN2Yy5wb3N0dXJlTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRQb3N0dXJlUm9sZUF0dHJpYnV0ZXMsIHNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzQ2hhbmdlKT1cInN2Yy5nZXRBc3NvY2lhdGVkUG9zdHVyZUNoZWNrc0J5QXR0cmlidXRlKHNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBwb3N0dXJlIGNoZWNrIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1R5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ1NlbWFudGljJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiUG9saWN5VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkJpbmRcIj5CaW5kPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRGlhbFwiPkRpYWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIlBvbGljeVNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQW55T2ZcIj5BbnlPZjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbE9mXCI+QWxsT2Y8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0N1c3RvbSBUYWdzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidoaWRlLW92ZXJmbG93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZXMgdGhhdCB0aGlzIFNlcnZpY2UgUG9saWN5IGlzIGFzc29jaWF0ZWQgd2l0aC4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHJldmlldy1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJzZXJ2aWNlc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIElkZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBJZGVudGl0aWVzIHRoYXQgdGhpcyBTZXJ2aWNlIFBvbGljeSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaWRlbnRpdGllc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXNzb2NpYXRlZCBQb3N0dXJlIENoZWNrcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cInN2Yy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBQb3N0dXJlIENoZWNrcyB0aGF0IHRoaXMgU2VydmljZSBQb2xpY3kgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInBvc3R1cmVDaGVja3NMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBUEkgQ2FsbHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJBY3Rpb25zXT1cImFwaU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJhcGlBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIiBbdmFsdWVdPVwiYXBpQ2FsbFVSTFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoYXBpQ2FsbFVSTClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImFwaURhdGFcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIFtzaG93Q29weV09XCJ0cnVlXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIiAqbmdJZj1cImZvcm1WaWV3ID09PSAncmF3J1wiPlxuICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwiZm9ybURhdGFcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj4iXX0=
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1wb2xpY3kvc2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvc2VydmljZS1wb2xpY3kvc2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLG9DQUFvQyxDQUFDO0FBRXJGLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUEyQixnQ0FBZ0MsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUkzRCxNQVdhLDBCQUEyQixTQUFRLGVBQWU7SUFzQjdELFlBQ2lELGVBQWdDLEVBQ3RFLEdBQTZCLEVB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QUM7SUFFRCxLQUFLO0lBQ0wsQ0FBQzsrR0EvUVUsMEJBQTBCLGtCQXVCekIsZ0JBQWdCLHFEQUVoQixpQkFBaUIsMkNBRWpCLGdDQUFnQzttR0EzQmpDLDBCQUEwQixpSEFQMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsWUFBWTtnQkFDckIsUUFBUSxFQUFFLEVBQUU7YUFDYjtTQUNGLHNFQ3BDSCw2aFRBK0p5Rjs7U0R6SDVFLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQVh0QyxTQUFTOytCQUNFLHlCQUF5QixhQUd4Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsWUFBWTs0QkFDckIsUUFBUSxFQUFFLEVBQUU7eUJBQ2I7cUJBQ0Y7OzBCQXlCSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyxnQ0FBZ0M7cUhBMUJuQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBBZnRlclZpZXdJbml0LFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Byb2plY3RhYmxlRm9ybX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm0uY2xhc3NcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGNsb25lRGVlcCwgaW52ZXJ0fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1NlcnZpY2VQb2xpY3lGb3JtU2VydmljZSwgU0VSVklDRV9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0V9IGZyb20gJy4vc2VydmljZS1wb2xpY3ktZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5pbXBvcnQge1NlcnZpY2VQb2xpY3l9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvc2VydmljZS1wb2xpY3lcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2VydmljZS1wb2xpY3ktZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLXBvbGljeS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1wb2xpY3ktZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXREaWFsb2dSZWYsXG4gICAgICB1c2VWYWx1ZToge31cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZVBvbGljeUZvcm1Db21wb25lbnQgZXh0ZW5kcyBQcm9qZWN0YWJsZUZvcm0gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgZm9ybURhdGE6IFNlcnZpY2VQb2xpY3kgfCBhbnkgPSB7fTtcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzID0gW107XG4gIHNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICBzZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICBzZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcyA9IFtdO1xuICBzZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMgPSBbXTtcblxuICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG4gIGlkZW50aXRpZXNMb2FkaW5nID0gZmFsc2U7XG4gIHBvc3R1cmVDaGVja3NMb2FkaW5nID0gZmFsc2U7XG5cbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuXG4gIG92ZXJyaWRlIGVudGl0eVR5cGUgPSAnc2VydmljZS1wb2xpY2llcyc7XG4gIG92ZXJyaWRlIGVudGl0eUNsYXNzID0gU2VydmljZVBvbGljeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJvdGVjdGVkIG92ZXJyaWRlIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgcHVibGljIHN2YzogU2VydmljZVBvbGljeUZvcm1TZXJ2aWNlLFxuICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgb3ZlcnJpZGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgIEBJbmplY3QoU0VSVklDRV9QT0xJQ1lfRVhURU5TSU9OX1NFUlZJQ0UpIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgbG9jYXRpb246IExvY2F0aW9uXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSwgbG9jYXRpb24sIHNldHRpbmdzU2VydmljZSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBlbnRpdHlVcGRhdGVkKCkge1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgcHJvbWlzZXMucHVzaCh0aGlzLnN2Yy5nZXRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMoKSk7XG4gICAgcHJvbWlzZXMucHVzaCh0aGlzLnN2Yy5nZXRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0U2VydmljZU5hbWVkQXR0cmlidXRlcygpKTtcbiAgICBwcm9taXNlcy5wdXNoKHRoaXMuc3ZjLmdldElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKCkpO1xuICAgIHByb21pc2VzLnB1c2godGhpcy5zdmMuZ2V0UG9zdHVyZU5hbWVkQXR0cmlidXRlcygpKTtcbiAgICBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmluaXRTZWxlY3RlZEF0dHJpYnV0ZXMoKTtcbiAgICB9KTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKSkge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IG5ldyBTZXJ2aWNlUG9saWN5KCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgdGhpcy5leHRTZXJ2aWNlLnVwZGF0ZUZvcm1EYXRhKHRoaXMuZm9ybURhdGEpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmZvcm1EYXRhQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5pc0VtcHR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSBkYXRhO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZXh0U2VydmljZS5jbG9zZWQuZW1pdCh7fSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmlzRWRpdGluZyA9ICFpc0VtcHR5KHRoaXMuZm9ybURhdGEuaWQpO1xuICB9XG5cbiAgaW5pdFNlbGVjdGVkQXR0cmlidXRlcygpIHtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKSkge1xuICAgICAgdGhpcy5zdmMuYXNzb2NpYXRlZFNlcnZpY2VzID0gW107XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gW107XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkSWRlbnRpdGllcyA9IFtdO1xuICAgICAgdGhpcy5zdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMgPSBbXTtcbiAgICAgIHRoaXMuc3ZjLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzID0gW107XG4gICAgICB0aGlzLnN2Yy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VydmljZUlkQXR0cmlidXRlc01hcCA9IGludmVydCh0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICBjb25zdCBpZGVudGl0eUlkQXR0cmlidXRlc01hcCA9IGludmVydCh0aGlzLnN2Yy5pZGVudGl0eU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgY29uc3QgcG9zdHVyZUlkQXR0cmlidXRlc01hcCA9IGludmVydCh0aGlzLnN2Yy5wb3N0dXJlTmFtZWRBdHRyaWJ1dGVzTWFwKTtcbiAgICB0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRQb3N0dXJlUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzPy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgaWYgKGF0dHIuaW5kZXhPZignQCcpID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLnB1c2goc2VydmljZUlkQXR0cmlidXRlc01hcFthdHRyLnN1YnN0cmluZygxKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcy5wdXNoKGF0dHIuc3Vic3RyaW5nKDEpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1EYXRhLmlkZW50aXR5Um9sZXM/LmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBpZiAoYXR0ci5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzLnB1c2goaWRlbnRpdHlJZEF0dHJpYnV0ZXNNYXBbYXR0ci5zdWJzdHJpbmcoMSldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLnB1c2goYXR0ci5zdWJzdHJpbmcoMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybURhdGEucG9zdHVyZUNoZWNrUm9sZXM/LmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBpZiAoYXR0ci5pbmRleE9mKCdAJykgPT09IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMucHVzaChwb3N0dXJlSWRBdHRyaWJ1dGVzTWFwW2F0dHIuc3Vic3RyaW5nKDEpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzLnB1c2goYXR0ci5zdWJzdHJpbmcoMSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzKTtcbiAgICB0aGlzLnN2Yy5nZXRBc3NvY2lhdGVkSWRlbnRpdGllc0J5QXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkSWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXMpO1xuICAgIHRoaXMuc3ZjLmdldEFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzQnlBdHRyaWJ1dGUodGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgaGVhZGVyQWN0aW9uUmVxdWVzdGVkKGFjdGlvbikge1xuICAgIHN3aXRjaChhY3Rpb24ubmFtZSkge1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9nZ2xlLXZpZXcnOlxuICAgICAgICB0aGlzLmZvcm1WaWV3ID0gYWN0aW9uLmRhdGE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmUoZXZlbnQ/KSB7XG4gICAgdGhpcy5mb3JtRGF0YS5uYW1lID0gdGhpcy5mb3JtRGF0YS5uYW1lLnRyaW0oKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGNvbnN0IGlzRXh0VmFsaWQgPSBhd2FpdCB0aGlzLmV4dFNlcnZpY2UudmFsaWRhdGVEYXRhKCk7XG4gICAgaWYoIWlzVmFsaWQgfHwgIWlzRXh0VmFsaWQpIHtcbiAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgYERhdGEgSW52YWxpZGAsXG4gICAgICAgICAgYFNlcnZpY2UgUG9saWN5IGRhdGEgaXMgaW52YWxpZC4gUGxlYXNlIHVwZGF0ZSB0aGUgaGlnaGxpZ2h0ZWQgZmllbGRzIGFuZCB0cnkgYWdhaW4uYCxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFwcGx5U2VsZWN0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5zdmMuc2F2ZSh0aGlzLmZvcm1EYXRhKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQ/LmNsb3NlKSB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQ/LmRhdGE/LmlkID8gcmVzdWx0LmRhdGEgOiByZXN1bHQ7XG4gICAgICB0aGlzLl9kYXRhQ2hhbmdlID0gZmFsc2U7XG4gICAgICBpZiAoIWlzRW1wdHkoZGF0YS5pZCkpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGRhdGEgfHwgdGhpcy5mb3JtRGF0YTtcbiAgICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5U2VsZWN0ZWRBdHRyaWJ1dGVzKCkge1xuICAgIHRoaXMuZm9ybURhdGEuc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgdGhpcy5mb3JtRGF0YS5pZGVudGl0eVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5pZGVudGl0eU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgdGhpcy5mb3JtRGF0YS5wb3N0dXJlQ2hlY2tSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHkodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgYXBpQWN0aW9uUmVxdWVzdGVkKGFjdGlvbikge1xuICAgIHN3aXRjaCAoYWN0aW9uLmlkKSB7XG4gICAgICBjYXNlICdjbGknOlxuICAgICAgICB0aGlzLmNvcHlDTElDb21tYW5kKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VybCc6XG4gICAgICAgIHRoaXMuY29weUNVUkxDb21tYW5kKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvcHlDTElDb21tYW5kKCkge1xuICAgIGNvbnN0IHNlcnZpY2VSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFNlcnZpY2VSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IHNlcnZpY2VSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDTElWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgaWRlbnRpdHlSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IGlkZW50aXR5Um9sZXNWYXIgPSB0aGlzLmdldFJvbGVzQ0xJVmFyaWFibGUoaWRlbnRpdHlSb2xlcyk7XG5cbiAgICBjb25zdCBwY1JvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMucG9zdHVyZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgY29uc3QgcGNSb2xlc1ZhciA9IHRoaXMuZ2V0Um9sZXNDTElWYXJpYWJsZShwY1JvbGVzKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBgeml0aSBlZGdlICR7dGhpcy5mb3JtRGF0YS5pZCA/ICd1cGRhdGUnIDogJ2NyZWF0ZSd9IHNlcnZpY2UtcG9saWN5ICR7dGhpcy5mb3JtRGF0YS5pZCA/IGAnJHt0aGlzLmZvcm1EYXRhLmlkfSdgIDogJyd9ICR7dGhpcy5mb3JtRGF0YS5pZCA/ICctLW5hbWUnIDogJyd9ICcke3RoaXMuZm9ybURhdGEubmFtZX0nICR7dGhpcy5mb3JtRGF0YS5pZCA/ICcnIDogdGhpcy5mb3JtRGF0YS50eXBlfSR7dGhpcy5mb3JtRGF0YS5pZCA/ICcnIDogYCAtLXNlbWFudGljICcke3RoaXMuZm9ybURhdGEuc2VtYW50aWN9J2B9IC0tc2VydmljZS1yb2xlcyAnJHtzZXJ2aWNlUm9sZXNWYXJ9JyAtLWlkZW50aXR5LXJvbGVzICcke2lkZW50aXR5Um9sZXNWYXJ9JyAtLXBvc3R1cmUtY2hlY2stcm9sZXMgJyR7cGNSb2xlc1Zhcn0nYDtcblxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbW1hbmQpO1xuICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgIGBDTEkgY29tbWFuZCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICApO1xuICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gIH1cblxuICBjb3B5Q1VSTENvbW1hbmQoKSB7XG4gICAgY29uc3Qgc2VydmljZVJvbGVzID0gdGhpcy5zdmMuZ2V0U2VsZWN0ZWRSb2xlcyh0aGlzLnNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuc2VydmljZU5hbWVkQXR0cmlidXRlc01hcCk7XG4gICAgY29uc3Qgc2VydmljZVJvbGVzVmFyID0gdGhpcy5nZXRSb2xlc0NVUkxWYXJpYWJsZShzZXJ2aWNlUm9sZXMpO1xuXG4gICAgY29uc3QgaWRlbnRpdHlSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IGlkZW50aXR5Um9sZXNWYXIgPSB0aGlzLmdldFJvbGVzQ1VSTFZhcmlhYmxlKGlkZW50aXR5Um9sZXMpO1xuXG4gICAgY29uc3QgcGNSb2xlcyA9IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXApO1xuICAgIGNvbnN0IHBjUm9sZXNWYXIgPSB0aGlzLmdldFJvbGVzQ1VSTFZhcmlhYmxlKHBjUm9sZXMpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGBjdXJsICcke3RoaXMuYXBpQ2FsbFVSTH0nIFxcXFxcbiAgICAke3RoaXMuZm9ybURhdGEuaWQgPyAnLS1yZXF1ZXN0IFBBVENIIFxcXFwnIDogJ1xcXFwnfVxuICAgIC1IICdhY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nIFxcXFxcbiAgICAtSCAnY29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uJyBcXFxcXG4gICAgLUggJ3p0LXNlc3Npb246ICR7dGhpcy5zZXR0aW5ncy5zZXNzaW9uLmlkfScgXFxcXFxuICAgIC0tZGF0YS1yYXcgJ3tcIm5hbWVcIjpcIiR7dGhpcy5mb3JtRGF0YS5uYW1lfVwiLFwic2VydmljZVJvbGVzXCI6JHtzZXJ2aWNlUm9sZXNWYXJ9LFwiaWRlbnRpdHlSb2xlc1wiOiR7aWRlbnRpdHlSb2xlc1Zhcn0sXCJwb3N0dXJlQ2hlY2tSb2xlc1wiOiR7cGNSb2xlc1Zhcn0sXCJzZW1hbnRpY1wiOlwiJHt0aGlzLmZvcm1EYXRhLnNlbWFudGljfVwiLFwidHlwZVwiOlwiJHt0aGlzLmZvcm1EYXRhLnR5cGV9XCJ9J2A7XG5cbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb21tYW5kKTtcbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICBgQ1VSTCBjb21tYW5kIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICk7XG4gICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgfVxuXG4gIGdldCBhcGlDYWxsVVJMKCkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgKyAnL2VkZ2UvbWFuYWdlbWVudC92MS9zZXJ2aWNlLXBvbGljaWVzJyArICh0aGlzLmZvcm1EYXRhLmlkID8gYC8ke3RoaXMuZm9ybURhdGEuaWR9YCA6ICcnKTtcbiAgfVxuXG4gIGdldCBhcGlEYXRhKCkge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIG5hbWU6IHRoaXMuZm9ybURhdGE/Lm5hbWUgfHwgJycsXG4gICAgICBhcHBEYXRhOiB0aGlzLmZvcm1EYXRhPy5hcHBEYXRhIHx8ICcnLFxuICAgICAgc2VydmljZVJvbGVzOiB0aGlzLnN2Yy5nZXRTZWxlY3RlZFJvbGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzLCB0aGlzLnN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzTWFwKSxcbiAgICAgIGlkZW50aXR5Um9sZXM6IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMsIHRoaXMuc2VsZWN0ZWRJZGVudGl0eU5hbWVkQXR0cmlidXRlcywgdGhpcy5zdmMuaWRlbnRpdHlOYW1lZEF0dHJpYnV0ZXNNYXApLFxuICAgICAgcG9zdHVyZUNoZWNrUm9sZXM6IHRoaXMuc3ZjLmdldFNlbGVjdGVkUm9sZXModGhpcy5zZWxlY3RlZFBvc3R1cmVSb2xlQXR0cmlidXRlcywgdGhpcy5zZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMsIHRoaXMuc3ZjLnBvc3R1cmVOYW1lZEF0dHJpYnV0ZXNNYXApLFxuICAgICAgc2VtYW50aWM6IHRoaXMuZm9ybURhdGE/LnNlbWFudGljLFxuICAgICAgdHlwZTogdGhpcy5mb3JtRGF0YT8udHlwZSxcbiAgICAgIHRhZ3M6IHRoaXMuZm9ybURhdGE/LnRhZ3NcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBfYXBpRGF0YSA9IHt9O1xuICBzZXQgYXBpRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fYXBpRGF0YSA9IGRhdGE7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBTZXJ2aWNlIFBvbGljeTogJyA6ICdDcmVhdGUgTmV3IFNlcnZpY2UgUG9saWN5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLXBvbGljeS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ1NlcnZpY2UgUG9saWN5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWUgdGhpcyBlZGdlIHNlcnZpY2UgcG9saWN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZXJyb3I6IGVycm9yc1snbmFtZSddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbmFtZUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NlbGVjdCBTZXJ2aWNlIEF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDEwMDAwMydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidDaG9vc2Ugd2hpY2ggc2VydmljZXMgdG8gYXNzb2NpYXRlIHRvIHRoaXMgcG9saWN5IGJ5IHBpY2tpbmcgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi10YWctc2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpXT1cInNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVSb2xlQXR0cmlidXRlc109XCJzdmMuc2VydmljZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTmFtZWRBdHRyaWJ1dGVzXT1cInN2Yy5zZXJ2aWNlTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRTZXJ2aWNlc0J5QXR0cmlidXRlKHNlbGVjdGVkU2VydmljZVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZFNlcnZpY2VOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRSb2xlQXR0cmlidXRlc0NoYW5nZSk9XCJzdmMuZ2V0QXNzb2NpYXRlZFNlcnZpY2VzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRTZXJ2aWNlUm9sZUF0dHJpYnV0ZXMsIHNlbGVjdGVkU2VydmljZU5hbWVkQXR0cmlidXRlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IHNlcnZpY2UgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IElkZW50aXR5IEF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDEwMDAwMidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidDaG9vc2Ugd2hpY2ggaWRlbnRpdGllcyB0byBhc3NvY2lhdGUgdG8gdGhpcyBwb2xpY3kgYnkgcGlja2luZyBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwic2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlUm9sZUF0dHJpYnV0ZXNdPVwic3ZjLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVOYW1lZEF0dHJpYnV0ZXNdPVwic3ZjLmlkZW50aXR5TmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRJZGVudGl0aWVzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRJZGVudGl0aWVzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZElkZW50aXR5TmFtZWRBdHRyaWJ1dGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgaWRlbnRpdHkgYXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU2VsZWN0IFBvc3R1cmUgQ2hlY2sgQXR0cmlidXRlcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRTdHlsZV09XCInei1pbmRleDogMTAwMDAxJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0Nob29zZSB3aGljaCBwb3N0dXJlIGNoZWNrcyB0byBhc3NvY2lhdGUgdG8gdGhpcyBwb2xpY3kgYnkgcGlja2luZyBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBhdHRyaWJ1dGVzJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwic2VsZWN0ZWRQb3N0dXJlUm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMpXT1cInNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzdmMucG9zdHVyZVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTmFtZWRBdHRyaWJ1dGVzXT1cInN2Yy5wb3N0dXJlTmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwic3ZjLmdldEFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tzQnlBdHRyaWJ1dGUoc2VsZWN0ZWRQb3N0dXJlUm9sZUF0dHJpYnV0ZXMsIHNlbGVjdGVkUG9zdHVyZU5hbWVkQXR0cmlidXRlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzQ2hhbmdlKT1cInN2Yy5nZXRBc3NvY2lhdGVkUG9zdHVyZUNoZWNrc0J5QXR0cmlidXRlKHNlbGVjdGVkUG9zdHVyZVJvbGVBdHRyaWJ1dGVzLCBzZWxlY3RlZFBvc3R1cmVOYW1lZEF0dHJpYnV0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBwb3N0dXJlIGNoZWNrIGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1R5cGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ1NlbWFudGljJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiUG9saWN5VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkJpbmRcIj5CaW5kPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRGlhbFwiPkRpYWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLnNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIlBvbGljeVNlbWFudGljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQW55T2ZcIj5BbnlPZjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbE9mXCI+QWxsT2Y8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0N1c3RvbSBUYWdzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRhZ3NcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWN1c3RvbS10YWdzIFsodGFncyldPVwiZm9ybURhdGEudGFnc1wiPjwvbGliLWN1c3RvbS10YWdzPlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHR3by1maWZ0aHNcIj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidoaWRlLW92ZXJmbG93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZXMgdGhhdCB0aGlzIFNlcnZpY2UgUG9saWN5IGlzIGFzc29jaWF0ZWQgd2l0aC4nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcHJldmlldy1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJzZXJ2aWNlc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZFNlcnZpY2VOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIElkZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJzdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBJZGVudGl0aWVzIHRoYXQgdGhpcyBTZXJ2aWNlIFBvbGljeSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaWRlbnRpdGllc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxOYW1lc109XCJzdmMuYXNzb2NpYXRlZElkZW50aXR5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQXNzb2NpYXRlZCBQb3N0dXJlIENoZWNrcydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50XT1cInN2Yy5hc3NvY2lhdGVkUG9zdHVyZUNoZWNrTmFtZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCInUHJldmlldyBsaXN0IG9mIGFsbCBQb3N0dXJlIENoZWNrcyB0aGF0IHRoaXMgU2VydmljZSBQb2xpY3kgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInBvc3R1cmVDaGVja3NMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsTmFtZXNdPVwic3ZjLmFzc29jaWF0ZWRQb3N0dXJlQ2hlY2tOYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1wcmV2aWV3LWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBUEkgQ2FsbHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJBY3Rpb25zXT1cImFwaU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJhcGlBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIiBbdmFsdWVdPVwiYXBpQ2FsbFVSTFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoYXBpQ2FsbFVSTClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImFwaURhdGFcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIFtzaG93Q29weV09XCJ0cnVlXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW5cIiAqbmdJZj1cImZvcm1WaWV3ID09PSAncmF3J1wiPlxuICAgICAgICAgICAgPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJmb3JtRGF0YVwiIFsoZGF0YSldPVwiZm9ybURhdGFcIj48L2xpYi1qc29uLXZpZXc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj4iXX0=