ngx-sp-infra 3.22.6 → 4.0.2-next

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 (89) hide show
  1. package/esm2022/lib/components/footer/footer.component.mjs +4 -4
  2. package/esm2022/lib/components/lib-config-senha/lib-config-senha.component.mjs +13 -12
  3. package/esm2022/lib/components/page-not-authorized/page-not-authorized.component.mjs +3 -3
  4. package/esm2022/lib/directives/click-outside.directive.mjs +3 -3
  5. package/esm2022/lib/directives/copy-clipboard.directive.mjs +3 -3
  6. package/esm2022/lib/directives/disable-control.directive.mjs +3 -3
  7. package/esm2022/lib/directives/highlight.directive.mjs +3 -3
  8. package/esm2022/lib/directives/loading-btn.directive.mjs +3 -3
  9. package/esm2022/lib/directives/required.directive.mjs +3 -3
  10. package/esm2022/lib/directives/text-truncate.directive.mjs +3 -3
  11. package/esm2022/lib/infra.module.mjs +26 -20
  12. package/esm2022/lib/message/alert/alert.component.mjs +4 -4
  13. package/esm2022/lib/message/confirm/confirm.component.mjs +3 -3
  14. package/esm2022/lib/message/confirm-modal/confirm-modal.component.mjs +3 -3
  15. package/esm2022/lib/message/message.service.mjs +3 -3
  16. package/esm2022/lib/message/save/save.component.mjs +5 -5
  17. package/esm2022/lib/modules/lib-directives.module.mjs +87 -0
  18. package/esm2022/lib/modules/lib-pipes.module.mjs +111 -0
  19. package/esm2022/lib/modules/lib-views.module.mjs +68 -0
  20. package/esm2022/lib/modules/lib-widgets.module.mjs +268 -0
  21. package/esm2022/lib/pipes/cpf-cnpj.pipe.mjs +3 -3
  22. package/esm2022/lib/pipes/currency.pipe.mjs +3 -3
  23. package/esm2022/lib/pipes/decimal-comma.pipe.mjs +3 -3
  24. package/esm2022/lib/pipes/filter-multiple-choice.pipe.mjs +3 -3
  25. package/esm2022/lib/pipes/format-by-type.pipe.mjs +3 -3
  26. package/esm2022/lib/pipes/order-sort.pipe.mjs +3 -3
  27. package/esm2022/lib/pipes/phone-format.pipe.mjs +3 -3
  28. package/esm2022/lib/pipes/text-filter.pipe.mjs +3 -3
  29. package/esm2022/lib/pipes/title-case-pipe.pipe.mjs +3 -3
  30. package/esm2022/lib/pipes/to-url.pipe.mjs +3 -3
  31. package/esm2022/lib/service/configuracao-senha.service.mjs +3 -3
  32. package/esm2022/lib/service/file.service.mjs +3 -3
  33. package/esm2022/lib/service/ip-service.service.mjs +3 -3
  34. package/esm2022/lib/service/modal-utils.service.mjs +3 -3
  35. package/esm2022/lib/service/table-selection.service.mjs +3 -3
  36. package/esm2022/lib/service/tenant.service.mjs +3 -3
  37. package/esm2022/lib/utils/check-url-and-method.service.mjs +3 -3
  38. package/esm2022/lib/utils/filtros-aplicados.service.mjs +3 -3
  39. package/esm2022/lib/utils/settings.service.mjs +3 -3
  40. package/esm2022/lib/validators/cpf-cnpj.validator.directive.mjs +3 -3
  41. package/esm2022/lib/widgets/applied-filters/applied-filters.component.mjs +9 -8
  42. package/esm2022/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.mjs +3 -3
  43. package/esm2022/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.mjs +3 -3
  44. package/esm2022/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.mjs +3 -3
  45. package/esm2022/lib/widgets/combobox/combobox.component.mjs +6 -6
  46. package/esm2022/lib/widgets/combobox/pipes/filter-by.pipe.mjs +3 -3
  47. package/esm2022/lib/widgets/combobox/pipes/limit-to.pipe.mjs +3 -3
  48. package/esm2022/lib/widgets/combobox-multiple-choice/combobox-multiple-choice.component.mjs +9 -8
  49. package/esm2022/lib/widgets/content-container/content-container.component.mjs +9 -8
  50. package/esm2022/lib/widgets/custom-acordion/custom-acordion.component.mjs +8 -8
  51. package/esm2022/lib/widgets/dropdown-options/dropdown-options.component.mjs +3 -3
  52. package/esm2022/lib/widgets/dynamic-input/dynamic-input.component.mjs +7 -7
  53. package/esm2022/lib/widgets/field-contador-message/field-contador-message.component.mjs +4 -4
  54. package/esm2022/lib/widgets/field-control-error/field-control-error.component.mjs +3 -3
  55. package/esm2022/lib/widgets/field-error-message/field-error-message.component.mjs +4 -4
  56. package/esm2022/lib/widgets/generic-modal/generic-modal.component.mjs +3 -3
  57. package/esm2022/lib/widgets/input-trim/input-trim.component.mjs +3 -3
  58. package/esm2022/lib/widgets/lib-combobox/lib-combobox.component.mjs +17 -9
  59. package/esm2022/lib/widgets/lib-header/lib-header.component.mjs +7 -6
  60. package/esm2022/lib/widgets/lib-icons/lib-icons.component.mjs +3 -3
  61. package/esm2022/lib/widgets/lib-nav-produtos/lib-nav-produtos.component.mjs +3 -3
  62. package/esm2022/lib/widgets/lib-transfer-list/inner-list/inner-list.component.mjs +12 -11
  63. package/esm2022/lib/widgets/lib-transfer-list/lib-transfer-list.component.mjs +8 -7
  64. package/esm2022/lib/widgets/loading/loading.component.mjs +3 -3
  65. package/esm2022/lib/widgets/loading-button/loading-button.component.mjs +3 -3
  66. package/esm2022/lib/widgets/nav-produtos/nav-produtos.component.mjs +7 -7
  67. package/esm2022/lib/widgets/ordering/ordering.component.mjs +8 -7
  68. package/esm2022/lib/widgets/pagination/pagination.component.mjs +5 -5
  69. package/esm2022/lib/widgets/password-policy/password-policy.component.mjs +5 -5
  70. package/esm2022/lib/widgets/search-combobox/search-combobox.component.mjs +8 -8
  71. package/esm2022/lib/widgets/search-filters/search-filters.component.mjs +6 -6
  72. package/esm2022/lib/widgets/search-input/search-input.component.mjs +3 -3
  73. package/esm2022/lib/widgets/side-tabs-generic/side-tabs-generic.component.mjs +8 -7
  74. package/esm2022/lib/widgets/simple-search/simple-search.component.mjs +3 -3
  75. package/esm2022/lib/widgets/spinner/spinner.component.mjs +3 -3
  76. package/esm2022/lib/widgets/table/table.component.mjs +12 -11
  77. package/esm2022/lib/widgets/tree/pipes/search-tree.pipe.mjs +3 -3
  78. package/esm2022/lib/widgets/tree/tree.component.mjs +3 -3
  79. package/esm2022/public-api.mjs +8 -3
  80. package/fesm2022/ngx-sp-infra.mjs +2812 -2376
  81. package/fesm2022/ngx-sp-infra.mjs.map +1 -1
  82. package/lib/modules/lib-directives.module.d.ts +22 -0
  83. package/lib/modules/lib-pipes.module.d.ts +26 -0
  84. package/lib/modules/lib-views.module.d.ts +18 -0
  85. package/lib/modules/lib-widgets.module.d.ts +54 -0
  86. package/lib/widgets/content-container/content-container.component.d.ts +1 -1
  87. package/lib/widgets/field-error-message/field-error-message.component.d.ts +1 -2
  88. package/package.json +1 -1
  89. package/public-api.d.ts +7 -2
@@ -15,11 +15,11 @@ export class FooterComponent {
15
15
  htmlEl.style.justifyContent = "center";
16
16
  htmlEl.style.backgroundColor = "#eee"; // [!]
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FooterComponent, isStandalone: true, selector: "[app-footer], app-footer, lib-footer", ngImport: i0, template: " <!-- #region FOOTER -->\n\n<div class=\"footer-position d-flex align-items-end justify-content-center position-relative\">\n <footer>\n <p class=\"footer-text d-flex justify-content-center\">\n Desenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"sispro text-decoration-none fw-bold text-primary\"> SISPRO </a> - Servi\u00E7os e Tecnologia da informa\u00E7\u00E3o LTDA \u00A9 {{ year }} Todos os direitos reservados\n </p>\n\n <div class=\"icons d-flex align-items-center justify-content-center mt-3\">\n <a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/>\n </a>\n\n <a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/>\n </a>\n\n <a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/>\n </a>\n </div>\n </footer>\n</div>\n <!-- #endregion FOOTER -->\n", styles: [".footer-position{margin:1.5rem 0;font-size:.875rem;color:#2847a0;white-space:nowrap}.footer-position .sispro{margin:0 5px}.footer-position .icons .icon-item{margin:0 10px}\n"], dependencies: [{ kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }] }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FooterComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FooterComponent, isStandalone: true, selector: "[app-footer], app-footer, lib-footer", ngImport: i0, template: " <!-- #region FOOTER -->\n\n<div class=\"footer-position d-flex align-items-end justify-content-center position-relative\">\n <footer>\n <p class=\"footer-text d-flex justify-content-center\">\n Desenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"sispro text-decoration-none fw-bold text-primary\"> SISPRO </a> - Servi\u00E7os e Tecnologia da informa\u00E7\u00E3o LTDA \u00A9 {{ year }} Todos os direitos reservados\n </p>\n\n <div class=\"icons d-flex align-items-center justify-content-center mt-3\">\n <a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/>\n </a>\n\n <a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/>\n </a>\n\n <a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/>\n </a>\n </div>\n </footer>\n</div>\n <!-- #endregion FOOTER -->\n", styles: [".footer-position{margin:1.5rem 0;font-size:.875rem;color:#2847a0;white-space:nowrap}.footer-position .sispro{margin:0 5px}.footer-position .icons .icon-item{margin:0 10px}\n"], dependencies: [{ kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }] }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FooterComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: '[app-footer], app-footer, lib-footer', standalone: true, imports: [LibIconsComponent], template: " <!-- #region FOOTER -->\n\n<div class=\"footer-position d-flex align-items-end justify-content-center position-relative\">\n <footer>\n <p class=\"footer-text d-flex justify-content-center\">\n Desenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"sispro text-decoration-none fw-bold text-primary\"> SISPRO </a> - Servi\u00E7os e Tecnologia da informa\u00E7\u00E3o LTDA \u00A9 {{ year }} Todos os direitos reservados\n </p>\n\n <div class=\"icons d-flex align-items-center justify-content-center mt-3\">\n <a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/>\n </a>\n\n <a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/>\n </a>\n\n <a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\" class=\"icon-item\">\n <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/>\n </a>\n </div>\n </footer>\n</div>\n <!-- #endregion FOOTER -->\n", styles: [".footer-position{margin:1.5rem 0;font-size:.875rem;color:#2847a0;white-space:nowrap}.footer-position .sispro{margin:0 5px}.footer-position .icons .icon-item{margin:0 10px}\n"] }]
24
24
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBU2hGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRWxDLGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUN4QixTQUFJLEdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUhSLENBQUM7SUFLdkMsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTRCLENBQUM7UUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxDQUFJLFVBQVU7SUFDdEQsQ0FBQzsrR0FiVSxlQUFlO21HQUFmLGVBQWUsZ0dDVjVCLGd1Q0F3QkEsdU9EaEJlLGlCQUFpQjs7NEZBRW5CLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0ksc0NBQXNDLGNBR3BDLElBQUksV0FDUCxDQUFFLGlCQUFpQixDQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYkljb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9saWItaWNvbnMvbGliLWljb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW2FwcC1mb290ZXJdLCBhcHAtZm9vdGVyLCBsaWItZm9vdGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb290ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFsgTGliSWNvbnNDb21wb25lbnQgXVxufSlcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICBjdXJyZW50VGltZSA9IG5ldyBEYXRlKClcbiAgeWVhcjogbnVtYmVyID0gdGhpcy5jdXJyZW50VGltZS5nZXRGdWxsWWVhcigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGh0bWxFbDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaHRtbEVsLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgIGh0bWxFbC5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgaHRtbEVsLnN0eWxlLmFsaWduSXRlbXMgPSBcImZsZXgtZW5kXCI7XG4gICAgaHRtbEVsLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gXCJjZW50ZXJcIjtcbiAgICBodG1sRWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCIjZWVlXCI7ICAgIC8vIFshXSAgICBcbiAgfVxuXG59XG4iLCIgIDwhLS0gI3JlZ2lvbiBGT09URVIgLS0+XG5cbjxkaXYgY2xhc3M9XCJmb290ZXItcG9zaXRpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWVuZCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gIDxmb290ZXI+XG4gICAgPHAgY2xhc3M9XCJmb290ZXItdGV4dCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgRGVzZW52b2x2aWRvIHBvciA8YSBocmVmPVwiaHR0cHM6Ly93d3cuc2lzcHJvLmNvbS5ici9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNpc3BybyB0ZXh0LWRlY29yYXRpb24tbm9uZSBmdy1ib2xkIHRleHQtcHJpbWFyeVwiPiBTSVNQUk8gPC9hPiAtIFNlcnZpw6dvcyBlIFRlY25vbG9naWEgZGEgaW5mb3JtYcOnw6NvIExUREEgwqkge3sgeWVhciB9fSBUb2RvcyBvcyBkaXJlaXRvcyByZXNlcnZhZG9zXG4gICAgPC9wPlxuXG4gICAgPGRpdiBjbGFzcz1cImljb25zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0zXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9wdC1ici5mYWNlYm9vay5jb20vU2lzcHJvRVJQL1wiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwiaWNvbi1pdGVtXCI+XG4gICAgICAgIDxsaWItaWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGljb25OYW1lPVwiZmFjZWJvb2tcIiBpY29uU2l6ZT1cIm1lZGl1bS1zbWFsbFwiLz5cbiAgICAgIDwvYT5cblxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYWNjb3VudHMvbG9naW4vP25leHQ9L3Npc3Byb19zb2Z0d2FyZS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cImljb24taXRlbVwiPlxuICAgICAgICA8bGliLWljb24gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIiBpY29uTmFtZT1cImluc3RhZ3JhbVwiIGljb25TaXplPVwibWVkaXVtLXNtYWxsXCIvPlxuICAgICAgPC9hPlxuXG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9ici5saW5rZWRpbi5jb20vY29tcGFueS9zaXNwcm9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cImljb24taXRlbVwiPlxuICAgICAgICA8bGliLWljb24gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIiBpY29uTmFtZT1cImxpbmtlZGluXCIgaWNvblNpemU9XCJtZWRpdW0tc21hbGxcIi8+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvZm9vdGVyPlxuPC9kaXY+XG4gIDwhLS0gI2VuZHJlZ2lvbiBGT09URVIgLS0+XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBU2hGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRWxDLGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUN4QixTQUFJLEdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUhSLENBQUM7SUFLdkMsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTRCLENBQUM7UUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxDQUFJLFVBQVU7SUFDdEQsQ0FBQzsrR0FiVSxlQUFlO21HQUFmLGVBQWUsZ0dDVjVCLGd1Q0F3QkEsdU9EaEJjLGlCQUFpQjs7NEZBRWxCLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0ksc0NBQXNDLGNBR3BDLElBQUksV0FDUCxDQUFDLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYkljb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9saWItaWNvbnMvbGliLWljb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW2FwcC1mb290ZXJdLCBhcHAtZm9vdGVyLCBsaWItZm9vdGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb290ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtMaWJJY29uc0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XG5cbiAgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpXG4gIHllYXI6IG51bWJlciA9IHRoaXMuY3VycmVudFRpbWUuZ2V0RnVsbFllYXIoKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBodG1sRWw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGh0bWxFbC5zdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcbiAgICBodG1sRWwuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgIGh0bWxFbC5zdHlsZS5hbGlnbkl0ZW1zID0gXCJmbGV4LWVuZFwiO1xuICAgIGh0bWxFbC5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiY2VudGVyXCI7XG4gICAgaHRtbEVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwiI2VlZVwiOyAgICAvLyBbIV0gICAgXG4gIH1cblxufVxuIiwiICA8IS0tICNyZWdpb24gRk9PVEVSIC0tPlxuXG48ZGl2IGNsYXNzPVwiZm9vdGVyLXBvc2l0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1lbmQganVzdGlmeS1jb250ZW50LWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICA8Zm9vdGVyPlxuICAgIDxwIGNsYXNzPVwiZm9vdGVyLXRleHQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIERlc2Vudm9sdmlkbyBwb3IgPGEgaHJlZj1cImh0dHBzOi8vd3d3LnNpc3Byby5jb20uYnIvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzaXNwcm8gdGV4dC1kZWNvcmF0aW9uLW5vbmUgZnctYm9sZCB0ZXh0LXByaW1hcnlcIj4gU0lTUFJPIDwvYT4gLSBTZXJ2acOnb3MgZSBUZWNub2xvZ2lhIGRhIGluZm9ybWHDp8OjbyBMVERBIMKpIHt7IHllYXIgfX0gVG9kb3Mgb3MgZGlyZWl0b3MgcmVzZXJ2YWRvc1xuICAgIDwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJpY29ucyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtM1wiPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vcHQtYnIuZmFjZWJvb2suY29tL1Npc3Byb0VSUC9cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cImljb24taXRlbVwiPlxuICAgICAgICA8bGliLWljb24gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIiBpY29uTmFtZT1cImZhY2Vib29rXCIgaWNvblNpemU9XCJtZWRpdW0tc21hbGxcIi8+XG4gICAgICA8L2E+XG5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2FjY291bnRzL2xvZ2luLz9uZXh0PS9zaXNwcm9fc29mdHdhcmUvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJpY29uLWl0ZW1cIj5cbiAgICAgICAgPGxpYi1pY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgaWNvbk5hbWU9XCJpbnN0YWdyYW1cIiBpY29uU2l6ZT1cIm1lZGl1bS1zbWFsbFwiLz5cbiAgICAgIDwvYT5cblxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vYnIubGlua2VkaW4uY29tL2NvbXBhbnkvc2lzcHJvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJpY29uLWl0ZW1cIj5cbiAgICAgICAgPGxpYi1pY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgaWNvbk5hbWU9XCJsaW5rZWRpblwiIGljb25TaXplPVwibWVkaXVtLXNtYWxsXCIvPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Zvb3Rlcj5cbjwvZGl2PlxuICA8IS0tICNlbmRyZWdpb24gRk9PVEVSIC0tPlxuIl19
@@ -2,20 +2,21 @@ import { Component } from '@angular/core';
2
2
  import { FormControl, FormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
3
  import { FormUtils } from '../../utils/form-utils';
4
4
  import { InfraSegConfig } from '../../models/config-senha/7Db/InfraSegConfig.record';
5
- import { LibHeaderComponent } from '../../widgets/lib-header/lib-header.component';
6
- import { ContentContainerComponent } from '../../widgets/content-container/content-container.component';
7
- import { NgIf, NgClass } from '@angular/common';
8
- import { LibIconsComponent } from '../../widgets/lib-icons/lib-icons.component';
9
- import { TooltipDirective } from 'ngx-bootstrap/tooltip';
10
- import { RequiredDirective } from '../../directives/required.directive';
11
- import { FieldErrorMessageComponent } from '../../widgets/field-error-message/field-error-message.component';
12
5
  import { LibSpinnerComponent } from '../../widgets/spinner/spinner.component';
6
+ import { FieldErrorMessageComponent } from '../../widgets/field-error-message/field-error-message.component';
7
+ import { RequiredDirective } from '../../directives/required.directive';
8
+ import { TooltipModule } from 'ngx-bootstrap/tooltip';
9
+ import { LibIconsComponent } from '../../widgets/lib-icons/lib-icons.component';
10
+ import { NgIf, NgClass } from '@angular/common';
11
+ import { ContentContainerComponent } from '../../widgets/content-container/content-container.component';
12
+ import { LibHeaderComponent } from '../../widgets/lib-header/lib-header.component';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "../../service/configuracao-senha.service";
15
15
  import * as i2 from "../../message/message.service";
16
16
  import * as i3 from "../../service/tenant.service";
17
17
  import * as i4 from "@angular/platform-browser";
18
18
  import * as i5 from "@angular/forms";
19
+ import * as i6 from "ngx-bootstrap/tooltip";
19
20
  export class LibConfigSenhaComponent {
20
21
  // #endregion PUBLIC
21
22
  // #endregion ==========> PROPERTIES <==========
@@ -182,11 +183,11 @@ export class LibConfigSenhaComponent {
182
183
  break;
183
184
  }
184
185
  }
185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibConfigSenhaComponent, deps: [{ token: i1.ConfiguracaoSenhaService }, { token: i2.MessageService }, { token: i3.TenantService }, { token: i4.Title }], target: i0.ɵɵFactoryTarget.Component }); }
186
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibConfigSenhaComponent, isStandalone: true, selector: "lib-config-senha", ngImport: i0, template: "<lib-header [breadcrumbList]=\"[ 'Infra', 'Configura\u00E7\u00E3o de Senha' ]\" pageTitle=\"Configura\u00E7\u00E3o de Senha\"\n mode=\"edit\" [hideButtons]=\"[ 'Cancelar' ]\" (create)=\"onSubmit()\" (update)=\"onSubmit()\" />\n\n\n<!-- #region BODY -->\n<lib-container>\n\n <div innerContent1>\n <form *ngIf=\"$infraSegConfigRecord; else loading\" [formGroup]=\"form\">\n\n <div class=\"d-flex justify-content-start align-items-center\">\n <div class=\"mb-3\">\n <h2 class=\"fs-5\">Atualmente seu n\u00EDvel de seguran\u00E7a \u00E9 \n <span class=\"rounded text-white p-1 px-2 fw-bold\"\n [ngClass]=\"{\n 'bg-danger': initialLevel === 1,\n 'bg-warning': initialLevel === 2,\n 'bg-success': initialLevel === 3,\n 'bg-primary': initialLevel === 4,\n }\" >\n\n @switch (initialLevel) {\n @case (1) { Baixo }\n @case (2) { M\u00E9dio }\n @case (3) { Alto }\n @case (4) { Personalizado }\n }\n\n <!-- <strong *ngIf=\"initialLevel === 1\"> Baixo </strong>\n <strong class=\"text-dark\" *ngIf=\"initialLevel === 2\"> M\u00E9dio </strong>\n <strong *ngIf=\"initialLevel === 3\"> Alto </strong>\n <strong *ngIf=\"initialLevel === 4\"> Personalizado </strong> -->\n </span>\n </h2>\n </div>\n </div>\n <div class=\"border rounded mb-4\">\n <div class=\"card-body\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Selecione um n\u00EDvel de seguran\u00E7a abaixo:</h3>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option1\" autocomplete=\"off\" [value]=\"1\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-danger]=\"Level === 1\" [class.bg-danger]=\"Level === 1\" class=\"btn btn-secondary m-2\" for=\"option1\"><lib-icon iconName=\"cadeado-aberto-outline\"/> Baixo </label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option2\" autocomplete=\"off\" [value]=\"2\" (change)=\"onSelectLevel(Level)\" >\n <label [class.bg-warning]=\"Level === 2\" [class.btn-outline-warning]=\"Level === 2\" class=\" btn btn-secondary text-light m-2\" for=\"option2\"><lib-icon iconName=\"cadeado-semiaberto-outline\"/> M\u00E9dio</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option3\" autocomplete=\"off\" [value]=\"3\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-success]=\"Level === 3\" [class.bg-success]=\"Level === 3\" class=\"btn btn-secondary m-2\" for=\"option3\"><lib-icon iconName=\"cadeado-outline\"/> Alto</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option4\" autocomplete=\"off\" [value]=\"4\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-primary]=\"Level === 4\" [class.bg-primary]=\"Level === 4\" class=\"btn btn-secondary m-2\" for=\"option4\"><lib-icon iconName=\"chave\"/> Personalizado</label>\n </div>\n </div>\n\n <div class=\"border rounded p-3 mb-4\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">A senha deve conter:</h3>\n\n <div class=\"row\">\n <div class=\"col-3\">\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"numeros\"> N\u00FAmero </label>\n <input formControlName=\"Is_Numeros\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"numeros\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"letraMaiuscula\"> Letra Mai\u00FAscula </label>\n <input formControlName=\"Is_LetrasMaiusculas\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"letraMaiuscula\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"caracteresEspeciais\">Caractere especial</label>\n <input formControlName=\"Is_CaracteresEspeciais\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"caracteresEspeciais\">\n <lib-icon class=\"ms-1\" iconName=\"info\" iconColor=\"blue\" iconSize=\"small\" tooltip=\"Caracteres sugeridos: ! @ # $ % & * ( ) _ + = [ ] { } | ?\" />\n </div>\n </div>\n\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnTrocaSenhaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" />\n Validade em dias\n </label>\n <input formControlName=\"QtnTrocaSenha\" type=\"number\" class=\"form-control form-input\" id=\"qtnTrocaSenhaInput\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" >\n <app-field-error-message [control]=\"form.get('QtnTrocaSenha')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnMinimaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\" />\n Tamanho m\u00EDnimo\n </label>\n <input formControlName=\"QtnMinima\" type=\"number\" class=\"form-control form-input\" id=\"qtnMinimaInput\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\">\n <app-field-error-message [control]=\"form.get('QtnMinima')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnRepeticaoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\" />\n Repeti\u00E7\u00E3o\n </label>\n <input formControlName=\"QtnRepeticao\" type=\"number\" class=\"form-control form-input\" id=\"qtnRepeticaoInput\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\">\n <app-field-error-message [control]=\"form.get('QtnRepeticao')\"></app-field-error-message>\n </div>\n \n <!-- <div class=\"container col row\">\n \n </div> -->\n </div>\n </div>\n\n <div class=\"border rounded p-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Bloqueios:</h3>\n\n <div class=\"row\">\n <!-- <div class=\"col-2 form-check form-switch\">\n <label class=\"form-check-label\" for=\"isDropSessionCheck\"> Derrubar multiplas sess\u00F5es</label>\n <input class=\"form-check-input\" id=\"isDropSessionCheck\" formControlName=\"Is_DropSession\" type=\"checkbox\" role=\"switch\">\n </div> -->\n \n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"diasInatividadeInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\" />\n Dias de Inatividade\n </label>\n <input id=\"diasInatividadeInput\" formControlName=\"QtnInatividade\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\">\n <app-field-error-message [control]=\"form.get('QtnInatividade')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"tentativasDeAcessoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\" />\n Tentativas de acesso\n </label>\n <input id=\"tentativasDeAcessoInput\" formControlName=\"QtnTentativa\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\">\n <app-field-error-message [control]=\"form.get('QtnTentativa')\"></app-field-error-message>\n </div>\n\n <!-- <div class=\"container col-6 row\">\n\n </div> -->\n </div>\n </div>\n\n <!-- Palavras do Guilherme: \"oculteia eles\", \"um dia implementamos\" -->\n <!-- #region MARK: LINKS OCULTADOS -->\n <!-- <div class=\"card p-3 mt-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Redefini\u00E7\u00E3o de senha:</h3>\n <a href=\"#\" class=\"link-primary\">Obrigar todos os usu\u00E1rios a trocarem sua senha no pr\u00F3ximo login</a>\n <a href=\"#\" class=\"link-primary\">Selecionar usu\u00E1rios para trocarem sua senha no pr\u00F3ximo login</a>\n </div> -->\n <!-- #endregion LINKS OCULTADOS -->\n\n\n <!-- <div class=\"border rounded\">\n <div class=\"card-body\">\n \n\n </div>\n </div> -->\n\n </form>\n </div>\n\n</lib-container>\n<!-- #endregion BODY -->\n\n<!-- #region SPINNER -->\n<ng-template #loading>\n <div class=\"w-100 text-center\">\n <!-- <div class=\"spinner-border\" style=\"width: 3rem; height: 3rem;\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div> -->\n <lib-spinner />\n </div>\n</ng-template>\n\n<ng-template #loadingIsAtivo>\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div>\n</ng-template>\n<!-- #endregion SPINNER -->\n", styles: [""], dependencies: [{ kind: "component", type: LibHeaderComponent, selector: "lib-header", inputs: ["breadcrumbList", "pageTitle", "mode", "hideButtons", "formGroup", "showSpinner"], outputs: ["onReturn", "return", "onCreate", "create", "onUpdate", "update"] }, { kind: "component", type: ContentContainerComponent, selector: "lib-container", inputs: ["documentation", "tabs", "advancedTabs", "containerTitle", "currentTab"], outputs: ["onChangeTab"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: RequiredDirective, selector: "label[libRequired], span[libRequired], p[libRequired]", inputs: ["libRequired", "requiredID"] }, { kind: "component", type: FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: LibSpinnerComponent, selector: "lib-spinner", inputs: ["type", "theme", "size", "text"] }] }); }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibConfigSenhaComponent, deps: [{ token: i1.ConfiguracaoSenhaService }, { token: i2.MessageService }, { token: i3.TenantService }, { token: i4.Title }], target: i0.ɵɵFactoryTarget.Component }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LibConfigSenhaComponent, isStandalone: true, selector: "lib-config-senha", ngImport: i0, template: "<lib-header [breadcrumbList]=\"[ 'Infra', 'Configura\u00E7\u00E3o de Senha' ]\" pageTitle=\"Configura\u00E7\u00E3o de Senha\"\n mode=\"edit\" [hideButtons]=\"[ 'Cancelar' ]\" (create)=\"onSubmit()\" (update)=\"onSubmit()\" />\n\n\n<!-- #region BODY -->\n<lib-container>\n\n <div innerContent1>\n <form *ngIf=\"$infraSegConfigRecord; else loading\" [formGroup]=\"form\">\n\n <div class=\"d-flex justify-content-start align-items-center\">\n <div class=\"mb-3\">\n <h2 class=\"fs-5\">Atualmente seu n\u00EDvel de seguran\u00E7a \u00E9 \n <span class=\"rounded text-white p-1 px-2 fw-bold\"\n [ngClass]=\"{\n 'bg-danger': initialLevel === 1,\n 'bg-warning': initialLevel === 2,\n 'bg-success': initialLevel === 3,\n 'bg-primary': initialLevel === 4,\n }\" >\n\n @switch (initialLevel) {\n @case (1) { Baixo }\n @case (2) { M\u00E9dio }\n @case (3) { Alto }\n @case (4) { Personalizado }\n }\n\n <!-- <strong *ngIf=\"initialLevel === 1\"> Baixo </strong>\n <strong class=\"text-dark\" *ngIf=\"initialLevel === 2\"> M\u00E9dio </strong>\n <strong *ngIf=\"initialLevel === 3\"> Alto </strong>\n <strong *ngIf=\"initialLevel === 4\"> Personalizado </strong> -->\n </span>\n </h2>\n </div>\n </div>\n <div class=\"border rounded mb-4\">\n <div class=\"card-body\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Selecione um n\u00EDvel de seguran\u00E7a abaixo:</h3>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option1\" autocomplete=\"off\" [value]=\"1\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-danger]=\"Level === 1\" [class.bg-danger]=\"Level === 1\" class=\"btn btn-secondary m-2\" for=\"option1\"><lib-icon iconName=\"cadeado-aberto-outline\"/> Baixo </label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option2\" autocomplete=\"off\" [value]=\"2\" (change)=\"onSelectLevel(Level)\" >\n <label [class.bg-warning]=\"Level === 2\" [class.btn-outline-warning]=\"Level === 2\" class=\" btn btn-secondary text-light m-2\" for=\"option2\"><lib-icon iconName=\"cadeado-semiaberto-outline\"/> M\u00E9dio</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option3\" autocomplete=\"off\" [value]=\"3\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-success]=\"Level === 3\" [class.bg-success]=\"Level === 3\" class=\"btn btn-secondary m-2\" for=\"option3\"><lib-icon iconName=\"cadeado-outline\"/> Alto</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option4\" autocomplete=\"off\" [value]=\"4\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-primary]=\"Level === 4\" [class.bg-primary]=\"Level === 4\" class=\"btn btn-secondary m-2\" for=\"option4\"><lib-icon iconName=\"chave\"/> Personalizado</label>\n </div>\n </div>\n\n <div class=\"border rounded p-3 mb-4\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">A senha deve conter:</h3>\n\n <div class=\"row\">\n <div class=\"col-3\">\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"numeros\"> N\u00FAmero </label>\n <input formControlName=\"Is_Numeros\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"numeros\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"letraMaiuscula\"> Letra Mai\u00FAscula </label>\n <input formControlName=\"Is_LetrasMaiusculas\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"letraMaiuscula\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"caracteresEspeciais\">Caractere especial</label>\n <input formControlName=\"Is_CaracteresEspeciais\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"caracteresEspeciais\">\n <lib-icon class=\"ms-1\" iconName=\"info\" iconColor=\"blue\" iconSize=\"small\" tooltip=\"Caracteres sugeridos: ! @ # $ % & * ( ) _ + = [ ] { } | ?\" />\n </div>\n </div>\n\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnTrocaSenhaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" />\n Validade em dias\n </label>\n <input formControlName=\"QtnTrocaSenha\" type=\"number\" class=\"form-control form-input\" id=\"qtnTrocaSenhaInput\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" >\n <app-field-error-message [control]=\"form.get('QtnTrocaSenha')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnMinimaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\" />\n Tamanho m\u00EDnimo\n </label>\n <input formControlName=\"QtnMinima\" type=\"number\" class=\"form-control form-input\" id=\"qtnMinimaInput\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\">\n <app-field-error-message [control]=\"form.get('QtnMinima')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnRepeticaoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\" />\n Repeti\u00E7\u00E3o\n </label>\n <input formControlName=\"QtnRepeticao\" type=\"number\" class=\"form-control form-input\" id=\"qtnRepeticaoInput\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\">\n <app-field-error-message [control]=\"form.get('QtnRepeticao')\"></app-field-error-message>\n </div>\n \n <!-- <div class=\"container col row\">\n \n </div> -->\n </div>\n </div>\n\n <div class=\"border rounded p-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Bloqueios:</h3>\n\n <div class=\"row\">\n <!-- <div class=\"col-2 form-check form-switch\">\n <label class=\"form-check-label\" for=\"isDropSessionCheck\"> Derrubar multiplas sess\u00F5es</label>\n <input class=\"form-check-input\" id=\"isDropSessionCheck\" formControlName=\"Is_DropSession\" type=\"checkbox\" role=\"switch\">\n </div> -->\n \n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"diasInatividadeInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\" />\n Dias de Inatividade\n </label>\n <input id=\"diasInatividadeInput\" formControlName=\"QtnInatividade\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\">\n <app-field-error-message [control]=\"form.get('QtnInatividade')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"tentativasDeAcessoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\" />\n Tentativas de acesso\n </label>\n <input id=\"tentativasDeAcessoInput\" formControlName=\"QtnTentativa\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\">\n <app-field-error-message [control]=\"form.get('QtnTentativa')\"></app-field-error-message>\n </div>\n\n <!-- <div class=\"container col-6 row\">\n\n </div> -->\n </div>\n </div>\n\n <!-- Palavras do Guilherme: \"oculteia eles\", \"um dia implementamos\" -->\n <!-- #region MARK: LINKS OCULTADOS -->\n <!-- <div class=\"card p-3 mt-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Redefini\u00E7\u00E3o de senha:</h3>\n <a href=\"#\" class=\"link-primary\">Obrigar todos os usu\u00E1rios a trocarem sua senha no pr\u00F3ximo login</a>\n <a href=\"#\" class=\"link-primary\">Selecionar usu\u00E1rios para trocarem sua senha no pr\u00F3ximo login</a>\n </div> -->\n <!-- #endregion LINKS OCULTADOS -->\n\n\n <!-- <div class=\"border rounded\">\n <div class=\"card-body\">\n \n\n </div>\n </div> -->\n\n </form>\n </div>\n\n</lib-container>\n<!-- #endregion BODY -->\n\n<!-- #region SPINNER -->\n<ng-template #loading>\n <div class=\"w-100 text-center\">\n <!-- <div class=\"spinner-border\" style=\"width: 3rem; height: 3rem;\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div> -->\n <lib-spinner />\n </div>\n</ng-template>\n\n<ng-template #loadingIsAtivo>\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div>\n</ng-template>\n<!-- #endregion SPINNER -->\n", styles: [""], dependencies: [{ kind: "component", type: LibHeaderComponent, selector: "lib-header", inputs: ["breadcrumbList", "pageTitle", "mode", "hideButtons", "formGroup", "showSpinner"], outputs: ["onReturn", "return", "onCreate", "create", "onUpdate", "update"] }, { kind: "component", type: ContentContainerComponent, selector: "lib-container", inputs: ["documentation", "tabs", "advancedTabs", "containerTitle", "currentTab"], outputs: ["onChangeTab"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: RequiredDirective, selector: "label[libRequired], span[libRequired], p[libRequired]", inputs: ["libRequired", "requiredID"] }, { kind: "component", type: FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: LibSpinnerComponent, selector: "lib-spinner", inputs: ["type", "theme", "size", "text"] }] }); }
187
188
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibConfigSenhaComponent, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibConfigSenhaComponent, decorators: [{
189
190
  type: Component,
190
- args: [{ selector: 'lib-config-senha', standalone: true, imports: [LibHeaderComponent, ContentContainerComponent, NgIf, FormsModule, ReactiveFormsModule, NgClass, LibIconsComponent, TooltipDirective, RequiredDirective, FieldErrorMessageComponent, LibSpinnerComponent], template: "<lib-header [breadcrumbList]=\"[ 'Infra', 'Configura\u00E7\u00E3o de Senha' ]\" pageTitle=\"Configura\u00E7\u00E3o de Senha\"\n mode=\"edit\" [hideButtons]=\"[ 'Cancelar' ]\" (create)=\"onSubmit()\" (update)=\"onSubmit()\" />\n\n\n<!-- #region BODY -->\n<lib-container>\n\n <div innerContent1>\n <form *ngIf=\"$infraSegConfigRecord; else loading\" [formGroup]=\"form\">\n\n <div class=\"d-flex justify-content-start align-items-center\">\n <div class=\"mb-3\">\n <h2 class=\"fs-5\">Atualmente seu n\u00EDvel de seguran\u00E7a \u00E9 \n <span class=\"rounded text-white p-1 px-2 fw-bold\"\n [ngClass]=\"{\n 'bg-danger': initialLevel === 1,\n 'bg-warning': initialLevel === 2,\n 'bg-success': initialLevel === 3,\n 'bg-primary': initialLevel === 4,\n }\" >\n\n @switch (initialLevel) {\n @case (1) { Baixo }\n @case (2) { M\u00E9dio }\n @case (3) { Alto }\n @case (4) { Personalizado }\n }\n\n <!-- <strong *ngIf=\"initialLevel === 1\"> Baixo </strong>\n <strong class=\"text-dark\" *ngIf=\"initialLevel === 2\"> M\u00E9dio </strong>\n <strong *ngIf=\"initialLevel === 3\"> Alto </strong>\n <strong *ngIf=\"initialLevel === 4\"> Personalizado </strong> -->\n </span>\n </h2>\n </div>\n </div>\n <div class=\"border rounded mb-4\">\n <div class=\"card-body\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Selecione um n\u00EDvel de seguran\u00E7a abaixo:</h3>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option1\" autocomplete=\"off\" [value]=\"1\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-danger]=\"Level === 1\" [class.bg-danger]=\"Level === 1\" class=\"btn btn-secondary m-2\" for=\"option1\"><lib-icon iconName=\"cadeado-aberto-outline\"/> Baixo </label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option2\" autocomplete=\"off\" [value]=\"2\" (change)=\"onSelectLevel(Level)\" >\n <label [class.bg-warning]=\"Level === 2\" [class.btn-outline-warning]=\"Level === 2\" class=\" btn btn-secondary text-light m-2\" for=\"option2\"><lib-icon iconName=\"cadeado-semiaberto-outline\"/> M\u00E9dio</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option3\" autocomplete=\"off\" [value]=\"3\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-success]=\"Level === 3\" [class.bg-success]=\"Level === 3\" class=\"btn btn-secondary m-2\" for=\"option3\"><lib-icon iconName=\"cadeado-outline\"/> Alto</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option4\" autocomplete=\"off\" [value]=\"4\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-primary]=\"Level === 4\" [class.bg-primary]=\"Level === 4\" class=\"btn btn-secondary m-2\" for=\"option4\"><lib-icon iconName=\"chave\"/> Personalizado</label>\n </div>\n </div>\n\n <div class=\"border rounded p-3 mb-4\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">A senha deve conter:</h3>\n\n <div class=\"row\">\n <div class=\"col-3\">\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"numeros\"> N\u00FAmero </label>\n <input formControlName=\"Is_Numeros\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"numeros\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"letraMaiuscula\"> Letra Mai\u00FAscula </label>\n <input formControlName=\"Is_LetrasMaiusculas\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"letraMaiuscula\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"caracteresEspeciais\">Caractere especial</label>\n <input formControlName=\"Is_CaracteresEspeciais\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"caracteresEspeciais\">\n <lib-icon class=\"ms-1\" iconName=\"info\" iconColor=\"blue\" iconSize=\"small\" tooltip=\"Caracteres sugeridos: ! @ # $ % & * ( ) _ + = [ ] { } | ?\" />\n </div>\n </div>\n\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnTrocaSenhaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" />\n Validade em dias\n </label>\n <input formControlName=\"QtnTrocaSenha\" type=\"number\" class=\"form-control form-input\" id=\"qtnTrocaSenhaInput\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" >\n <app-field-error-message [control]=\"form.get('QtnTrocaSenha')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnMinimaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\" />\n Tamanho m\u00EDnimo\n </label>\n <input formControlName=\"QtnMinima\" type=\"number\" class=\"form-control form-input\" id=\"qtnMinimaInput\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\">\n <app-field-error-message [control]=\"form.get('QtnMinima')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnRepeticaoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\" />\n Repeti\u00E7\u00E3o\n </label>\n <input formControlName=\"QtnRepeticao\" type=\"number\" class=\"form-control form-input\" id=\"qtnRepeticaoInput\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\">\n <app-field-error-message [control]=\"form.get('QtnRepeticao')\"></app-field-error-message>\n </div>\n \n <!-- <div class=\"container col row\">\n \n </div> -->\n </div>\n </div>\n\n <div class=\"border rounded p-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Bloqueios:</h3>\n\n <div class=\"row\">\n <!-- <div class=\"col-2 form-check form-switch\">\n <label class=\"form-check-label\" for=\"isDropSessionCheck\"> Derrubar multiplas sess\u00F5es</label>\n <input class=\"form-check-input\" id=\"isDropSessionCheck\" formControlName=\"Is_DropSession\" type=\"checkbox\" role=\"switch\">\n </div> -->\n \n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"diasInatividadeInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\" />\n Dias de Inatividade\n </label>\n <input id=\"diasInatividadeInput\" formControlName=\"QtnInatividade\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\">\n <app-field-error-message [control]=\"form.get('QtnInatividade')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"tentativasDeAcessoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\" />\n Tentativas de acesso\n </label>\n <input id=\"tentativasDeAcessoInput\" formControlName=\"QtnTentativa\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\">\n <app-field-error-message [control]=\"form.get('QtnTentativa')\"></app-field-error-message>\n </div>\n\n <!-- <div class=\"container col-6 row\">\n\n </div> -->\n </div>\n </div>\n\n <!-- Palavras do Guilherme: \"oculteia eles\", \"um dia implementamos\" -->\n <!-- #region MARK: LINKS OCULTADOS -->\n <!-- <div class=\"card p-3 mt-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Redefini\u00E7\u00E3o de senha:</h3>\n <a href=\"#\" class=\"link-primary\">Obrigar todos os usu\u00E1rios a trocarem sua senha no pr\u00F3ximo login</a>\n <a href=\"#\" class=\"link-primary\">Selecionar usu\u00E1rios para trocarem sua senha no pr\u00F3ximo login</a>\n </div> -->\n <!-- #endregion LINKS OCULTADOS -->\n\n\n <!-- <div class=\"border rounded\">\n <div class=\"card-body\">\n \n\n </div>\n </div> -->\n\n </form>\n </div>\n\n</lib-container>\n<!-- #endregion BODY -->\n\n<!-- #region SPINNER -->\n<ng-template #loading>\n <div class=\"w-100 text-center\">\n <!-- <div class=\"spinner-border\" style=\"width: 3rem; height: 3rem;\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div> -->\n <lib-spinner />\n </div>\n</ng-template>\n\n<ng-template #loadingIsAtivo>\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div>\n</ng-template>\n<!-- #endregion SPINNER -->\n" }]
191
+ args: [{ selector: 'lib-config-senha', standalone: true, imports: [LibHeaderComponent, ContentContainerComponent, NgIf, FormsModule, ReactiveFormsModule, NgClass, LibIconsComponent, TooltipModule, RequiredDirective, FieldErrorMessageComponent, LibSpinnerComponent], template: "<lib-header [breadcrumbList]=\"[ 'Infra', 'Configura\u00E7\u00E3o de Senha' ]\" pageTitle=\"Configura\u00E7\u00E3o de Senha\"\n mode=\"edit\" [hideButtons]=\"[ 'Cancelar' ]\" (create)=\"onSubmit()\" (update)=\"onSubmit()\" />\n\n\n<!-- #region BODY -->\n<lib-container>\n\n <div innerContent1>\n <form *ngIf=\"$infraSegConfigRecord; else loading\" [formGroup]=\"form\">\n\n <div class=\"d-flex justify-content-start align-items-center\">\n <div class=\"mb-3\">\n <h2 class=\"fs-5\">Atualmente seu n\u00EDvel de seguran\u00E7a \u00E9 \n <span class=\"rounded text-white p-1 px-2 fw-bold\"\n [ngClass]=\"{\n 'bg-danger': initialLevel === 1,\n 'bg-warning': initialLevel === 2,\n 'bg-success': initialLevel === 3,\n 'bg-primary': initialLevel === 4,\n }\" >\n\n @switch (initialLevel) {\n @case (1) { Baixo }\n @case (2) { M\u00E9dio }\n @case (3) { Alto }\n @case (4) { Personalizado }\n }\n\n <!-- <strong *ngIf=\"initialLevel === 1\"> Baixo </strong>\n <strong class=\"text-dark\" *ngIf=\"initialLevel === 2\"> M\u00E9dio </strong>\n <strong *ngIf=\"initialLevel === 3\"> Alto </strong>\n <strong *ngIf=\"initialLevel === 4\"> Personalizado </strong> -->\n </span>\n </h2>\n </div>\n </div>\n <div class=\"border rounded mb-4\">\n <div class=\"card-body\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Selecione um n\u00EDvel de seguran\u00E7a abaixo:</h3>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option1\" autocomplete=\"off\" [value]=\"1\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-danger]=\"Level === 1\" [class.bg-danger]=\"Level === 1\" class=\"btn btn-secondary m-2\" for=\"option1\"><lib-icon iconName=\"cadeado-aberto-outline\"/> Baixo </label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option2\" autocomplete=\"off\" [value]=\"2\" (change)=\"onSelectLevel(Level)\" >\n <label [class.bg-warning]=\"Level === 2\" [class.btn-outline-warning]=\"Level === 2\" class=\" btn btn-secondary text-light m-2\" for=\"option2\"><lib-icon iconName=\"cadeado-semiaberto-outline\"/> M\u00E9dio</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option3\" autocomplete=\"off\" [value]=\"3\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-success]=\"Level === 3\" [class.bg-success]=\"Level === 3\" class=\"btn btn-secondary m-2\" for=\"option3\"><lib-icon iconName=\"cadeado-outline\"/> Alto</label>\n\n <input formControlName=\"Level\" type=\"radio\" class=\"btn-check\" name=\"Level\" id=\"option4\" autocomplete=\"off\" [value]=\"4\" (change)=\"onSelectLevel(Level)\" >\n <label [class.btn-outline-primary]=\"Level === 4\" [class.bg-primary]=\"Level === 4\" class=\"btn btn-secondary m-2\" for=\"option4\"><lib-icon iconName=\"chave\"/> Personalizado</label>\n </div>\n </div>\n\n <div class=\"border rounded p-3 mb-4\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">A senha deve conter:</h3>\n\n <div class=\"row\">\n <div class=\"col-3\">\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"numeros\"> N\u00FAmero </label>\n <input formControlName=\"Is_Numeros\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"numeros\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"letraMaiuscula\"> Letra Mai\u00FAscula </label>\n <input formControlName=\"Is_LetrasMaiusculas\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"letraMaiuscula\">\n </div>\n <div class=\"form-check form-switch\">\n <label class=\"form-check-label\" for=\"caracteresEspeciais\">Caractere especial</label>\n <input formControlName=\"Is_CaracteresEspeciais\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"caracteresEspeciais\">\n <lib-icon class=\"ms-1\" iconName=\"info\" iconColor=\"blue\" iconSize=\"small\" tooltip=\"Caracteres sugeridos: ! @ # $ % & * ( ) _ + = [ ] { } | ?\" />\n </div>\n </div>\n\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnTrocaSenhaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" />\n Validade em dias\n </label>\n <input formControlName=\"QtnTrocaSenha\" type=\"number\" class=\"form-control form-input\" id=\"qtnTrocaSenhaInput\" tooltip=\"Informe a quantidade em dias que a senha ser\u00E1 v\u00E1lida, ap\u00F3s este per\u00EDodo a senha dever\u00E1 ser trocada pelo usu\u00E1rio.\" >\n <app-field-error-message [control]=\"form.get('QtnTrocaSenha')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnMinimaInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\" />\n Tamanho m\u00EDnimo\n </label>\n <input formControlName=\"QtnMinima\" type=\"number\" class=\"form-control form-input\" id=\"qtnMinimaInput\" tooltip=\"Informe a quantidade m\u00EDnima de caracteres que a senha deve ter.\">\n <app-field-error-message [control]=\"form.get('QtnMinima')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"qtnRepeticaoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\" />\n Repeti\u00E7\u00E3o\n </label>\n <input formControlName=\"QtnRepeticao\" type=\"number\" class=\"form-control form-input\" id=\"qtnRepeticaoInput\" tooltip=\"Informe quantas senhas diferentes o usu\u00E1rio dever\u00E1 usar antes que possa repetir alguma j\u00E1 utilizada.\">\n <app-field-error-message [control]=\"form.get('QtnRepeticao')\"></app-field-error-message>\n </div>\n \n <!-- <div class=\"container col row\">\n \n </div> -->\n </div>\n </div>\n\n <div class=\"border rounded p-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Bloqueios:</h3>\n\n <div class=\"row\">\n <!-- <div class=\"col-2 form-check form-switch\">\n <label class=\"form-check-label\" for=\"isDropSessionCheck\"> Derrubar multiplas sess\u00F5es</label>\n <input class=\"form-check-input\" id=\"isDropSessionCheck\" formControlName=\"Is_DropSession\" type=\"checkbox\" role=\"switch\">\n </div> -->\n \n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"diasInatividadeInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\" />\n Dias de Inatividade\n </label>\n <input id=\"diasInatividadeInput\" formControlName=\"QtnInatividade\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe quantos dias um usu\u00E1rio poder\u00E1 ficar sem entrar no sistema, ao exceder este n\u00FAmero o usu\u00E1rio ser\u00E1 desativado perdendo o acesso ao sistema, e somente os Administradores poder\u00E3o ativ\u00E1-lo novamente.\">\n <app-field-error-message [control]=\"form.get('QtnInatividade')\"></app-field-error-message>\n </div>\n <div class=\"col-3\">\n <label libRequired class=\"form-label form-control-sm\" for=\"tentativasDeAcessoInput\">\n <lib-icon iconName=\"info\" iconSize=\"small\" iconColor=\"blue\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\" />\n Tentativas de acesso\n </label>\n <input id=\"tentativasDeAcessoInput\" formControlName=\"QtnTentativa\" type=\"number\" class=\"form-control form-input\" tooltip=\"Informe a quantidade de tentativas consecutivas de acesso ao sistema sem sucesso antes de bloquear o usu\u00E1rio, exigindo que ele fa\u00E7a uma recupera\u00E7\u00E3o de senha.\">\n <app-field-error-message [control]=\"form.get('QtnTentativa')\"></app-field-error-message>\n </div>\n\n <!-- <div class=\"container col-6 row\">\n\n </div> -->\n </div>\n </div>\n\n <!-- Palavras do Guilherme: \"oculteia eles\", \"um dia implementamos\" -->\n <!-- #region MARK: LINKS OCULTADOS -->\n <!-- <div class=\"card p-3 mt-3\">\n <h3 class=\"card-subtitle mb-2 text-muted fs-6\">Redefini\u00E7\u00E3o de senha:</h3>\n <a href=\"#\" class=\"link-primary\">Obrigar todos os usu\u00E1rios a trocarem sua senha no pr\u00F3ximo login</a>\n <a href=\"#\" class=\"link-primary\">Selecionar usu\u00E1rios para trocarem sua senha no pr\u00F3ximo login</a>\n </div> -->\n <!-- #endregion LINKS OCULTADOS -->\n\n\n <!-- <div class=\"border rounded\">\n <div class=\"card-body\">\n \n\n </div>\n </div> -->\n\n </form>\n </div>\n\n</lib-container>\n<!-- #endregion BODY -->\n\n<!-- #region SPINNER -->\n<ng-template #loading>\n <div class=\"w-100 text-center\">\n <!-- <div class=\"spinner-border\" style=\"width: 3rem; height: 3rem;\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div> -->\n <lib-spinner />\n </div>\n</ng-template>\n\n<ng-template #loadingIsAtivo>\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\"> <span class=\"visually-hidden\">Carregando...</span> </div>\n</ng-template>\n<!-- #endregion SPINNER -->\n" }]
191
192
  }], ctorParameters: () => [{ type: i1.ConfiguracaoSenhaService }, { type: i2.MessageService }, { type: i3.TenantService }, { type: i4.Title }] });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWNvbmZpZy1zZW5oYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2xpYi1jb25maWctc2VuaGEvbGliLWNvbmZpZy1zZW5oYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2xpYi1jb25maWctc2VuaGEvbGliLWNvbmZpZy1zZW5oYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBSXJGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7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LElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMxQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7K0dBOU5VLHVCQUF1QjttR0FBdkIsdUJBQXVCLDRFQzFCcEMsbTRWQTRLQSwwRERwSmMsa0JBQWtCLGdPQUFFLHlCQUF5Qix1S0FBRSxJQUFJLDRGQUFFLFdBQVcsaXNDQUFFLG1CQUFtQixnVkFBRSxPQUFPLG9GQUFFLGlCQUFpQixnSEFBRSxnQkFBZ0IsZ2hCQUFFLGlCQUFpQix5SUFBRSwwQkFBMEIsc0lBQUUsbUJBQW1COzs0RkFFeE0sdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNJLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRm9ybVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybS11dGlscyc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL21lc3NhZ2UvbWVzc2FnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgSW5mcmFTZWdDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uZmlnLXNlbmhhLzdEYi9JbmZyYVNlZ0NvbmZpZy5yZWNvcmQnO1xuaW1wb3J0IHsgQ29uZmlndXJhY2FvU2VuaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9jb25maWd1cmFjYW8tc2VuaGEuc2VydmljZSc7XG5pbXBvcnQgeyBUZW5hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS90ZW5hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTGliSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9saWItaGVhZGVyL2xpYi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRlbnRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzL2NvbnRlbnQtY29udGFpbmVyL2NvbnRlbnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExpYkljb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9saWItaWNvbnMvbGliLWljb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IFJlcXVpcmVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yZXF1aXJlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGRFcnJvck1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzL2ZpZWxkLWVycm9yLW1lc3NhZ2UvZmllbGQtZXJyb3ItbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGliU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dpZGdldHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWNvbmZpZy1zZW5oYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpYi1jb25maWctc2VuaGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogYGAsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTGliSGVhZGVyQ29tcG9uZW50LCBDb250ZW50Q29udGFpbmVyQ29tcG9uZW50LCBOZ0lmLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdDbGFzcywgTGliSWNvbnNDb21wb25lbnQsIFRvb2x0aXBEaXJlY3RpdmUsIFJlcXVpcmVkRGlyZWN0aXZlLCBGaWVsZEVycm9yTWVzc2FnZUNvbXBvbmVudCwgTGliU3Bpbm5lckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTGliQ29uZmlnU2VuaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxuXG4gIC8vICNyZWdpb24gUFJJVkFURVxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJfYXV0aF92NiA9IGxvY2FsU3RvcmFnZVtcInVzZXJfYXV0aF92NlwiXSA/PyBcInt9XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX190b2tlblBheWxvYWQgPSBKU09OLnBhcnNlKHRoaXMudXNlcl9hdXRoX3Y2KS5fX3Rva2VuUGF5bG9hZCA/PyB7IHRlbmFudElkOiAxNTc5IH07XG5cbiAgcHJpdmF0ZSBfbG9jYWxUZW5hbnRJZCA9IHRoaXMuX190b2tlblBheWxvYWQudGVuYW50SWQgPz8gMDtcbiAgLy8gI2VuZHJlZ2lvbiBQUklWQVRFXG5cbiAgLy8gI3JlZ2lvbiBQVUJMSUNcbiAgcHVibGljIG1lbnVHcm91cCE6IHN0cmluZztcbiAgcHVibGljICRpbmZyYVNlZ0NvbmZpZ1JlY29yZD86IEluZnJhU2VnQ29uZmlnO1xuICBwdWJsaWMgaW5pdGlhbExldmVsITogbnVtYmVyO1xuICAvLyAjZW5kcmVnaW9uIFBVQkxJQ1xuXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cbiAgcHVibGljIGdldCBGb3JtVXRpbHMoKTogdHlwZW9mIEZvcm1VdGlscyB7IHJldHVybiBGb3JtVXRpbHMgfVxuXG4gIC8vICNyZWdpb24gRk9STSBGSUVMRFNcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIFRlbmFudF9JZDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMCksXG4gICAgSWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDApLFxuICAgIFF0bk1pbmltYTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMSwgVmFsaWRhdG9ycy5taW4oLTEpKSxcbiAgICBJc19OdW1lcm9zOiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4oZmFsc2UpLFxuICAgIElzX0xldHJhc01haXVzY3VsYXM6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSksXG4gICAgSXNfQ2FyYWN0ZXJlc0VzcGVjaWFpczogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KGZhbHNlKSxcbiAgICBRdG5Ucm9jYVNlbmhhOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigtMSwgVmFsaWRhdG9ycy5taW4oLTEpKSxcbiAgICBRdG5JbmF0aXZpZGFkZTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oLTEsIFZhbGlkYXRvcnMubWluKC0xKSksXG4gICAgUXRuVGVudGF0aXZhOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigxLCBWYWxpZGF0b3JzLm1pbigtMSkpLFxuICAgIFF0blJlcGV0aWNhbzogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMSwgVmFsaWRhdG9ycy5taW4oLTEpKSxcbiAgICBJc19Ecm9wU2Vzc2lvbjogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KGZhbHNlKSxcbiAgICBMZXZlbDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMSlcbiAgfSk7XG5cbiAgcHVibGljIGdldCBJZCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5mb3JtLmdldCgnSWQnKT8udmFsdWUgfVxuICBwdWJsaWMgZ2V0IExldmVsKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KCdMZXZlbCcpPy52YWx1ZSB9XG4gIC8vICNlbmRyZWdpb24gRk9STSBGSUVMRFNcblxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBJTklUSUFMSVpBVElPTiA8PT09PT09PT09PVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWd1cmFjYW9TZW5oYVNlcnZpY2U6IENvbmZpZ3VyYWNhb1NlbmhhU2VydmljZSxcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZG9taW5pbzogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIF90aXRsZTogVGl0bGVcbiAgICBcbiAgICAvLyBwcml2YXRlIF9wcm9qZWN0VXRpbHNlcnZpY2U6IFByb2plY3RVdGlsc2VydmljZSxcbiAgICAvLyBwcml2YXRlIF9wcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UsXG4gICAgLy8gcHJpdmF0ZSBfYXV0aFN0b3JhZ2U6IEF1dGhTdG9yYWdlU2VydmljZSxcbiAgKSB7XG4gIH1cbiAgXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RpdGxlLnNldFRpdGxlKFwiQ29uZmlndXJhw6fDo28gZGUgU2VuaGFcIik7XG4gICAgXG4gICAgdGhpcy5fZG9taW5pby52YWxpZGF0ZVRlbmFudCh0aGlzLl9sb2NhbFRlbmFudElkKTtcbiAgICB0aGlzLmdldEluZnJhU2VnQ29uZmlnKCk7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBJTklUSUFMSVpBVElPTiA8PT09PT09PT09PVxuXG5cbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBTRVJWSUNFIE1FVEhPRFMgPD09PT09PT09PT1cblxuICAvLyAjcmVnaW9uIEdFVFxuICBwcml2YXRlIGdldEluZnJhU2VnQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbmZpZ3VyYWNhb1NlbmhhU2VydmljZS5nZXRJbmZyYVNlZ0NvbmZpZygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XG4gICAgICAgIHRoaXMuJGluZnJhU2VnQ29uZmlnUmVjb3JkID0gcmVzcG9uc2UuSW5mcmFTZWdDb25maWc7XG5cbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICAgICAgICAuLi5yZXNwb25zZS5JbmZyYVNlZ0NvbmZpZ1xuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuaW5pdGlhbExldmVsID0gcmVzcG9uc2UuSW5mcmFTZWdDb25maWcuTGV2ZWwgfHwgMTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydUZW5hbnRfSWQnXS5zZXRWYWx1ZSh0aGlzLl9sb2NhbFRlbmFudElkKTtcblxuICAgICAgICB0aGlzLm9uU2VsZWN0TGV2ZWwodGhpcy5MZXZlbCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgLy8gdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpXG4gICAgICAgIHRoaXMub25TZWxlY3RMZXZlbCh0aGlzLkxldmVsKTtcbiAgICAgICAgdGhpcy4kaW5mcmFTZWdDb25maWdSZWNvcmQgPSBuZXcgSW5mcmFTZWdDb25maWcoKTtcblxuICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vICNlbmRyZWdpb24gR0VUXG5cbiAgLy8gI3JlZ2lvbiBQT1NUXG4gIHB1YmxpYyBjcmVhdGVPclVwZGF0ZUluZnJhU2VnQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcblxuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyYWNhb1NlbmhhU2VydmljZS5jcmVhdGVPclVwZGF0ZUluZnJhU2VnQ29uZmlnKHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbExldmVsID0gdGhpcy5MZXZlbDtcblxuICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydFN1Y2Nlc3MoYENvbmZpZ3VyYcOnw6NvIGRlIHNlbmhhICR7dGhpcy5JZCAhPSAwID8gJ2FsdGVyYWRhJyA6ICdjcmlhZGEnfSBjb20gc3VjZXNzbyFgKTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBpZiAodGhpcy5JRCAhPSAwKSB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnRTdWNjZXNzKCdDb25maWd1cmHDp8OjbyBkZSBzZW5oYSBhbHRlcmFkYSBjb20gc3VjZXNzbyEnKTtcbiAgICAgICAgICAvLyBlbHNlICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnRTdWNjZXNzKCdDb25maWd1cmHDp8OjbyBkZSBzZW5oYSBjcmlhZGEgY29tIHN1Y2Vzc28hJyk7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5fY29uZmlndXJhY2FvU2VuaGFTZXJ2aWNlLmdldEluZnJhU2VnQ29uZmlnKCk7XG4gICAgICAgICAgdGhpcy5nZXRJbmZyYVNlZ0NvbmZpZygpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIHRoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfVxuICAgIGVsc2UgeyBGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtKSB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiBQT1NUXG5cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBTRVJWSUNFIE1FVEhPRFMgPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cbiAgb25TZWxlY3RMZXZlbCgkdmFsdWU6IG51bWJlciB8IHN0cmluZykge1xuICAgIHN3aXRjaCAoJHZhbHVlKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX051bWVyb3MnKT8uc2V0VmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19MZXRyYXNNYWl1c2N1bGFzJyk/LnNldFZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTGV0cmFzTWFpdXNjdWxhcycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfQ2FyYWN0ZXJlc0VzcGVjaWFpcycpPy5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0NhcmFjdGVyZXNFc3BlY2lhaXMnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRyb2NhU2VuaGEnKT8uc2V0VmFsdWUoLTEpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uc2V0VmFsdWUoNik7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bk1pbmltYScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuUmVwZXRpY2FvJyk/LnNldFZhbHVlKC0xKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuUmVwZXRpY2FvJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKT8uc2V0VmFsdWUoLTEpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bkluYXRpdmlkYWRlJyk/LnNldFZhbHVlKC0xKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuSW5hdGl2aWRhZGUnKT8uZGlzYWJsZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LnNldFZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19MZXRyYXNNYWl1c2N1bGFzJyk/LnNldFZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19MZXRyYXNNYWl1c2N1bGFzJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19DYXJhY3RlcmVzRXNwZWNpYWlzJyk/LnNldFZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfQ2FyYWN0ZXJlc0VzcGVjaWFpcycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVHJvY2FTZW5oYScpPy5zZXRWYWx1ZSgxMjApO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uc2V0VmFsdWUoOCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bk1pbmltYScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuUmVwZXRpY2FvJyk/LnNldFZhbHVlKDEpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5SZXBldGljYW8nKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRlbnRhdGl2YScpPy5zZXRWYWx1ZSg1KTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVGVudGF0aXZhJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5JbmF0aXZpZGFkZScpPy5zZXRWYWx1ZSgxMjApO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5JbmF0aXZpZGFkZScpPy5kaXNhYmxlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDM6XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX051bWVyb3MnKT8uc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX051bWVyb3MnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0xldHJhc01haXVzY3VsYXMnKT8uc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0xldHJhc01haXVzY3VsYXMnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0NhcmFjdGVyZXNFc3BlY2lhaXMnKT8uc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0NhcmFjdGVyZXNFc3BlY2lhaXMnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRyb2NhU2VuaGEnKT8uc2V0VmFsdWUoMzApO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uc2V0VmFsdWUoMTApO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpPy5zZXRWYWx1ZSgzKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuUmVwZXRpY2FvJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKT8uc2V0VmFsdWUoMyk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRlbnRhdGl2YScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuSW5hdGl2aWRhZGUnKT8uc2V0VmFsdWUoMzApO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5JbmF0aXZpZGFkZScpPy5kaXNhYmxlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX051bWVyb3MnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0xldHJhc01haXVzY3VsYXMnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0NhcmFjdGVyZXNFc3BlY2lhaXMnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRyb2NhU2VuaGEnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bk1pbmltYScpPy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuUmVwZXRpY2FvJyk/LmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bkluYXRpdmlkYWRlJyk/LmVuYWJsZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TdWJtaXQgPSAoKTogdm9pZCA9PiB7IHRoaXMuY3JlYXRlT3JVcGRhdGVJbmZyYVNlZ0NvbmZpZygpIH07XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cblxufVxuIiwiPGxpYi1oZWFkZXIgW2JyZWFkY3J1bWJMaXN0XT1cIlsgJ0luZnJhJywgJ0NvbmZpZ3VyYcOnw6NvIGRlIFNlbmhhJyBdXCIgcGFnZVRpdGxlPVwiQ29uZmlndXJhw6fDo28gZGUgU2VuaGFcIlxuICBtb2RlPVwiZWRpdFwiIFtoaWRlQnV0dG9uc109XCJbICdDYW5jZWxhcicgXVwiIChjcmVhdGUpPVwib25TdWJtaXQoKVwiICh1cGRhdGUpPVwib25TdWJtaXQoKVwiICAvPlxuXG5cbjwhLS0gI3JlZ2lvbiBCT0RZIC0tPlxuPGxpYi1jb250YWluZXI+XG5cbiAgPGRpdiBpbm5lckNvbnRlbnQxPlxuICAgIDxmb3JtICpuZ0lmPVwiJGluZnJhU2VnQ29uZmlnUmVjb3JkOyBlbHNlIGxvYWRpbmdcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiZnMtNVwiPkF0dWFsbWVudGUgc2V1IG7DrXZlbCBkZSBzZWd1cmFuw6dhIMOpIFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdW5kZWQgdGV4dC13aGl0ZSBwLTEgcHgtMiBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYmctZGFuZ2VyJzogaW5pdGlhbExldmVsID09PSAxLFxuICAgICAgICAgICAgICAgICAgJ2JnLXdhcm5pbmcnOiBpbml0aWFsTGV2ZWwgPT09IDIsXG4gICAgICAgICAgICAgICAgICAnYmctc3VjY2Vzcyc6IGluaXRpYWxMZXZlbCA9PT0gMyxcbiAgICAgICAgICAgICAgICAgICdiZy1wcmltYXJ5JzogaW5pdGlhbExldmVsID09PSA0LFxuICAgICAgICAgICAgICAgIH1cIiA+XG5cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChpbml0aWFsTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgIEBjYXNlICgxKSB7IEJhaXhvIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgyKSB7IE3DqWRpbyB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoMykgeyBBbHRvIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICg0KSB7IFBlcnNvbmFsaXphZG8gfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gPHN0cm9uZyAqbmdJZj1cImluaXRpYWxMZXZlbCA9PT0gMVwiPiBCYWl4byA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nSWY9XCJpbml0aWFsTGV2ZWwgPT09IDJcIj4gTcOpZGlvIDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgKm5nSWY9XCJpbml0aWFsTGV2ZWwgPT09IDNcIj4gQWx0byA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nICpuZ0lmPVwiaW5pdGlhbExldmVsID09PSA0XCI+IFBlcnNvbmFsaXphZG8gPC9zdHJvbmc+IC0tPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIG1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZSBtYi0yIHRleHQtbXV0ZWQgZnMtNlwiPlNlbGVjaW9uZSB1bSBuw612ZWwgZGUgc2VndXJhbsOnYSBhYmFpeG86PC9oMz5cblxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkxldmVsXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJidG4tY2hlY2tcIiBuYW1lPVwiTGV2ZWxcIiBpZD1cIm9wdGlvbjFcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbdmFsdWVdPVwiMVwiIChjaGFuZ2UpPVwib25TZWxlY3RMZXZlbChMZXZlbClcIiA+XG4gICAgICAgICAgICA8bGFiZWwgW2NsYXNzLmJ0bi1vdXRsaW5lLWRhbmdlcl09XCJMZXZlbCA9PT0gMVwiIFtjbGFzcy5iZy1kYW5nZXJdPVwiTGV2ZWwgPT09IDFcIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG0tMlwiIGZvcj1cIm9wdGlvbjFcIj48bGliLWljb24gaWNvbk5hbWU9XCJjYWRlYWRvLWFiZXJ0by1vdXRsaW5lXCIvPiBCYWl4byA8L2xhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTGV2ZWxcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cImJ0bi1jaGVja1wiIG5hbWU9XCJMZXZlbFwiIGlkPVwib3B0aW9uMlwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFt2YWx1ZV09XCIyXCIgKGNoYW5nZSk9XCJvblNlbGVjdExldmVsKExldmVsKVwiID5cbiAgICAgICAgICAgIDxsYWJlbCBbY2xhc3MuYmctd2FybmluZ109XCJMZXZlbCA9PT0gMlwiIFtjbGFzcy5idG4tb3V0bGluZS13YXJuaW5nXT1cIkxldmVsID09PSAyXCIgY2xhc3M9XCIgYnRuIGJ0bi1zZWNvbmRhcnkgdGV4dC1saWdodCBtLTJcIiBmb3I9XCJvcHRpb24yXCI+PGxpYi1pY29uIGljb25OYW1lPVwiY2FkZWFkby1zZW1pYWJlcnRvLW91dGxpbmVcIi8+IE3DqWRpbzwvbGFiZWw+XG5cbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJMZXZlbFwiIHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiYnRuLWNoZWNrXCIgbmFtZT1cIkxldmVsXCIgaWQ9XCJvcHRpb24zXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW3ZhbHVlXT1cIjNcIiAoY2hhbmdlKT1cIm9uU2VsZWN0TGV2ZWwoTGV2ZWwpXCIgPlxuICAgICAgICAgICAgPGxhYmVsIFtjbGFzcy5idG4tb3V0bGluZS1zdWNjZXNzXT1cIkxldmVsID09PSAzXCIgW2NsYXNzLmJnLXN1Y2Nlc3NdPVwiTGV2ZWwgPT09IDNcIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG0tMlwiIGZvcj1cIm9wdGlvbjNcIj48bGliLWljb24gaWNvbk5hbWU9XCJjYWRlYWRvLW91dGxpbmVcIi8+IEFsdG88L2xhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTGV2ZWxcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cImJ0bi1jaGVja1wiIG5hbWU9XCJMZXZlbFwiIGlkPVwib3B0aW9uNFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFt2YWx1ZV09XCI0XCIgKGNoYW5nZSk9XCJvblNlbGVjdExldmVsKExldmVsKVwiID5cbiAgICAgICAgICAgIDxsYWJlbCBbY2xhc3MuYnRuLW91dGxpbmUtcHJpbWFyeV09XCJMZXZlbCA9PT0gNFwiIFtjbGFzcy5iZy1wcmltYXJ5XT1cIkxldmVsID09PSA0XCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBtLTJcIiBmb3I9XCJvcHRpb240XCI+PGxpYi1pY29uIGljb25OYW1lPVwiY2hhdmVcIi8+IFBlcnNvbmFsaXphZG88L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTMgbWItNFwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXN1YnRpdGxlIG1iLTIgdGV4dC1tdXRlZCBmcy02XCI+QSBzZW5oYSBkZXZlIGNvbnRlcjo8L2gzPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJudW1lcm9zXCI+IE7Dum1lcm8gPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIklzX051bWVyb3NcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCIgaWQ9XCJudW1lcm9zXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImxldHJhTWFpdXNjdWxhXCI+IExldHJhIE1hacO6c2N1bGEgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIklzX0xldHJhc01haXVzY3VsYXNcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCIgaWQ9XCJsZXRyYU1haXVzY3VsYVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJjYXJhY3RlcmVzRXNwZWNpYWlzXCI+Q2FyYWN0ZXJlIGVzcGVjaWFsPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIklzX0NhcmFjdGVyZXNFc3BlY2lhaXNcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCIgaWQ9XCJjYXJhY3RlcmVzRXNwZWNpYWlzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiBjbGFzcz1cIm1zLTFcIiBpY29uTmFtZT1cImluZm9cIiBpY29uQ29sb3I9XCJibHVlXCIgaWNvblNpemU9XCJzbWFsbFwiIHRvb2x0aXA9XCJDYXJhY3RlcmVzIHN1Z2VyaWRvczogISBAICMgJCAlICYgKiAoICkgXyArID0gWyBdIHsgfSB8ID9cIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBsaWJSZXF1aXJlZCBjbGFzcz1cImZvcm0tbGFiZWwgZm9ybS1jb250cm9sLXNtXCIgZm9yPVwicXRuVHJvY2FTZW5oYUlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImluZm9cIiBpY29uU2l6ZT1cInNtYWxsXCIgaWNvbkNvbG9yPVwiYmx1ZVwiIHRvb2x0aXA9XCJJbmZvcm1lIGEgcXVhbnRpZGFkZSBlbSBkaWFzIHF1ZSBhIHNlbmhhIHNlcsOhIHbDoWxpZGEsIGFww7NzIGVzdGUgcGVyw61vZG8gYSBzZW5oYSBkZXZlcsOhIHNlciB0cm9jYWRhIHBlbG8gdXN1w6FyaW8uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhZGUgZW0gZGlhc1xuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlF0blRyb2NhU2VuaGFcIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1pbnB1dFwiIGlkPVwicXRuVHJvY2FTZW5oYUlucHV0XCIgdG9vbHRpcD1cIkluZm9ybWUgYSBxdWFudGlkYWRlIGVtIGRpYXMgcXVlIGEgc2VuaGEgc2Vyw6EgdsOhbGlkYSwgYXDDs3MgZXN0ZSBwZXLDrW9kbyBhIHNlbmhhIGRldmVyw6Egc2VyIHRyb2NhZGEgcGVsbyB1c3XDoXJpby5cIiA+XG4gICAgICAgICAgICAgICAgPGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJylcIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgbGliUmVxdWlyZWQgY2xhc3M9XCJmb3JtLWxhYmVsIGZvcm0tY29udHJvbC1zbVwiIGZvcj1cInF0bk1pbmltYUlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImluZm9cIiBpY29uU2l6ZT1cInNtYWxsXCIgaWNvbkNvbG9yPVwiYmx1ZVwiIHRvb2x0aXA9XCJJbmZvcm1lIGEgcXVhbnRpZGFkZSBtw61uaW1hIGRlIGNhcmFjdGVyZXMgcXVlIGEgc2VuaGEgZGV2ZSB0ZXIuXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgVGFtYW5obyBtw61uaW1vXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUXRuTWluaW1hXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0taW5wdXRcIiBpZD1cInF0bk1pbmltYUlucHV0XCIgdG9vbHRpcD1cIkluZm9ybWUgYSBxdWFudGlkYWRlIG3DrW5pbWEgZGUgY2FyYWN0ZXJlcyBxdWUgYSBzZW5oYSBkZXZlIHRlci5cIj5cbiAgICAgICAgICAgICAgICA8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ1F0bk1pbmltYScpXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGxpYlJlcXVpcmVkIGNsYXNzPVwiZm9ybS1sYWJlbCBmb3JtLWNvbnRyb2wtc21cIiBmb3I9XCJxdG5SZXBldGljYW9JbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgPGxpYi1pY29uIGljb25OYW1lPVwiaW5mb1wiIGljb25TaXplPVwic21hbGxcIiBpY29uQ29sb3I9XCJibHVlXCIgdG9vbHRpcD1cIkluZm9ybWUgcXVhbnRhcyBzZW5oYXMgZGlmZXJlbnRlcyBvIHVzdcOhcmlvIGRldmVyw6EgdXNhciBhbnRlcyBxdWUgcG9zc2EgcmVwZXRpciBhbGd1bWEgasOhIHV0aWxpemFkYS5cIiAvPlxuICAgICAgICAgICAgICAgICAgUmVwZXRpw6fDo29cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJRdG5SZXBldGljYW9cIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1pbnB1dFwiIGlkPVwicXRuUmVwZXRpY2FvSW5wdXRcIiB0b29sdGlwPVwiSW5mb3JtZSBxdWFudGFzIHNlbmhhcyBkaWZlcmVudGVzIG8gdXN1w6FyaW8gZGV2ZXLDoSB1c2FyIGFudGVzIHF1ZSBwb3NzYSByZXBldGlyIGFsZ3VtYSBqw6EgdXRpbGl6YWRhLlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtLmdldCgnUXRuUmVwZXRpY2FvJylcIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRhaW5lciBjb2wgcm93XCI+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtM1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXN1YnRpdGxlIG1iLTIgdGV4dC1tdXRlZCBmcy02XCI+QmxvcXVlaW9zOjwvaDM+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLTIgZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJpc0Ryb3BTZXNzaW9uQ2hlY2tcIj4gRGVycnViYXIgbXVsdGlwbGFzIHNlc3PDtWVzPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgaWQ9XCJpc0Ryb3BTZXNzaW9uQ2hlY2tcIiBmb3JtQ29udHJvbE5hbWU9XCJJc19Ecm9wU2Vzc2lvblwiIHR5cGU9XCJjaGVja2JveFwiIHJvbGU9XCJzd2l0Y2hcIj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGxpYlJlcXVpcmVkIGNsYXNzPVwiZm9ybS1sYWJlbCBmb3JtLWNvbnRyb2wtc21cIiBmb3I9XCJkaWFzSW5hdGl2aWRhZGVJbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gaWNvbk5hbWU9XCJpbmZvXCIgaWNvblNpemU9XCJzbWFsbFwiIGljb25Db2xvcj1cImJsdWVcIiB0b29sdGlwPVwiSW5mb3JtZSBxdWFudG9zIGRpYXMgdW0gdXN1w6FyaW8gcG9kZXLDoSBmaWNhciBzZW0gZW50cmFyIG5vIHNpc3RlbWEsIGFvIGV4Y2VkZXIgZXN0ZSBuw7ptZXJvIG8gdXN1w6FyaW8gc2Vyw6EgZGVzYXRpdmFkbyBwZXJkZW5kbyBvIGFjZXNzbyBhbyBzaXN0ZW1hLCBlIHNvbWVudGUgb3MgQWRtaW5pc3RyYWRvcmVzIHBvZGVyw6NvIGF0aXbDoS1sbyBub3ZhbWVudGUuXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgRGlhcyBkZSBJbmF0aXZpZGFkZVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0ICBpZD1cImRpYXNJbmF0aXZpZGFkZUlucHV0XCIgZm9ybUNvbnRyb2xOYW1lPVwiUXRuSW5hdGl2aWRhZGVcIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1pbnB1dFwiIHRvb2x0aXA9XCJJbmZvcm1lIHF1YW50b3MgZGlhcyB1bSB1c3XDoXJpbyBwb2RlcsOhIGZpY2FyIHNlbSBlbnRyYXIgbm8gc2lzdGVtYSwgYW8gZXhjZWRlciBlc3RlIG7Dum1lcm8gbyB1c3XDoXJpbyBzZXLDoSBkZXNhdGl2YWRvIHBlcmRlbmRvIG8gYWNlc3NvIGFvIHNpc3RlbWEsIGUgc29tZW50ZSBvcyBBZG1pbmlzdHJhZG9yZXMgcG9kZXLDo28gYXRpdsOhLWxvIG5vdmFtZW50ZS5cIj5cbiAgICAgICAgICAgICAgICA8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ1F0bkluYXRpdmlkYWRlJylcIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgbGliUmVxdWlyZWQgY2xhc3M9XCJmb3JtLWxhYmVsIGZvcm0tY29udHJvbC1zbVwiIGZvcj1cInRlbnRhdGl2YXNEZUFjZXNzb0lucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImluZm9cIiBpY29uU2l6ZT1cInNtYWxsXCIgaWNvbkNvbG9yPVwiYmx1ZVwiIHRvb2x0aXA9XCJJbmZvcm1lIGEgcXVhbnRpZGFkZSBkZSB0ZW50YXRpdmFzIGNvbnNlY3V0aXZhcyBkZSBhY2Vzc28gYW8gc2lzdGVtYSBzZW0gc3VjZXNzbyBhbnRlcyBkZSBibG9xdWVhciBvIHVzdcOhcmlvLCBleGlnaW5kbyBxdWUgZWxlIGZhw6dhIHVtYSByZWN1cGVyYcOnw6NvIGRlIHNlbmhhLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFRlbnRhdGl2YXMgZGUgYWNlc3NvXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ0ZW50YXRpdmFzRGVBY2Vzc29JbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cIlF0blRlbnRhdGl2YVwiIHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWlucHV0XCIgdG9vbHRpcD1cIkluZm9ybWUgYSBxdWFudGlkYWRlIGRlIHRlbnRhdGl2YXMgY29uc2VjdXRpdmFzIGRlIGFjZXNzbyBhbyBzaXN0ZW1hIHNlbSBzdWNlc3NvIGFudGVzIGRlIGJsb3F1ZWFyIG8gdXN1w6FyaW8sIGV4aWdpbmRvIHF1ZSBlbGUgZmHDp2EgdW1hIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEuXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKVwiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGNvbC02IHJvd1wiPlxuXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBQYWxhdnJhcyBkbyBHdWlsaGVybWU6IFwib2N1bHRlaWEgZWxlc1wiLCBcInVtIGRpYSBpbXBsZW1lbnRhbW9zXCIgLS0+XG4gICAgPCEtLSAjcmVnaW9uIE1BUks6IExJTktTIE9DVUxUQURPUyAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkIHAtMyBtdC0zXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtc3VidGl0bGUgbWItMiB0ZXh0LW11dGVkIGZzLTZcIj5SZWRlZmluacOnw6NvIGRlIHNlbmhhOjwvaDM+XG4gICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJsaW5rLXByaW1hcnlcIj5PYnJpZ2FyIHRvZG9zIG9zIHVzdcOhcmlvcyBhIHRyb2NhcmVtIHN1YSBzZW5oYSBubyBwcsOzeGltbyBsb2dpbjwvYT5cbiAgICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImxpbmstcHJpbWFyeVwiPlNlbGVjaW9uYXIgdXN1w6FyaW9zIHBhcmEgdHJvY2FyZW0gc3VhIHNlbmhhIG5vIHByw7N4aW1vIGxvZ2luPC9hPlxuICAgIDwvZGl2PiAtLT5cbiAgICA8IS0tICNlbmRyZWdpb24gTElOS1MgT0NVTFRBRE9TIC0tPlxuXG5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICBcblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuXG48L2xpYi1jb250YWluZXI+XG48IS0tICNlbmRyZWdpb24gQk9EWSAtLT5cblxuPCEtLSAjcmVnaW9uIFNQSU5ORVIgLS0+XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyXCI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyXCIgc3R5bGU9XCJ3aWR0aDogM3JlbTsgaGVpZ2h0OiAzcmVtO1wiIHJvbGU9XCJzdGF0dXNcIj4gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5DYXJyZWdhbmRvLi4uPC9zcGFuPiA8L2Rpdj4gLS0+XG4gICAgICAgIDxsaWItc3Bpbm5lciAvPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nSXNBdGl2bz5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gbWUtMlwiIHJvbGU9XCJzdGF0dXNcIj4gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5DYXJyZWdhbmRvLi4uPC9zcGFuPiA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48IS0tICNlbmRyZWdpb24gU1BJTk5FUiAtLT5cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWNvbmZpZy1zZW5oYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2xpYi1jb25maWctc2VuaGEvbGliLWNvbmZpZy1zZW5oYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2xpYi1jb25maWctc2VuaGEvbGliLWNvbmZpZy1zZW5oYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBSXJGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7OztBQVNuRixNQUFNLE9BQU8sdUJBQXVCO0lBZWxDLG9CQUFvQjtJQUVwQixnREFBZ0Q7SUFHaEQsK0NBQStDO0lBQy9DLElBQVcsU0FBUyxLQUF1QixPQUFPLFNBQVMsQ0FBQSxDQUFDLENBQUM7SUFrQjdELElBQVcsRUFBRSxLQUFhLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUM3RCxJQUFXLEtBQUssS0FBYSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFDbkUseUJBQXlCO0lBRXpCLGtEQUFrRDtJQUdsRCxpREFBaUQ7SUFDakQsWUFDVSx5QkFBbUQsRUFDbkQsZUFBK0IsRUFDL0IsUUFBdUIsRUFDdkIsTUFBYTtJQUVyQixtREFBbUQ7SUFDbkQsMkNBQTJDO0lBQzNDLDRDQUE0Qzs7UUFQcEMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQUNuRCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBZTtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBakR2Qiw2Q0FBNkM7UUFFN0Msa0JBQWtCO1FBQ0QsaUJBQVksR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3BELG1CQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsY0FBYyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTdGLG1CQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBZTNELHNCQUFzQjtRQUNmLFNBQUksR0FBYyxJQUFJLFNBQVMsQ0FBQztZQUNyQyxTQUFTLEVBQUUsSUFBSSxXQUFXLENBQVMsQ0FBQyxDQUFDO1lBQ3JDLEVBQUUsRUFBRSxJQUFJLFdBQVcsQ0FBUyxDQUFDLENBQUM7WUFDOUIsU0FBUyxFQUFFLElBQUksV0FBVyxDQUFTLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekQsVUFBVSxFQUFFLElBQUksV0FBVyxDQUFVLEtBQUssQ0FBQztZQUMzQyxtQkFBbUIsRUFBRSxJQUFJLFdBQVcsQ0FBVSxLQUFLLENBQUM7WUFDcEQsc0JBQXNCLEVBQUUsSUFBSSxXQUFXLENBQVUsS0FBSyxDQUFDO1lBQ3ZELGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsY0FBYyxFQUFFLElBQUksV0FBVyxDQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRCxZQUFZLEVBQUUsSUFBSSxXQUFXLENBQVMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxZQUFZLEVBQUUsSUFBSSxXQUFXLENBQVMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxjQUFjLEVBQUUsSUFBSSxXQUFXLENBQVUsS0FBSyxDQUFDO1lBQy9DLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBUyxDQUFDLENBQUM7U0FDbEMsQ0FBQyxDQUFDO1FBMkxJLGFBQVEsR0FBRyxHQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQztJQXZLdEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0Qsb0RBQW9EO0lBR3BELGtEQUFrRDtJQUVsRCxjQUFjO0lBQ04saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUMzRCxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7Z0JBRXJELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztvQkFDbEIsR0FBRyxRQUFRLENBQUMsY0FBYztpQkFDM0IsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUU5RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNiLGdEQUFnRDtnQkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUVsRCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGlCQUFpQjtJQUVqQixlQUFlO0lBQ1IsNEJBQTRCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDckYsSUFBSSxFQUFFLEdBQUcsRUFBRTtvQkFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBRS9CLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsZUFBZSxDQUFDLENBQUM7b0JBRXBILDBHQUEwRztvQkFDMUcsd0dBQXdHO29CQUV4RyxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNiLGlEQUFpRDtvQkFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7YUFDRixDQUFDLENBQUM7UUFFTCxDQUFDO2FBQ0ksQ0FBQztZQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0Qsa0JBQWtCO0lBRWxCLHFEQUFxRDtJQUdyRCx3Q0FBd0M7SUFDeEMsYUFBYSxDQUFDLE1BQXVCO1FBQ25DLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRWhELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUVuRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRTFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRXRDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUV6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUMzQyxNQUFNO1lBRVIsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRXZDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUVoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQzNDLE1BQU07WUFFUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFFdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBRWhELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUVuRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUUxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUV6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUV6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsTUFBTTtZQUVSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzFDLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzsrR0E5TlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsNEVDMUJwQyxtNFZBNEtBLDBERHBKYyxrQkFBa0IsZ09BQUUseUJBQXlCLHVLQUFFLElBQUksNEZBQUUsV0FBVyxpc0NBQUUsbUJBQW1CLGdWQUFFLE9BQU8sb0ZBQUUsaUJBQWlCLCtHQUFFLGFBQWEsa2tCQUFFLGlCQUFpQix5SUFBRSwwQkFBMEIsc0lBQUUsbUJBQW1COzs0RkFFck0sdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNJLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEZvcm1VdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm0tdXRpbHMnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IEluZnJhU2VnQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbmZpZy1zZW5oYS83RGIvSW5mcmFTZWdDb25maWcucmVjb3JkJztcbmltcG9ydCB7IENvbmZpZ3VyYWNhb1NlbmhhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY29uZmlndXJhY2FvLXNlbmhhLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVuYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvdGVuYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IExpYlNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmllbGRFcnJvck1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzL2ZpZWxkLWVycm9yLW1lc3NhZ2UvZmllbGQtZXJyb3ItbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWlyZWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3JlcXVpcmVkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IExpYkljb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9saWItaWNvbnMvbGliLWljb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRlbnRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzL2NvbnRlbnQtY29udGFpbmVyL2NvbnRlbnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzL2xpYi1oZWFkZXIvbGliLWhlYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1jb25maWctc2VuaGEnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saWItY29uZmlnLXNlbmhhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IGBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0xpYkhlYWRlckNvbXBvbmVudCwgQ29udGVudENvbnRhaW5lckNvbXBvbmVudCwgTmdJZiwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nQ2xhc3MsIExpYkljb25zQ29tcG9uZW50LCBUb29sdGlwTW9kdWxlLCBSZXF1aXJlZERpcmVjdGl2ZSwgRmllbGRFcnJvck1lc3NhZ2VDb21wb25lbnQsIExpYlNwaW5uZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIExpYkNvbmZpZ1NlbmhhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cblxuICAvLyAjcmVnaW9uIFBSSVZBVEVcbiAgcHJpdmF0ZSByZWFkb25seSB1c2VyX2F1dGhfdjYgPSBsb2NhbFN0b3JhZ2VbXCJ1c2VyX2F1dGhfdjZcIl0gPz8gXCJ7fVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9fdG9rZW5QYXlsb2FkID0gSlNPTi5wYXJzZSh0aGlzLnVzZXJfYXV0aF92NikuX190b2tlblBheWxvYWQgPz8geyB0ZW5hbnRJZDogMTU3OSB9O1xuXG4gIHByaXZhdGUgX2xvY2FsVGVuYW50SWQgPSB0aGlzLl9fdG9rZW5QYXlsb2FkLnRlbmFudElkID8/IDA7XG4gIC8vICNlbmRyZWdpb24gUFJJVkFURVxuXG4gIC8vICNyZWdpb24gUFVCTElDXG4gIHB1YmxpYyBtZW51R3JvdXAhOiBzdHJpbmc7XG4gIHB1YmxpYyAkaW5mcmFTZWdDb25maWdSZWNvcmQ/OiBJbmZyYVNlZ0NvbmZpZztcbiAgcHVibGljIGluaXRpYWxMZXZlbCE6IG51bWJlcjtcbiAgLy8gI2VuZHJlZ2lvbiBQVUJMSUNcblxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gRk9STSBCVUlMREVSIDw9PT09PT09PT09XG4gIHB1YmxpYyBnZXQgRm9ybVV0aWxzKCk6IHR5cGVvZiBGb3JtVXRpbHMgeyByZXR1cm4gRm9ybVV0aWxzIH1cblxuICAvLyAjcmVnaW9uIEZPUk0gRklFTERTXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBUZW5hbnRfSWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDApLFxuICAgIElkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigwKSxcbiAgICBRdG5NaW5pbWE6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDEsIFZhbGlkYXRvcnMubWluKC0xKSksXG4gICAgSXNfTnVtZXJvczogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KGZhbHNlKSxcbiAgICBJc19MZXRyYXNNYWl1c2N1bGFzOiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4oZmFsc2UpLFxuICAgIElzX0NhcmFjdGVyZXNFc3BlY2lhaXM6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSksXG4gICAgUXRuVHJvY2FTZW5oYTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oLTEsIFZhbGlkYXRvcnMubWluKC0xKSksXG4gICAgUXRuSW5hdGl2aWRhZGU6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KC0xLCBWYWxpZGF0b3JzLm1pbigtMSkpLFxuICAgIFF0blRlbnRhdGl2YTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMSwgVmFsaWRhdG9ycy5taW4oLTEpKSxcbiAgICBRdG5SZXBldGljYW86IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDEsIFZhbGlkYXRvcnMubWluKC0xKSksXG4gICAgSXNfRHJvcFNlc3Npb246IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSksXG4gICAgTGV2ZWw6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KDEpXG4gIH0pO1xuXG4gIHB1YmxpYyBnZXQgSWQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ0lkJyk/LnZhbHVlIH1cbiAgcHVibGljIGdldCBMZXZlbCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5mb3JtLmdldCgnTGV2ZWwnKT8udmFsdWUgfVxuICAvLyAjZW5kcmVnaW9uIEZPUk0gRklFTERTXG5cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhY2FvU2VuaGFTZXJ2aWNlOiBDb25maWd1cmFjYW9TZW5oYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2RvbWluaW86IFRlbmFudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdGl0bGU6IFRpdGxlXG4gICAgXG4gICAgLy8gcHJpdmF0ZSBfcHJvamVjdFV0aWxzZXJ2aWNlOiBQcm9qZWN0VXRpbHNlcnZpY2UsXG4gICAgLy8gcHJpdmF0ZSBfcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgX2F1dGhTdG9yYWdlOiBBdXRoU3RvcmFnZVNlcnZpY2UsXG4gICkge1xuICB9XG4gIFxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl90aXRsZS5zZXRUaXRsZShcIkNvbmZpZ3VyYcOnw6NvIGRlIFNlbmhhXCIpO1xuICAgIFxuICAgIHRoaXMuX2RvbWluaW8udmFsaWRhdGVUZW5hbnQodGhpcy5fbG9jYWxUZW5hbnRJZCk7XG4gICAgdGhpcy5nZXRJbmZyYVNlZ0NvbmZpZygpO1xuICB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gU0VSVklDRSBNRVRIT0RTIDw9PT09PT09PT09XG5cbiAgLy8gI3JlZ2lvbiBHRVRcbiAgcHJpdmF0ZSBnZXRJbmZyYVNlZ0NvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLl9jb25maWd1cmFjYW9TZW5oYVNlcnZpY2UuZ2V0SW5mcmFTZWdDb25maWcoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xuICAgICAgICB0aGlzLiRpbmZyYVNlZ0NvbmZpZ1JlY29yZCA9IHJlc3BvbnNlLkluZnJhU2VnQ29uZmlnO1xuXG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICAgICAgLi4ucmVzcG9uc2UuSW5mcmFTZWdDb25maWdcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmluaXRpYWxMZXZlbCA9IHJlc3BvbnNlLkluZnJhU2VnQ29uZmlnLkxldmVsIHx8IDE7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1snVGVuYW50X0lkJ10uc2V0VmFsdWUodGhpcy5fbG9jYWxUZW5hbnRJZCk7XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdExldmVsKHRoaXMuTGV2ZWwpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgIC8vIHRoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKVxuICAgICAgICB0aGlzLm9uU2VsZWN0TGV2ZWwodGhpcy5MZXZlbCk7XG4gICAgICAgIHRoaXMuJGluZnJhU2VnQ29uZmlnUmVjb3JkID0gbmV3IEluZnJhU2VnQ29uZmlnKCk7XG5cbiAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uIEdFVFxuXG4gIC8vICNyZWdpb24gUE9TVFxuICBwdWJsaWMgY3JlYXRlT3JVcGRhdGVJbmZyYVNlZ0NvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG5cbiAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmFjYW9TZW5oYVNlcnZpY2UuY3JlYXRlT3JVcGRhdGVJbmZyYVNlZ0NvbmZpZyh0aGlzLmZvcm0udmFsdWUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxMZXZlbCA9IHRoaXMuTGV2ZWw7XG5cbiAgICAgICAgICB0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnRTdWNjZXNzKGBDb25maWd1cmHDp8OjbyBkZSBzZW5oYSAke3RoaXMuSWQgIT0gMCA/ICdhbHRlcmFkYScgOiAnY3JpYWRhJ30gY29tIHN1Y2Vzc28hYCk7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gaWYgKHRoaXMuSUQgIT0gMCkgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0U3VjY2VzcygnQ29uZmlndXJhw6fDo28gZGUgc2VuaGEgYWx0ZXJhZGEgY29tIHN1Y2Vzc28hJyk7XG4gICAgICAgICAgLy8gZWxzZSAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0U3VjY2VzcygnQ29uZmlndXJhw6fDo28gZGUgc2VuaGEgY3JpYWRhIGNvbSBzdWNlc3NvIScpO1xuICAgICAgICAgIFxuICAgICAgICAgIHRoaXMuX2NvbmZpZ3VyYWNhb1NlbmhhU2VydmljZS5nZXRJbmZyYVNlZ0NvbmZpZygpO1xuICAgICAgICAgIHRoaXMuZ2V0SW5mcmFTZWdDb25maWcoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICAvLyB0aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIH1cbiAgICBlbHNlIHsgRm9ybVV0aWxzLnZhbGlkYXRlRmllbGRzKHRoaXMuZm9ybSkgfVxuICB9XG4gIC8vICNlbmRyZWdpb24gUE9TVFxuXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gU0VSVklDRSBNRVRIT0RTIDw9PT09PT09PT09XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFVUSUxTIDw9PT09PT09PT09XG4gIG9uU2VsZWN0TGV2ZWwoJHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKCR2YWx1ZSkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LnNldFZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTnVtZXJvcycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTGV0cmFzTWFpdXNjdWxhcycpPy5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0xldHJhc01haXVzY3VsYXMnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0NhcmFjdGVyZXNFc3BlY2lhaXMnKT8uc2V0VmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19DYXJhY3RlcmVzRXNwZWNpYWlzJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJyk/LnNldFZhbHVlKC0xKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVHJvY2FTZW5oYScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuTWluaW1hJyk/LnNldFZhbHVlKDYpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpPy5zZXRWYWx1ZSgtMSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVGVudGF0aXZhJyk/LnNldFZhbHVlKC0xKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVGVudGF0aXZhJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5JbmF0aXZpZGFkZScpPy5zZXRWYWx1ZSgtMSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bkluYXRpdmlkYWRlJyk/LmRpc2FibGUoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTnVtZXJvcycpPy5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTnVtZXJvcycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTGV0cmFzTWFpdXNjdWxhcycpPy5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfTGV0cmFzTWFpdXNjdWxhcycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnSXNfQ2FyYWN0ZXJlc0VzcGVjaWFpcycpPy5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ0lzX0NhcmFjdGVyZXNFc3BlY2lhaXMnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRyb2NhU2VuaGEnKT8uc2V0VmFsdWUoMTIwKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVHJvY2FTZW5oYScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuTWluaW1hJyk/LnNldFZhbHVlKDgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpPy5zZXRWYWx1ZSgxKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuUmVwZXRpY2FvJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKT8uc2V0VmFsdWUoNSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blRlbnRhdGl2YScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuSW5hdGl2aWRhZGUnKT8uc2V0VmFsdWUoMTIwKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuSW5hdGl2aWRhZGUnKT8uZGlzYWJsZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LnNldFZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19MZXRyYXNNYWl1c2N1bGFzJyk/LnNldFZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19MZXRyYXNNYWl1c2N1bGFzJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19DYXJhY3RlcmVzRXNwZWNpYWlzJyk/LnNldFZhbHVlKHRydWUpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19DYXJhY3RlcmVzRXNwZWNpYWlzJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJyk/LnNldFZhbHVlKDMwKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVHJvY2FTZW5oYScpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuTWluaW1hJyk/LnNldFZhbHVlKDEwKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuTWluaW1hJyk/LmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5SZXBldGljYW8nKT8uc2V0VmFsdWUoMyk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpPy5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVGVudGF0aXZhJyk/LnNldFZhbHVlKDMpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5UZW50YXRpdmEnKT8uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0bkluYXRpdmlkYWRlJyk/LnNldFZhbHVlKDMwKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuSW5hdGl2aWRhZGUnKT8uZGlzYWJsZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA0OlxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19OdW1lcm9zJyk/LmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19MZXRyYXNNYWl1c2N1bGFzJyk/LmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdJc19DYXJhY3RlcmVzRXNwZWNpYWlzJyk/LmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5Ucm9jYVNlbmhhJyk/LmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5NaW5pbWEnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpPy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnUXRuVGVudGF0aXZhJyk/LmVuYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdRdG5JbmF0aXZpZGFkZScpPy5lbmFibGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU3VibWl0ID0gKCk6IHZvaWQgPT4geyB0aGlzLmNyZWF0ZU9yVXBkYXRlSW5mcmFTZWdDb25maWcoKSB9O1xuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFVUSUxTIDw9PT09PT09PT09XG5cbn1cbiIsIjxsaWItaGVhZGVyIFticmVhZGNydW1iTGlzdF09XCJbICdJbmZyYScsICdDb25maWd1cmHDp8OjbyBkZSBTZW5oYScgXVwiIHBhZ2VUaXRsZT1cIkNvbmZpZ3VyYcOnw6NvIGRlIFNlbmhhXCJcbiAgbW9kZT1cImVkaXRcIiBbaGlkZUJ1dHRvbnNdPVwiWyAnQ2FuY2VsYXInIF1cIiAoY3JlYXRlKT1cIm9uU3VibWl0KClcIiAodXBkYXRlKT1cIm9uU3VibWl0KClcIiAgLz5cblxuXG48IS0tICNyZWdpb24gQk9EWSAtLT5cbjxsaWItY29udGFpbmVyPlxuXG4gIDxkaXYgaW5uZXJDb250ZW50MT5cbiAgICA8Zm9ybSAqbmdJZj1cIiRpbmZyYVNlZ0NvbmZpZ1JlY29yZDsgZWxzZSBsb2FkaW5nXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgIDxoMiBjbGFzcz1cImZzLTVcIj5BdHVhbG1lbnRlIHNldSBuw612ZWwgZGUgc2VndXJhbsOnYSDDqSBcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3VuZGVkIHRleHQtd2hpdGUgcC0xIHB4LTIgZnctYm9sZFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2JnLWRhbmdlcic6IGluaXRpYWxMZXZlbCA9PT0gMSxcbiAgICAgICAgICAgICAgICAgICdiZy13YXJuaW5nJzogaW5pdGlhbExldmVsID09PSAyLFxuICAgICAgICAgICAgICAgICAgJ2JnLXN1Y2Nlc3MnOiBpbml0aWFsTGV2ZWwgPT09IDMsXG4gICAgICAgICAgICAgICAgICAnYmctcHJpbWFyeSc6IGluaXRpYWxMZXZlbCA9PT0gNCxcbiAgICAgICAgICAgICAgICB9XCIgPlxuXG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoaW5pdGlhbExldmVsKSB7XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoMSkgeyBCYWl4byB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoMikgeyBNw6lkaW8gfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKDMpIHsgQWx0byB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoNCkgeyBQZXJzb25hbGl6YWRvIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIDxzdHJvbmcgKm5nSWY9XCJpbml0aWFsTGV2ZWwgPT09IDFcIj4gQmFpeG8gPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInRleHQtZGFya1wiICpuZ0lmPVwiaW5pdGlhbExldmVsID09PSAyXCI+IE3DqWRpbyA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3Ryb25nICpuZ0lmPVwiaW5pdGlhbExldmVsID09PSAzXCI+IEFsdG8gPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyAqbmdJZj1cImluaXRpYWxMZXZlbCA9PT0gNFwiPiBQZXJzb25hbGl6YWRvIDwvc3Ryb25nPiAtLT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtc3VidGl0bGUgbWItMiB0ZXh0LW11dGVkIGZzLTZcIj5TZWxlY2lvbmUgdW0gbsOtdmVsIGRlIHNlZ3VyYW7Dp2EgYWJhaXhvOjwvaDM+XG5cbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJMZXZlbFwiIHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiYnRuLWNoZWNrXCIgbmFtZT1cIkxldmVsXCIgaWQ9XCJvcHRpb24xXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW3ZhbHVlXT1cIjFcIiAoY2hhbmdlKT1cIm9uU2VsZWN0TGV2ZWwoTGV2ZWwpXCIgPlxuICAgICAgICAgICAgPGxhYmVsIFtjbGFzcy5idG4tb3V0bGluZS1kYW5nZXJdPVwiTGV2ZWwgPT09IDFcIiBbY2xhc3MuYmctZGFuZ2VyXT1cIkxldmVsID09PSAxXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBtLTJcIiBmb3I9XCJvcHRpb24xXCI+PGxpYi1pY29uIGljb25OYW1lPVwiY2FkZWFkby1hYmVydG8tb3V0bGluZVwiLz4gQmFpeG8gPC9sYWJlbD5cblxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkxldmVsXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJidG4tY2hlY2tcIiBuYW1lPVwiTGV2ZWxcIiBpZD1cIm9wdGlvbjJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbdmFsdWVdPVwiMlwiIChjaGFuZ2UpPVwib25TZWxlY3RMZXZlbChMZXZlbClcIiA+XG4gICAgICAgICAgICA8bGFiZWwgW2NsYXNzLmJnLXdhcm5pbmddPVwiTGV2ZWwgPT09IDJcIiBbY2xhc3MuYnRuLW91dGxpbmUtd2FybmluZ109XCJMZXZlbCA9PT0gMlwiIGNsYXNzPVwiIGJ0biBidG4tc2Vjb25kYXJ5IHRleHQtbGlnaHQgbS0yXCIgZm9yPVwib3B0aW9uMlwiPjxsaWItaWNvbiBpY29uTmFtZT1cImNhZGVhZG8tc2VtaWFiZXJ0by1vdXRsaW5lXCIvPiBNw6lkaW88L2xhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTGV2ZWxcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cImJ0bi1jaGVja1wiIG5hbWU9XCJMZXZlbFwiIGlkPVwib3B0aW9uM1wiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFt2YWx1ZV09XCIzXCIgKGNoYW5nZSk9XCJvblNlbGVjdExldmVsKExldmVsKVwiID5cbiAgICAgICAgICAgIDxsYWJlbCBbY2xhc3MuYnRuLW91dGxpbmUtc3VjY2Vzc109XCJMZXZlbCA9PT0gM1wiIFtjbGFzcy5iZy1zdWNjZXNzXT1cIkxldmVsID09PSAzXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBtLTJcIiBmb3I9XCJvcHRpb24zXCI+PGxpYi1pY29uIGljb25OYW1lPVwiY2FkZWFkby1vdXRsaW5lXCIvPiBBbHRvPC9sYWJlbD5cblxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkxldmVsXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJidG4tY2hlY2tcIiBuYW1lPVwiTGV2ZWxcIiBpZD1cIm9wdGlvbjRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbdmFsdWVdPVwiNFwiIChjaGFuZ2UpPVwib25TZWxlY3RMZXZlbChMZXZlbClcIiA+XG4gICAgICAgICAgICA8bGFiZWwgW2NsYXNzLmJ0bi1vdXRsaW5lLXByaW1hcnldPVwiTGV2ZWwgPT09IDRcIiBbY2xhc3MuYmctcHJpbWFyeV09XCJMZXZlbCA9PT0gNFwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbS0yXCIgZm9yPVwib3B0aW9uNFwiPjxsaWItaWNvbiBpY29uTmFtZT1cImNoYXZlXCIvPiBQZXJzb25hbGl6YWRvPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0zIG1iLTRcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZSBtYi0yIHRleHQtbXV0ZWQgZnMtNlwiPkEgc2VuaGEgZGV2ZSBjb250ZXI6PC9oMz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwibnVtZXJvc1wiPiBOw7ptZXJvIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJc19OdW1lcm9zXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwibnVtZXJvc1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJsZXRyYU1haXVzY3VsYVwiPiBMZXRyYSBNYWnDunNjdWxhIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJc19MZXRyYXNNYWl1c2N1bGFzXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwibGV0cmFNYWl1c2N1bGFcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiY2FyYWN0ZXJlc0VzcGVjaWFpc1wiPkNhcmFjdGVyZSBlc3BlY2lhbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJc19DYXJhY3RlcmVzRXNwZWNpYWlzXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwiY2FyYWN0ZXJlc0VzcGVjaWFpc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gY2xhc3M9XCJtcy0xXCIgaWNvbk5hbWU9XCJpbmZvXCIgaWNvbkNvbG9yPVwiYmx1ZVwiIGljb25TaXplPVwic21hbGxcIiB0b29sdGlwPVwiQ2FyYWN0ZXJlcyBzdWdlcmlkb3M6ICEgQCAjICQgJSAmICogKCApIF8gKyA9IFsgXSB7IH0gfCA/XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgbGliUmVxdWlyZWQgY2xhc3M9XCJmb3JtLWxhYmVsIGZvcm0tY29udHJvbC1zbVwiIGZvcj1cInF0blRyb2NhU2VuaGFJbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gaWNvbk5hbWU9XCJpbmZvXCIgaWNvblNpemU9XCJzbWFsbFwiIGljb25Db2xvcj1cImJsdWVcIiB0b29sdGlwPVwiSW5mb3JtZSBhIHF1YW50aWRhZGUgZW0gZGlhcyBxdWUgYSBzZW5oYSBzZXLDoSB2w6FsaWRhLCBhcMOzcyBlc3RlIHBlcsOtb2RvIGEgc2VuaGEgZGV2ZXLDoSBzZXIgdHJvY2FkYSBwZWxvIHVzdcOhcmlvLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFZhbGlkYWRlIGVtIGRpYXNcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJRdG5Ucm9jYVNlbmhhXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0taW5wdXRcIiBpZD1cInF0blRyb2NhU2VuaGFJbnB1dFwiIHRvb2x0aXA9XCJJbmZvcm1lIGEgcXVhbnRpZGFkZSBlbSBkaWFzIHF1ZSBhIHNlbmhhIHNlcsOhIHbDoWxpZGEsIGFww7NzIGVzdGUgcGVyw61vZG8gYSBzZW5oYSBkZXZlcsOhIHNlciB0cm9jYWRhIHBlbG8gdXN1w6FyaW8uXCIgPlxuICAgICAgICAgICAgICAgIDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtLmdldCgnUXRuVHJvY2FTZW5oYScpXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGxpYlJlcXVpcmVkIGNsYXNzPVwiZm9ybS1sYWJlbCBmb3JtLWNvbnRyb2wtc21cIiBmb3I9XCJxdG5NaW5pbWFJbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gaWNvbk5hbWU9XCJpbmZvXCIgaWNvblNpemU9XCJzbWFsbFwiIGljb25Db2xvcj1cImJsdWVcIiB0b29sdGlwPVwiSW5mb3JtZSBhIHF1YW50aWRhZGUgbcOtbmltYSBkZSBjYXJhY3RlcmVzIHF1ZSBhIHNlbmhhIGRldmUgdGVyLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFRhbWFuaG8gbcOtbmltb1xuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlF0bk1pbmltYVwiIHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWlucHV0XCIgaWQ9XCJxdG5NaW5pbWFJbnB1dFwiIHRvb2x0aXA9XCJJbmZvcm1lIGEgcXVhbnRpZGFkZSBtw61uaW1hIGRlIGNhcmFjdGVyZXMgcXVlIGEgc2VuaGEgZGV2ZSB0ZXIuXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCdRdG5NaW5pbWEnKVwiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBsaWJSZXF1aXJlZCBjbGFzcz1cImZvcm0tbGFiZWwgZm9ybS1jb250cm9sLXNtXCIgZm9yPVwicXRuUmVwZXRpY2FvSW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImluZm9cIiBpY29uU2l6ZT1cInNtYWxsXCIgaWNvbkNvbG9yPVwiYmx1ZVwiIHRvb2x0aXA9XCJJbmZvcm1lIHF1YW50YXMgc2VuaGFzIGRpZmVyZW50ZXMgbyB1c3XDoXJpbyBkZXZlcsOhIHVzYXIgYW50ZXMgcXVlIHBvc3NhIHJlcGV0aXIgYWxndW1hIGrDoSB1dGlsaXphZGEuXCIgLz5cbiAgICAgICAgICAgICAgICAgIFJlcGV0acOnw6NvXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUXRuUmVwZXRpY2FvXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0taW5wdXRcIiBpZD1cInF0blJlcGV0aWNhb0lucHV0XCIgdG9vbHRpcD1cIkluZm9ybWUgcXVhbnRhcyBzZW5oYXMgZGlmZXJlbnRlcyBvIHVzdcOhcmlvIGRldmVyw6EgdXNhciBhbnRlcyBxdWUgcG9zc2EgcmVwZXRpciBhbGd1bWEgasOhIHV0aWxpemFkYS5cIj5cbiAgICAgICAgICAgICAgICA8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ1F0blJlcGV0aWNhbycpXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb250YWluZXIgY29sIHJvd1wiPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTNcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZSBtYi0yIHRleHQtbXV0ZWQgZnMtNlwiPkJsb3F1ZWlvczo8L2gzPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC0yIGZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiaXNEcm9wU2Vzc2lvbkNoZWNrXCI+IERlcnJ1YmFyIG11bHRpcGxhcyBzZXNzw7VlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIGlkPVwiaXNEcm9wU2Vzc2lvbkNoZWNrXCIgZm9ybUNvbnRyb2xOYW1lPVwiSXNfRHJvcFNlc3Npb25cIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCI+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBsaWJSZXF1aXJlZCBjbGFzcz1cImZvcm0tbGFiZWwgZm9ybS1jb250cm9sLXNtXCIgZm9yPVwiZGlhc0luYXRpdmlkYWRlSW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1pY29uIGljb25OYW1lPVwiaW5mb1wiIGljb25TaXplPVwic21hbGxcIiBpY29uQ29sb3I9XCJibHVlXCIgdG9vbHRpcD1cIkluZm9ybWUgcXVhbnRvcyBkaWFzIHVtIHVzdcOhcmlvIHBvZGVyw6EgZmljYXIgc2VtIGVudHJhciBubyBzaXN0ZW1hLCBhbyBleGNlZGVyIGVzdGUgbsO6bWVybyBvIHVzdcOhcmlvIHNlcsOhIGRlc2F0aXZhZG8gcGVyZGVuZG8gbyBhY2Vzc28gYW8gc2lzdGVtYSwgZSBzb21lbnRlIG9zIEFkbWluaXN0cmFkb3JlcyBwb2RlcsOjbyBhdGl2w6EtbG8gbm92YW1lbnRlLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIERpYXMgZGUgSW5hdGl2aWRhZGVcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAgaWQ9XCJkaWFzSW5hdGl2aWRhZGVJbnB1dFwiIGZvcm1Db250cm9sTmFtZT1cIlF0bkluYXRpdmlkYWRlXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0taW5wdXRcIiB0b29sdGlwPVwiSW5mb3JtZSBxdWFudG9zIGRpYXMgdW0gdXN1w6FyaW8gcG9kZXLDoSBmaWNhciBzZW0gZW50cmFyIG5vIHNpc3RlbWEsIGFvIGV4Y2VkZXIgZXN0ZSBuw7ptZXJvIG8gdXN1w6FyaW8gc2Vyw6EgZGVzYXRpdmFkbyBwZXJkZW5kbyBvIGFjZXNzbyBhbyBzaXN0ZW1hLCBlIHNvbWVudGUgb3MgQWRtaW5pc3RyYWRvcmVzIHBvZGVyw6NvIGF0aXbDoS1sbyBub3ZhbWVudGUuXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCdRdG5JbmF0aXZpZGFkZScpXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGxpYlJlcXVpcmVkIGNsYXNzPVwiZm9ybS1sYWJlbCBmb3JtLWNvbnRyb2wtc21cIiBmb3I9XCJ0ZW50YXRpdmFzRGVBY2Vzc29JbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWljb24gaWNvbk5hbWU9XCJpbmZvXCIgaWNvblNpemU9XCJzbWFsbFwiIGljb25Db2xvcj1cImJsdWVcIiB0b29sdGlwPVwiSW5mb3JtZSBhIHF1YW50aWRhZGUgZGUgdGVudGF0aXZhcyBjb25zZWN1dGl2YXMgZGUgYWNlc3NvIGFvIHNpc3RlbWEgc2VtIHN1Y2Vzc28gYW50ZXMgZGUgYmxvcXVlYXIgbyB1c3XDoXJpbywgZXhpZ2luZG8gcXVlIGVsZSBmYcOnYSB1bWEgcmVjdXBlcmHDp8OjbyBkZSBzZW5oYS5cIiAvPlxuICAgICAgICAgICAgICAgICAgICBUZW50YXRpdmFzIGRlIGFjZXNzb1xuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwidGVudGF0aXZhc0RlQWNlc3NvSW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9XCJRdG5UZW50YXRpdmFcIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1pbnB1dFwiIHRvb2x0aXA9XCJJbmZvcm1lIGEgcXVhbnRpZGFkZSBkZSB0ZW50YXRpdmFzIGNvbnNlY3V0aXZhcyBkZSBhY2Vzc28gYW8gc2lzdGVtYSBzZW0gc3VjZXNzbyBhbnRlcyBkZSBibG9xdWVhciBvIHVzdcOhcmlvLCBleGlnaW5kbyBxdWUgZWxlIGZhw6dhIHVtYSByZWN1cGVyYcOnw6NvIGRlIHNlbmhhLlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtLmdldCgnUXRuVGVudGF0aXZhJylcIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRhaW5lciBjb2wtNiByb3dcIj5cblxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUGFsYXZyYXMgZG8gR3VpbGhlcm1lOiBcIm9jdWx0ZWlhIGVsZXNcIiwgXCJ1bSBkaWEgaW1wbGVtZW50YW1vc1wiIC0tPlxuICAgIDwhLS0gI3JlZ2lvbiBNQVJLOiBMSU5LUyBPQ1VMVEFET1MgLS0+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZCBwLTMgbXQtM1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXN1YnRpdGxlIG1iLTIgdGV4dC1tdXRlZCBmcy02XCI+UmVkZWZpbmnDp8OjbyBkZSBzZW5oYTo8L2gzPlxuICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwibGluay1wcmltYXJ5XCI+T2JyaWdhciB0b2RvcyBvcyB1c3XDoXJpb3MgYSB0cm9jYXJlbSBzdWEgc2VuaGEgbm8gcHLDs3hpbW8gbG9naW48L2E+XG4gICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJsaW5rLXByaW1hcnlcIj5TZWxlY2lvbmFyIHVzdcOhcmlvcyBwYXJhIHRyb2NhcmVtIHN1YSBzZW5oYSBubyBwcsOzeGltbyBsb2dpbjwvYT5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPCEtLSAjZW5kcmVnaW9uIExJTktTIE9DVUxUQURPUyAtLT5cblxuXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgXG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cblxuPC9saWItY29udGFpbmVyPlxuPCEtLSAjZW5kcmVnaW9uIEJPRFkgLS0+XG5cbjwhLS0gI3JlZ2lvbiBTUElOTkVSIC0tPlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHN0eWxlPVwid2lkdGg6IDNyZW07IGhlaWdodDogM3JlbTtcIiByb2xlPVwic3RhdHVzXCI+IDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+Q2FycmVnYW5kby4uLjwvc3Bhbj4gPC9kaXY+IC0tPlxuICAgICAgICA8bGliLXNwaW5uZXIgLz5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ0lzQXRpdm8+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG1lLTJcIiByb2xlPVwic3RhdHVzXCI+IDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+Q2FycmVnYW5kby4uLjwvc3Bhbj4gPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPCEtLSAjZW5kcmVnaW9uIFNQSU5ORVIgLS0+XG4iXX0=
@@ -6,10 +6,10 @@ export class PageNotAuthorizedComponent {
6
6
  this.router = router;
7
7
  }
8
8
  onHome() { this.router.navigate(["/home"]); }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageNotAuthorizedComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageNotAuthorizedComponent, isStandalone: true, selector: "app-page-not-authorized, page-not-authorized", ngImport: i0, template: "<div class=\"content\">\n <div class=\"image mb-4\"> <img src=\"src/assets/icons/page-not-authorized.svg\" height=\"250\" width=\"250\" > </div>\n <h1 class=\"tittle\">Voc\u00EA n\u00E3o tem permiss\u00E3o para executar esta op\u00E7\u00E3o.</h1>\n <button class=\"btn button mt-3\" (click)=\"onHome()\"> Voltar para a tela inicial </button>\n</div>\n", styles: [".content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh}.image{text-align:center;display:block}.tittle{font-family:Open Sans;font-style:normal;font-weight:700;font-size:48px;line-height:65px;text-align:center;color:#212529}.sub-tittle{font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;width:600px;text-align:center;color:#212529}.button{background:#0d6efd;border-radius:4px;font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;color:#fff}\n"], preserveWhitespaces: true }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageNotAuthorizedComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PageNotAuthorizedComponent, isStandalone: true, selector: "app-page-not-authorized, page-not-authorized", ngImport: i0, template: "<div class=\"content\">\n <div class=\"image mb-4\"> <img src=\"src/assets/icons/page-not-authorized.svg\" height=\"250\" width=\"250\" > </div>\n <h1 class=\"tittle\">Voc\u00EA n\u00E3o tem permiss\u00E3o para executar esta op\u00E7\u00E3o.</h1>\n <button class=\"btn button mt-3\" (click)=\"onHome()\"> Voltar para a tela inicial </button>\n</div>\n", styles: [".content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh}.image{text-align:center;display:block}.tittle{font-family:Open Sans;font-style:normal;font-weight:700;font-size:48px;line-height:65px;text-align:center;color:#212529}.sub-tittle{font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;width:600px;text-align:center;color:#212529}.button{background:#0d6efd;border-radius:4px;font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;color:#fff}\n"], preserveWhitespaces: true }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageNotAuthorizedComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageNotAuthorizedComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'app-page-not-authorized, page-not-authorized', preserveWhitespaces: true, standalone: true, template: "<div class=\"content\">\n <div class=\"image mb-4\"> <img src=\"src/assets/icons/page-not-authorized.svg\" height=\"250\" width=\"250\" > </div>\n <h1 class=\"tittle\">Voc\u00EA n\u00E3o tem permiss\u00E3o para executar esta op\u00E7\u00E3o.</h1>\n <button class=\"btn button mt-3\" (click)=\"onHome()\"> Voltar para a tela inicial </button>\n</div>\n", styles: [".content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh}.image{text-align:center;display:block}.tittle{font-family:Open Sans;font-style:normal;font-weight:700;font-size:48px;line-height:65px;text-align:center;color:#212529}.sub-tittle{font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;width:600px;text-align:center;color:#212529}.button{background:#0d6efd;border-radius:4px;font-family:Open Sans;font-style:normal;font-weight:400;font-size:16px;line-height:22px;color:#fff}\n"] }]
15
15
  }], ctorParameters: () => [{ type: i1.Router }] });
@@ -139,10 +139,10 @@ export class ClickOutsideDirective {
139
139
  window.removeEventListener('blur', this._onWindowBlur);
140
140
  });
141
141
  }
142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
143
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ClickOutsideDirective, isStandalone: true, selector: "[clickOutside]", inputs: { clickOutsideEnabled: "clickOutsideEnabled", attachOutsideOnClick: "attachOutsideOnClick", delayClickOutsideInit: "delayClickOutsideInit", emitOnBlur: "emitOnBlur", exclude: "exclude", excludeBeforeClick: "excludeBeforeClick", clickOutsideEvents: "clickOutsideEvents" }, outputs: { clickOutside: "clickOutside" }, usesOnChanges: true, ngImport: i0 }); }
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
143
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ClickOutsideDirective, isStandalone: true, selector: "[clickOutside]", inputs: { clickOutsideEnabled: "clickOutsideEnabled", attachOutsideOnClick: "attachOutsideOnClick", delayClickOutsideInit: "delayClickOutsideInit", emitOnBlur: "emitOnBlur", exclude: "exclude", excludeBeforeClick: "excludeBeforeClick", clickOutsideEvents: "clickOutsideEvents" }, outputs: { clickOutside: "clickOutside" }, usesOnChanges: true, ngImport: i0 }); }
144
144
  }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClickOutsideDirective, decorators: [{
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickOutsideDirective, decorators: [{
146
146
  type: Directive,
147
147
  args: [{
148
148
  selector: '[clickOutside]',
@@ -10,10 +10,10 @@ export class CopyClipboardDirective {
10
10
  return;
11
11
  navigator.clipboard.writeText(this.payload.toString());
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopyClipboardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CopyClipboardDirective, isStandalone: true, selector: "[copy-clipboard]", inputs: { payload: ["copy-clipboard", "payload"] }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CopyClipboardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: CopyClipboardDirective, isStandalone: true, selector: "[copy-clipboard]", inputs: { payload: ["copy-clipboard", "payload"] }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopyClipboardDirective, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CopyClipboardDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: '[copy-clipboard]',
@@ -13,10 +13,10 @@ export class DisableControlDirective {
13
13
  this.ngControl.control?.enable();
14
14
  }
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableControlDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
17
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DisableControlDirective, isStandalone: true, selector: "[disableControl]", inputs: { disableControl: "disableControl" }, ngImport: i0 }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisableControlDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DisableControlDirective, isStandalone: true, selector: "[disableControl]", inputs: { disableControl: "disableControl" }, ngImport: i0 }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableControlDirective, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisableControlDirective, decorators: [{
20
20
  type: Directive,
21
21
  args: [{
22
22
  selector: '[disableControl]',
@@ -26,10 +26,10 @@ export class HighlightDirective {
26
26
  const re = new RegExp(`(${this.searchedWord})`, 'gi');
27
27
  return this.content.replace(re, `<span class="${this.classToApply}">$1</span>`);
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HighlightDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
30
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: HighlightDirective, isStandalone: true, selector: "[appHighlight]", inputs: { searchedWord: "searchedWord", content: "content", classToApply: "classToApply", setTitle: "setTitle" }, usesOnChanges: true, ngImport: i0 }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighlightDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: HighlightDirective, isStandalone: true, selector: "[appHighlight]", inputs: { searchedWord: "searchedWord", content: "content", classToApply: "classToApply", setTitle: "setTitle" }, usesOnChanges: true, ngImport: i0 }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HighlightDirective, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighlightDirective, decorators: [{
33
33
  type: Directive,
34
34
  args: [{
35
35
  selector: '[appHighlight]',
@@ -54,10 +54,10 @@ export class LoadingBtnDirective {
54
54
  this._renderer.setProperty(this._elementRef.nativeElement, 'innerHTML', this._originalContent);
55
55
  }
56
56
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingBtnDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
58
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: LoadingBtnDirective, isStandalone: true, selector: "button[libLoading], a[libLoading]", inputs: { loadingText: "loadingText", loadingType: "loadingType", isLoading: ["libLoading", "isLoading"] }, ngImport: i0 }); }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingBtnDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: LoadingBtnDirective, isStandalone: true, selector: "button[libLoading], a[libLoading]", inputs: { loadingText: "loadingText", loadingType: "loadingType", isLoading: ["libLoading", "isLoading"] }, ngImport: i0 }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingBtnDirective, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingBtnDirective, decorators: [{
61
61
  type: Directive,
62
62
  args: [{
63
63
  selector: 'button[libLoading], a[libLoading]',
@@ -88,10 +88,10 @@ export class RequiredDirective {
88
88
  this._renderer.removeChild(this._elementRef.nativeElement, spanElement);
89
89
  }
90
90
  }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequiredDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
92
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RequiredDirective, isStandalone: true, selector: "label[libRequired], span[libRequired], p[libRequired]", inputs: { showMarker: ["libRequired", "showMarker"], requiredID: "requiredID" }, usesOnChanges: true, ngImport: i0 }); }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequiredDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
92
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: RequiredDirective, isStandalone: true, selector: "label[libRequired], span[libRequired], p[libRequired]", inputs: { showMarker: ["libRequired", "showMarker"], requiredID: "requiredID" }, usesOnChanges: true, ngImport: i0 }); }
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RequiredDirective, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequiredDirective, decorators: [{
95
95
  type: Directive,
96
96
  args: [{
97
97
  selector: "label[libRequired], span[libRequired], p[libRequired]",
@@ -28,10 +28,10 @@ export class TextTruncateDirective {
28
28
  this._elementRef.nativeElement.style.whiteSpace = 'nowrap';
29
29
  this._elementRef.nativeElement.style.maxWidth = this.formatType();
30
30
  }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextTruncateDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
32
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TextTruncateDirective, isStandalone: true, selector: "[libTextTruncate], [textTruncate]", inputs: { truncateLimit: ["libTextTruncate", "truncateLimit"] }, usesOnChanges: true, ngImport: i0 }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTruncateDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TextTruncateDirective, isStandalone: true, selector: "[libTextTruncate], [textTruncate]", inputs: { truncateLimit: ["libTextTruncate", "truncateLimit"] }, usesOnChanges: true, ngImport: i0 }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextTruncateDirective, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextTruncateDirective, decorators: [{
35
35
  type: Directive,
36
36
  args: [{
37
37
  selector: '[libTextTruncate], [textTruncate]',