@stiunb/unb-lib-components 18.0.22 → 18.0.24

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 (43) hide show
  1. package/esm2022/lib/unb-mensagem/unb-mensagem.component.mjs +18 -26
  2. package/esm2022/lib/unb-mensagem/unb-mensagem.service.mjs +16 -21
  3. package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.mjs +91 -37
  4. package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.mjs +67 -49
  5. package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.mjs +160 -41
  6. package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.mjs +73 -57
  7. package/esm2022/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.mjs +225 -56
  8. package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-email.model.mjs +1 -1
  9. package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-endereco.model.mjs +1 -1
  10. package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa.model.mjs +2 -1
  11. package/esm2022/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.mjs +186 -40
  12. package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.mjs +115 -33
  13. package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.mjs +64 -34
  14. package/esm2022/lib/unb-pessoa/unb-pessoa.module.mjs +9 -1
  15. package/esm2022/lib/unb-pessoa/unb-pessoa.service.mjs +146 -50
  16. package/esm2022/lib/unb-pessoa/unb-tipo-pessoa.enum.mjs +1 -1
  17. package/esm2022/lib/unb-usuario/oidc-decoded-token.mjs +1 -1
  18. package/esm2022/lib/unb-usuario/oidc-user-data.mjs +1 -1
  19. package/esm2022/public-api.mjs +14 -13
  20. package/esm2022/stiunb-unb-lib-components.mjs +5 -0
  21. package/fesm2022/stiunb-unb-lib-components.mjs +2627 -0
  22. package/fesm2022/stiunb-unb-lib-components.mjs.map +1 -0
  23. package/index.d.ts +1 -1
  24. package/lib/unb-mensagem/unb-mensagem.component.d.ts +3 -17
  25. package/lib/unb-mensagem/unb-mensagem.service.d.ts +16 -18
  26. package/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.d.ts +9 -5
  27. package/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.d.ts +8 -10
  28. package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.d.ts +12 -6
  29. package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.d.ts +8 -10
  30. package/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.d.ts +24 -12
  31. package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-email.model.d.ts +1 -0
  32. package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-endereco.model.d.ts +3 -2
  33. package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa.model.d.ts +5 -4
  34. package/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.d.ts +21 -8
  35. package/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.d.ts +8 -6
  36. package/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.d.ts +8 -10
  37. package/lib/unb-pessoa/unb-pessoa.module.d.ts +20 -18
  38. package/lib/unb-pessoa/unb-pessoa.service.d.ts +11 -14
  39. package/package.json +5 -5
  40. package/public-api.d.ts +10 -10
  41. package/esm2022/unb-lib-components.mjs +0 -5
  42. package/fesm2022/unb-lib-components.mjs +0 -1923
  43. package/fesm2022/unb-lib-components.mjs.map +0 -1
@@ -2,4 +2,4 @@ export class UnbPessoaEmail {
2
2
  }
3
3
  export class UnbPessoaEmailTipo {
4
4
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1lbWFpbC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lbWFpbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sY0FBYztDQU8xQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5iUGVzc29hRW1haWwge1xyXG4gIGNvZGlnbz86IG51bWJlcjtcclxuICB0aXBvRW1haWxDb2RpZ28/OiBudW1iZXI7XHJcbiAgdGlwbz86IHN0cmluZztcclxuICBlbWFpbD86IHN0cmluZztcclxuICBhdXRvcml6YWNhbz86IGJvb2xlYW47XHJcbiAgb3JkZW0/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVbmJQZXNzb2FFbWFpbFRpcG8ge1xyXG4gIGluZGV4PzogbnVtYmVyO1xyXG4gIGNvZGlnbz86IG51bWJlcjtcclxuICBkZW5vbWluYWNhbz86IHN0cmluZztcclxufSJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1lbWFpbC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lbWFpbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sY0FBYztDQVExQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5iUGVzc29hRW1haWwge1xyXG4gIGNvZGlnbz86IG51bWJlcjtcclxuICB0aXBvRW1haWxDb2RpZ28/OiBudW1iZXI7XHJcbiAgdGlwbz86IHN0cmluZztcclxuICBlbWFpbD86IHN0cmluZztcclxuICBhdXRvcml6YWNhbz86IGJvb2xlYW47XHJcbiAgb3JkZW0/OiBudW1iZXI7XHJcbiAgb3JkZW1FbWFpbD86IG51bWJlciB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVbmJQZXNzb2FFbWFpbFRpcG8ge1xyXG4gIGluZGV4PzogbnVtYmVyO1xyXG4gIGNvZGlnbz86IG51bWJlcjtcclxuICBkZW5vbWluYWNhbz86IHN0cmluZztcclxufSJdfQ==
@@ -2,4 +2,4 @@ export class UnbPessoaEndereco {
2
2
  }
3
3
  export class UnbPessoaEnderecoTipo {
4
4
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1lbmRlcmVjby5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lbmRlcmVjby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8saUJBQWlCO0NBaUI3QjtBQUVELE1BQU0sT0FBTyxxQkFBcUI7Q0FHakMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5iUGVzc29hRW5kZXJlY28ge1xyXG4gIGNvZGlnbz86IG51bWJlcjtcclxuICB0aXBvRW5kZXJlY29Db2RpZ28/OiBudW1iZXI7XHJcbiAgdGlwbz86IHN0cmluZztcclxuICBjZXA/OiBzdHJpbmc7XHJcbiAgbG9ncmFkb3Vybz86IHN0cmluZztcclxuICBtdW5pY2lwaW8/OiBzdHJpbmc7XHJcbiAgYmFpcnJvPzogc3RyaW5nO1xyXG4gIHVmRW5kZXJlY28/OiBzdHJpbmc7IC8vIG8gcHV0IGVoIHVmRW5kZXJlY28gZSBvIGdldCBlaCB1Zi4gRW50YW8gcHJlY2lzYSBjb252ZXJ0ZXJcclxuICB1Zj86IHN0cmluZztcclxuICBwYWlzPzogc3RyaW5nO1xyXG4gIGNvbXBsZW1lbnRvPzogc3RyaW5nO1xyXG4gIGNhaXhhUG9zdGFsPzogc3RyaW5nO1xyXG4gIGNvcnJlc3BvbmRlbmNpYT86IGJvb2xlYW47XHJcbiAgb3JkZW1FbmRlcmVjbz86IG51bWJlcjtcclxuICBwYWlzRW5kZXJlY29Db2RpZ28/OiBudW1iZXI7XHJcbiAgbXVuaWNpcGlvQ29kaWdvPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVW5iUGVzc29hRW5kZXJlY29UaXBvIHtcclxuICBjb2RpZ28/OiBudW1iZXI7XHJcbiAgZGVub21pbmFjYW8/OiBzdHJpbmc7XHJcbn0iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1lbmRlcmVjby5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lbmRlcmVjby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8saUJBQWlCO0NBa0I3QjtBQUVELE1BQU0sT0FBTyxxQkFBcUI7Q0FHakMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVW5iUGVzc29hRW5kZXJlY28ge1xyXG4gIGNvZGlnbz86IG51bWJlcjtcclxuICB0aXBvRW5kZXJlY29Db2RpZ28/OiBudW1iZXI7XHJcbiAgdGlwbz86IHN0cmluZztcclxuICBjZXA/OiBzdHJpbmc7XHJcbiAgbG9ncmFkb3Vybz86IHN0cmluZztcclxuICBtdW5pY2lwaW8/OiBzdHJpbmc7XHJcbiAgYmFpcnJvPzogc3RyaW5nO1xyXG4gIHVmRW5kZXJlY28/OiBzdHJpbmc7IFxyXG4gIHVmPzogc3RyaW5nO1xyXG4gIHBhaXM/OiBzdHJpbmc7XHJcbiAgY29tcGxlbWVudG8/OiBzdHJpbmc7XHJcbiAgY2FpeGFQb3N0YWw/OiBzdHJpbmc7XHJcbiAgY29ycmVzcG9uZGVuY2lhPzogYm9vbGVhbjtcclxuICBvcmRlbUVuZGVyZWNvPzogbnVtYmVyIHwgbnVsbDtcclxuICBvcmRlbT86IG51bWJlcjtcclxuICBwYWlzRW5kZXJlY29Db2RpZ28/OiBudW1iZXIgfCBudWxsO1xyXG4gIG11bmljaXBpb0NvZGlnbz86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYUVuZGVyZWNvVGlwbyB7XHJcbiAgY29kaWdvPzogbnVtYmVyO1xyXG4gIGRlbm9taW5hY2FvPzogc3RyaW5nO1xyXG59Il19
@@ -2,5 +2,6 @@
2
2
  * Essa eh uma classe base, com propriedades comum a todas as outras pessoas.
3
3
  * */
4
4
  export class UnbPessoaModel {
5
+ ;
5
6
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7S0FFSztBQUNMLE1BQU0sT0FBTyxjQUFjO0NBbUUxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpcG9QZXNzb2FFbnVtIH0gZnJvbSBcIi4uL3VuYi10aXBvLXBlc3NvYS5lbnVtXCI7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVtYWlsIH0gZnJvbSBcIi4vdW5iLXBlc3NvYS1lbWFpbC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFbmRlcmVjbyB9IGZyb20gXCIuL3VuYi1wZXNzb2EtZW5kZXJlY28ubW9kZWxcIjtcclxuaW1wb3J0IHsgVW5iUGVzc29hUGFpcyB9IGZyb20gXCIuL3VuYi1wZXNzb2EtcGFpc1wiO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FUZWxlZm9uZSB9IGZyb20gXCIuL3VuYi1wZXNzb2EtdGVsZWZvbmUubW9kZWxcIjtcclxuXHJcbi8qKiBcclxuICogRXNzYSBlaCB1bWEgY2xhc3NlIGJhc2UsIGNvbSBwcm9wcmllZGFkZXMgY29tdW0gYSB0b2RhcyBhcyBvdXRyYXMgcGVzc29hcy4gXHJcbiAqICovXHJcbmV4cG9ydCBjbGFzcyBVbmJQZXNzb2FNb2RlbCB7XHJcbiAgaWRQZXNzb2EhOiBudW1iZXI7XHJcbiAgY29kaWdvUGVzc29hITogbnVtYmVyOyAgIFxyXG4gIGVuZGVyZWNvcyE6IFVuYlBlc3NvYUVuZGVyZWNvW107XHJcbiAgdGVsZWZvbmVzITogVW5iUGVzc29hVGVsZWZvbmVbXTtcclxuICBlbWFpbHMhOiBVbmJQZXNzb2FFbWFpbFtdO1xyXG4gIHRpcG9QZXNzb2EhOiBUaXBvUGVzc29hRW51bTsgLy8gaW5pY2lhbGl6YSBjb20gbyBmaXNpY2Egc2VsZWNpb25hZG9cclxuXHJcbiAgLy8gQXRyaWJ1dG9zIGRhIFBlc3NvYSBGw61zaWNhXHJcbiAgaWRTZXJ2aWRvciE6IG51bWJlcjtcclxuICBtYXRyaWN1bGFTaXBlcyE6IG51bWJlcjtcclxuICBtYXRyaWN1bGFTaWFwZSE6IG51bWJlcjtcclxuICBub21lITogc3RyaW5nO1xyXG4gIGNwZiE6IHN0cmluZztcclxuICByZyE6IHN0cmluZztcclxuICByZ09yZ2FvITogc3RyaW5nO1xyXG4gIHJnVWYhOiBzdHJpbmc7XHJcbiAgcmdEYXRhRW1pc3NhbyE6IHN0cmluZztcclxuICBudW1lcm9UaXR1bG9FbGVpdG9yITogc3RyaW5nO1xyXG4gIGRhdGFFbWlzc2FvVGl0dWxvRWxlaXRvciE6IHN0cmluZztcclxuICB6b25hVGl0dWxvRWxlaXRvciE6IHN0cmluZztcclxuICBzZWNhb1RpdHVsb0VsZWl0b3IhOiBzdHJpbmc7XHJcbiAgdWZUaXR1bG9FbGVpdG9yITogc3RyaW5nO1xyXG4gIG51bWVyb1Jlc2VydmlzdGEhOiBzdHJpbmc7XHJcbiAgc2VyaWVSZXNlcnZpc3RhITogc3RyaW5nO1xyXG4gIG9yZ2FvUmVzZXJ2aXN0YSE6IHN0cmluZztcclxuICBkYXRhTmFzY2ltZW50byE6IHN0cmluZztcclxuICBwYWlzTmFzY2ltZW50byE6IHN0cmluZztcclxuICB1Zk5hc2NpbWVudG8hOiBzdHJpbmc7XHJcbiAgbmF0dXJhbGlkYWRlITogc3RyaW5nO1xyXG4gIGNvZGlnb1BhaXNOYXNjaW1lbnRvITogbnVtYmVyO1xyXG4gIGNvZGlnb1BhaXNQYXNzYXBvcnRlITogbnVtYmVyO1xyXG4gIGNvZGlnb0VzdGFkb0NpdmlsITogbnVtYmVyO1xyXG4gIG5hY2lvbmFsaWRhZGUhOiBzdHJpbmc7XHJcbiAgZXN0YWRvQ2l2aWwhOiBzdHJpbmc7XHJcbiAgbm9tZVBhaSE6IHN0cmluZztcclxuICBub21lTWFlITogc3RyaW5nO1xyXG4gIHRpcG9TYW5ndWluZW8hOiBzdHJpbmc7XHJcbiAgZXNjb2xhcmlkYWRlITogc3RyaW5nO1xyXG4gIG51bWVyb0NhcnRlaXJhVHJhYmFsaG8hOiBzdHJpbmc7XHJcbiAgc2VyaWVDYXJ0ZWlyYVRyYWJhbGhvITogc3RyaW5nO1xyXG4gIHVmQ2FydGVpcmFUcmFiYWxobyE6IHN0cmluZztcclxuICBwaXNQYXNlcCE6IHN0cmluZztcclxuICBudW1lcm9IYWJpbGl0YWNhbyE6IHN0cmluZztcclxuICByZWdpc3Ryb0hhYmlsaXRhY2FvITogc3RyaW5nO1xyXG4gIGRhdGFFbWlzc2FvSGFiaWxpdGFjYW8hOiBzdHJpbmc7XHJcbiAgZGF0YVZhbGlkYWRlSGFiaWxpdGFjYW8hOiBzdHJpbmc7XHJcbiAgY2F0ZWdvcmlhSGFiaWxpdGFjYW8hOiBzdHJpbmc7XHJcbiAgZGVmaWNpZW5jaWFGaXNpY2FIYWJpbGl0YWNhbyE6IHN0cmluZztcclxuICBwcmltZWlyYUhhYmlsaXRhY2FvITogc3RyaW5nO1xyXG4gIGF1dG9DYWRhc3RybyE6IGJvb2xlYW47XHJcbiAgbm9tZVNvY2lhbCE6IHN0cmluZztcclxuICBzZXhvITogc3RyaW5nOyAgXHJcbiAgY29kaWdvU2V4byE6IG51bWJlcjtcclxuXHJcbiAgLy8gQXRyaWJ1dG9zIGRhIFBlc3NvYSBFc3RyYW5nZWlyYVxyXG4gIHBhc3NhcG9ydGUhOiBzdHJpbmc7XHJcbiAgcGFpc09yaWdlbSE6IHN0cmluZztcclxuXHJcbiAgLy8gQXRyaWJ1dG9zIGRhIFBlc3NvYSBKdXLDrWRpY2FcclxuICBjbnBqITogc3RyaW5nO1xyXG4gIHJhemFvU29jaWFsITogc3RyaW5nO1xyXG4gIG5vbWVGYW50YXNpYSE6IHN0cmluZztcclxuICBzaWdsYSE6IHN0cmluZztcclxuICBwYWlzITogVW5iUGVzc29hUGFpcztcclxuICBwYWdpbmFXZWIhOiBzdHJpbmc7XHJcbiAgXHJcbn0iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuYi1saWItY29tcG9uZW50cy9zcmMvbGliL3VuYi1wZXNzb2EvdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7S0FFSztBQUNMLE1BQU0sT0FBTyxjQUFjO0lBK0JhLENBQUM7Q0FzQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGlwb1Blc3NvYUVudW0gfSBmcm9tIFwiLi4vdW5iLXRpcG8tcGVzc29hLmVudW1cIjtcclxuaW1wb3J0IHsgVW5iUGVzc29hRW1haWwgfSBmcm9tIFwiLi91bmItcGVzc29hLWVtYWlsLm1vZGVsXCI7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVuZGVyZWNvIH0gZnJvbSBcIi4vdW5iLXBlc3NvYS1lbmRlcmVjby5tb2RlbFwiO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FQYWlzIH0gZnJvbSBcIi4vdW5iLXBlc3NvYS1wYWlzXCI7XHJcbmltcG9ydCB7IFVuYlBlc3NvYVRlbGVmb25lIH0gZnJvbSBcIi4vdW5iLXBlc3NvYS10ZWxlZm9uZS5tb2RlbFwiO1xyXG5cclxuLyoqIFxyXG4gKiBFc3NhIGVoIHVtYSBjbGFzc2UgYmFzZSwgY29tIHByb3ByaWVkYWRlcyBjb211bSBhIHRvZGFzIGFzIG91dHJhcyBwZXNzb2FzLiBcclxuICogKi9cclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYU1vZGVsIHtcclxuICBpZFBlc3NvYSE6IG51bWJlcjtcclxuICBjb2RpZ29QZXNzb2EhOiBudW1iZXI7ICAgXHJcbiAgZW5kZXJlY29zITogVW5iUGVzc29hRW5kZXJlY29bXTtcclxuICB0ZWxlZm9uZXMhOiBVbmJQZXNzb2FUZWxlZm9uZVtdO1xyXG4gIGVtYWlscyE6IFVuYlBlc3NvYUVtYWlsW107XHJcbiAgdGlwb1Blc3NvYSE6IFRpcG9QZXNzb2FFbnVtOyAvLyBpbmljaWFsaXphIGNvbSBvIGZpc2ljYSBzZWxlY2lvbmFkb1xyXG5cclxuICAvLyBBdHJpYnV0b3MgZGEgUGVzc29hIEbDrXNpY2FcclxuICBpZFNlcnZpZG9yITogbnVtYmVyO1xyXG4gIG1hdHJpY3VsYVNpcGVzITogbnVtYmVyO1xyXG4gIG1hdHJpY3VsYVNpYXBlITogbnVtYmVyO1xyXG4gIG5vbWUhOiBzdHJpbmc7XHJcbiAgY3BmITogc3RyaW5nO1xyXG4gIHJnITogc3RyaW5nO1xyXG4gIHJnT3JnYW8hOiBzdHJpbmc7XHJcbiAgcmdVZiE6IHN0cmluZztcclxuICByZ0RhdGFFbWlzc2FvITogc3RyaW5nO1xyXG4gIG51bWVyb1RpdHVsb0VsZWl0b3IhOiBzdHJpbmc7XHJcbiAgZGF0YUVtaXNzYW9UaXR1bG9FbGVpdG9yITogc3RyaW5nO1xyXG4gIHpvbmFUaXR1bG9FbGVpdG9yITogc3RyaW5nO1xyXG4gIHNlY2FvVGl0dWxvRWxlaXRvciE6IHN0cmluZztcclxuICB1ZlRpdHVsb0VsZWl0b3IhOiBzdHJpbmc7XHJcbiAgbnVtZXJvUmVzZXJ2aXN0YSE6IHN0cmluZztcclxuICBzZXJpZVJlc2VydmlzdGEhOiBzdHJpbmc7XHJcbiAgb3JnYW9SZXNlcnZpc3RhITogc3RyaW5nO1xyXG4gIGRhdGFOYXNjaW1lbnRvITogRGF0ZSB8IG51bGw7XHJcbiAgXHJcbiAgcGFpc05hc2NpbWVudG8hOiBzdHJpbmc7XHJcbiAgdWZOYXNjaW1lbnRvITogc3RyaW5nO1xyXG4gIG5hdHVyYWxpZGFkZSE6IHN0cmluZztcclxuICBjb2RpZ29QYWlzTmFzY2ltZW50byE6IG51bWJlciB8IG51bGwgOztcclxuICBjb2RpZ29QYWlzUGFzc2Fwb3J0ZSE6IG51bWJlcjtcclxuICBjb2RpZ29Fc3RhZG9DaXZpbCE6IG51bWJlciB8IG51bGwgO1xyXG4gIG5hY2lvbmFsaWRhZGUhOiBzdHJpbmc7XHJcbiAgZXN0YWRvQ2l2aWwhOiBzdHJpbmc7XHJcbiAgbm9tZVBhaSE6IHN0cmluZztcclxuICBub21lTWFlITogc3RyaW5nO1xyXG4gIHRpcG9TYW5ndWluZW8hOiBzdHJpbmc7XHJcbiAgZXNjb2xhcmlkYWRlITogbnVtYmVyIHxudWxsO1xyXG4gIG51bWVyb0NhcnRlaXJhVHJhYmFsaG8hOiBzdHJpbmc7XHJcbiAgc2VyaWVDYXJ0ZWlyYVRyYWJhbGhvITogc3RyaW5nO1xyXG4gIHVmQ2FydGVpcmFUcmFiYWxobyE6IHN0cmluZztcclxuICBwaXNQYXNlcCE6IHN0cmluZztcclxuICBudW1lcm9IYWJpbGl0YWNhbyE6IHN0cmluZztcclxuICByZWdpc3Ryb0hhYmlsaXRhY2FvITogc3RyaW5nO1xyXG4gIGRhdGFFbWlzc2FvSGFiaWxpdGFjYW8hOiBzdHJpbmc7XHJcbiAgZGF0YVZhbGlkYWRlSGFiaWxpdGFjYW8hOiBzdHJpbmc7XHJcbiAgY2F0ZWdvcmlhSGFiaWxpdGFjYW8hOiBzdHJpbmc7XHJcbiAgZGVmaWNpZW5jaWFGaXNpY2FIYWJpbGl0YWNhbyE6IHN0cmluZztcclxuICBwcmltZWlyYUhhYmlsaXRhY2FvITogc3RyaW5nO1xyXG4gIGF1dG9DYWRhc3RybyE6IGJvb2xlYW47XHJcbiAgbm9tZVNvY2lhbCE6IHN0cmluZztcclxuICBzZXhvITogc3RyaW5nOyAgXHJcbiAgY29kaWdvU2V4byE6IG51bWJlcjtcclxuXHJcbiAgLy8gQXRyaWJ1dG9zIGRhIFBlc3NvYSBFc3RyYW5nZWlyYVxyXG4gIHBhc3NhcG9ydGUhOiBzdHJpbmc7XHJcbiAgcGFpc09yaWdlbSE6IHN0cmluZztcclxuICBkYXRhQ2hlZ2FkYUJyYXNpbCE6IERhdGUgfCBudWxsO1xyXG5cclxuICAvLyBBdHJpYnV0b3MgZGEgUGVzc29hIEp1csOtZGljYVxyXG4gIGNucGohOiBzdHJpbmc7XHJcbiAgcmF6YW9Tb2NpYWwhOiBzdHJpbmc7XHJcbiAgbm9tZUZhbnRhc2lhITogc3RyaW5nO1xyXG4gIHNpZ2xhITogc3RyaW5nO1xyXG4gIHBhaXMhOiBVbmJQZXNzb2FQYWlzO1xyXG4gIHBhZ2luYVdlYiE6IHN0cmluZztcclxuXHJcbn0iXX0=
@@ -2,26 +2,33 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { UnbUtils } from '../../utils/unb-utils';
3
3
  import { UnbPessoaModel } from '../unb-pessoa-models/unb-pessoa.model';
4
4
  import { TipoPessoaEnum } from '../unb-tipo-pessoa.enum';
5
+ import { forkJoin } from 'rxjs';
6
+ import { UnbTipoMensagemEnum } from '../../unb-mensagem/unb-mensagem.service';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "../unb-pessoa.service";
7
9
  import * as i2 from "@angular/material/snack-bar";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/forms";
10
- import * as i5 from "@angular/material/icon";
11
- import * as i6 from "@angular/material/button";
12
- import * as i7 from "@angular/material/form-field";
13
- import * as i8 from "@angular/material/input";
14
- import * as i9 from "@angular/material/progress-bar";
15
- import * as i10 from "@angular/material/radio";
10
+ import * as i3 from "../../unb-mensagem/unb-mensagem.service";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "@angular/forms";
13
+ import * as i6 from "@angular/material/icon";
14
+ import * as i7 from "@angular/material/button";
15
+ import * as i8 from "../../unb-mensagem/unb-mensagem.component";
16
+ import * as i9 from "@angular/material/form-field";
17
+ import * as i10 from "@angular/material/input";
18
+ import * as i11 from "@angular/material/progress-spinner";
19
+ import * as i12 from "@angular/material/radio";
16
20
  export class UnbPessoaPesquisarComponent {
17
- constructor(pessoaService, snackBar) {
21
+ constructor(pessoaService, snackBar, alertService) {
18
22
  this.pessoaService = pessoaService;
19
23
  this.snackBar = snackBar;
24
+ this.alertService = alertService;
20
25
  this.isLoading = false;
21
- this.apiPessoaConfig = { url: '', token: '' };
26
+ // Configuração da API. Exemplo SGI.unb.br/pessoa-api
27
+ this.backendURL = "";
22
28
  this.pesquisarPorCPF = true;
23
29
  this.pesquisarPorCNPJ = true;
24
30
  this.pesquisarPorEstrangeiro = true;
31
+ this.campoPesquisaMaxWidth = '400px';
25
32
  this.pessoaEmitted = new EventEmitter();
26
33
  this.pessoa = new UnbPessoaModel();
27
34
  this.mostrarPesquisa = true;
@@ -31,25 +38,34 @@ export class UnbPessoaPesquisarComponent {
31
38
  this.hint = ""; // dica que aparece debaixo do campo
32
39
  // usado pra saber se mostra ou nao o botao de incluir pessoa
33
40
  this.pessoaEncontrado = false;
41
+ this.listaTipoEndereco = [];
42
+ this.listaTipoTelefone = [];
43
+ this.listaTipoEmail = [];
44
+ this.idMensagemService = "UnbPessoaPesquisar";
34
45
  }
35
46
  ngOnInit() {
36
- if (this.apiPessoaConfig.url.endsWith('/')) {
37
- this.apiPessoaConfig.url = this.apiPessoaConfig.url.slice(0, -1);
38
- }
39
- if (this.apiPessoaConfig.url == "") {
47
+ if (this.backendURL == "") {
40
48
  this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.url está null. Insira o parâmetro (apiPessoaConfig) com o valor válido!");
41
49
  return;
42
50
  }
43
- if (this.apiPessoaConfig.token == "") {
44
- this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.token está null. Insira o parâmetro (apiPessoaConfig) com o valor do token da sua aplicação");
45
- return;
46
- }
47
- // se chegar com barra no final, eu retiro. Pra ficar no padrao
48
- if (this.apiPessoaConfig.url.endsWith('/')) {
49
- this.apiPessoaConfig.url = this.apiPessoaConfig.url.slice(0, -1);
51
+ else {
52
+ this.pessoaService.setBackendUrl(this.backendURL);
50
53
  }
51
- // inicializa o serviço com a configuração da API
52
- this.pessoaService.setApiConfig(this.apiPessoaConfig);
54
+ forkJoin({
55
+ tiposEnd: this.pessoaService.getTipoEndereco(),
56
+ tiposTel: this.pessoaService.getTipoTelefone(),
57
+ tiposEmail: this.pessoaService.getTipoEmail()
58
+ }).subscribe({
59
+ next: ({ tiposEnd, tiposTel, tiposEmail }) => {
60
+ this.listaTipoEndereco = tiposEnd;
61
+ this.listaTipoTelefone = tiposTel;
62
+ this.listaTipoEmail = tiposEmail;
63
+ },
64
+ error: (err) => {
65
+ this.handleError("Falha ao carregar dados de apoio. Recarregue a página.");
66
+ console.error("Erro no forkJoin do pesquisar:", err);
67
+ }
68
+ });
53
69
  // Conta quantos dos inputs estão como true
54
70
  const opcoesAtivas = [this.pesquisarPorCPF, this.pesquisarPorCNPJ, this.pesquisarPorEstrangeiro].filter(op => op).length;
55
71
  // Exibe a opcao do tipo de pessoa, somente se mais de um estiver selecionado
@@ -107,12 +123,8 @@ export class UnbPessoaPesquisarComponent {
107
123
  }
108
124
  }
109
125
  validar() {
110
- if (this.apiPessoaConfig.url == "") {
111
- this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.url está null. Insira o parâmetro (apiPessoaConfig) com o valor válido!");
112
- return false;
113
- }
114
- if (this.apiPessoaConfig.token == "") {
115
- this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.token está null. Insira o parâmetro (apiPessoaConfig) com o valor do token da sua aplicação");
126
+ if (this.backendURL == "") {
127
+ this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: backendURL.url está null. Insira o parâmetro (backendURL) com o valor da URL do seu Backend!");
116
128
  return false;
117
129
  }
118
130
  if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
@@ -147,20 +159,95 @@ export class UnbPessoaPesquisarComponent {
147
159
  }
148
160
  return true;
149
161
  }
162
+ // Em unb-pessoa-pesquisar.component.ts
150
163
  hadleResult(resultado) {
151
164
  this.isLoading = false;
152
165
  if (resultado) {
153
166
  resultado.tipoPessoa = this.pessoa.tipoPessoa; // o backend nao retorna o tipo pessoa. entao tenho que atribuir antes
154
167
  this.pessoa = resultado;
168
+ // --- SEÇÃO DE LIMPEZA DE DADOS PRINCIPAIS (VOCÊ JÁ TINHA) ---
169
+ if (this.pessoa.sexo) {
170
+ if (this.pessoa.sexo.toUpperCase().trim() === 'FEMININO') {
171
+ this.pessoa.codigoSexo = 2;
172
+ }
173
+ else if (this.pessoa.sexo.toUpperCase().trim() === 'MASCULINO') {
174
+ this.pessoa.codigoSexo = 1;
175
+ }
176
+ }
177
+ if (this.pessoa.dataNascimento) {
178
+ this.pessoa.dataNascimento = this.parseData(this.pessoa.dataNascimento);
179
+ }
180
+ if (this.pessoa.estadoCivil) {
181
+ this.pessoa.codigoEstadoCivil = this.parseCodigo(this.pessoa.estadoCivil);
182
+ }
183
+ if (this.pessoa.paisNascimento) {
184
+ this.pessoa.codigoPaisNascimento = this.parseCodigo(this.pessoa.paisNascimento);
185
+ }
186
+ if (this.pessoa.escolaridade) {
187
+ this.pessoa.escolaridade = this.parseCodigo(this.pessoa.escolaridade);
188
+ }
189
+ // 1. Processa Endereços
190
+ // O payload 'salvar' espera: ordemEndereco, tipoEnderecoCodigo, paisEnderecoCodigo, ufEndereco
191
+ // 1. Processa Endereços
192
+ if (this.pessoa.enderecos && this.listaTipoEndereco.length > 0) {
193
+ // --- CORREÇÃO: Adicionado 'i' ao forEach ---
194
+ this.pessoa.enderecos.forEach((end, i) => {
195
+ // Traduz o 'tipo' (string) para 'tipoEnderecoCodigo' (number)
196
+ if (!end.tipoEnderecoCodigo && end.tipo) {
197
+ const tipoEncontrado = this.listaTipoEndereco.find(t => t.denominacao?.toLowerCase() === end.tipo?.toLowerCase());
198
+ if (tipoEncontrado)
199
+ end.tipoEnderecoCodigo = tipoEncontrado.codigo;
200
+ }
201
+ // Traduz 'pais' (string '22 - BRASIL') para 'paisEnderecoCodigo' (number)
202
+ if (!end.paisEnderecoCodigo && end.pais) {
203
+ end.paisEnderecoCodigo = this.parseCodigo(end.pais);
204
+ }
205
+ // Mapeia 'ordem' -> 'ordemEndereco' ou usa o índice (i + 1)
206
+ // O payload de salvar (no form) espera 'ordemEndereco'
207
+ end.ordemEndereco = end.ordemEndereco || end.ordem || (i + 1);
208
+ // Mapeia 'uf' -> 'ufEndereco'
209
+ if (!end.ufEndereco && end.uf) {
210
+ end.ufEndereco = end.uf;
211
+ }
212
+ });
213
+ }
214
+ // 2. Processa Telefones
215
+ if (this.pessoa.telefones && this.listaTipoTelefone.length > 0) {
216
+ // --- CORREÇÃO: Adicionado 'i' ao forEach ---
217
+ this.pessoa.telefones.forEach((tel, i) => {
218
+ if (!tel.tipoTelefoneCodigo && tel.tipo) {
219
+ const tipoEncontrado = this.listaTipoTelefone.find(t => t.denominacao?.toLowerCase() === tel.tipo?.toLowerCase());
220
+ if (tipoEncontrado)
221
+ tel.tipoTelefoneCodigo = tipoEncontrado.codigo;
222
+ }
223
+ // --- CORREÇÃO: Lógica da Ordem ---
224
+ // O payload de salvar (no form) lê 'tel.ordem'
225
+ tel.ordem = tel.ordem || (i + 1);
226
+ });
227
+ }
228
+ // 3. Processa Emails
229
+ if (this.pessoa.emails && this.listaTipoEmail.length > 0) {
230
+ // --- CORREÇÃO: Adicionado 'i' ao forEach ---
231
+ this.pessoa.emails.forEach((email, i) => {
232
+ if (!email.tipoEmailCodigo && email.tipo) {
233
+ const tipoEncontrado = this.listaTipoEmail.find(t => t.denominacao?.toLowerCase() === email.tipo?.toLowerCase());
234
+ if (tipoEncontrado)
235
+ email.tipoEmailCodigo = tipoEncontrado.codigo;
236
+ }
237
+ // --- CORREÇÃO: Lógica da Ordem ---
238
+ // O payload de salvar (no form) lê 'email.ordem'
239
+ email.ordem = email.ordem || (i + 1);
240
+ });
241
+ }
155
242
  if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
156
- this.pessoa.cpf = UnbUtils.formataCpf(resultado.cpf); // voltou pro formato original (isso evita formartar novamente)
243
+ this.pessoa.cpf = UnbUtils.formataCpf(resultado.cpf);
157
244
  }
158
245
  else if (this.pessoa.tipoPessoa == TipoPessoaEnum.JURIDICA) {
159
- this.pessoa.cnpj = UnbUtils.formataCnpj(resultado.cnpj); // voltou pro formato original (isso evita formartar novamente)
246
+ this.pessoa.cnpj = UnbUtils.formataCnpj(resultado.cnpj);
160
247
  }
161
248
  }
162
249
  else {
163
- // se chegar aki eh pq nao encontrou, entao temos que emitir um resultado com codigoPessoa vazio mas com os criterios usado na pesquisa
250
+ // se chegar aki eh pq nao encontrou... (lógica que existe)
164
251
  let novaPessoa = new UnbPessoaModel();
165
252
  novaPessoa.tipoPessoa = this.pessoa.tipoPessoa;
166
253
  if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
@@ -172,16 +259,73 @@ export class UnbPessoaPesquisarComponent {
172
259
  else {
173
260
  novaPessoa.passaporte = this.pessoa.passaporte;
174
261
  }
175
- // agora sobreescrevemos, pq se tiver uma pessoa pesquisada com resultado correto, e pesquisar novamente, precisamos apagar a primeira pessoa.
176
262
  this.pessoa = novaPessoa;
177
263
  }
178
264
  this.pessoaEmitted.emit(this.pessoa);
179
265
  }
266
+ parseCodigo(valorString) {
267
+ if (typeof valorString === 'number') {
268
+ return valorString; // Já é um número
269
+ }
270
+ if (typeof valorString !== 'string' || !valorString.includes(' - ')) {
271
+ // Tenta converter direto, caso o backend mande só o número como string
272
+ const num = parseInt(valorString, 10);
273
+ return isNaN(num) ? null : num;
274
+ }
275
+ const partes = valorString.split(' - ');
276
+ const codigo = parseInt(partes[0].trim(), 10);
277
+ return isNaN(codigo) ? null : codigo;
278
+ }
279
+ /**
280
+ * Converte uma string no formato 'dd/MM/yyyy' para um objeto Date.
281
+ * Retorna null se o formato for inválido.
282
+ */
283
+ parseData(dataString) {
284
+ if (dataString instanceof Date) {
285
+ return dataString; // Já é um objeto Date
286
+ }
287
+ if (typeof dataString !== 'string' || !dataString.includes('/')) {
288
+ return null;
289
+ }
290
+ const partes = dataString.split('/'); // [dd, MM, yyyy]
291
+ if (partes.length === 3) {
292
+ const dia = parseInt(partes[0], 10);
293
+ const mes = parseInt(partes[1], 10) - 1; // Mês no JS é 0-indexado
294
+ const ano = parseInt(partes[2], 10);
295
+ // Verifica se a data é válida
296
+ const dataObj = new Date(ano, mes, dia);
297
+ if (dataObj.getFullYear() === ano && dataObj.getMonth() === mes && dataObj.getDate() === dia) {
298
+ return dataObj;
299
+ }
300
+ }
301
+ return null; // Formato inválido
302
+ }
180
303
  handleError(erro) {
181
- this.openSnackBar(erro);
182
304
  this.isLoading = false;
183
- // se chegar aki, entao nao encontrou a pessoa. Mas damos a chance de incluir pessoa
184
305
  this.pessoaEncontrado = false;
306
+ let erroTratado;
307
+ // --- ADAPTER: Converte string para o Objeto Padrão ---
308
+ if (typeof erro === 'string') {
309
+ erroTratado = {
310
+ status: 400, // Erro de validação local geralmente é 400
311
+ mensagemSimples: erro,
312
+ mensagemHtml: `<strong>${erro}</strong>`
313
+ };
314
+ }
315
+ else {
316
+ // Se já veio do Service (ou é um objeto manual), usa direto
317
+ erroTratado = erro;
318
+ }
319
+ // --- LÓGICA DE EXIBIÇÃO ---
320
+ // 1. SnackBar (Mensagem curta)
321
+ if (erroTratado.mensagemSimples) {
322
+ this.openSnackBar(erroTratado.mensagemSimples);
323
+ }
324
+ // 2. Componente de Mensagem (Mensagem HTML)
325
+ if (this.alertService && erroTratado.mensagemHtml) {
326
+ // Se você tiver a variável idMensagemService definida na classe:
327
+ this.alertService.showMessage(erroTratado.mensagemHtml, UnbTipoMensagemEnum.DANGER, this.idMensagemService);
328
+ }
185
329
  }
186
330
  handleErrorPrintConsole(erro) {
187
331
  console.log(erro);
@@ -195,13 +339,13 @@ export class UnbPessoaPesquisarComponent {
195
339
  tipoPessoaEnum() {
196
340
  return TipoPessoaEnum;
197
341
  }
198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, deps: [{ token: i1.UnBPessoaService }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaPesquisarComponent, selector: "lib-unb-pessoa-pesquisar", inputs: { apiPessoaConfig: "apiPessoaConfig", pesquisarPorCPF: "pesquisarPorCPF", pesquisarPorCNPJ: "pesquisarPorCNPJ", pesquisarPorEstrangeiro: "pesquisarPorEstrangeiro", defaultTipoPessoa: "defaultTipoPessoa", pessoa: "pessoa", mostrarPesquisa: "mostrarPesquisa", limparAposPesquisa: "limparAposPesquisa", label: "label", placeholder: "placeholder", hint: "hint" }, outputs: { pessoaEmitted: "pessoaEmitted" }, ngImport: i0, template: "<form #pessoaForm=\"ngForm\" class=\"form-container\" (ngSubmit)=\"pesquisar()\">\r\n <!-- Tipo da Pessoa. Controlado pelo OnInit -->\r\n <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar> \r\n <div *ngIf=\"mostrarTipoPessoa\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\" name=\"tipoPessoa\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\" value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n \r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n \r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}/> \r\n <button *ngIf=\"!isLoading\" disabled=\"{{isLoading}}\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon style=\"margin-right: 2px;\">search</mat-icon> \r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i10.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i10.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }] }); }
342
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, deps: [{ token: i1.UnBPessoaService }, { token: i2.MatSnackBar }, { token: i3.UnbMensagemService }], target: i0.ɵɵFactoryTarget.Component }); }
343
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaPesquisarComponent, selector: "lib-unb-pessoa-pesquisar", inputs: { backendURL: "backendURL", pesquisarPorCPF: "pesquisarPorCPF", pesquisarPorCNPJ: "pesquisarPorCNPJ", pesquisarPorEstrangeiro: "pesquisarPorEstrangeiro", defaultTipoPessoa: "defaultTipoPessoa", campoPesquisaMaxWidth: "campoPesquisaMaxWidth", pessoa: "pessoa", mostrarPesquisa: "mostrarPesquisa", limparAposPesquisa: "limparAposPesquisa", label: "label", placeholder: "placeholder", hint: "hint" }, outputs: { pessoaEmitted: "pessoaEmitted" }, ngImport: i0, template: "<form #pessoaForm=\"ngForm\" class=\"pesquisa-container\" [ngStyle]=\"{'--tamanho-maximo': campoPesquisaMaxWidth}\" (ngSubmit)=\"pesquisar()\">\r\n <div class=\"mensagem-container\" style=\"width: 100%;\">\r\n <unb-mensagem [identificador]=\"idMensagemService\" class=\"mensagem-form\" ></unb-mensagem>\r\n </div>\r\n \r\n <div class=\"form-wrapper\">\r\n <div *ngIf=\"mostrarTipoPessoa\" class=\"radio-container\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\" name=\"tipoPessoa\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\" value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n \r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}/> \r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" [disabled]=\"isLoading\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n color=\"primary\"\r\n class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n color=\"primary\"\r\n class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n color=\"primary\"\r\n class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [".pesquisa-container{display:flex;flex-direction:column;align-items:flex-start}.form-wrapper{display:flex;flex-direction:column;width:100%;max-width:var(--tamanho-maximo);gap:5px}.mensagem-form{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.UnbMensagemComponent, selector: "unb-mensagem", inputs: ["mensagem", "tipo", "identificador"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }] }); }
200
344
  }
201
345
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, decorators: [{
202
346
  type: Component,
203
- args: [{ selector: 'lib-unb-pessoa-pesquisar', standalone: false, template: "<form #pessoaForm=\"ngForm\" class=\"form-container\" (ngSubmit)=\"pesquisar()\">\r\n <!-- Tipo da Pessoa. Controlado pelo OnInit -->\r\n <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar> \r\n <div *ngIf=\"mostrarTipoPessoa\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\" name=\"tipoPessoa\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\" value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n \r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n \r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}/> \r\n <button *ngIf=\"!isLoading\" disabled=\"{{isLoading}}\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon style=\"margin-right: 2px;\">search</mat-icon> \r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n</form>" }]
204
- }], ctorParameters: () => [{ type: i1.UnBPessoaService }, { type: i2.MatSnackBar }], propDecorators: { apiPessoaConfig: [{
347
+ args: [{ selector: 'lib-unb-pessoa-pesquisar', standalone: false, template: "<form #pessoaForm=\"ngForm\" class=\"pesquisa-container\" [ngStyle]=\"{'--tamanho-maximo': campoPesquisaMaxWidth}\" (ngSubmit)=\"pesquisar()\">\r\n <div class=\"mensagem-container\" style=\"width: 100%;\">\r\n <unb-mensagem [identificador]=\"idMensagemService\" class=\"mensagem-form\" ></unb-mensagem>\r\n </div>\r\n \r\n <div class=\"form-wrapper\">\r\n <div *ngIf=\"mostrarTipoPessoa\" class=\"radio-container\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\" name=\"tipoPessoa\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\" value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n \r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}/> \r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" [disabled]=\"isLoading\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n color=\"primary\"\r\n class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n color=\"primary\"\r\n class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\" />\r\n <button matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <ng-container *ngIf=\"!isLoading; else loadingIcon\">\r\n <mat-icon>search</mat-icon>\r\n </ng-container>\r\n <ng-template #loadingIcon>\r\n <mat-progress-spinner\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n color=\"primary\"\r\n class=\"spinner-button\">\r\n </mat-progress-spinner>\r\n </ng-template>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [".pesquisa-container{display:flex;flex-direction:column;align-items:flex-start}.form-wrapper{display:flex;flex-direction:column;width:100%;max-width:var(--tamanho-maximo);gap:5px}.mensagem-form{display:block;width:100%}\n"] }]
348
+ }], ctorParameters: () => [{ type: i1.UnBPessoaService }, { type: i2.MatSnackBar }, { type: i3.UnbMensagemService }], propDecorators: { backendURL: [{
205
349
  type: Input
206
350
  }], pesquisarPorCPF: [{
207
351
  type: Input
@@ -211,6 +355,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
211
355
  type: Input
212
356
  }], defaultTipoPessoa: [{
213
357
  type: Input
358
+ }], campoPesquisaMaxWidth: [{
359
+ type: Input
214
360
  }], pessoaEmitted: [{
215
361
  type: Output
216
362
  }], pessoa: [{
@@ -226,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
226
372
  }], hint: [{
227
373
  type: Input
228
374
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXBlc3F1aXNhci91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtcGVzcXVpc2FyL3VuYi1wZXNzb2EtcGVzcXVpc2FyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7OztBQVF6RCxNQUFNLE9BQU8sMkJBQTJCO0lBbUJ0QyxZQUFvQixhQUErQixFQUFVLFFBQXFCO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFsQmxGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFVCxvQkFBZSxHQUFtQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3pFLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4Qiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFJOUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUVwRCxXQUFNLEdBQUcs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OzJGRDlCTSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLEtBQUs7K0dBT1IsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBVbmJVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3VuYi11dGlscyc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYU1vZGVsIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuQlBlc3NvYVNlcnZpY2UgfSBmcm9tICcuLi91bmItcGVzc29hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaXBvUGVzc29hRW51bSB9IGZyb20gJy4uL3VuYi10aXBvLXBlc3NvYS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVuYi1wZXNzb2EtcGVzcXVpc2FyJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgYXBpUGVzc29hQ29uZmlnOiB7IHVybDogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0gPSB7IHVybDogJycsIHRva2VuOiAnJyB9O1xyXG4gIEBJbnB1dCgpIHBlc3F1aXNhclBvckNQRiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGVzcXVpc2FyUG9yQ05QSiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8gPSB0cnVlO1xyXG4gIC8vIGRlZmluZSBvIHRpcG8gcGVzc29hIHBhZHJhby4gQXNpc20sIG8gcmFkaW8gYnV0dG9uIGphaCB2ZW0gbWFyY2FkbyBjb20gbyBxdWUgZm9pIGRlZmluaWRvIGFxdWkuXHJcbiAgQElucHV0KCkgZGVmYXVsdFRpcG9QZXNzb2EhOiBUaXBvUGVzc29hRW51bTtcclxuXHJcbiAgQE91dHB1dCgpIHBlc3NvYUVtaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFVuYlBlc3NvYU1vZGVsPigpO1xyXG4gIFxyXG4gIEBJbnB1dCgpIHBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gIEBJbnB1dCgpIG1vc3RyYXJQZXNxdWlzYTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbGltcGFyQXBvc1Blc3F1aXNhOiBib29sZWFuID0gZmFsc2U7ICAvLyBpbmRpY2Egc2UgZGV2ZSBsaW1wYXIgbyBjcGYgYXBvcyBwZXNxdWlzYXJcclxuICBASW5wdXQoKSBsYWJlbCA9IFwiRGlnaXRlIG8gQ1BGL0NOUEogb3UgUGFzc2Fwb3J0ZVwiOyAvLyBlaCBvIHF1ZSBtb3N0cmEgbm8gdG9wbyBkbyBjb21wb25lbnRlXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiOyAvLyBlaCBvIHF1ZSBtb3N0cmEgY29tbyBwbGFjZWhvbGRlciB0b3BvIGRvIGNvbXBvbmVudGVcclxuICBASW5wdXQoKSBoaW50ID0gXCJcIjsgLy8gZGljYSBxdWUgYXBhcmVjZSBkZWJhaXhvIGRvIGNhbXBvXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVzc29hU2VydmljZTogVW5CUGVzc29hU2VydmljZSwgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHsgfVxyXG5cclxuICAvLyB1c2FkbyBwcmEgc2FiZXIgc2UgbW9zdHJhIG91IG5hbyBvIGJvdGFvIGRlIGluY2x1aXIgcGVzc29hXHJcbiAgcGVzc29hRW5jb250cmFkbzogQm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuICBtb3N0cmFyVGlwb1Blc3NvYSE6IGJvb2xlYW47XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybC5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgIHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybCA9IHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybC5zbGljZSgwLCAtMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYXBpUGVzc29hQ29uZmlnLnVybCBlc3TDoSBudWxsLiBJbnNpcmEgbyBwYXLDom1ldHJvIChhcGlQZXNzb2FDb25maWcpIGNvbSBvIHZhbG9yIHbDoWxpZG8hXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hcGlQZXNzb2FDb25maWcudG9rZW4gPT0gXCJcIikge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IGFwaVBlc3NvYUNvbmZpZy50b2tlbiBlc3TDoSBudWxsLiBJbnNpcmEgbyBwYXLDom1ldHJvIChhcGlQZXNzb2FDb25maWcpIGNvbSBvIHZhbG9yIGRvIHRva2VuIGRhIHN1YSBhcGxpY2HDp8Ojb1wiKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2UgY2hlZ2FyIGNvbSBiYXJyYSBubyBmaW5hbCwgZXUgcmV0aXJvLiBQcmEgZmljYXIgbm8gcGFkcmFvXHJcbiAgICBpZiAodGhpcy5hcGlQZXNzb2FDb25maWcudXJsLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgdGhpcy5hcGlQZXNzb2FDb25maWcudXJsID0gdGhpcy5hcGlQZXNzb2FDb25maWcudXJsLnNsaWNlKDAsIC0xKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpbmljaWFsaXphIG8gc2VydmnDp28gY29tIGEgY29uZmlndXJhw6fDo28gZGEgQVBJXHJcbiAgICB0aGlzLnBlc3NvYVNlcnZpY2Uuc2V0QXBpQ29uZmlnKHRoaXMuYXBpUGVzc29hQ29uZmlnKTtcclxuXHJcbiAgICAvLyBDb250YSBxdWFudG9zIGRvcyBpbnB1dHMgZXN0w6NvIGNvbW8gdHJ1ZVxyXG4gICAgY29uc3Qgb3Bjb2VzQXRpdmFzID0gW3RoaXMucGVzcXVpc2FyUG9yQ1BGLCB0aGlzLnBlc3F1aXNhclBvckNOUEosIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm9dLmZpbHRlcihvcCA9PiBvcCkubGVuZ3RoO1xyXG4gICAgLy8gRXhpYmUgYSBvcGNhbyBkbyB0aXBvIGRlIHBlc3NvYSwgc29tZW50ZSBzZSBtYWlzIGRlIHVtIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgIGlmIChvcGNvZXNBdGl2YXMgPiAxKSB7XHJcbiAgICAgIHRoaXMubW9zdHJhclRpcG9QZXNzb2EgPSBvcGNvZXNBdGl2YXMgPiAxOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGVudGFvIHRlbmhvIHF1ZSBtYXJjYXIgcXVhbCBmb2kgc2VsZWNpb25hZGFcclxuICAgICAgaWYgKHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IFRpcG9QZXNzb2FFbnVtLkZJU0lDQTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3F1aXNhclBvckNOUEopIHtcclxuICAgICAgICB0aGlzLnBlc3NvYS50aXBvUGVzc29hID0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0E7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNxdWlzYXJQb3JFc3RyYW5nZWlybykge1xyXG4gICAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSBUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IHBlc3F1aXNhclBvckNQRiwgcGVzcXVpc2FyUG9yQ05QSiBlIHBlc3F1aXNhclBvckVzdHJhbmdlaXJvIGVzdMOhIGZhbHNvLiBNYXJxdWUgcGVsbyBtZW5vcyB1bSBjb21vIHRydWVcIilcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzZWxlY2lvbmEgbyByYWRpbyBidXR0b24gcGFkcmFvXHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5GSVNJQ0EgJiYgdGhpcy5wZXNxdWlzYXJQb3JDUEYpIHtcclxuICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2E7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EgJiYgdGhpcy5wZXNxdWlzYXJQb3JDTlBKKSB7XHJcbiAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSB0aGlzLmRlZmF1bHRUaXBvUGVzc29hO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBICYmIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8pIHtcclxuICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2E7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwZXNxdWlzYXIoKSB7ICBcclxuICAgIGlmICh0aGlzLnZhbGlkYXIoKSA9PSBmYWxzZSkgcmV0dXJuOyAgXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGxldCBjcGYgPSB0aGlzLnBlc3NvYS5jcGYubWF0Y2goL1xcZC9nKT8uam9pbihcIlwiKTsgLy8gcmVtb3ZlIGNhcmFjdGVyZXMgXHJcbiAgICAgIHJlc3VsdD0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNwZihjcGYpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGxldCBjbnBqID0gdGhpcy5wZXNzb2EuY25wai5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0PSB0aGlzLnBlc3NvYVNlcnZpY2UuZmluZEJ5Q25waihjbnBqKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICByZXN1bHQ9IHRoaXMucGVzc29hU2VydmljZS5maW5kQnlQYXNzYXBvcnRlKHRoaXMucGVzc29hLnBhc3NhcG9ydGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgcmVzdWx0LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogdGhpcy5oYWRsZVJlc3VsdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgIGVycm9yOiB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgfVxyXG5cclxuICB2YWxpZGFyKCk6IGJvb2xlYW4gIHtcclxuICAgIGlmICh0aGlzLmFwaVBlc3NvYUNvbmZpZy51cmwgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IGFwaVBlc3NvYUNvbmZpZy51cmwgZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYXBpUGVzc29hQ29uZmlnKSBjb20gbyB2YWxvciB2w6FsaWRvIVwiKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXBpUGVzc29hQ29uZmlnLnRva2VuID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvclByaW50Q29uc29sZShcIltVbmJQZXNzb2FQZXNxdWlzYXJDb21wb25lbnRdIEVSUk9SOiBhcGlQZXNzb2FDb25maWcudG9rZW4gZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYXBpUGVzc29hQ29uZmlnKSBjb20gbyB2YWxvciBkbyB0b2tlbiBkYSBzdWEgYXBsaWNhw6fDo29cIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuY3BmID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNwZiAhPSBudWxsICYmIHRoaXMucGVzc29hLmNwZiA9PSBcIlwiKSl7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNQRiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW8uXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ1BGKHRoaXMucGVzc29hLmNwZikpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiRGlnaXRlIHVtIHZhbG9yIHbDoWxpZG8gcGFyYSBvIENQRlwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNucGogIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5jbnBqID09IFwiXCIpKXtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiQ05QSiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW9cIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoIVVuYlV0aWxzLnZhbGlkYXJDTlBKKHRoaXMucGVzc29hLmNucGopKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkRpZ2l0ZSB1bSB2YWxvciB2w6FsaWRvIHBhcmEgbyBDTlBKIVwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5wYXNzYXBvcnRlID09IG51bGwgfHwgKHRoaXMucGVzc29hLnBhc3NhcG9ydGUgIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5wYXNzYXBvcnRlID09IFwiXCIpKXtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiUGFzc2Fwb3J0ZSDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW9cIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJTZWxlY2lvbmUgdW0gdGlwbyBkZSBwZXNzb2EhXCIpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTsgICAgXHJcbiAgfVxyXG5cclxuICBoYWRsZVJlc3VsdChyZXN1bHRhZG86IFVuYlBlc3NvYU1vZGVsKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBpZiAocmVzdWx0YWRvKSB7XHJcbiAgICAgIHJlc3VsdGFkby50aXBvUGVzc29hID0gdGhpcy5wZXNzb2EudGlwb1Blc3NvYTsgLy8gbyBiYWNrZW5kIG5hbyByZXRvcm5hIG8gdGlwbyBwZXNzb2EuIGVudGFvIHRlbmhvIHF1ZSBhdHJpYnVpciBhbnRlc1xyXG4gICAgICB0aGlzLnBlc3NvYSA9IHJlc3VsdGFkbztcclxuICAgICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY3BmID0gVW5iVXRpbHMuZm9ybWF0YUNwZihyZXN1bHRhZG8uY3BmKTsgLy8gdm9sdG91IHBybyBmb3JtYXRvIG9yaWdpbmFsIChpc3NvIGV2aXRhIGZvcm1hcnRhciBub3ZhbWVudGUpXHJcbiAgICAgIH1lbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY25waiA9IFVuYlV0aWxzLmZvcm1hdGFDbnBqKHJlc3VsdGFkby5jbnBqKTsgLy8gdm9sdG91IHBybyBmb3JtYXRvIG9yaWdpbmFsIChpc3NvIGV2aXRhIGZvcm1hcnRhciBub3ZhbWVudGUpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHNlIGNoZWdhciBha2kgZWggcHEgbmFvIGVuY29udHJvdSwgZW50YW8gdGVtb3MgcXVlIGVtaXRpciB1bSByZXN1bHRhZG8gY29tIGNvZGlnb1Blc3NvYSB2YXppbyBtYXMgY29tIG9zIGNyaXRlcmlvcyB1c2FkbyBuYSBwZXNxdWlzYVxyXG4gICAgICBsZXQgbm92YVBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gICAgICBub3ZhUGVzc29hLnRpcG9QZXNzb2EgPSB0aGlzLnBlc3NvYS50aXBvUGVzc29hO1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5GSVNJQ0EpIHtcclxuICAgICAgICBub3ZhUGVzc29hLmNwZiA9IHRoaXMucGVzc29hLmNwZjtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgICAgbm92YVBlc3NvYS5jbnBqID0gdGhpcy5wZXNzb2EuY25wajtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBub3ZhUGVzc29hLnBhc3NhcG9ydGUgPSB0aGlzLnBlc3NvYS5wYXNzYXBvcnRlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBhZ29yYSBzb2JyZWVzY3JldmVtb3MsIHBxIHNlIHRpdmVyIHVtYSBwZXNzb2EgcGVzcXVpc2FkYSBjb20gcmVzdWx0YWRvIGNvcnJldG8sIGUgcGVzcXVpc2FyIG5vdmFtZW50ZSwgcHJlY2lzYW1vcyBhcGFnYXIgYSBwcmltZWlyYSBwZXNzb2EuIFxyXG4gICAgICB0aGlzLnBlc3NvYSA9IG5vdmFQZXNzb2E7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGVzc29hRW1pdHRlZC5lbWl0KHRoaXMucGVzc29hKTsgICBcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm86IGFueSkge1xyXG4gICAgdGhpcy5vcGVuU25hY2tCYXIoZXJybyk7ICBcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLy8gc2UgY2hlZ2FyIGFraSwgZW50YW8gbmFvIGVuY29udHJvdSBhIHBlc3NvYS4gTWFzIGRhbW9zIGEgY2hhbmNlIGRlIGluY2x1aXIgcGVzc29hXHJcbiAgICB0aGlzLnBlc3NvYUVuY29udHJhZG8gPSBmYWxzZSAgXHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvclByaW50Q29uc29sZShlcnJvOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGVycm8pO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvKTtcclxuICB9XHJcblxyXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAneCcsIHtcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRpcG9QZXNzb2FFbnVtKCkge1xyXG4gICAgcmV0dXJuIFRpcG9QZXNzb2FFbnVtO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSAjcGVzc29hRm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiAobmdTdWJtaXQpPVwicGVzcXVpc2FyKClcIj5cclxuICAgIDwhLS0gVGlwbyBkYSBQZXNzb2EuIENvbnRyb2xhZG8gcGVsbyBPbkluaXQgLS0+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPiBcclxuICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyVGlwb1Blc3NvYVwiPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgYXJpYS1sYWJlbD1cIlRpcG8gZGUgUGVzc29hXCIgWyhuZ01vZGVsKV09XCJwZXNzb2EudGlwb1Blc3NvYVwiICN0aXBvUGVzc29hPVwibmdNb2RlbFwiIG5hbWU9XCJ0aXBvUGVzc29hXCI+XHJcbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwicGVzcXVpc2FyUG9yQ1BGXCIgICAgICAgICAgICB2YWx1ZT1cInt7IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBfX1cIj5QZXNzb2EgRsOtc2ljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJwZXNxdWlzYXJQb3JDTlBKXCIgICAgICAgICAgIHZhbHVlPVwie3t0aXBvUGVzc29hRW51bSgpLkpVUklESUNBfX1cIj4gUGVzc29hIEp1csOtZGljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJwZXNxdWlzYXJQb3JFc3RyYW5nZWlyb1wiICAgIHZhbHVlPVwie3t0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBfX1cIj5Fc3RyYW5nZWlybzwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJicmVha1wiPjwvZGl2PlxyXG4gICAgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBXCI+XHJcbiAgICAgIFxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkNQRjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNwZlwiIG5hbWU9XCJjcGZcIiAjY3BmPVwibmdNb2RlbFwiIHJlcXVpcmVkPXt7dHJ1ZX19Lz4gICAgICAgIFxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNMb2FkaW5nXCIgZGlzYWJsZWQ9XCJ7e2lzTG9hZGluZ319XCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIlBlc3F1aXNhclwiIChjbGljayk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDJweDtcIj5zZWFyY2g8L21hdC1pY29uPiAgICAgICAgICAgIFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UGFzc2Fwb3J0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLnBhc3NhcG9ydGVcIiBuYW1lPVwicGFzc2Fwb3J0ZVwiIHJlcXVpcmVkPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiUGVzcXVpc2FyXCIgKGNsaWNrKT1cInBlc3F1aXNhcigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkpVUklESUNBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q05QSjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNucGpcIiBuYW1lPVwiY25walwiIHJlcXVpcmVkPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiUGVzcXVpc2FyXCIgKGNsaWNrKT1cInBlc3F1aXNhcigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZm9ybT4iXX0=
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXBlc3F1aXNhci91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtcGVzcXVpc2FyL3VuYi1wZXNzb2EtcGVzcXVpc2FyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUWxHLE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLFlBQW9CLGFBQStCLEVBQVUsUUFBcUIsRUFBVSxZQUFnQztRQUF4RyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBbEI1SCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLHFEQUFxRDtRQUM1QyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHFCQUFn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S0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgVW5iVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91bmItdXRpbHMnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FNb2RlbCB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FFcnJvUGFkcmFvLCBVbkJQZXNzb2FTZXJ2aWNlIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGlwb1Blc3NvYUVudW0gfSBmcm9tICcuLi91bmItdGlwby1wZXNzb2EuZW51bSc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYUVuZGVyZWNvVGlwbyB9IGZyb20gJy4uL3VuYi1wZXNzb2EtbW9kZWxzL3VuYi1wZXNzb2EtZW5kZXJlY28ubW9kZWwnO1xyXG5pbXBvcnQgeyBVbmJQZXNzb2FUZWxlZm9uZVRpcG8gfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLXRlbGVmb25lLm1vZGVsJztcclxuaW1wb3J0IHsgVW5iUGVzc29hRW1haWxUaXBvIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS1lbWFpbC5tb2RlbCc7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVuYk1lbnNhZ2VtU2VydmljZSwgVW5iVGlwb01lbnNhZ2VtRW51bSB9IGZyb20gJy4uLy4uL3VuYi1tZW5zYWdlbS91bmItbWVuc2FnZW0uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi11bmItcGVzc29hLXBlc3F1aXNhcicsXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VuYi1wZXNzb2EtcGVzcXVpc2FyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8vIENvbmZpZ3VyYcOnw6NvIGRhIEFQSS4gRXhlbXBsbyBTR0kudW5iLmJyL3Blc3NvYS1hcGlcclxuICBASW5wdXQoKSBiYWNrZW5kVVJMOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHBlc3F1aXNhclBvckNQRiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGVzcXVpc2FyUG9yQ05QSiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRUaXBvUGVzc29hITogVGlwb1Blc3NvYUVudW07XHJcbiAgQElucHV0KCkgY2FtcG9QZXNxdWlzYU1heFdpZHRoOiBzdHJpbmcgPSAnNDAwcHgnO1xyXG4gIEBPdXRwdXQoKSBwZXNzb2FFbWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxVbmJQZXNzb2FNb2RlbD4oKTtcclxuXHJcbiAgQElucHV0KCkgcGVzc29hID0gbmV3IFVuYlBlc3NvYU1vZGVsKCk7XHJcbiAgQElucHV0KCkgbW9zdHJhclBlc3F1aXNhOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBsaW1wYXJBcG9zUGVzcXVpc2E6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIGluZGljYSBzZSBkZXZlIGxpbXBhciBvIGNwZiBhcG9zIHBlc3F1aXNhclxyXG4gIEBJbnB1dCgpIGxhYmVsID0gXCJEaWdpdGUgbyBDUEYvQ05QSiBvdSBQYXNzYXBvcnRlXCI7IC8vIGVoIG8gcXVlIG1vc3RyYSBubyB0b3BvIGRvIGNvbXBvbmVudGVcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7IC8vIGVoIG8gcXVlIG1vc3RyYSBjb21vIHBsYWNlaG9sZGVyIHRvcG8gZG8gY29tcG9uZW50ZVxyXG4gIEBJbnB1dCgpIGhpbnQgPSBcIlwiOyAvLyBkaWNhIHF1ZSBhcGFyZWNlIGRlYmFpeG8gZG8gY2FtcG9cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXNzb2FTZXJ2aWNlOiBVbkJQZXNzb2FTZXJ2aWNlLCBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhciwgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IFVuYk1lbnNhZ2VtU2VydmljZSkgeyB9XHJcblxyXG4gIC8vIHVzYWRvIHByYSBzYWJlciBzZSBtb3N0cmEgb3UgbmFvIG8gYm90YW8gZGUgaW5jbHVpciBwZXNzb2FcclxuICBwZXNzb2FFbmNvbnRyYWRvOiBCb29sZWFuIHwgbnVsbCA9IGZhbHNlO1xyXG4gIG1vc3RyYXJUaXBvUGVzc29hITogYm9vbGVhbjtcclxuXHJcbiAgbGlzdGFUaXBvRW5kZXJlY286IFVuYlBlc3NvYUVuZGVyZWNvVGlwb1tdID0gW107XHJcbiAgbGlzdGFUaXBvVGVsZWZvbmU6IFVuYlBlc3NvYVRlbGVmb25lVGlwb1tdID0gW107XHJcbiAgbGlzdGFUaXBvRW1haWw6IFVuYlBlc3NvYUVtYWlsVGlwb1tdID0gW107XHJcblxyXG4gIGlkTWVuc2FnZW1TZXJ2aWNlID0gXCJVbmJQZXNzb2FQZXNxdWlzYXJcIjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5iYWNrZW5kVVJMID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvclByaW50Q29uc29sZShcIltVbmJQZXNzb2FQZXNxdWlzYXJDb21wb25lbnRdIEVSUk9SOiBhcGlQZXNzb2FDb25maWcudXJsIGVzdMOhIG51bGwuIEluc2lyYSBvIHBhcsOibWV0cm8gKGFwaVBlc3NvYUNvbmZpZykgY29tIG8gdmFsb3IgdsOhbGlkbyFcIilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wZXNzb2FTZXJ2aWNlLnNldEJhY2tlbmRVcmwodGhpcy5iYWNrZW5kVVJMKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIHRpcG9zRW5kOiB0aGlzLnBlc3NvYVNlcnZpY2UuZ2V0VGlwb0VuZGVyZWNvKCksXHJcbiAgICAgIHRpcG9zVGVsOiB0aGlzLnBlc3NvYVNlcnZpY2UuZ2V0VGlwb1RlbGVmb25lKCksXHJcbiAgICAgIHRpcG9zRW1haWw6IHRoaXMucGVzc29hU2VydmljZS5nZXRUaXBvRW1haWwoKVxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHsgdGlwb3NFbmQsIHRpcG9zVGVsLCB0aXBvc0VtYWlsIH0pID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RhVGlwb0VuZGVyZWNvID0gdGlwb3NFbmQ7XHJcbiAgICAgICAgdGhpcy5saXN0YVRpcG9UZWxlZm9uZSA9IHRpcG9zVGVsO1xyXG4gICAgICAgIHRoaXMubGlzdGFUaXBvRW1haWwgPSB0aXBvc0VtYWlsO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJGYWxoYSBhbyBjYXJyZWdhciBkYWRvcyBkZSBhcG9pby4gUmVjYXJyZWd1ZSBhIHDDoWdpbmEuXCIpO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvIG5vIGZvcmtKb2luIGRvIHBlc3F1aXNhcjpcIiwgZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ29udGEgcXVhbnRvcyBkb3MgaW5wdXRzIGVzdMOjbyBjb21vIHRydWVcclxuICAgIGNvbnN0IG9wY29lc0F0aXZhcyA9IFt0aGlzLnBlc3F1aXNhclBvckNQRiwgdGhpcy5wZXNxdWlzYXJQb3JDTlBKLCB0aGlzLnBlc3F1aXNhclBvckVzdHJhbmdlaXJvXS5maWx0ZXIob3AgPT4gb3ApLmxlbmd0aDtcclxuICAgIC8vIEV4aWJlIGEgb3BjYW8gZG8gdGlwbyBkZSBwZXNzb2EsIHNvbWVudGUgc2UgbWFpcyBkZSB1bSBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICBpZiAob3Bjb2VzQXRpdmFzID4gMSkge1xyXG4gICAgICB0aGlzLm1vc3RyYXJUaXBvUGVzc29hID0gb3Bjb2VzQXRpdmFzID4gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGVudGFvIHRlbmhvIHF1ZSBtYXJjYXIgcXVhbCBmb2kgc2VsZWNpb25hZGFcclxuICAgICAgaWYgKHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IFRpcG9QZXNzb2FFbnVtLkZJU0lDQTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3F1aXNhclBvckNOUEopIHtcclxuICAgICAgICB0aGlzLnBlc3NvYS50aXBvUGVzc29hID0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0E7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNxdWlzYXJQb3JFc3RyYW5nZWlybykge1xyXG4gICAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSBUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IHBlc3F1aXNhclBvckNQRiwgcGVzcXVpc2FyUG9yQ05QSiBlIHBlc3F1aXNhclBvckVzdHJhbmdlaXJvIGVzdMOhIGZhbHNvLiBNYXJxdWUgcGVsbyBtZW5vcyB1bSBjb21vIHRydWVcIilcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzZWxlY2lvbmEgbyByYWRpbyBidXR0b24gcGFkcmFvXHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5GSVNJQ0EgJiYgdGhpcy5wZXNxdWlzYXJQb3JDUEYpIHtcclxuICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2E7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EgJiYgdGhpcy5wZXNxdWlzYXJQb3JDTlBKKSB7XHJcbiAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSB0aGlzLmRlZmF1bHRUaXBvUGVzc29hO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBICYmIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8pIHtcclxuICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2E7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwZXNxdWlzYXIoKSB7XHJcbiAgICBpZiAodGhpcy52YWxpZGFyKCkgPT0gZmFsc2UpIHJldHVybjtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5GSVNJQ0EpIHtcclxuICAgICAgbGV0IGNwZiA9IHRoaXMucGVzc29hLmNwZi5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNwZihjcGYpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGxldCBjbnBqID0gdGhpcy5wZXNzb2EuY25wai5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNucGooY25waik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uRVNUUkFOR0VJUkEpIHtcclxuICAgICAgcmVzdWx0ID0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeVBhc3NhcG9ydGUodGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICByZXN1bHQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiB0aGlzLmhhZGxlUmVzdWx0LmJpbmQodGhpcyksXHJcbiAgICAgICAgZXJyb3I6IHRoaXMuaGFuZGxlRXJyb3IuYmluZCh0aGlzKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGFyKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZFVSTCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYmFja2VuZFVSTC51cmwgZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYmFja2VuZFVSTCkgY29tIG8gdmFsb3IgZGEgVVJMIGRvIHNldSBCYWNrZW5kIVwiKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jcGYgPT0gbnVsbCB8fCAodGhpcy5wZXNzb2EuY3BmICE9IG51bGwgJiYgdGhpcy5wZXNzb2EuY3BmID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNQRiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW8uXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ1BGKHRoaXMucGVzc29hLmNwZikpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiRGlnaXRlIHVtIHZhbG9yIHbDoWxpZG8gcGFyYSBvIENQRlwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNucGogIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5jbnBqID09IFwiXCIpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNOUEogw6kgdW0gY2FtcG8gb2JyaWdhdMOzcmlvXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ05QSih0aGlzLnBlc3NvYS5jbnBqKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJEaWdpdGUgdW0gdmFsb3IgdsOhbGlkbyBwYXJhIG8gQ05QSiFcIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBudWxsIHx8ICh0aGlzLnBlc3NvYS5wYXNzYXBvcnRlICE9IG51bGwgJiYgdGhpcy5wZXNzb2EucGFzc2Fwb3J0ZSA9PSBcIlwiKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJQYXNzYXBvcnRlIMOpIHVtIGNhbXBvIG9icmlnYXTDs3Jpb1wiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIlNlbGVjaW9uZSB1bSB0aXBvIGRlIHBlc3NvYSFcIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gRW0gdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LnRzXHJcbiAgaGFkbGVSZXN1bHQocmVzdWx0YWRvOiBVbmJQZXNzb2FNb2RlbCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAocmVzdWx0YWRvKSB7XHJcbiAgICAgIHJlc3VsdGFkby50aXBvUGVzc29hID0gdGhpcy5wZXNzb2EudGlwb1Blc3NvYTsgLy8gbyBiYWNrZW5kIG5hbyByZXRvcm5hIG8gdGlwbyBwZXNzb2EuIGVudGFvIHRlbmhvIHF1ZSBhdHJpYnVpciBhbnRlc1xyXG4gICAgICB0aGlzLnBlc3NvYSA9IHJlc3VsdGFkbztcclxuXHJcbiAgICAgIC8vIC0tLSBTRcOHw4NPIERFIExJTVBFWkEgREUgREFET1MgUFJJTkNJUEFJUyAoVk9Dw4ogSsOBIFRJTkhBKSAtLS1cclxuICAgICAgaWYgKHRoaXMucGVzc29hLnNleG8pIHtcclxuICAgICAgICBpZiAodGhpcy5wZXNzb2Euc2V4by50b1VwcGVyQ2FzZSgpLnRyaW0oKSA9PT0gJ0ZFTUlOSU5PJykge1xyXG4gICAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvU2V4byA9IDI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS5zZXhvLnRvVXBwZXJDYXNlKCkudHJpbSgpID09PSAnTUFTQ1VMSU5PJykge1xyXG4gICAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvU2V4byA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuZGF0YU5hc2NpbWVudG8pIHtcclxuICAgICAgICB0aGlzLnBlc3NvYS5kYXRhTmFzY2ltZW50byA9IHRoaXMucGFyc2VEYXRhKHRoaXMucGVzc29hLmRhdGFOYXNjaW1lbnRvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLmVzdGFkb0NpdmlsKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvRXN0YWRvQ2l2aWwgPSB0aGlzLnBhcnNlQ29kaWdvKHRoaXMucGVzc29hLmVzdGFkb0NpdmlsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLnBhaXNOYXNjaW1lbnRvKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY29kaWdvUGFpc05hc2NpbWVudG8gPSB0aGlzLnBhcnNlQ29kaWdvKHRoaXMucGVzc29hLnBhaXNOYXNjaW1lbnRvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucGVzc29hLmVzY29sYXJpZGFkZSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmVzY29sYXJpZGFkZSA9IHRoaXMucGFyc2VDb2RpZ28odGhpcy5wZXNzb2EuZXNjb2xhcmlkYWRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gMS4gUHJvY2Vzc2EgRW5kZXJlw6dvc1xyXG4gICAgICAvLyBPIHBheWxvYWQgJ3NhbHZhcicgZXNwZXJhOiBvcmRlbUVuZGVyZWNvLCB0aXBvRW5kZXJlY29Db2RpZ28sIHBhaXNFbmRlcmVjb0NvZGlnbywgdWZFbmRlcmVjb1xyXG4gICAgICAvLyAxLiBQcm9jZXNzYSBFbmRlcmXDp29zXHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5lbmRlcmVjb3MgJiYgdGhpcy5saXN0YVRpcG9FbmRlcmVjby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gLS0tIENPUlJFw4fDg086IEFkaWNpb25hZG8gJ2knIGFvIGZvckVhY2ggLS0tXHJcbiAgICAgICAgdGhpcy5wZXNzb2EuZW5kZXJlY29zLmZvckVhY2goKGVuZCwgaSkgPT4ge1xyXG4gICAgICAgICAgLy8gVHJhZHV6IG8gJ3RpcG8nIChzdHJpbmcpIHBhcmEgJ3RpcG9FbmRlcmVjb0NvZGlnbycgKG51bWJlcilcclxuICAgICAgICAgIGlmICghZW5kLnRpcG9FbmRlcmVjb0NvZGlnbyAmJiBlbmQudGlwbykge1xyXG4gICAgICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IHRoaXMubGlzdGFUaXBvRW5kZXJlY28uZmluZCh0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IGVuZC50aXBvPy50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgaWYgKHRpcG9FbmNvbnRyYWRvKSBlbmQudGlwb0VuZGVyZWNvQ29kaWdvID0gdGlwb0VuY29udHJhZG8uY29kaWdvO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gVHJhZHV6ICdwYWlzJyAoc3RyaW5nICcyMiAtIEJSQVNJTCcpIHBhcmEgJ3BhaXNFbmRlcmVjb0NvZGlnbycgKG51bWJlcilcclxuICAgICAgICAgIGlmICghZW5kLnBhaXNFbmRlcmVjb0NvZGlnbyAmJiBlbmQucGFpcykge1xyXG4gICAgICAgICAgICBlbmQucGFpc0VuZGVyZWNvQ29kaWdvID0gdGhpcy5wYXJzZUNvZGlnbyhlbmQucGFpcyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTWFwZWlhICdvcmRlbScgLT4gJ29yZGVtRW5kZXJlY28nIG91IHVzYSBvIMOtbmRpY2UgKGkgKyAxKVxyXG4gICAgICAgICAgLy8gTyBwYXlsb2FkIGRlIHNhbHZhciAobm8gZm9ybSkgZXNwZXJhICdvcmRlbUVuZGVyZWNvJ1xyXG4gICAgICAgICAgZW5kLm9yZGVtRW5kZXJlY28gPSBlbmQub3JkZW1FbmRlcmVjbyB8fCBlbmQub3JkZW0gfHwgKGkgKyAxKTtcclxuXHJcbiAgICAgICAgICAvLyBNYXBlaWEgJ3VmJyAtPiAndWZFbmRlcmVjbydcclxuICAgICAgICAgIGlmICghZW5kLnVmRW5kZXJlY28gJiYgZW5kLnVmKSB7XHJcbiAgICAgICAgICAgIGVuZC51ZkVuZGVyZWNvID0gZW5kLnVmO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyAyLiBQcm9jZXNzYSBUZWxlZm9uZXNcclxuICAgICAgaWYgKHRoaXMucGVzc29hLnRlbGVmb25lcyAmJiB0aGlzLmxpc3RhVGlwb1RlbGVmb25lLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogQWRpY2lvbmFkbyAnaScgYW8gZm9yRWFjaCAtLS1cclxuICAgICAgICB0aGlzLnBlc3NvYS50ZWxlZm9uZXMuZm9yRWFjaCgodGVsLCBpKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRlbC50aXBvVGVsZWZvbmVDb2RpZ28gJiYgdGVsLnRpcG8pIHtcclxuICAgICAgICAgICAgY29uc3QgdGlwb0VuY29udHJhZG8gPSB0aGlzLmxpc3RhVGlwb1RlbGVmb25lLmZpbmQodCA9PiB0LmRlbm9taW5hY2FvPy50b0xvd2VyQ2FzZSgpID09PSB0ZWwudGlwbz8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGlmICh0aXBvRW5jb250cmFkbykgdGVsLnRpcG9UZWxlZm9uZUNvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogTMOzZ2ljYSBkYSBPcmRlbSAtLS1cclxuICAgICAgICAgIC8vIE8gcGF5bG9hZCBkZSBzYWx2YXIgKG5vIGZvcm0pIGzDqiAndGVsLm9yZGVtJ1xyXG4gICAgICAgICAgdGVsLm9yZGVtID0gdGVsLm9yZGVtIHx8IChpICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIDMuIFByb2Nlc3NhIEVtYWlsc1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuZW1haWxzICYmIHRoaXMubGlzdGFUaXBvRW1haWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIC0tLSBDT1JSRcOHw4NPOiBBZGljaW9uYWRvICdpJyBhbyBmb3JFYWNoIC0tLVxyXG4gICAgICAgIHRoaXMucGVzc29hLmVtYWlscy5mb3JFYWNoKChlbWFpbCwgaSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlbWFpbC50aXBvRW1haWxDb2RpZ28gJiYgZW1haWwudGlwbykge1xyXG4gICAgICAgICAgICBjb25zdCB0aXBvRW5jb250cmFkbyA9IHRoaXMubGlzdGFUaXBvRW1haWwuZmluZCh0ID0+IHQuZGVub21pbmFjYW8/LnRvTG93ZXJDYXNlKCkgPT09IGVtYWlsLnRpcG8/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAodGlwb0VuY29udHJhZG8pIGVtYWlsLnRpcG9FbWFpbENvZGlnbyA9IHRpcG9FbmNvbnRyYWRvLmNvZGlnbztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyAtLS0gQ09SUkXDh8ODTzogTMOzZ2ljYSBkYSBPcmRlbSAtLS1cclxuICAgICAgICAgIC8vIE8gcGF5bG9hZCBkZSBzYWx2YXIgKG5vIGZvcm0pIGzDqiAnZW1haWwub3JkZW0nXHJcbiAgICAgICAgICBlbWFpbC5vcmRlbSA9IGVtYWlsLm9yZGVtIHx8IChpICsgMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmNwZiA9IFVuYlV0aWxzLmZvcm1hdGFDcGYocmVzdWx0YWRvLmNwZik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5KVVJJRElDQSkge1xyXG4gICAgICAgIHRoaXMucGVzc29hLmNucGogPSBVbmJVdGlscy5mb3JtYXRhQ25waihyZXN1bHRhZG8uY25waik7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBzZSBjaGVnYXIgYWtpIGVoIHBxIG5hbyBlbmNvbnRyb3UuLi4gKGzDs2dpY2EgcXVlIGrDoSBleGlzdGUpXHJcbiAgICAgIGxldCBub3ZhUGVzc29hID0gbmV3IFVuYlBlc3NvYU1vZGVsKCk7XHJcbiAgICAgIG5vdmFQZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMucGVzc29hLnRpcG9QZXNzb2E7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICAgIG5vdmFQZXNzb2EuY3BmID0gdGhpcy5wZXNzb2EuY3BmO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EpIHtcclxuICAgICAgICBub3ZhUGVzc29hLmNucGogPSB0aGlzLnBlc3NvYS5jbnBqO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vdmFQZXNzb2EucGFzc2Fwb3J0ZSA9IHRoaXMucGVzc29hLnBhc3NhcG9ydGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucGVzc29hID0gbm92YVBlc3NvYTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBlc3NvYUVtaXR0ZWQuZW1pdCh0aGlzLnBlc3NvYSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ29kaWdvKHZhbG9yU3RyaW5nOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsb3JTdHJpbmcgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWxvclN0cmluZzsgLy8gSsOhIMOpIHVtIG7Dum1lcm9cclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsb3JTdHJpbmcgIT09ICdzdHJpbmcnIHx8ICF2YWxvclN0cmluZy5pbmNsdWRlcygnIC0gJykpIHtcclxuICAgICAgLy8gVGVudGEgY29udmVydGVyIGRpcmV0bywgY2FzbyBvIGJhY2tlbmQgbWFuZGUgc8OzIG8gbsO6bWVybyBjb21vIHN0cmluZ1xyXG4gICAgICBjb25zdCBudW0gPSBwYXJzZUludCh2YWxvclN0cmluZywgMTApO1xyXG4gICAgICByZXR1cm4gaXNOYU4obnVtKSA/IG51bGwgOiBudW07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFydGVzID0gdmFsb3JTdHJpbmcuc3BsaXQoJyAtICcpO1xyXG4gICAgY29uc3QgY29kaWdvID0gcGFyc2VJbnQocGFydGVzWzBdLnRyaW0oKSwgMTApO1xyXG4gICAgcmV0dXJuIGlzTmFOKGNvZGlnbykgPyBudWxsIDogY29kaWdvO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydGUgdW1hIHN0cmluZyBubyBmb3JtYXRvICdkZC9NTS95eXl5JyBwYXJhIHVtIG9iamV0byBEYXRlLlxyXG4gICAqIFJldG9ybmEgbnVsbCBzZSBvIGZvcm1hdG8gZm9yIGludsOhbGlkby5cclxuICAgKi9cclxuICBwcml2YXRlIHBhcnNlRGF0YShkYXRhU3RyaW5nOiBhbnkpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAoZGF0YVN0cmluZyBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgcmV0dXJuIGRhdGFTdHJpbmc7IC8vIErDoSDDqSB1bSBvYmpldG8gRGF0ZVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBkYXRhU3RyaW5nICE9PSAnc3RyaW5nJyB8fCAhZGF0YVN0cmluZy5pbmNsdWRlcygnLycpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcnRlcyA9IGRhdGFTdHJpbmcuc3BsaXQoJy8nKTsgLy8gW2RkLCBNTSwgeXl5eV1cclxuICAgIGlmIChwYXJ0ZXMubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgIGNvbnN0IGRpYSA9IHBhcnNlSW50KHBhcnRlc1swXSwgMTApO1xyXG4gICAgICBjb25zdCBtZXMgPSBwYXJzZUludChwYXJ0ZXNbMV0sIDEwKSAtIDE7IC8vIE3DqnMgbm8gSlMgw6kgMC1pbmRleGFkb1xyXG4gICAgICBjb25zdCBhbm8gPSBwYXJzZUludChwYXJ0ZXNbMl0sIDEwKTtcclxuXHJcbiAgICAgIC8vIFZlcmlmaWNhIHNlIGEgZGF0YSDDqSB2w6FsaWRhXHJcbiAgICAgIGNvbnN0IGRhdGFPYmogPSBuZXcgRGF0ZShhbm8sIG1lcywgZGlhKTtcclxuICAgICAgaWYgKGRhdGFPYmouZ2V0RnVsbFllYXIoKSA9PT0gYW5vICYmIGRhdGFPYmouZ2V0TW9udGgoKSA9PT0gbWVzICYmIGRhdGFPYmouZ2V0RGF0ZSgpID09PSBkaWEpIHtcclxuICAgICAgICByZXR1cm4gZGF0YU9iajtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7IC8vIEZvcm1hdG8gaW52w6FsaWRvXHJcbiAgfVxyXG5cclxuaGFuZGxlRXJyb3IoZXJybzogVW5iUGVzc29hRXJyb1BhZHJhbyB8IHN0cmluZykge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucGVzc29hRW5jb250cmFkbyA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBlcnJvVHJhdGFkbzogVW5iUGVzc29hRXJyb1BhZHJhbztcclxuXHJcbiAgICAvLyAtLS0gQURBUFRFUjogQ29udmVydGUgc3RyaW5nIHBhcmEgbyBPYmpldG8gUGFkcsOjbyAtLS1cclxuICAgIGlmICh0eXBlb2YgZXJybyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgZXJyb1RyYXRhZG8gPSB7XHJcbiAgICAgICAgc3RhdHVzOiA0MDAsIC8vIEVycm8gZGUgdmFsaWRhw6fDo28gbG9jYWwgZ2VyYWxtZW50ZSDDqSA0MDBcclxuICAgICAgICBtZW5zYWdlbVNpbXBsZXM6IGVycm8sXHJcbiAgICAgICAgbWVuc2FnZW1IdG1sOiBgPHN0cm9uZz4ke2Vycm99PC9zdHJvbmc+YFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU2UgasOhIHZlaW8gZG8gU2VydmljZSAob3Ugw6kgdW0gb2JqZXRvIG1hbnVhbCksIHVzYSBkaXJldG9cclxuICAgICAgZXJyb1RyYXRhZG8gPSBlcnJvO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLSBMw5NHSUNBIERFIEVYSUJJw4fDg08gLS0tXHJcblxyXG4gICAgLy8gMS4gU25hY2tCYXIgKE1lbnNhZ2VtIGN1cnRhKVxyXG4gICAgaWYgKGVycm9UcmF0YWRvLm1lbnNhZ2VtU2ltcGxlcykge1xyXG4gICAgICB0aGlzLm9wZW5TbmFja0JhcihlcnJvVHJhdGFkby5tZW5zYWdlbVNpbXBsZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIENvbXBvbmVudGUgZGUgTWVuc2FnZW0gKE1lbnNhZ2VtIEhUTUwpXHJcbiAgICBpZiAodGhpcy5hbGVydFNlcnZpY2UgJiYgZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sKSB7XHJcbiAgICAgIC8vIFNlIHZvY8OqIHRpdmVyIGEgdmFyacOhdmVsIGlkTWVuc2FnZW1TZXJ2aWNlIGRlZmluaWRhIG5hIGNsYXNzZTpcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyb1RyYXRhZG8ubWVuc2FnZW1IdG1sLCBVbmJUaXBvTWVuc2FnZW1FbnVtLkRBTkdFUiwgdGhpcy5pZE1lbnNhZ2VtU2VydmljZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvclByaW50Q29uc29sZShlcnJvOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGVycm8pO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvKTtcclxuICB9XHJcblxyXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAneCcsIHtcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRpcG9QZXNzb2FFbnVtKCkge1xyXG4gICAgcmV0dXJuIFRpcG9QZXNzb2FFbnVtO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSAjcGVzc29hRm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwicGVzcXVpc2EtY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyctLXRhbWFuaG8tbWF4aW1vJzogY2FtcG9QZXNxdWlzYU1heFdpZHRofVwiIChuZ1N1Ym1pdCk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtZW5zYWdlbS1jb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgPHVuYi1tZW5zYWdlbSBbaWRlbnRpZmljYWRvcl09XCJpZE1lbnNhZ2VtU2VydmljZVwiIGNsYXNzPVwibWVuc2FnZW0tZm9ybVwiID48L3VuYi1tZW5zYWdlbT5cclxuICA8L2Rpdj5cclxuICBcclxuICA8ZGl2IGNsYXNzPVwiZm9ybS13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyVGlwb1Blc3NvYVwiIGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJUaXBvIGRlIFBlc3NvYVwiIFsobmdNb2RlbCldPVwicGVzc29hLnRpcG9QZXNzb2FcIiAjdGlwb1Blc3NvYT1cIm5nTW9kZWxcIiBuYW1lPVwidGlwb1Blc3NvYVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwicGVzcXVpc2FyUG9yQ1BGXCIgICAgICAgICAgICB2YWx1ZT1cInt7IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBfX1cIj5QZXNzb2EgRsOtc2ljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdJZj1cInBlc3F1aXNhclBvckNOUEpcIiAgICAgICAgICAgdmFsdWU9XCJ7e3RpcG9QZXNzb2FFbnVtKCkuSlVSSURJQ0F9fVwiPiBQZXNzb2EgSnVyw61kaWNhPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwicGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm9cIiAgICB2YWx1ZT1cInt7dGlwb1Blc3NvYUVudW0oKS5FU1RSQU5HRUlSQX19XCI+RXN0cmFuZ2Vpcm88L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtcIj48L2Rpdj5cclxuICAgICAgXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwZXNzb2EudGlwb1Blc3NvYSA9PT0gdGlwb1Blc3NvYUVudW0oKS5GSVNJQ0FcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+Q1BGPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInBlc3NvYS5jcGZcIiBuYW1lPVwiY3BmXCIgI2NwZj1cIm5nTW9kZWxcIiByZXF1aXJlZD17e3RydWV9fS8+ICAgICAgICBcclxuICAgICAgICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIlBlc3F1aXNhclwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIiAoY2xpY2spPVwicGVzcXVpc2FyKClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7IGVsc2UgbG9hZGluZ0ljb25cIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0ljb24+XHJcbiAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXHJcbiAgICAgICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3Bpbm5lci1idXR0b25cIj5cclxuICAgICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRVNUUkFOR0VJUkFcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+UGFzc2Fwb3J0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwZXNzb2EucGFzc2Fwb3J0ZVwiIG5hbWU9XCJwYXNzYXBvcnRlXCIgcmVxdWlyZWQ9XCJ0cnVlXCIgLz5cclxuICAgICAgICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIlBlc3F1aXNhclwiIChjbGljayk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZzsgZWxzZSBsb2FkaW5nSWNvblwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nSWNvbj5cclxuICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcclxuICAgICAgICAgICAgICAgIFtkaWFtZXRlcl09XCIyMFwiXHJcbiAgICAgICAgICAgICAgICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzcGlubmVyLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkpVUklESUNBXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNOUEo8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNucGpcIiBuYW1lPVwiY25walwiIHJlcXVpcmVkPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJQZXNxdWlzYXJcIiAoY2xpY2spPVwicGVzcXVpc2FyKClcIj5cclxuICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdJY29uXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdJY29uPlxyXG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjIwXCJcclxuICAgICAgICAgICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNwaW5uZXItYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPiJdfQ==