@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
@@ -7,12 +7,13 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "../projectable-forms/service/service-form.service";
8
8
  import * as i2 from "../messaging/growler.service";
9
9
  import * as i3 from "@angular/router";
10
- import * as i4 from "../card/card.component";
11
- import * as i5 from "../../services/settings.service";
12
- import * as i6 from "../../services/ziti-data.service";
10
+ import * as i4 from "@angular/common";
11
+ import * as i5 from "../card/card.component";
12
+ import * as i6 from "../../services/settings.service";
13
+ import * as i7 from "../../services/ziti-data.service";
13
14
  class CardListComponent extends ProjectableForm {
14
- constructor(settingsService, svc, zitiService, growlerService, extService, router, route) {
15
- super(growlerService, extService, zitiService, router, route);
15
+ constructor(settingsService, svc, zitiService, growlerService, extService, router, route, location) {
16
+ super(growlerService, extService, zitiService, router, route, location, settingsService);
16
17
  this.settingsService = settingsService;
17
18
  this.svc = svc;
18
19
  this.zitiService = zitiService;
@@ -29,25 +30,25 @@ class CardListComponent extends ProjectableForm {
29
30
  cardSelected(type) {
30
31
  this.router.navigateByUrl(`/services/${type}`);
31
32
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardListComponent, deps: [{ token: SETTINGS_SERVICE }, { token: i1.ServiceFormService }, { token: ZITI_DATA_SERVICE }, { token: i2.GrowlerService }, { token: SERVICE_EXTENSION_SERVICE }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardListComponent, selector: "lib-card-list", outputs: { close: "close", selected: "selected" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:1.625rem;filter:brightness(50%);padding-top:2.1875rem;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0rem;font-size:2rem;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:3.9375rem;height:3.9375rem;font-size:1.875rem;top:1.25rem;right:1.25rem;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:2.5rem;font-family:zac!important;font-variant:normal;border-radius:2.0625rem;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:1.875rem}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 .125rem .1875rem 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-.125rem;width:100%;text-align:center;font-size:.75rem;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: i4.CardComponent, selector: "lib-card", inputs: ["imageUrl", "title", "content", "buttonText", "id", "href"] }] }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardListComponent, deps: [{ token: SETTINGS_SERVICE }, { token: i1.ServiceFormService }, { token: ZITI_DATA_SERVICE }, { token: i2.GrowlerService }, { token: SERVICE_EXTENSION_SERVICE }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardListComponent, selector: "lib-card-list", outputs: { close: "close", selected: "selected" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:1.625rem;filter:brightness(50%);padding-top:2.1875rem;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0rem;font-size:2rem;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:3.9375rem;height:3.9375rem;font-size:1.875rem;top:1.25rem;right:1.25rem;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:2.5rem;font-family:zac!important;font-variant:normal;border-radius:2.0625rem;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:1.875rem}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 .125rem .1875rem 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-.125rem;width:100%;text-align:center;font-size:.75rem;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: i5.CardComponent, selector: "lib-card", inputs: ["imageUrl", "title", "content", "buttonText", "id", "href"] }] }); }
34
35
  }
35
36
  export { CardListComponent };
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardListComponent, decorators: [{
37
38
  type: Component,
38
39
  args: [{ selector: 'lib-card-list', template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:1.625rem;filter:brightness(50%);padding-top:2.1875rem;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0rem;font-size:2rem;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:3.9375rem;height:3.9375rem;font-size:1.875rem;top:1.25rem;right:1.25rem;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:2.5rem;font-family:zac!important;font-variant:normal;border-radius:2.0625rem;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:1.875rem}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 .125rem .1875rem 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-.125rem;width:100%;text-align:center;font-size:.75rem;text-transform:uppercase}\n"] }]
39
- }], ctorParameters: function () { return [{ type: i5.SettingsService, decorators: [{
40
+ }], ctorParameters: function () { return [{ type: i6.SettingsService, decorators: [{
40
41
  type: Inject,
41
42
  args: [SETTINGS_SERVICE]
42
- }] }, { type: i1.ServiceFormService }, { type: i6.ZitiDataService, decorators: [{
43
+ }] }, { type: i1.ServiceFormService }, { type: i7.ZitiDataService, decorators: [{
43
44
  type: Inject,
44
45
  args: [ZITI_DATA_SERVICE]
45
46
  }] }, { type: i2.GrowlerService }, { type: undefined, decorators: [{
46
47
  type: Inject,
47
48
  args: [SERVICE_EXTENSION_SERVICE]
48
- }] }, { type: i3.Router }, { type: i3.ActivatedRoute }]; }, propDecorators: { close: [{
49
+ }] }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.Location }]; }, propDecorators: { close: [{
49
50
  type: Output
50
51
  }], selected: [{
51
52
  type: Output
52
53
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jYXJkLWxpc3QvY2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jYXJkLWxpc3QvY2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRixPQUFPLEVBQUMseUJBQXlCLEVBQXFCLE1BQU0sbURBQW1ELENBQUM7QUFDaEgsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztBQUtwRixNQUthLGlCQUFrQixTQUFRLGVBQWU7SUFNcEQsWUFDcUMsZUFBZ0MsRUFDMUQsR0FBdUIsRUFDTSxXQUE0QixFQUNoRSxjQUE4QixFQUNLLFVBQTRCLEVBQzVDLE1BQWMsRUFDZCxLQUFxQjtRQUUxQyxLQUFLLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBUjNCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMxRCxRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUNNLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUc3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFaNUMsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVULFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuRCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFZaEUsQ0FBQztJQUNELEtBQUs7SUFDTCxDQUFDO0lBRUQsSUFBSTtJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQXpCVSxpQkFBaUIsa0JBT2hCLGdCQUFnQiwrQ0FFaEIsaUJBQWlCLDJDQUVqQix5QkFBeUI7bUdBWDFCLGlCQUFpQiwrSENkOUIsc3pDQTRCQTs7U0RkYSxpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkFXcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMseUJBQXlCOzhGQVIzQixLQUFLO3NCQUFkLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvamVjdGFibGVGb3JtfSBmcm9tIFwiLi4vcHJvamVjdGFibGUtZm9ybXMvcHJvamVjdGFibGUtZm9ybS5jbGFzc1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1NFUlZJQ0VfRVhURU5TSU9OX1NFUlZJQ0UsIFNlcnZpY2VGb3JtU2VydmljZX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm1zL3NlcnZpY2Uvc2VydmljZS1mb3JtLnNlcnZpY2VcIjtcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jYXJkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FyZExpc3RDb21wb25lbnQgZXh0ZW5kcyBQcm9qZWN0YWJsZUZvcm0ge1xuICBmb3JtRGF0YTogYW55ID0ge307XG5cbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHB1YmxpYyBzdmM6IFNlcnZpY2VGb3JtU2VydmljZSxcbiAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIG92ZXJyaWRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICBASW5qZWN0KFNFUlZJQ0VfRVhURU5TSU9OX1NFUlZJQ0UpIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICApIHtcbiAgICBzdXBlcihncm93bGVyU2VydmljZSwgZXh0U2VydmljZSwgeml0aVNlcnZpY2UsIHJvdXRlciwgcm91dGUpO1xuICB9XG4gIGNsZWFyKCk6IHZvaWQge1xuICB9XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgfVxuXG4gIGNhcmRTZWxlY3RlZCh0eXBlKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL3NlcnZpY2VzLyR7dHlwZX1gKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtbGlzdC13cmFwcGVyIHppdGktcGFnZS1jb250YWluZXIgZnVsbE1vZGFsIG9wZW5lZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIHN0eWxlPVwiZmlsdGVyOiBicmlnaHRuZXNzKDUwJSlcIj5DcmVhdGUgYSBzZXJ2aWNlPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCI+Q2hvb3NlIGEgc2VydmljZSB0eXBlPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgPGxpYi1jYXJkXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FyZFNlbGVjdGVkKCdzaW1wbGUnKVwiXG4gICAgICAgICAgICBbaW1hZ2VVcmxdPVwiJy9hc3NldHMvc3Zncy9TaW1wbGUuc3ZnJ1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1NpbXBsZSdcIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwiJ1NpbXBsZSBzZXJ2aWNlcyByZXF1aXJlZCBmZXdlciBkZXRhaWxzLCBvbmx5IGFza2luZyBmb3IgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmaWVsZHMuJ1wiXG4gICAgICAgICAgICBbYnV0dG9uVGV4dF09XCInQ3JlYXRlIFNpbXBsZSBTZXJ2aWNlJ1wiXG4gICAgICAgICAgICBbaWRdPVwiJ1NpbXBsZVNlcnZpY2VDYXJkJ1wiXG4gICAgICAgICAgICBbaHJlZl09XCInc2VydmljZXMvc2ltcGxlJ1wiXG4gICAgICAgID48L2xpYi1jYXJkPlxuICAgICAgICA8bGliLWNhcmRcbiAgICAgICAgICAgIChjbGljayk9XCJjYXJkU2VsZWN0ZWQoJ2FkdmFuY2VkJylcIlxuICAgICAgICAgICAgW2ltYWdlVXJsXT1cIicvYXNzZXRzL3N2Z3MvQWR2YW5jZWQuc3ZnJ1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0FkdmFuY2VkJ1wiXG4gICAgICAgICAgICBbY29udGVudF09XCInQWR2YW5jZWQgc2VydmljZXMgYWxsb3cgeW91IHRvIGNvbmZpZ3VyZSBhbnkgb3B0aW9uIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlciBidXQgYXJlIHN1YnNlcXVlbnRseSBhIGJpdCBtb3JlIGNvbXBsZXguJ1wiXG4gICAgICAgICAgICBbYnV0dG9uVGV4dF09XCInQ3JlYXRlIEFkdmFuY2VkIFNlcnZpY2UnXCJcbiAgICAgICAgICAgIFtpZF09XCInQWR2YW5jZWRTZXJ2aWNlQ2FyZCdcIlxuICAgICAgICAgICAgW2hyZWZdPVwiJ3NlcnZpY2VzL2FkdmFuY2VkJ1wiXG4gICAgICAgID48L2xpYi1jYXJkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKGNsaWNrKT1cInJldHVyblRvTGlzdFBhZ2UoKVwiIGNsYXNzPVwiYnV0dG9uQmFsbCBjbG9zZVwiIGlkPVwiRXNjWml0aUFXQ2xvc2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbkxhYmVsXCI+RVNDPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jYXJkLWxpc3QvY2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jYXJkLWxpc3QvY2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRixPQUFPLEVBQUMseUJBQXlCLEVBQXFCLE1BQU0sbURBQW1ELENBQUM7QUFDaEgsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFNcEYsTUFLYSxpQkFBa0IsU0FBUSxlQUFlO0lBTXBELFlBQ2lELGVBQWdDLEVBQ3RFLEdBQXVCLEVBQ00sV0FBNEIsRUFDaEUsY0FBOEIsRUFDSyxVQUE0QixFQUM1QyxNQUFjLEVBQ2QsS0FBcUIsRUFDeEMsUUFBa0I7UUFFcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBVDFDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUN0RSxRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUNNLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUc3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFaNUMsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVULFVBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuRCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFhaEUsQ0FBQztJQUNELEtBQUs7SUFDTCxDQUFDO0lBRUQsSUFBSTtJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQTFCVSxpQkFBaUIsa0JBT2hCLGdCQUFnQiwrQ0FFaEIsaUJBQWlCLDJDQUVqQix5QkFBeUI7bUdBWDFCLGlCQUFpQiwrSENmOUIsc3pDQTRCQTs7U0RiYSxpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkFXcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMseUJBQXlCO3FIQVIzQixLQUFLO3NCQUFkLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvamVjdGFibGVGb3JtfSBmcm9tIFwiLi4vcHJvamVjdGFibGUtZm9ybXMvcHJvamVjdGFibGUtZm9ybS5jbGFzc1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1NFUlZJQ0VfRVhURU5TSU9OX1NFUlZJQ0UsIFNlcnZpY2VGb3JtU2VydmljZX0gZnJvbSBcIi4uL3Byb2plY3RhYmxlLWZvcm1zL3NlcnZpY2Uvc2VydmljZS1mb3JtLnNlcnZpY2VcIjtcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jYXJkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FyZExpc3RDb21wb25lbnQgZXh0ZW5kcyBQcm9qZWN0YWJsZUZvcm0ge1xuICBmb3JtRGF0YTogYW55ID0ge307XG5cbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHByb3RlY3RlZCBvdmVycmlkZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHB1YmxpYyBzdmM6IFNlcnZpY2VGb3JtU2VydmljZSxcbiAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIG92ZXJyaWRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICBASW5qZWN0KFNFUlZJQ0VfRVhURU5TSU9OX1NFUlZJQ0UpIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgbG9jYXRpb246IExvY2F0aW9uXG4gICkge1xuICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSwgbG9jYXRpb24sIHNldHRpbmdzU2VydmljZSk7XG4gIH1cbiAgY2xlYXIoKTogdm9pZCB7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICB9XG5cbiAgY2FyZFNlbGVjdGVkKHR5cGUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvc2VydmljZXMvJHt0eXBlfWApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZC1saXN0LXdyYXBwZXIgeml0aS1wYWdlLWNvbnRhaW5lciBmdWxsTW9kYWwgb3BlbmVkXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgc3R5bGU9XCJmaWx0ZXI6IGJyaWdodG5lc3MoNTAlKVwiPkNyZWF0ZSBhIHNlcnZpY2U8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIj5DaG9vc2UgYSBzZXJ2aWNlIHR5cGU8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1saXN0LWNvbnRhaW5lclwiPlxuICAgICAgICA8bGliLWNhcmRcbiAgICAgICAgICAgIChjbGljayk9XCJjYXJkU2VsZWN0ZWQoJ3NpbXBsZScpXCJcbiAgICAgICAgICAgIFtpbWFnZVVybF09XCInL2Fzc2V0cy9zdmdzL1NpbXBsZS5zdmcnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInU2ltcGxlJ1wiXG4gICAgICAgICAgICBbY29udGVudF09XCInU2ltcGxlIHNlcnZpY2VzIHJlcXVpcmVkIGZld2VyIGRldGFpbHMsIG9ubHkgYXNraW5nIGZvciB0aGUgbW9zdCBjb21tb25seSB1c2VkIGZpZWxkcy4nXCJcbiAgICAgICAgICAgIFtidXR0b25UZXh0XT1cIidDcmVhdGUgU2ltcGxlIFNlcnZpY2UnXCJcbiAgICAgICAgICAgIFtpZF09XCInU2ltcGxlU2VydmljZUNhcmQnXCJcbiAgICAgICAgICAgIFtocmVmXT1cIidzZXJ2aWNlcy9zaW1wbGUnXCJcbiAgICAgICAgPjwvbGliLWNhcmQ+XG4gICAgICAgIDxsaWItY2FyZFxuICAgICAgICAgICAgKGNsaWNrKT1cImNhcmRTZWxlY3RlZCgnYWR2YW5jZWQnKVwiXG4gICAgICAgICAgICBbaW1hZ2VVcmxdPVwiJy9hc3NldHMvc3Zncy9BZHZhbmNlZC5zdmcnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInQWR2YW5jZWQnXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cIidBZHZhbmNlZCBzZXJ2aWNlcyBhbGxvdyB5b3UgdG8gY29uZmlndXJlIGFueSBvcHRpb24gc3VwcG9ydGVkIGJ5IHRoZSBjb250cm9sbGVyIGJ1dCBhcmUgc3Vic2VxdWVudGx5IGEgYml0IG1vcmUgY29tcGxleC4nXCJcbiAgICAgICAgICAgIFtidXR0b25UZXh0XT1cIidDcmVhdGUgQWR2YW5jZWQgU2VydmljZSdcIlxuICAgICAgICAgICAgW2lkXT1cIidBZHZhbmNlZFNlcnZpY2VDYXJkJ1wiXG4gICAgICAgICAgICBbaHJlZl09XCInc2VydmljZXMvYWR2YW5jZWQnXCJcbiAgICAgICAgPjwvbGliLWNhcmQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAoY2xpY2spPVwicmV0dXJuVG9MaXN0UGFnZSgpXCIgY2xhc3M9XCJidXR0b25CYWxsIGNsb3NlXCIgaWQ9XCJFc2NaaXRpQVdDbG9zZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uTGFiZWxcIj5FU0M8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
@@ -14,6 +14,8 @@ class PasswordInputComponent {
14
14
  this.labelColor = '#000000';
15
15
  this.fieldClass = '';
16
16
  this.error = '';
17
+ this.autocomplete = '';
18
+ this.required = false;
17
19
  this.fieldValueChange = new EventEmitter();
18
20
  this.valueChange = new Subject();
19
21
  this.emitEventsDebounced = debounce(this.emitEvents.bind(this), 500);
@@ -30,16 +32,18 @@ class PasswordInputComponent {
30
32
  this.valueChange.next(this.fieldValue);
31
33
  }
32
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordInputComponent, selector: "lib-password-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordInputComponent, selector: "lib-password-input", inputs: { fieldName: "fieldName", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error", autocomplete: "autocomplete", required: "required" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
34
36
  <div [ngClass]="fieldClass">
35
37
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
36
38
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
37
39
  type="password" class="jsonEntry"
40
+ [required]="required"
41
+ [autocomplete]="autocomplete"
38
42
  [ngClass]="{'error': error}"
39
43
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
40
44
  <div *ngIf="error" class="error">{{error}}</div>
41
45
  </div>
42
- `, isInline: true, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
46
+ `, isInline: true, styles: ["input.error{border-color:red}\n", "div.error{color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
43
47
  }
44
48
  export { PasswordInputComponent };
45
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordInputComponent, decorators: [{
@@ -49,6 +53,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
49
53
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
50
54
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
51
55
  type="password" class="jsonEntry"
56
+ [required]="required"
57
+ [autocomplete]="autocomplete"
52
58
  [ngClass]="{'error': error}"
53
59
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
54
60
  <div *ngIf="error" class="error">{{error}}</div>
@@ -68,7 +74,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
68
74
  type: Input
69
75
  }], error: [{
70
76
  type: Input
77
+ }], autocomplete: [{
78
+ type: Input
79
+ }], required: [{
80
+ type: Input
71
81
  }], fieldValueChange: [{
72
82
  type: Output
73
83
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wYXNzd29yZC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFjYSxzQkFBc0I7SUFkbkM7UUFlSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDVixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQU1yQyx3QkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FLbkU7SUF0QkcsSUFBYSxTQUFTLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFVRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUdELFVBQVU7UUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0F4QlEsc0JBQXNCO21HQUF0QixzQkFBc0IsbVNBWnZCOzs7Ozs7Ozs7R0FTVDs7U0FHVSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxvQkFBb0IsWUFDcEI7Ozs7Ozs7OztHQVNUOzhCQU1jLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtkZWJvdW5jZX0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGFzc3dvcmQtaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJqc29uRW50cnlcIlxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Vycm9yJzogZXJyb3J9XCJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgWyhuZ01vZGVsKV09XCJmaWVsZFZhbHVlXCIgKHBhc3RlKT1cIm9uS2V5dXAoKVwiIChrZXl1cCk9XCJvbktleXVwKClcIiAoY2hhbmdlKT1cImVtaXRFdmVudHMoKVwiLz5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImVycm9yXCI+e3tlcnJvcn19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgYCxcbiAgICBzdHlsZXM6WydpbnB1dC5lcnJvciB7Ym9yZGVyLWNvbG9yOnJlZDt9JywnZGl2LmVycm9yIHtjb2xvcjpyZWR9J11cbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRJbnB1dENvbXBvbmVudCB7XG4gICAgX2ZpZWxkTmFtZSA9ICdGaWVsZCBMYWJlbCc7XG4gICAgX2lkTmFtZSA9ICdmaWVsZG5hbWUnO1xuICAgIEBJbnB1dCgpIHNldCBmaWVsZE5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX2lkTmFtZSA9IG5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBmaWVsZFZhbHVlID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBwYXJlbnRhZ2U6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgbGFiZWxDb2xvciA9ICcjMDAwMDAwJztcbiAgICBASW5wdXQoKSBmaWVsZENsYXNzID0gJyc7XG4gICAgQElucHV0KCkgZXJyb3IgPSAnJztcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIG9uS2V5dXAoKSB7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50c0RlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIGVtaXRFdmVudHNEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmVtaXRFdmVudHMuYmluZCh0aGlzKSwgNTAwKTtcbiAgICBlbWl0RXZlbnRzKCkge1xuICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2R5bmFtaWMtd2lkZ2V0cy9wYXNzd29yZC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFaEMsTUFnQmEsc0JBQXNCO0lBaEJuQztRQWlCSSxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxXQUFXLENBQUM7UUFLYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBTXJDLHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUtuRTtJQXhCRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQVlELE9BQU87UUFDSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBR0QsVUFBVTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQTFCUSxzQkFBc0I7bUdBQXRCLHNCQUFzQix1VkFkdkI7Ozs7Ozs7Ozs7O0dBV1Q7O1NBR1Usc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBaEJsQyxTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7Ozs7Ozs7R0FXVDs4QkFNYyxTQUFTO3NCQUFyQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wYXNzd29yZC1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3NcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cImpzb25FbnRyeVwiXG4gICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIgKGNoYW5nZSk9XCJlbWl0RXZlbnRzKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVzOlsnaW5wdXQuZXJyb3Ige2JvcmRlci1jb2xvcjpyZWQ7fScsJ2Rpdi5lcnJvciB7Y29sb3I6cmVkfSddXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkSW5wdXRDb21wb25lbnQge1xuICAgIF9maWVsZE5hbWUgPSAnRmllbGQgTGFiZWwnO1xuICAgIF9pZE5hbWUgPSAnZmllbGRuYW1lJztcbiAgICBASW5wdXQoKSBzZXQgZmllbGROYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9maWVsZE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLl9pZE5hbWUgPSBuYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgQElucHV0KCkgZmllbGRWYWx1ZSA9ICcnO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gICAgQElucHV0KCkgcGFyZW50YWdlOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGxhYmVsQ29sb3IgPSAnIzAwMDAwMCc7XG4gICAgQElucHV0KCkgZmllbGRDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGVycm9yID0gJyc7XG4gICAgQElucHV0KCkgYXV0b2NvbXBsZXRlID0gJyc7XG4gICAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgICBAT3V0cHV0KCkgZmllbGRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIHZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPiAoKTtcblxuICAgIG9uS2V5dXAoKSB7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50c0RlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIGVtaXRFdmVudHNEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmVtaXRFdmVudHMuYmluZCh0aGlzKSwgNTAwKTtcbiAgICBlbWl0RXZlbnRzKCkge1xuICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9XG59XG4iXX0=
@@ -146,7 +146,7 @@ class ProtocolAddressPortInputComponent {
146
146
  this.hostname = data.hostname;
147
147
  }
148
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProtocolAddressPortInputComponent, deps: [{ token: i1.ValidationService }], target: i0.ɵɵFactoryTarget.Component }); }
149
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProtocolAddressPortInputComponent, selector: "lib-protocol-address-port-input", inputs: { protocolList: "protocolList", showProtocol: "showProtocol", showAddress: "showAddress", showHostName: "showHostName", showPort: "showPort", disableProtocol: "disableProtocol", disableAddress: "disableAddress", disableHostName: "disableHostName", disablePort: "disablePort", protocol: "protocol", address: "address", hostname: "hostname", port: "port", parentage: "parentage", labelColor: "labelColor", labelPrefix: "labelPrefix", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange", portChange: "portChange", addressChange: "addressChange", hostnameChange: "hostnameChange", protocolChange: "protocolChange" }, ngImport: i0, template: "<div class=\"grid {{className}}\">\n <div *ngIf=\"showProtocol\" [ngClass]=\"{disabled: disableProtocol, invalid: errors['protocol']}\">\n <lib-selector-input [fieldName]=\"protocolFieldName\"\n [(fieldValue)]=\"protocol\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"undefined\"\n [valueList]=\"['tcp', 'udp']\"\n (fieldValueChange)=\"update()\"\n ></lib-selector-input>\n </div>\n <div *ngIf=\"showAddress\" [ngClass]=\"{disabled: disableAddress, invalid: errors['address']}\">\n <lib-string-input [fieldName]=\"addressFieldName\"\n [(fieldValue)]=\"address\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showHostName\" [ngClass]=\"{disabled: disableHostName, invalid: errors['hostname']}\">\n <lib-string-input [fieldName]=\"hostnameFieldName\"\n [(fieldValue)]=\"hostname\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showPort\" [ngClass]=\"{disabled: disablePort, invalid: errors['port']}\">\n <lib-number-input [fieldName]=\"portFieldName\"\n [(fieldValue)]=\"port\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'0'\"\n (fieldValueChange)=\"update()\"\n ></lib-number-input>\n </div>\n</div>\n", styles: [".grid{display:grid;grid-template-columns:auto;grid-gap:.625rem}.grid.addressFull{grid-template-columns:4.6875rem auto 4.6875rem}.grid.addressFull .disabled{opacity:.5;pointer-events:none}.grid.address-only{grid-template-columns:auto}.host-name-port{grid-template-columns:auto 4.6875rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.StringInputComponent, selector: "lib-string-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i4.NumberInputComponent, selector: "lib-number-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i5.SelectorInputComponent, selector: "lib-selector-input", inputs: ["fieldName", "fieldValue", "helpText", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }] }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProtocolAddressPortInputComponent, selector: "lib-protocol-address-port-input", inputs: { protocolList: "protocolList", showProtocol: "showProtocol", showAddress: "showAddress", showHostName: "showHostName", showPort: "showPort", disableProtocol: "disableProtocol", disableAddress: "disableAddress", disableHostName: "disableHostName", disablePort: "disablePort", protocol: "protocol", address: "address", hostname: "hostname", port: "port", parentage: "parentage", labelColor: "labelColor", labelPrefix: "labelPrefix", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange", portChange: "portChange", addressChange: "addressChange", hostnameChange: "hostnameChange", protocolChange: "protocolChange" }, ngImport: i0, template: "<div class=\"grid {{className}}\">\n <div *ngIf=\"showProtocol\" [ngClass]=\"{disabled: disableProtocol, invalid: errors['protocol']}\">\n <lib-selector-input [fieldName]=\"protocolFieldName\"\n [(fieldValue)]=\"protocol\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"undefined\"\n [valueList]=\"['tcp', 'udp']\"\n (fieldValueChange)=\"update()\"\n ></lib-selector-input>\n </div>\n <div *ngIf=\"showAddress\" [ngClass]=\"{disabled: disableAddress, invalid: errors['address']}\">\n <lib-string-input [fieldName]=\"addressFieldName\"\n [(fieldValue)]=\"address\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showHostName\" [ngClass]=\"{disabled: disableHostName, invalid: errors['hostname']}\">\n <lib-string-input [fieldName]=\"hostnameFieldName\"\n [(fieldValue)]=\"hostname\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'host.name'\"\n (fieldValueChange)=\"update()\"\n ></lib-string-input>\n </div>\n <div *ngIf=\"showPort\" [ngClass]=\"{disabled: disablePort, invalid: errors['port']}\">\n <lib-number-input [fieldName]=\"portFieldName\"\n [(fieldValue)]=\"port\"\n [labelColor]=\"labelColor\"\n [placeholder]=\"'0'\"\n (fieldValueChange)=\"update()\"\n ></lib-number-input>\n </div>\n</div>\n", styles: [".grid{display:grid;grid-template-columns:auto;grid-gap:.625rem}.grid.addressFull{grid-template-columns:4.6875rem auto 4.6875rem}.grid.addressFull .disabled{opacity:.5;pointer-events:none}.grid.address-only{grid-template-columns:auto}.host-name-port{grid-template-columns:auto 4.6875rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.StringInputComponent, selector: "lib-string-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error", "autocomplete", "required"], outputs: ["fieldValueChange"] }, { kind: "component", type: i4.NumberInputComponent, selector: "lib-number-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i5.SelectorInputComponent, selector: "lib-selector-input", inputs: ["fieldName", "fieldValue", "helpText", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }] }); }
150
150
  }
151
151
  export { ProtocolAddressPortInputComponent };
152
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProtocolAddressPortInputComponent, decorators: [{
@@ -15,6 +15,8 @@ class StringInputComponent {
15
15
  this.labelColor = '#000000';
16
16
  this.fieldClass = '';
17
17
  this.error = '';
18
+ this.autocomplete = '';
19
+ this.required = false;
18
20
  this.fieldValueChange = new EventEmitter();
19
21
  this.valueChange = new Subject();
20
22
  this._isValid = true;
@@ -35,7 +37,7 @@ class StringInputComponent {
35
37
  this.valueChange.next(this.fieldValue);
36
38
  }
37
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StringInputComponent, selector: "lib-string-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error", autocomplete: "autocomplete", required: "required" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
39
41
  <div [ngClass]="fieldClass + (!_isValid ? 'invalid' : '')" class="string-input-container">
40
42
  <div class="label-container">
41
43
  <label for="schema_{{parentage?parentage+'_':''}}{{_idName}}" [ngStyle]="{'color': labelColor}">{{_fieldName}}</label>
@@ -49,11 +51,13 @@ class StringInputComponent {
49
51
  </div>
50
52
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
51
53
  type="text" class="jsonEntry"
54
+ [required]="required"
55
+ [autocomplete]="autocomplete"
52
56
  [ngClass]="{'error': error}"
53
57
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
54
58
  <div *ngIf="error" class="error">{{error}}</div>
55
59
  </div>
56
- `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0rem;margin-top:0rem;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:.3125rem;margin-bottom:.3125rem;margin-top:.625rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
60
+ `, isInline: true, styles: [".string-input-container{margin:var(--marginSmall) 0}.string-input-container label{margin-bottom:0rem;margin-top:0rem;width:-moz-fit-content;width:fit-content}.string-input-container input.error{border-color:red}.string-input-container div.error{color:red}.label-container{display:flex;gap:.3125rem;margin-bottom:.3125rem;margin-top:.625rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
57
61
  }
58
62
  export { StringInputComponent };
59
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StringInputComponent, decorators: [{
@@ -72,6 +76,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
72
76
  </div>
73
77
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
74
78
  type="text" class="jsonEntry"
79
+ [required]="required"
80
+ [autocomplete]="autocomplete"
75
81
  [ngClass]="{'error': error}"
76
82
  [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
77
83
  <div *ngIf="error" class="error">{{error}}</div>
@@ -93,7 +99,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
93
99
  type: Input
94
100
  }], error: [{
95
101
  type: Input
102
+ }], autocomplete: [{
103
+ type: Input
104
+ }], required: [{
105
+ type: Input
96
106
  }], fieldValueChange: [{
97
107
  type: Output
98
108
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BdUJhLG9CQUFvQjtJQXZCakM7UUF3QkksZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTWIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQztRQVNoQix3QkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FLbkU7SUE1QkcsSUFBYSxTQUFTLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFZTSxVQUFVLENBQUUsT0FBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFHRCxVQUFVO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBOUJRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVUQXJCckI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs7U0FHVSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkF2QmhDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7ZGVib3VuY2V9IGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN0cmluZy1pbnB1dCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkQ2xhc3MgKyAoIV9pc1ZhbGlkID8gJ2ludmFsaWQnIDogJycpXCIgY2xhc3M9XCJzdHJpbmctaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCIgIFtuZ1N0eWxlXT1cInsnY29sb3InOiBsYWJlbENvbG9yfVwiPnt7X2ZpZWxkTmFtZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5mbyBpbmZvaWNvblwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3toZWxwVGV4dH19XCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cIndpZGUtdG9vbHRpcFwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgaWQ9XCJzY2hlbWFfe3twYXJlbnRhZ2U/cGFyZW50YWdlKydfJzonJ319e3tfaWROYW1lfX1cIlxuICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwianNvbkVudHJ5XCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIgKGNoYW5nZSk9XCJlbWl0RXZlbnRzKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVVcmxzOiBbJ3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IHtcbiAgICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gICAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGhlbHBUZXh0O1xuICAgIEBJbnB1dCgpIGZpZWxkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICAgIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICAgIEBPdXRwdXQoKSBmaWVsZFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+ICgpO1xuXG4gICAgX2lzVmFsaWQgPSB0cnVlO1xuICAgIHB1YmxpYyBzZXRJc1ZhbGlkIChpc1ZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkO1xuICAgIH1cblxuICAgIG9uS2V5dXAoKSB7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50c0RlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIGVtaXRFdmVudHNEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmVtaXRFdmVudHMuYmluZCh0aGlzKSwgNTAwKTtcbiAgICBlbWl0RXZlbnRzKCkge1xuICAgICAgICB0aGlzLmZpZWxkVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodGhpcy5maWVsZFZhbHVlKTtcbiAgICB9XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9keW5hbWljLXdpZGdldHMvc3RyaW5nL3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWhDLE1BeUJhLG9CQUFvQjtJQXpCakM7UUEwQkksZUFBVSxHQUFHLGFBQWEsQ0FBQztRQUMzQixZQUFPLEdBQUcsV0FBVyxDQUFDO1FBTWIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNoQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVyQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBU2hCLHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUtuRTtJQTlCRyxJQUFhLFNBQVMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQWNNLFVBQVUsQ0FBRSxPQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUdELFVBQVU7UUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0FoQ1Esb0JBQW9CO21HQUFwQixvQkFBb0IsMldBdkJyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7O1NBR1Usb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBekJoQyxTQUFTOytCQUNFLGtCQUFrQixZQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7OEJBTWMsU0FBUztzQkFBckIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2RlYm91bmNlfSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zdHJpbmctaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZENsYXNzICsgKCFfaXNWYWxpZCA/ICdpbnZhbGlkJyA6ICcnKVwiIGNsYXNzPVwic3RyaW5nLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNjaGVtYV97e3BhcmVudGFnZT9wYXJlbnRhZ2UrJ18nOicnfX17e19pZE5hbWV9fVwiICBbbmdTdHlsZV09XCJ7J2NvbG9yJzogbGFiZWxDb2xvcn1cIj57e19maWVsZE5hbWV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWluZm8gaW5mb2ljb25cIlxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7aGVscFRleHR9fVwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ3aWRlLXRvb2x0aXBcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0IGlkPVwic2NoZW1hX3t7cGFyZW50YWdlP3BhcmVudGFnZSsnXyc6Jyd9fXt7X2lkTmFtZX19XCJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBjbGFzcz1cImpzb25FbnRyeVwiXG4gICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcnJvcic6IGVycm9yfVwiXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFsobmdNb2RlbCldPVwiZmllbGRWYWx1ZVwiIChwYXN0ZSk9XCJvbktleXVwKClcIiAoa2V5dXApPVwib25LZXl1cCgpXCIgKGNoYW5nZSk9XCJlbWl0RXZlbnRzKClcIi8+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7ZXJyb3J9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gICAgc3R5bGVVcmxzOiBbJ3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IHtcbiAgICBfZmllbGROYW1lID0gJ0ZpZWxkIExhYmVsJztcbiAgICBfaWROYW1lID0gJ2ZpZWxkbmFtZSc7XG4gICAgQElucHV0KCkgc2V0IGZpZWxkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5faWROYW1lID0gbmFtZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGhlbHBUZXh0O1xuICAgIEBJbnB1dCgpIGZpZWxkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIEBJbnB1dCgpIHBhcmVudGFnZTogc3RyaW5nW10gPSBbXTtcbiAgICBASW5wdXQoKSBsYWJlbENvbG9yID0gJyMwMDAwMDAnO1xuICAgIEBJbnB1dCgpIGZpZWxkQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlcnJvciA9ICcnO1xuICAgIEBJbnB1dCgpIGF1dG9jb21wbGV0ZSA9ICcnO1xuICAgIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIGZpZWxkVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICB2YWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4gKCk7XG5cbiAgICBfaXNWYWxpZCA9IHRydWU7XG4gICAgcHVibGljIHNldElzVmFsaWQgKGlzVmFsaWQpIHtcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWQ7XG4gICAgfVxuXG4gICAgb25LZXl1cCgpIHtcbiAgICAgICAgdGhpcy5lbWl0RXZlbnRzRGVib3VuY2VkKCk7XG4gICAgfVxuXG4gICAgZW1pdEV2ZW50c0RlYm91bmNlZCA9IGRlYm91bmNlKHRoaXMuZW1pdEV2ZW50cy5iaW5kKHRoaXMpLCA1MDApO1xuICAgIGVtaXRFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuZmllbGRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh0aGlzLmZpZWxkVmFsdWUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,123 @@
1
+ /*
2
+ Copyright NetFoundry Inc.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ https://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+ import { Component, Inject } from '@angular/core';
17
+ import { MAT_DIALOG_DATA } from "@angular/material/dialog";
18
+ import { ZAC_LOGIN_SERVICE } from "../../services/login-service.class";
19
+ import { SETTINGS_SERVICE } from "../../services/settings.service";
20
+ import { isEmpty } from "lodash";
21
+ import * as i0 from "@angular/core";
22
+ import * as i1 from "@angular/router";
23
+ import * as i2 from "@angular/material/dialog";
24
+ import * as i3 from "@angular/common";
25
+ import * as i4 from "@angular/forms";
26
+ import * as i5 from "../dynamic-widgets/string/string-input.component";
27
+ import * as i6 from "../dynamic-widgets/selector/selector-input.component";
28
+ import * as i7 from "../dynamic-widgets/password/password-input.component";
29
+ import * as i8 from "../../services/login-service.class";
30
+ import * as i9 from "../../services/settings-service.class";
31
+ class LoginDialogComponent {
32
+ constructor(svc, settingsService, data, router, dialogRef) {
33
+ this.svc = svc;
34
+ this.settingsService = settingsService;
35
+ this.data = data;
36
+ this.router = router;
37
+ this.dialogRef = dialogRef;
38
+ this.dataObj = {};
39
+ this.selectedEdgeController = '';
40
+ this.username = '';
41
+ this.password = '';
42
+ this.loginFailed = false;
43
+ this.edgeControllerList = [];
44
+ this.dataObj = data;
45
+ this.svc.loginDialogOpen = true;
46
+ this.selectedEdgeController = this.settingsService?.settings?.selectedEdgeController;
47
+ }
48
+ ngOnInit() {
49
+ this.settingsService.settingsChange.subscribe((results) => {
50
+ if (this.svc.originIsController) {
51
+ return;
52
+ }
53
+ if (results)
54
+ this.settingsReturned(results);
55
+ });
56
+ }
57
+ settingsReturned(settings) {
58
+ this.edgeControllerList = [];
59
+ if (settings.edgeControllers?.length > 0) {
60
+ this.edgeControllerList = [];
61
+ settings.edgeControllers.forEach((controller) => {
62
+ if (!controller.url) {
63
+ return;
64
+ }
65
+ this.edgeControllerList.push({ name: controller.name + ` (${controller.url})`, value: controller.url });
66
+ });
67
+ }
68
+ const serviceUrl = localStorage.getItem("ziti-serviceUrl-value");
69
+ if (!isEmpty(serviceUrl)) {
70
+ const lastUrl = JSON.parse(serviceUrl).data;
71
+ this.selectedEdgeController = lastUrl.trim();
72
+ }
73
+ else {
74
+ this.selectedEdgeController = settings.selectedEdgeController;
75
+ }
76
+ }
77
+ edgeChanged(event) {
78
+ if (this.selectedEdgeController) {
79
+ this.settingsService.initApiVersions(this.selectedEdgeController);
80
+ }
81
+ this.settingsService.settings.selectedEdgeController = this.selectedEdgeController;
82
+ }
83
+ login() {
84
+ const apiVersions = this.settingsService.apiVersions;
85
+ const prefix = apiVersions && apiVersions["edge-management"]?.v1?.path || '';
86
+ this.loginFailed = false;
87
+ this.svc.login(prefix, this.selectedEdgeController, this.username.trim(), this.password, false).then((result) => {
88
+ if (result?.error) {
89
+ return;
90
+ }
91
+ this.svc.loginDialogOpen = false;
92
+ this.settingsService.set(this.settingsService.settings);
93
+ this.dialogRef.close({ isLoggedIn: true });
94
+ }).catch(() => {
95
+ this.loginFailed = true;
96
+ });
97
+ }
98
+ close() {
99
+ this.svc.loginDialogOpen = false;
100
+ this.dialogRef.close();
101
+ }
102
+ returnToLoginPage() {
103
+ this.svc.loginDialogOpen = false;
104
+ this.dialogRef.close({ returnToLogin: true });
105
+ }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginDialogComponent, deps: [{ token: ZAC_LOGIN_SERVICE }, { token: SETTINGS_SERVICE }, { token: MAT_DIALOG_DATA }, { token: i1.Router }, { token: i2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginDialogComponent, selector: "lib-confirm", ngImport: i0, template: "<div class=\"login-modal-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <form id=\"login-form\" (submit)=\"login()\" autocomplete=\"on\">\n <div class=\"login-modal-body\">\n <div class=\"login-modal-content\">\n <div class=\"login-title-container\">\n <span class=\"login-title\">Session Expired</span>\n <span class=\"login-subtitle\">Please login to continue.</span>\n </div>\n <div class=\"login-modal-main\">\n <lib-selector-input\n *ngIf=\"!svc.originIsController\"\n [fieldName]=\"'Edge Controller'\"\n [(fieldValue)]=\"selectedEdgeController\"\n [placeholder]=\"'Select an Edge Controller'\"\n [valueList]=\"edgeControllerList\"\n (fieldValueChange)=\"edgeChanged($event)\"\n >\n </lib-selector-input>\n <lib-string-input [fieldName]=\"'Username'\"\n [(fieldValue)]=\"username\"\n [autocomplete]=\"'username'\"\n [placeholder]=\"'enter username of controller'\"></lib-string-input>\n <lib-password-input [fieldName]=\"'Password'\"\n [(fieldValue)]=\"password\"\n [autocomplete]=\"'current-password'\"\n [placeholder]=\"'enter password of controller'\"></lib-password-input>\n <span class=\"login-error-message\" *ngIf=\"loginFailed\">Login Failed</span>\n </div>\n </div>\n </div>\n <div class=\"login-buttons-container\">\n <button class=\"button\" type=\"submit\">Login</button>\n <div class=\"linkButton cancel\" (click)=\"returnToLoginPage()\">Return to login page</div>\n </div>\n </form>\n</div>\n", styles: [".login-modal-container{display:flex;flex-direction:column;background-color:var(--background);border-radius:1.5625rem;width:25rem;padding:var(--paddingXXL)}.login-modal-container .login-modal-body{display:flex;flex-direction:row;align-items:center}.login-modal-container .login-modal-body .login-modal-content{display:flex;flex-direction:column;width:100%}.login-modal-container .login-modal-body .login-modal-main{display:flex;flex-direction:column;align-items:center}.login-modal-container .login-modal-body .login-modal-icon{width:7.5rem;height:7.5rem;background-size:contain;z-index:20;box-sizing:var(--shadow);margin-left:.9375rem}.login-modal-container .login-modal-body lib-string-input,.login-modal-container .login-modal-body lib-password-input{width:100%}.login-modal-container .login-title-container{width:100%;display:flex;flex-direction:column}.login-modal-container .login-title-container .login-title{color:var(--primaryColor);font-size:1.875rem;position:relative;padding-left:0;width:100%;background:none;text-transform:none;height:auto;font-family:Russo One;filter:brightness(50%)}.login-modal-container .login-buttons-container{display:flex;justify-content:flex-end;flex-direction:row;width:100%;align-items:flex-end;margin-top:var(--marginXXL)}.login-modal-container .login-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.login-modal-container button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center;font-size:.75rem}.login-modal-container button.confirm{background-color:var(--secondary)}.login-modal-container button.cancel{background-color:var(--primary)}.login-error-message{display:flex;justify-content:flex-start;width:100%;margin-top:.325rem;color:var(--red);font-weight:600;font-size:.925rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.StringInputComponent, selector: "lib-string-input", inputs: ["fieldName", "helpText", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error", "autocomplete", "required"], outputs: ["fieldValueChange"] }, { kind: "component", type: i6.SelectorInputComponent, selector: "lib-selector-input", inputs: ["fieldName", "fieldValue", "helpText", "placeholder", "parentage", "valueList", "labelColor", "fieldClass", "error"], outputs: ["fieldValueChange"] }, { kind: "component", type: i7.PasswordInputComponent, selector: "lib-password-input", inputs: ["fieldName", "fieldValue", "placeholder", "parentage", "labelColor", "fieldClass", "error", "autocomplete", "required"], outputs: ["fieldValueChange"] }] }); }
108
+ }
109
+ export { LoginDialogComponent };
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginDialogComponent, decorators: [{
111
+ type: Component,
112
+ args: [{ selector: 'lib-confirm', template: "<div class=\"login-modal-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <form id=\"login-form\" (submit)=\"login()\" autocomplete=\"on\">\n <div class=\"login-modal-body\">\n <div class=\"login-modal-content\">\n <div class=\"login-title-container\">\n <span class=\"login-title\">Session Expired</span>\n <span class=\"login-subtitle\">Please login to continue.</span>\n </div>\n <div class=\"login-modal-main\">\n <lib-selector-input\n *ngIf=\"!svc.originIsController\"\n [fieldName]=\"'Edge Controller'\"\n [(fieldValue)]=\"selectedEdgeController\"\n [placeholder]=\"'Select an Edge Controller'\"\n [valueList]=\"edgeControllerList\"\n (fieldValueChange)=\"edgeChanged($event)\"\n >\n </lib-selector-input>\n <lib-string-input [fieldName]=\"'Username'\"\n [(fieldValue)]=\"username\"\n [autocomplete]=\"'username'\"\n [placeholder]=\"'enter username of controller'\"></lib-string-input>\n <lib-password-input [fieldName]=\"'Password'\"\n [(fieldValue)]=\"password\"\n [autocomplete]=\"'current-password'\"\n [placeholder]=\"'enter password of controller'\"></lib-password-input>\n <span class=\"login-error-message\" *ngIf=\"loginFailed\">Login Failed</span>\n </div>\n </div>\n </div>\n <div class=\"login-buttons-container\">\n <button class=\"button\" type=\"submit\">Login</button>\n <div class=\"linkButton cancel\" (click)=\"returnToLoginPage()\">Return to login page</div>\n </div>\n </form>\n</div>\n", styles: [".login-modal-container{display:flex;flex-direction:column;background-color:var(--background);border-radius:1.5625rem;width:25rem;padding:var(--paddingXXL)}.login-modal-container .login-modal-body{display:flex;flex-direction:row;align-items:center}.login-modal-container .login-modal-body .login-modal-content{display:flex;flex-direction:column;width:100%}.login-modal-container .login-modal-body .login-modal-main{display:flex;flex-direction:column;align-items:center}.login-modal-container .login-modal-body .login-modal-icon{width:7.5rem;height:7.5rem;background-size:contain;z-index:20;box-sizing:var(--shadow);margin-left:.9375rem}.login-modal-container .login-modal-body lib-string-input,.login-modal-container .login-modal-body lib-password-input{width:100%}.login-modal-container .login-title-container{width:100%;display:flex;flex-direction:column}.login-modal-container .login-title-container .login-title{color:var(--primaryColor);font-size:1.875rem;position:relative;padding-left:0;width:100%;background:none;text-transform:none;height:auto;font-family:Russo One;filter:brightness(50%)}.login-modal-container .login-buttons-container{display:flex;justify-content:flex-end;flex-direction:row;width:100%;align-items:flex-end;margin-top:var(--marginXXL)}.login-modal-container .login-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.login-modal-container button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center;font-size:.75rem}.login-modal-container button.confirm{background-color:var(--secondary)}.login-modal-container button.cancel{background-color:var(--primary)}.login-error-message{display:flex;justify-content:flex-start;width:100%;margin-top:.325rem;color:var(--red);font-weight:600;font-size:.925rem}\n"] }]
113
+ }], ctorParameters: function () { return [{ type: i8.LoginServiceClass, decorators: [{
114
+ type: Inject,
115
+ args: [ZAC_LOGIN_SERVICE]
116
+ }] }, { type: i9.SettingsServiceClass, decorators: [{
117
+ type: Inject,
118
+ args: [SETTINGS_SERVICE]
119
+ }] }, { type: undefined, decorators: [{
120
+ type: Inject,
121
+ args: [MAT_DIALOG_DATA]
122
+ }] }, { type: i1.Router }, { type: i2.MatDialogRef }]; } });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9sb2dpbi9sb2dpbi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2xvZ2luL2xvZ2luLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RSxPQUFPLEVBQW9CLGlCQUFpQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDeEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7QUFFL0IsTUFLYSxvQkFBb0I7SUFTL0IsWUFDb0MsR0FBc0IsRUFDdEIsZUFBcUMsRUFDdkMsSUFBUyxFQUNqQyxNQUFjLEVBQ2QsU0FBNkM7UUFKbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsb0JBQWUsR0FBZixlQUFlLENBQXNCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBWnZELFlBQU8sR0FBRyxFQUFFLENBQUE7UUFDWiwyQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFTdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQztJQUN2RixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQzdELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDL0IsT0FBTzthQUNSO1lBQ0QsSUFBSSxPQUFPO2dCQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFhO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztZQUM3QixRQUFRLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1lBQ3ZHLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN4QixNQUFNLE9BQU8sR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNqRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlDO2FBQU07WUFDTCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFNO1FBQ2hCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1NBQ2xFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsV0FBVyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzdFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNWLE1BQU0sRUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQ3BCLElBQUksQ0FBQyxRQUFRLEVBQ2IsS0FBSyxDQUNSLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNqQixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBdkZVLG9CQUFvQixrQkFVckIsaUJBQWlCLGFBQ2pCLGdCQUFnQixhQUNoQixlQUFlO21HQVpkLG9CQUFvQixtREM5QmpDLDZrRUFxQ0E7O1NEUGEsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsYUFBYTs7MEJBY3BCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuXG5pbXBvcnQge1JvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtMb2dpblNlcnZpY2VDbGFzcywgWkFDX0xPR0lOX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9sb2dpbi1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZUNsYXNzfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Mtc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtpc0VtcHR5fSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBkYXRhT2JqID0ge31cbiAgc2VsZWN0ZWRFZGdlQ29udHJvbGxlciA9ICcnO1xuICB1c2VybmFtZSA9ICcnO1xuICBwYXNzd29yZCA9ICcnO1xuICBsb2dpbkZhaWxlZCA9IGZhbHNlO1xuICBlZGdlQ29udHJvbGxlckxpc3QgPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFpBQ19MT0dJTl9TRVJWSUNFKSBwdWJsaWMgc3ZjOiBMb2dpblNlcnZpY2VDbGFzcyxcbiAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2VDbGFzcyxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TG9naW5EaWFsb2dDb21wb25lbnQ+XG4gICkge1xuICAgIHRoaXMuZGF0YU9iaiA9IGRhdGE7XG4gICAgdGhpcy5zdmMubG9naW5EaWFsb2dPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgPSB0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXI7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3ZjLm9yaWdpbklzQ29udHJvbGxlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0cykgdGhpcy5zZXR0aW5nc1JldHVybmVkKHJlc3VsdHMpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0dGluZ3NSZXR1cm5lZChzZXR0aW5nczogYW55KSB7XG4gICAgdGhpcy5lZGdlQ29udHJvbGxlckxpc3QgPSBbXTtcbiAgICBpZiAoc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmVkZ2VDb250cm9sbGVyTGlzdCA9IFtdO1xuICAgICAgc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzLmZvckVhY2goKGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgaWYgKCFjb250cm9sbGVyLnVybCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkZ2VDb250cm9sbGVyTGlzdC5wdXNoKHtuYW1lOmNvbnRyb2xsZXIubmFtZSArIGAgKCR7Y29udHJvbGxlci51cmx9KWAsIHZhbHVlOiBjb250cm9sbGVyLnVybH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInppdGktc2VydmljZVVybC12YWx1ZVwiKTtcbiAgICBpZiAoIWlzRW1wdHkoc2VydmljZVVybCkpIHtcbiAgICAgIGNvbnN0IGxhc3RVcmw6IGFueSA9IEpTT04ucGFyc2Uoc2VydmljZVVybCkuZGF0YTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFZGdlQ29udHJvbGxlciA9IGxhc3RVcmwudHJpbSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgPSBzZXR0aW5ncy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyO1xuICAgIH1cbiAgfVxuXG4gIGVkZ2VDaGFuZ2VkKGV2ZW50Pykge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpIHtcbiAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLmluaXRBcGlWZXJzaW9ucyh0aGlzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpXG4gICAgfVxuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgPSB0aGlzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXI7XG4gIH1cblxuICBsb2dpbigpIHtcbiAgICAgIGNvbnN0IGFwaVZlcnNpb25zID0gdGhpcy5zZXR0aW5nc1NlcnZpY2UuYXBpVmVyc2lvbnM7XG4gICAgICBjb25zdCBwcmVmaXggPSBhcGlWZXJzaW9ucyAmJiBhcGlWZXJzaW9uc1tcImVkZ2UtbWFuYWdlbWVudFwiXT8udjE/LnBhdGggfHwgJyc7XG4gICAgICB0aGlzLmxvZ2luRmFpbGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnN2Yy5sb2dpbihcbiAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyLFxuICAgICAgICAgIHRoaXMudXNlcm5hbWUudHJpbSgpLFxuICAgICAgICAgIHRoaXMucGFzc3dvcmQsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQ/LmVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3ZjLmxvZ2luRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXQodGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7aXNMb2dnZWRJbjogdHJ1ZX0pO1xuICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2luRmFpbGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5zdmMubG9naW5EaWFsb2dPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIHJldHVyblRvTG9naW5QYWdlKCkge1xuICAgIHRoaXMuc3ZjLmxvZ2luRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtyZXR1cm5Ub0xvZ2luOiB0cnVlfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2dpbi1tb2RhbC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCI+PC9kaXY+XG4gICAgPGZvcm0gaWQ9XCJsb2dpbi1mb3JtXCIgKHN1Ym1pdCk9XCJsb2dpbigpXCIgYXV0b2NvbXBsZXRlPVwib25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLW1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dpbi1tb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLXRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvZ2luLXRpdGxlXCI+U2Vzc2lvbiBFeHBpcmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvZ2luLXN1YnRpdGxlXCI+UGxlYXNlIGxvZ2luIHRvIGNvbnRpbnVlLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9naW4tbW9kYWwtbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXNlbGVjdG9yLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc3ZjLm9yaWdpbklzQ29udHJvbGxlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkTmFtZV09XCInRWRnZSBDb250cm9sbGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJzZWxlY3RlZEVkZ2VDb250cm9sbGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhbiBFZGdlIENvbnRyb2xsZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVMaXN0XT1cImVkZ2VDb250cm9sbGVyTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkVmFsdWVDaGFuZ2UpPVwiZWRnZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItc2VsZWN0b3ItaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItc3RyaW5nLWlucHV0IFtmaWVsZE5hbWVdPVwiJ1VzZXJuYW1lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZmllbGRWYWx1ZSldPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIid1c2VybmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2VudGVyIHVzZXJuYW1lIG9mIGNvbnRyb2xsZXInXCI+PC9saWItc3RyaW5nLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8bGliLXBhc3N3b3JkLWlucHV0IFtmaWVsZE5hbWVdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhmaWVsZFZhbHVlKV09XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInY3VycmVudC1wYXNzd29yZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZW50ZXIgcGFzc3dvcmQgb2YgY29udHJvbGxlcidcIj48L2xpYi1wYXNzd29yZC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2dpbi1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJsb2dpbkZhaWxlZFwiPkxvZ2luIEZhaWxlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvZ2luLWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiPkxvZ2luPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwicmV0dXJuVG9Mb2dpblBhZ2UoKVwiPlJldHVybiB0byBsb2dpbiBwYWdlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbjwvZGl2PlxuIl19