@senior-agronegocio/angular-components 0.0.9883 → 1.0.0

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 (728) hide show
  1. package/README.md +25 -0
  2. package/agro-angular-components.module.d.ts +13 -9
  3. package/common/agro-array-utils.class.d.ts +48 -48
  4. package/common/agro-cookie-utils.class.d.ts +9 -9
  5. package/common/agro-date-utils.class.d.ts +88 -88
  6. package/common/agro-logics.class.d.ts +23 -23
  7. package/common/agro-name-utils.class.d.ts +22 -22
  8. package/common/agro-number-utils.class.d.ts +77 -77
  9. package/common/agro-object-stringifier.class.d.ts +16 -16
  10. package/common/agro-object-utils.class.d.ts +184 -173
  11. package/common/agro-platform-utils.class.d.ts +60 -60
  12. package/common/agro-regex.constant.d.ts +155 -155
  13. package/common/agro-string-utils.class.d.ts +97 -97
  14. package/common/agro-unit-converter.class.d.ts +23 -23
  15. package/common/colors.class.d.ts +78 -78
  16. package/common/edl-query-builder.class.d.ts +27 -0
  17. package/common/index.d.ts +15 -12
  18. package/components/cancel-event-dialog/cancel-event-dialog-config.d.ts +8 -8
  19. package/components/cancel-event-dialog/cancel-event-dialog.component.d.ts +34 -33
  20. package/components/cancel-event-dialog/cancel-event-dialog.module.d.ts +14 -2
  21. package/components/cancel-event-dialog/index.d.ts +3 -3
  22. package/components/event-control-board/common/control-status.d.ts +5 -5
  23. package/components/event-control-board/common/documentsToIssue.d.ts +4 -4
  24. package/components/event-control-board/common/event-control-constants.d.ts +11 -11
  25. package/components/event-control-board/common/event-operation.d.ts +52 -52
  26. package/components/event-control-board/common/event-origin.d.ts +12 -12
  27. package/components/event-control-board/common/event-status.d.ts +7 -7
  28. package/components/event-control-board/common/input-fields-translate.d.ts +5 -5
  29. package/components/event-control-board/common/input-fields.d.ts +5 -5
  30. package/components/event-control-board/common/invoice-type.d.ts +9 -9
  31. package/components/event-control-board/common/lookup-error-message.constants.d.ts +3 -3
  32. package/components/event-control-board/common/operation.d.ts +5 -5
  33. package/components/event-control-board/common/operationType.d.ts +5 -5
  34. package/components/event-control-board/common/status-entity.d.ts +4 -4
  35. package/components/event-control-board/common/ticket-status.d.ts +7 -7
  36. package/components/event-control-board/common/transfer-status.d.ts +6 -6
  37. package/components/event-control-board/event-control-board.component.d.ts +120 -106
  38. package/components/event-control-board/event-control-board.module.d.ts +31 -2
  39. package/components/event-control-board/index.d.ts +22 -22
  40. package/components/event-control-board/service/e001pes/e001pes-dto.d.ts +12 -12
  41. package/components/event-control-board/service/e001pes/e001pes.d.ts +15 -15
  42. package/components/event-control-board/service/e001pes/e001pes.module.d.ts +7 -2
  43. package/components/event-control-board/service/e001pes/e001pes.service.d.ts +16 -13
  44. package/components/event-control-board/service/e001tns/e001tns-dto.d.ts +14 -14
  45. package/components/event-control-board/service/e001tns/e001tns.d.ts +19 -19
  46. package/components/event-control-board/service/e001tns/e001tns.module.d.ts +7 -2
  47. package/components/event-control-board/service/e001tns/e001tns.service.d.ts +14 -11
  48. package/components/event-control-board/service/e012fam/e012fam-dto.d.ts +11 -11
  49. package/components/event-control-board/service/e012fam/e012fam.d.ts +14 -14
  50. package/components/event-control-board/service/e012fam/e012fam.service.d.ts +14 -11
  51. package/components/event-control-board/service/e070emp/e070emp-dto.d.ts +10 -10
  52. package/components/event-control-board/service/e070emp/e070emp.d.ts +13 -13
  53. package/components/event-control-board/service/e070emp/e070emp.module.d.ts +7 -2
  54. package/components/event-control-board/service/e070emp/e070emp.service.d.ts +15 -12
  55. package/components/event-control-board/service/e070fil/e070fil-dto.d.ts +14 -14
  56. package/components/event-control-board/service/e070fil/e070fil.d.ts +17 -17
  57. package/components/event-control-board/service/e070fil/e070fil.module.d.ts +7 -2
  58. package/components/event-control-board/service/e070fil/e070fil.service.d.ts +15 -12
  59. package/components/event-control-board/service/e075der/e075der-dto.d.ts +15 -15
  60. package/components/event-control-board/service/e075der/e075der.d.ts +18 -18
  61. package/components/event-control-board/service/e075der/e075der.module.d.ts +7 -2
  62. package/components/event-control-board/service/e075der/e075der.service.d.ts +15 -12
  63. package/components/event-control-board/service/e113saf/e113saf-dto.d.ts +11 -11
  64. package/components/event-control-board/service/e113saf/e113saf.d.ts +14 -14
  65. package/components/event-control-board/service/e205dep/deposit-dto.d.ts +11 -11
  66. package/components/event-control-board/service/e205dep/e205dep-dto.d.ts +15 -15
  67. package/components/event-control-board/service/e205dep/e205dep.d.ts +16 -16
  68. package/components/event-control-board/service/e205dep/e205dep.service.d.ts +15 -12
  69. package/components/event-control-board/service/event-control/event-control-dto.d.ts +15 -15
  70. package/components/event-control-board/service/event-control/event-control.d.ts +21 -21
  71. package/components/event-control-board/service/event-control/event-control.module.d.ts +7 -2
  72. package/components/event-control-board/service/event-control/event-control.service.d.ts +14 -11
  73. package/components/event-control-board/service/event-control-item/event-control-item-dto.d.ts +18 -18
  74. package/components/event-control-board/service/event-control-item/event-control-item.d.ts +25 -25
  75. package/components/event-control-board/service/event-control-item/event-control-item.module.d.ts +7 -2
  76. package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +18 -15
  77. package/components/event-control-board/service/external-invoice/external-invoice-dto.d.ts +13 -13
  78. package/components/event-control-board/service/external-invoice/external-invoice.d.ts +13 -13
  79. package/components/event-control-board/service/external-invoice/external-invoice.module.d.ts +7 -2
  80. package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +14 -11
  81. package/components/event-control-board/service/fixation-entity/fixation-dto.d.ts +41 -41
  82. package/components/event-control-board/service/fixation-entity/fixation.module.d.ts +7 -2
  83. package/components/event-control-board/service/fixation-entity/fixation.service.d.ts +18 -15
  84. package/components/event-control-board/service/invoice/invoice-dto.d.ts +15 -15
  85. package/components/event-control-board/service/invoice/invoice.d.ts +21 -21
  86. package/components/event-control-board/service/invoice/invoice.module.d.ts +7 -2
  87. package/components/event-control-board/service/invoice/invoice.service.d.ts +14 -11
  88. package/components/event-control-board/service/origination/operationType.d.ts +5 -5
  89. package/components/event-control-board/service/origination/origination-dto.d.ts +50 -50
  90. package/components/event-control-board/service/origination/origination.d.ts +51 -51
  91. package/components/event-control-board/service/origination/origination.module.d.ts +7 -2
  92. package/components/event-control-board/service/origination/origination.service.d.ts +14 -11
  93. package/components/event-control-board/service/paginator-storage.service.d.ts +8 -8
  94. package/components/event-control-board/service/rural-estate/rural-estate-dto.d.ts +28 -28
  95. package/components/event-control-board/service/rural-estate/rural-estate.d.ts +34 -34
  96. package/components/event-control-board/service/rural-estate/rural-estate.module.d.ts +7 -2
  97. package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +14 -11
  98. package/components/event-control-board/service/ticket/ticket-dto.d.ts +17 -17
  99. package/components/event-control-board/service/ticket/ticket.d.ts +18 -18
  100. package/components/event-control-board/service/ticket/ticket.module.d.ts +7 -2
  101. package/components/event-control-board/service/ticket/ticket.service.d.ts +48 -45
  102. package/components/event-control-board/service/transfer/transfer-dto.d.ts +32 -32
  103. package/components/event-control-board/service/transfer/transfer.module.d.ts +7 -2
  104. package/components/event-control-board/service/transfer/transfer.service.d.ts +16 -13
  105. package/components/event-control-board/shared.module.d.ts +31 -2
  106. package/components/event-steps/event-steps.component.d.ts +39 -36
  107. package/components/event-steps/event-steps.module.d.ts +9 -2
  108. package/components/event-steps/index.d.ts +2 -2
  109. package/components/financial-title-table/financial-title-table-options.interface.d.ts +10 -10
  110. package/components/financial-title-table/financial-title-table.component.d.ts +128 -126
  111. package/components/financial-title-table/financial-title-table.module.d.ts +26 -2
  112. package/components/financial-title-table/index.d.ts +4 -4
  113. package/components/financial-title-table/services/financial/agro-financial.service.d.ts +26 -23
  114. package/components/financial-title-table/services/financial/enums.d.ts +27 -27
  115. package/components/financial-title-table/services/financial/index.d.ts +3 -3
  116. package/components/financial-title-table/services/financial/intefaces.d.ts +107 -107
  117. package/components/index.d.ts +5 -5
  118. package/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.d.ts +5 -5
  119. package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +40 -36
  120. package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.d.ts +26 -2
  121. package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +32 -28
  122. package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.d.ts +26 -2
  123. package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +20 -17
  124. package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.d.ts +26 -2
  125. package/components/modal-invoice-pj/index.d.ts +9 -9
  126. package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +64 -55
  127. package/components/modal-invoice-pj/modal-invoice-pj-options.interface.d.ts +10 -10
  128. package/components/modal-invoice-pj/modal-shared-imports.d.ts +7 -8
  129. package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.d.ts +8 -2
  130. package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +19 -16
  131. package/components/modal-invoice-pj/services/agro-invoice/index.d.ts +2 -2
  132. package/components/modal-invoice-pj/services/agro-invoice/interfaces.d.ts +75 -75
  133. package/enums/agro-entity-status.enum.d.ts +4 -4
  134. package/enums/agro-numbers.enum.d.ts +1008 -1008
  135. package/enums/agro-string-masks.enum.d.ts +10 -10
  136. package/enums/date-comparison-type.enum.d.ts +4 -4
  137. package/enums/fixation-status.d.ts +8 -8
  138. package/enums/http-codes.enum.d.ts +64 -64
  139. package/enums/index.d.ts +8 -7
  140. package/enums/invoice-status.enum.d.ts +12 -12
  141. package/enums/number-comparison-type.enum.d.ts +8 -8
  142. package/enums/unit-measurement.enum.d.ts +49 -49
  143. package/esm2022/agro-angular-components.module.mjs +24 -0
  144. package/esm2022/common/agro-array-utils.class.mjs +74 -0
  145. package/esm2022/common/agro-cookie-utils.class.mjs +47 -0
  146. package/esm2022/common/agro-date-utils.class.mjs +121 -0
  147. package/esm2022/common/agro-logics.class.mjs +54 -0
  148. package/esm2022/common/agro-name-utils.class.mjs +60 -0
  149. package/esm2022/common/agro-number-utils.class.mjs +129 -0
  150. package/esm2022/common/agro-object-stringifier.class.mjs +34 -0
  151. package/esm2022/common/agro-object-utils.class.mjs +320 -0
  152. package/esm2022/common/agro-platform-utils.class.mjs +119 -0
  153. package/esm2022/common/agro-regex.constant.mjs +156 -0
  154. package/esm2022/common/agro-string-utils.class.mjs +363 -0
  155. package/esm2022/common/agro-unit-converter.class.mjs +254 -0
  156. package/esm2022/common/colors.class.mjs +79 -0
  157. package/esm2022/common/edl-query-builder.class.mjs +141 -0
  158. package/esm2022/common/index.mjs +14 -0
  159. package/esm2022/components/cancel-event-dialog/cancel-event-dialog-config.mjs +2 -0
  160. package/esm2022/components/cancel-event-dialog/cancel-event-dialog.component.mjs +117 -0
  161. package/esm2022/components/cancel-event-dialog/cancel-event-dialog.module.mjs +24 -0
  162. package/esm2022/components/cancel-event-dialog/index.mjs +3 -0
  163. package/esm2022/components/event-control-board/common/control-status.mjs +7 -0
  164. package/esm2022/components/event-control-board/common/documentsToIssue.mjs +6 -0
  165. package/esm2022/components/event-control-board/common/event-control-constants.mjs +113 -0
  166. package/esm2022/components/event-control-board/common/event-operation.mjs +54 -0
  167. package/esm2022/components/event-control-board/common/event-origin.mjs +14 -0
  168. package/esm2022/components/event-control-board/common/event-status.mjs +9 -0
  169. package/esm2022/components/event-control-board/common/input-fields-translate.mjs +11 -0
  170. package/esm2022/components/event-control-board/common/input-fields.mjs +7 -0
  171. package/esm2022/components/event-control-board/common/invoice-type.mjs +11 -0
  172. package/esm2022/components/event-control-board/common/lookup-error-message.constants.mjs +11 -0
  173. package/esm2022/components/event-control-board/common/operation.mjs +7 -0
  174. package/esm2022/components/event-control-board/common/operationType.mjs +7 -0
  175. package/esm2022/components/event-control-board/common/status-entity.mjs +6 -0
  176. package/esm2022/components/event-control-board/common/ticket-status.mjs +9 -0
  177. package/esm2022/components/event-control-board/common/transfer-status.mjs +8 -0
  178. package/esm2022/components/event-control-board/event-control-board.component.mjs +609 -0
  179. package/esm2022/components/event-control-board/event-control-board.module.mjs +120 -0
  180. package/esm2022/components/event-control-board/index.mjs +22 -0
  181. package/esm2022/components/event-control-board/service/e001pes/e001pes-dto.mjs +2 -0
  182. package/esm2022/components/event-control-board/service/e001pes/e001pes.mjs +30 -0
  183. package/esm2022/components/event-control-board/service/e001pes/e001pes.module.mjs +34 -0
  184. package/esm2022/components/event-control-board/service/e001pes/e001pes.service.mjs +33 -0
  185. package/esm2022/components/event-control-board/service/e001tns/e001tns-dto.mjs +2 -0
  186. package/esm2022/components/event-control-board/service/e001tns/e001tns.mjs +51 -0
  187. package/esm2022/components/event-control-board/service/e001tns/e001tns.module.mjs +38 -0
  188. package/esm2022/components/event-control-board/service/e001tns/e001tns.service.mjs +23 -0
  189. package/esm2022/components/event-control-board/service/e012fam/e012fam-dto.mjs +2 -0
  190. package/esm2022/components/event-control-board/service/e012fam/e012fam.mjs +29 -0
  191. package/esm2022/components/event-control-board/service/e012fam/e012fam.service.mjs +23 -0
  192. package/esm2022/components/event-control-board/service/e070emp/e070emp-dto.mjs +2 -0
  193. package/esm2022/components/event-control-board/service/e070emp/e070emp.mjs +37 -0
  194. package/esm2022/components/event-control-board/service/e070emp/e070emp.module.mjs +34 -0
  195. package/esm2022/components/event-control-board/service/e070emp/e070emp.service.mjs +30 -0
  196. package/esm2022/components/event-control-board/service/e070fil/e070fil-dto.mjs +2 -0
  197. package/esm2022/components/event-control-board/service/e070fil/e070fil.mjs +52 -0
  198. package/esm2022/components/event-control-board/service/e070fil/e070fil.module.mjs +34 -0
  199. package/esm2022/components/event-control-board/service/e070fil/e070fil.service.mjs +30 -0
  200. package/esm2022/components/event-control-board/service/e075der/e075der-dto.mjs +2 -0
  201. package/esm2022/components/event-control-board/service/e075der/e075der.mjs +41 -0
  202. package/esm2022/components/event-control-board/service/e075der/e075der.module.mjs +34 -0
  203. package/esm2022/components/event-control-board/service/e075der/e075der.service.mjs +28 -0
  204. package/esm2022/components/event-control-board/service/e113saf/e113saf-dto.mjs +2 -0
  205. package/{esm2015/components/event-control-board/service/e113saf/e113saf.js → esm2022/components/event-control-board/service/e113saf/e113saf.mjs} +29 -20
  206. package/esm2022/components/event-control-board/service/e205dep/deposit-dto.mjs +2 -0
  207. package/esm2022/components/event-control-board/service/e205dep/e205dep-dto.mjs +2 -0
  208. package/esm2022/components/event-control-board/service/e205dep/e205dep.mjs +31 -0
  209. package/esm2022/components/event-control-board/service/e205dep/e205dep.service.mjs +28 -0
  210. package/esm2022/components/event-control-board/service/event-control/event-control-dto.mjs +2 -0
  211. package/esm2022/components/event-control-board/service/event-control/event-control.mjs +32 -0
  212. package/esm2022/components/event-control-board/service/event-control/event-control.module.mjs +34 -0
  213. package/esm2022/components/event-control-board/service/event-control/event-control.service.mjs +23 -0
  214. package/esm2022/components/event-control-board/service/event-control-item/event-control-item-dto.mjs +2 -0
  215. package/esm2022/components/event-control-board/service/event-control-item/event-control-item.mjs +52 -0
  216. package/esm2022/components/event-control-board/service/event-control-item/event-control-item.module.mjs +34 -0
  217. package/esm2022/components/event-control-board/service/event-control-item/event-control-item.service.mjs +28 -0
  218. package/esm2022/components/event-control-board/service/external-invoice/external-invoice-dto.mjs +2 -0
  219. package/esm2022/components/event-control-board/service/external-invoice/external-invoice.mjs +28 -0
  220. package/esm2022/components/event-control-board/service/external-invoice/external-invoice.module.mjs +34 -0
  221. package/esm2022/components/event-control-board/service/external-invoice/external-invoice.service.mjs +23 -0
  222. package/esm2022/components/event-control-board/service/fixation-entity/fixation-dto.mjs +2 -0
  223. package/esm2022/components/event-control-board/service/fixation-entity/fixation.module.mjs +34 -0
  224. package/esm2022/components/event-control-board/service/fixation-entity/fixation.service.mjs +28 -0
  225. package/esm2022/components/event-control-board/service/invoice/invoice-dto.mjs +2 -0
  226. package/esm2022/components/event-control-board/service/invoice/invoice.mjs +56 -0
  227. package/esm2022/components/event-control-board/service/invoice/invoice.module.mjs +38 -0
  228. package/esm2022/components/event-control-board/service/invoice/invoice.service.mjs +23 -0
  229. package/esm2022/components/event-control-board/service/origination/operationType.mjs +7 -0
  230. package/esm2022/components/event-control-board/service/origination/origination-dto.mjs +2 -0
  231. package/esm2022/components/event-control-board/service/origination/origination.mjs +86 -0
  232. package/esm2022/components/event-control-board/service/origination/origination.module.mjs +34 -0
  233. package/esm2022/components/event-control-board/service/origination/origination.service.mjs +23 -0
  234. package/esm2022/components/event-control-board/service/paginator-storage.service.mjs +21 -0
  235. package/esm2022/components/event-control-board/service/rural-estate/rural-estate-dto.mjs +2 -0
  236. package/esm2022/components/event-control-board/service/rural-estate/rural-estate.mjs +102 -0
  237. package/esm2022/components/event-control-board/service/rural-estate/rural-estate.module.mjs +34 -0
  238. package/esm2022/components/event-control-board/service/rural-estate/rural-estate.service.mjs +23 -0
  239. package/esm2022/components/event-control-board/service/ticket/ticket-dto.mjs +2 -0
  240. package/esm2022/components/event-control-board/service/ticket/ticket.mjs +51 -0
  241. package/esm2022/components/event-control-board/service/ticket/ticket.module.mjs +38 -0
  242. package/esm2022/components/event-control-board/service/ticket/ticket.service.mjs +58 -0
  243. package/esm2022/components/event-control-board/service/transfer/transfer-dto.mjs +2 -0
  244. package/esm2022/components/event-control-board/service/transfer/transfer.module.mjs +38 -0
  245. package/esm2022/components/event-control-board/service/transfer/transfer.service.mjs +33 -0
  246. package/esm2022/components/event-control-board/shared.module.mjs +200 -0
  247. package/esm2022/components/event-steps/event-steps.component.mjs +129 -0
  248. package/esm2022/components/event-steps/event-steps.module.mjs +19 -0
  249. package/esm2022/components/event-steps/index.mjs +3 -0
  250. package/esm2022/components/financial-title-table/financial-title-table-options.interface.mjs +2 -0
  251. package/esm2022/components/financial-title-table/financial-title-table.component.mjs +422 -0
  252. package/esm2022/components/financial-title-table/financial-title-table.module.mjs +100 -0
  253. package/esm2022/components/financial-title-table/index.mjs +4 -0
  254. package/esm2022/components/financial-title-table/services/financial/agro-financial.service.mjs +68 -0
  255. package/esm2022/components/financial-title-table/services/financial/enums.mjs +33 -0
  256. package/esm2022/components/financial-title-table/services/financial/index.mjs +3 -0
  257. package/esm2022/components/financial-title-table/services/financial/intefaces.mjs +2 -0
  258. package/esm2022/components/index.mjs +6 -0
  259. package/esm2022/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.mjs +2 -0
  260. package/esm2022/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.mjs +190 -0
  261. package/esm2022/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.mjs +38 -0
  262. package/esm2022/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.mjs +67 -0
  263. package/esm2022/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.mjs +38 -0
  264. package/esm2022/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.mjs +41 -0
  265. package/esm2022/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.mjs +38 -0
  266. package/esm2022/components/modal-invoice-pj/index.mjs +8 -0
  267. package/esm2022/components/modal-invoice-pj/modal-invoice-pj-base.class.mjs +207 -0
  268. package/esm2022/components/modal-invoice-pj/modal-invoice-pj-options.interface.mjs +2 -0
  269. package/esm2022/components/modal-invoice-pj/modal-shared-imports.mjs +42 -0
  270. package/esm2022/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.mjs +41 -0
  271. package/esm2022/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.mjs +48 -0
  272. package/esm2022/components/modal-invoice-pj/services/agro-invoice/index.mjs +3 -0
  273. package/esm2022/components/modal-invoice-pj/services/agro-invoice/interfaces.mjs +13 -0
  274. package/esm2022/enums/agro-entity-status.enum.mjs +6 -0
  275. package/{esm5/enums/agro-numbers.enum.js → esm2022/enums/agro-numbers.enum.mjs} +1009 -1009
  276. package/esm2022/enums/agro-string-masks.enum.mjs +12 -0
  277. package/esm2022/enums/date-comparison-type.enum.mjs +6 -0
  278. package/esm2022/enums/fixation-status.mjs +10 -0
  279. package/{esm2015/enums/http-codes.enum.js → esm2022/enums/http-codes.enum.mjs} +66 -66
  280. package/esm2022/enums/index.mjs +8 -0
  281. package/esm2022/enums/invoice-status.enum.mjs +14 -0
  282. package/esm2022/enums/number-comparison-type.enum.mjs +10 -0
  283. package/esm2022/enums/unit-measurement.enum.mjs +60 -0
  284. package/esm2022/form-validator/agro-form-validator.mjs +315 -0
  285. package/esm2022/form-validator/index.mjs +2 -0
  286. package/esm2022/lib-translation.module.mjs +26 -0
  287. package/esm2022/pipe/cnpj-cpf/cnpj-cpf.pipe.mjs +30 -0
  288. package/esm2022/pipe/cnpj-cpf/cnpj-cpf.pipe.module.mjs +18 -0
  289. package/esm2022/pipe/cnpj-cpf/index.mjs +3 -0
  290. package/esm2022/pipe/index.mjs +6 -0
  291. package/esm2022/pipe/kilogram/index.mjs +3 -0
  292. package/esm2022/pipe/kilogram/kilogram.module.mjs +20 -0
  293. package/esm2022/pipe/kilogram/kilogram.pipe.mjs +38 -0
  294. package/esm2022/pipe/lib-translate.pipe.mjs +24 -0
  295. package/esm2022/pipe/stringifier/index.mjs +3 -0
  296. package/esm2022/pipe/stringifier/stringifier.pipe.mjs +15 -0
  297. package/esm2022/pipe/stringifier/stringifier.pipe.module.mjs +18 -0
  298. package/esm2022/pipe/telephone/index.mjs +3 -0
  299. package/esm2022/pipe/telephone/telephone.pipe.mjs +93 -0
  300. package/esm2022/pipe/telephone/telephone.pipe.module.mjs +18 -0
  301. package/esm2022/public-api.mjs +11 -0
  302. package/esm2022/senior-agronegocio-angular-components.mjs +5 -0
  303. package/esm2022/services/agro-entity-service.mjs +137 -0
  304. package/esm2022/services/i18n/en-US.mjs +322 -0
  305. package/esm2022/services/i18n/es-CO.mjs +322 -0
  306. package/esm2022/services/i18n/pt-BR.mjs +322 -0
  307. package/esm2022/services/index.mjs +3 -0
  308. package/esm2022/services/lib-translation.service.mjs +58 -0
  309. package/esm2022/services/producer-invoice/index.mjs +3 -0
  310. package/esm2022/services/producer-invoice/producer-invoice-dto.mjs +2 -0
  311. package/esm2022/services/producer-invoice/producer-invoice.mjs +49 -0
  312. package/esm2022/services/producer-invoice/producer-invoice.service.mjs +56 -0
  313. package/esm2022/services/websocket/async-lock.mjs +27 -0
  314. package/esm2022/services/websocket/index.mjs +7 -0
  315. package/esm2022/services/websocket/models/index.mjs +2 -0
  316. package/esm2022/services/websocket/models/primitive-manager.mjs +45 -0
  317. package/esm2022/services/websocket/protocols/index.mjs +2 -0
  318. package/esm2022/services/websocket/protocols/on-event-options.mjs +2 -0
  319. package/esm2022/services/websocket/protocols/primitive-event.mjs +2 -0
  320. package/esm2022/services/websocket/user-information.service.mjs +34 -0
  321. package/esm2022/services/websocket/websocket.module.mjs +27 -0
  322. package/esm2022/services/websocket/websocket.service.mjs +327 -0
  323. package/{fesm2015/senior-agronegocio-angular-components.js → fesm2022/senior-agronegocio-angular-components.mjs} +8600 -7930
  324. package/fesm2022/senior-agronegocio-angular-components.mjs.map +1 -0
  325. package/form-validator/agro-form-validator.d.ts +117 -117
  326. package/form-validator/index.d.ts +1 -1
  327. package/index.d.ts +5 -0
  328. package/lib-translation.module.d.ts +8 -2
  329. package/package.json +60 -29
  330. package/pipe/cnpj-cpf/cnpj-cpf.pipe.d.ts +7 -4
  331. package/pipe/cnpj-cpf/cnpj-cpf.pipe.module.d.ts +8 -2
  332. package/pipe/cnpj-cpf/index.d.ts +2 -2
  333. package/pipe/index.d.ts +5 -5
  334. package/pipe/kilogram/index.d.ts +2 -2
  335. package/pipe/kilogram/kilogram.module.d.ts +8 -2
  336. package/pipe/kilogram/kilogram.pipe.d.ts +11 -8
  337. package/pipe/lib-translate.pipe.d.ts +10 -7
  338. package/pipe/stringifier/index.d.ts +2 -2
  339. package/pipe/stringifier/stringifier.pipe.d.ts +12 -9
  340. package/pipe/stringifier/stringifier.pipe.module.d.ts +8 -2
  341. package/pipe/telephone/index.d.ts +2 -2
  342. package/pipe/telephone/telephone.pipe.d.ts +24 -21
  343. package/pipe/telephone/telephone.pipe.module.d.ts +8 -2
  344. package/public-api.d.ts +9 -8
  345. package/services/agro-entity-service.d.ts +63 -62
  346. package/services/i18n/en-US.d.ts +321 -321
  347. package/services/i18n/es-CO.d.ts +321 -321
  348. package/services/i18n/pt-BR.d.ts +321 -321
  349. package/services/index.d.ts +2 -2
  350. package/services/lib-translation.service.d.ts +19 -16
  351. package/services/producer-invoice/index.d.ts +3 -3
  352. package/services/producer-invoice/producer-invoice-dto.d.ts +26 -26
  353. package/services/producer-invoice/producer-invoice.d.ts +27 -27
  354. package/services/producer-invoice/producer-invoice.service.d.ts +21 -18
  355. package/services/websocket/async-lock.d.ts +6 -6
  356. package/services/websocket/index.d.ts +6 -6
  357. package/services/websocket/models/index.d.ts +1 -1
  358. package/services/websocket/models/primitive-manager.d.ts +19 -19
  359. package/services/websocket/protocols/index.d.ts +2 -2
  360. package/services/websocket/protocols/on-event-options.d.ts +8 -8
  361. package/services/websocket/protocols/primitive-event.d.ts +10 -10
  362. package/services/websocket/user-information.service.d.ts +10 -7
  363. package/services/websocket/websocket.module.d.ts +7 -2
  364. package/services/websocket/websocket.service.d.ts +103 -100
  365. package/bundles/senior-agronegocio-angular-components.umd.js +0 -8888
  366. package/bundles/senior-agronegocio-angular-components.umd.js.map +0 -1
  367. package/bundles/senior-agronegocio-angular-components.umd.min.js +0 -17
  368. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +0 -1
  369. package/esm2015/agro-angular-components.module.js +0 -22
  370. package/esm2015/common/agro-array-utils.class.js +0 -74
  371. package/esm2015/common/agro-cookie-utils.class.js +0 -47
  372. package/esm2015/common/agro-date-utils.class.js +0 -121
  373. package/esm2015/common/agro-logics.class.js +0 -54
  374. package/esm2015/common/agro-name-utils.class.js +0 -60
  375. package/esm2015/common/agro-number-utils.class.js +0 -129
  376. package/esm2015/common/agro-object-stringifier.class.js +0 -34
  377. package/esm2015/common/agro-object-utils.class.js +0 -301
  378. package/esm2015/common/agro-platform-utils.class.js +0 -119
  379. package/esm2015/common/agro-regex.constant.js +0 -156
  380. package/esm2015/common/agro-string-utils.class.js +0 -364
  381. package/esm2015/common/agro-unit-converter.class.js +0 -255
  382. package/esm2015/common/colors.class.js +0 -79
  383. package/esm2015/common/index.js +0 -13
  384. package/esm2015/components/cancel-event-dialog/cancel-event-dialog-config.js +0 -1
  385. package/esm2015/components/cancel-event-dialog/cancel-event-dialog.component.js +0 -117
  386. package/esm2015/components/cancel-event-dialog/cancel-event-dialog.module.js +0 -19
  387. package/esm2015/components/cancel-event-dialog/index.js +0 -3
  388. package/esm2015/components/event-control-board/common/control-status.js +0 -7
  389. package/esm2015/components/event-control-board/common/documentsToIssue.js +0 -6
  390. package/esm2015/components/event-control-board/common/event-control-constants.js +0 -113
  391. package/esm2015/components/event-control-board/common/event-operation.js +0 -54
  392. package/esm2015/components/event-control-board/common/event-origin.js +0 -14
  393. package/esm2015/components/event-control-board/common/event-status.js +0 -9
  394. package/esm2015/components/event-control-board/common/input-fields-translate.js +0 -11
  395. package/esm2015/components/event-control-board/common/input-fields.js +0 -7
  396. package/esm2015/components/event-control-board/common/invoice-type.js +0 -11
  397. package/esm2015/components/event-control-board/common/lookup-error-message.constants.js +0 -11
  398. package/esm2015/components/event-control-board/common/operation.js +0 -7
  399. package/esm2015/components/event-control-board/common/operationType.js +0 -7
  400. package/esm2015/components/event-control-board/common/status-entity.js +0 -6
  401. package/esm2015/components/event-control-board/common/ticket-status.js +0 -9
  402. package/esm2015/components/event-control-board/common/transfer-status.js +0 -8
  403. package/esm2015/components/event-control-board/event-control-board.component.js +0 -597
  404. package/esm2015/components/event-control-board/event-control-board.module.js +0 -66
  405. package/esm2015/components/event-control-board/index.js +0 -22
  406. package/esm2015/components/event-control-board/service/e001pes/e001pes-dto.js +0 -1
  407. package/esm2015/components/event-control-board/service/e001pes/e001pes.js +0 -20
  408. package/esm2015/components/event-control-board/service/e001pes/e001pes.module.js +0 -24
  409. package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +0 -34
  410. package/esm2015/components/event-control-board/service/e001tns/e001tns-dto.js +0 -1
  411. package/esm2015/components/event-control-board/service/e001tns/e001tns.js +0 -42
  412. package/esm2015/components/event-control-board/service/e001tns/e001tns.module.js +0 -26
  413. package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +0 -24
  414. package/esm2015/components/event-control-board/service/e012fam/e012fam-dto.js +0 -1
  415. package/esm2015/components/event-control-board/service/e012fam/e012fam.js +0 -20
  416. package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +0 -24
  417. package/esm2015/components/event-control-board/service/e070emp/e070emp-dto.js +0 -1
  418. package/esm2015/components/event-control-board/service/e070emp/e070emp.js +0 -29
  419. package/esm2015/components/event-control-board/service/e070emp/e070emp.module.js +0 -24
  420. package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +0 -31
  421. package/esm2015/components/event-control-board/service/e070fil/e070fil-dto.js +0 -1
  422. package/esm2015/components/event-control-board/service/e070fil/e070fil.js +0 -41
  423. package/esm2015/components/event-control-board/service/e070fil/e070fil.module.js +0 -24
  424. package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +0 -31
  425. package/esm2015/components/event-control-board/service/e075der/e075der-dto.js +0 -1
  426. package/esm2015/components/event-control-board/service/e075der/e075der.js +0 -31
  427. package/esm2015/components/event-control-board/service/e075der/e075der.module.js +0 -24
  428. package/esm2015/components/event-control-board/service/e075der/e075der.service.js +0 -29
  429. package/esm2015/components/event-control-board/service/e113saf/e113saf-dto.js +0 -1
  430. package/esm2015/components/event-control-board/service/e205dep/deposit-dto.js +0 -1
  431. package/esm2015/components/event-control-board/service/e205dep/e205dep-dto.js +0 -1
  432. package/esm2015/components/event-control-board/service/e205dep/e205dep.js +0 -20
  433. package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +0 -29
  434. package/esm2015/components/event-control-board/service/event-control/event-control-dto.js +0 -1
  435. package/esm2015/components/event-control-board/service/event-control/event-control.js +0 -20
  436. package/esm2015/components/event-control-board/service/event-control/event-control.module.js +0 -24
  437. package/esm2015/components/event-control-board/service/event-control/event-control.service.js +0 -24
  438. package/esm2015/components/event-control-board/service/event-control-item/event-control-item-dto.js +0 -1
  439. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.js +0 -35
  440. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.module.js +0 -24
  441. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +0 -29
  442. package/esm2015/components/event-control-board/service/external-invoice/external-invoice-dto.js +0 -1
  443. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.js +0 -20
  444. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.module.js +0 -24
  445. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +0 -24
  446. package/esm2015/components/event-control-board/service/fixation-entity/fixation-dto.js +0 -1
  447. package/esm2015/components/event-control-board/service/fixation-entity/fixation.module.js +0 -24
  448. package/esm2015/components/event-control-board/service/fixation-entity/fixation.service.js +0 -29
  449. package/esm2015/components/event-control-board/service/invoice/invoice-dto.js +0 -1
  450. package/esm2015/components/event-control-board/service/invoice/invoice.js +0 -43
  451. package/esm2015/components/event-control-board/service/invoice/invoice.module.js +0 -26
  452. package/esm2015/components/event-control-board/service/invoice/invoice.service.js +0 -24
  453. package/esm2015/components/event-control-board/service/origination/operationType.js +0 -7
  454. package/esm2015/components/event-control-board/service/origination/origination-dto.js +0 -1
  455. package/esm2015/components/event-control-board/service/origination/origination.js +0 -59
  456. package/esm2015/components/event-control-board/service/origination/origination.module.js +0 -24
  457. package/esm2015/components/event-control-board/service/origination/origination.service.js +0 -24
  458. package/esm2015/components/event-control-board/service/paginator-storage.service.js +0 -32
  459. package/esm2015/components/event-control-board/service/rural-estate/rural-estate-dto.js +0 -1
  460. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.js +0 -78
  461. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.module.js +0 -24
  462. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +0 -24
  463. package/esm2015/components/event-control-board/service/ticket/ticket-dto.js +0 -1
  464. package/esm2015/components/event-control-board/service/ticket/ticket.js +0 -39
  465. package/esm2015/components/event-control-board/service/ticket/ticket.module.js +0 -26
  466. package/esm2015/components/event-control-board/service/ticket/ticket.service.js +0 -59
  467. package/esm2015/components/event-control-board/service/transfer/transfer-dto.js +0 -1
  468. package/esm2015/components/event-control-board/service/transfer/transfer.module.js +0 -26
  469. package/esm2015/components/event-control-board/service/transfer/transfer.service.js +0 -34
  470. package/esm2015/components/event-control-board/shared.module.js +0 -56
  471. package/esm2015/components/event-steps/event-steps.component.js +0 -103
  472. package/esm2015/components/event-steps/event-steps.module.js +0 -16
  473. package/esm2015/components/event-steps/index.js +0 -3
  474. package/esm2015/components/financial-title-table/financial-title-table-options.interface.js +0 -1
  475. package/esm2015/components/financial-title-table/financial-title-table.component.js +0 -416
  476. package/esm2015/components/financial-title-table/financial-title-table.module.js +0 -45
  477. package/esm2015/components/financial-title-table/index.js +0 -4
  478. package/esm2015/components/financial-title-table/services/financial/agro-financial.service.js +0 -69
  479. package/esm2015/components/financial-title-table/services/financial/enums.js +0 -33
  480. package/esm2015/components/financial-title-table/services/financial/index.js +0 -3
  481. package/esm2015/components/financial-title-table/services/financial/intefaces.js +0 -1
  482. package/esm2015/components/index.js +0 -6
  483. package/esm2015/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +0 -1
  484. package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +0 -191
  485. package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +0 -16
  486. package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +0 -64
  487. package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +0 -16
  488. package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +0 -37
  489. package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +0 -16
  490. package/esm2015/components/modal-invoice-pj/index.js +0 -8
  491. package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +0 -196
  492. package/esm2015/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +0 -1
  493. package/esm2015/components/modal-invoice-pj/modal-shared-imports.js +0 -32
  494. package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +0 -28
  495. package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +0 -49
  496. package/esm2015/components/modal-invoice-pj/services/agro-invoice/index.js +0 -3
  497. package/esm2015/components/modal-invoice-pj/services/agro-invoice/interfaces.js +0 -13
  498. package/esm2015/enums/agro-entity-status.enum.js +0 -6
  499. package/esm2015/enums/agro-numbers.enum.js +0 -1009
  500. package/esm2015/enums/agro-string-masks.enum.js +0 -12
  501. package/esm2015/enums/date-comparison-type.enum.js +0 -6
  502. package/esm2015/enums/fixation-status.js +0 -10
  503. package/esm2015/enums/index.js +0 -8
  504. package/esm2015/enums/invoice-status.enum.js +0 -14
  505. package/esm2015/enums/number-comparison-type.enum.js +0 -10
  506. package/esm2015/enums/unit-measurement.enum.js +0 -60
  507. package/esm2015/form-validator/agro-form-validator.js +0 -319
  508. package/esm2015/form-validator/index.js +0 -2
  509. package/esm2015/lib-translation.module.js +0 -23
  510. package/esm2015/pipe/cnpj-cpf/cnpj-cpf.pipe.js +0 -28
  511. package/esm2015/pipe/cnpj-cpf/cnpj-cpf.pipe.module.js +0 -15
  512. package/esm2015/pipe/cnpj-cpf/index.js +0 -3
  513. package/esm2015/pipe/index.js +0 -6
  514. package/esm2015/pipe/kilogram/index.js +0 -3
  515. package/esm2015/pipe/kilogram/kilogram.module.js +0 -17
  516. package/esm2015/pipe/kilogram/kilogram.pipe.js +0 -38
  517. package/esm2015/pipe/lib-translate.pipe.js +0 -24
  518. package/esm2015/pipe/stringifier/index.js +0 -3
  519. package/esm2015/pipe/stringifier/stringifier.pipe.js +0 -13
  520. package/esm2015/pipe/stringifier/stringifier.pipe.module.js +0 -15
  521. package/esm2015/pipe/telephone/index.js +0 -3
  522. package/esm2015/pipe/telephone/telephone.pipe.js +0 -91
  523. package/esm2015/pipe/telephone/telephone.pipe.module.js +0 -15
  524. package/esm2015/public-api.js +0 -9
  525. package/esm2015/senior-agronegocio-angular-components.js +0 -7
  526. package/esm2015/services/agro-entity-service.js +0 -132
  527. package/esm2015/services/i18n/en-US.js +0 -322
  528. package/esm2015/services/i18n/es-CO.js +0 -322
  529. package/esm2015/services/i18n/pt-BR.js +0 -322
  530. package/esm2015/services/index.js +0 -3
  531. package/esm2015/services/lib-translation.service.js +0 -58
  532. package/esm2015/services/producer-invoice/index.js +0 -3
  533. package/esm2015/services/producer-invoice/producer-invoice-dto.js +0 -1
  534. package/esm2015/services/producer-invoice/producer-invoice.js +0 -32
  535. package/esm2015/services/producer-invoice/producer-invoice.service.js +0 -64
  536. package/esm2015/services/websocket/async-lock.js +0 -34
  537. package/esm2015/services/websocket/index.js +0 -6
  538. package/esm2015/services/websocket/models/index.js +0 -2
  539. package/esm2015/services/websocket/models/primitive-manager.js +0 -39
  540. package/esm2015/services/websocket/protocols/index.js +0 -1
  541. package/esm2015/services/websocket/protocols/on-event-options.js +0 -1
  542. package/esm2015/services/websocket/protocols/primitive-event.js +0 -1
  543. package/esm2015/services/websocket/user-information.service.js +0 -34
  544. package/esm2015/services/websocket/websocket.module.js +0 -21
  545. package/esm2015/services/websocket/websocket.service.js +0 -338
  546. package/esm5/agro-angular-components.module.js +0 -26
  547. package/esm5/common/agro-array-utils.class.js +0 -90
  548. package/esm5/common/agro-cookie-utils.class.js +0 -54
  549. package/esm5/common/agro-date-utils.class.js +0 -126
  550. package/esm5/common/agro-logics.class.js +0 -96
  551. package/esm5/common/agro-name-utils.class.js +0 -64
  552. package/esm5/common/agro-number-utils.class.js +0 -137
  553. package/esm5/common/agro-object-stringifier.class.js +0 -38
  554. package/esm5/common/agro-object-utils.class.js +0 -306
  555. package/esm5/common/agro-platform-utils.class.js +0 -123
  556. package/esm5/common/agro-regex.constant.js +0 -156
  557. package/esm5/common/agro-string-utils.class.js +0 -380
  558. package/esm5/common/agro-unit-converter.class.js +0 -258
  559. package/esm5/common/colors.class.js +0 -83
  560. package/esm5/common/index.js +0 -13
  561. package/esm5/components/cancel-event-dialog/cancel-event-dialog-config.js +0 -1
  562. package/esm5/components/cancel-event-dialog/cancel-event-dialog.component.js +0 -128
  563. package/esm5/components/cancel-event-dialog/cancel-event-dialog.module.js +0 -22
  564. package/esm5/components/cancel-event-dialog/index.js +0 -3
  565. package/esm5/components/event-control-board/common/control-status.js +0 -7
  566. package/esm5/components/event-control-board/common/documentsToIssue.js +0 -6
  567. package/esm5/components/event-control-board/common/event-control-constants.js +0 -113
  568. package/esm5/components/event-control-board/common/event-operation.js +0 -54
  569. package/esm5/components/event-control-board/common/event-origin.js +0 -14
  570. package/esm5/components/event-control-board/common/event-status.js +0 -9
  571. package/esm5/components/event-control-board/common/input-fields-translate.js +0 -11
  572. package/esm5/components/event-control-board/common/input-fields.js +0 -7
  573. package/esm5/components/event-control-board/common/invoice-type.js +0 -11
  574. package/esm5/components/event-control-board/common/lookup-error-message.constants.js +0 -11
  575. package/esm5/components/event-control-board/common/operation.js +0 -7
  576. package/esm5/components/event-control-board/common/operationType.js +0 -7
  577. package/esm5/components/event-control-board/common/status-entity.js +0 -6
  578. package/esm5/components/event-control-board/common/ticket-status.js +0 -9
  579. package/esm5/components/event-control-board/common/transfer-status.js +0 -8
  580. package/esm5/components/event-control-board/event-control-board.component.js +0 -619
  581. package/esm5/components/event-control-board/event-control-board.module.js +0 -69
  582. package/esm5/components/event-control-board/index.js +0 -22
  583. package/esm5/components/event-control-board/service/e001pes/e001pes-dto.js +0 -1
  584. package/esm5/components/event-control-board/service/e001pes/e001pes.js +0 -25
  585. package/esm5/components/event-control-board/service/e001pes/e001pes.module.js +0 -27
  586. package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +0 -37
  587. package/esm5/components/event-control-board/service/e001tns/e001tns-dto.js +0 -1
  588. package/esm5/components/event-control-board/service/e001tns/e001tns.js +0 -45
  589. package/esm5/components/event-control-board/service/e001tns/e001tns.module.js +0 -29
  590. package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +0 -27
  591. package/esm5/components/event-control-board/service/e012fam/e012fam-dto.js +0 -1
  592. package/esm5/components/event-control-board/service/e012fam/e012fam.js +0 -25
  593. package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +0 -27
  594. package/esm5/components/event-control-board/service/e070emp/e070emp-dto.js +0 -1
  595. package/esm5/components/event-control-board/service/e070emp/e070emp.js +0 -34
  596. package/esm5/components/event-control-board/service/e070emp/e070emp.module.js +0 -27
  597. package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +0 -34
  598. package/esm5/components/event-control-board/service/e070fil/e070fil-dto.js +0 -1
  599. package/esm5/components/event-control-board/service/e070fil/e070fil.js +0 -48
  600. package/esm5/components/event-control-board/service/e070fil/e070fil.module.js +0 -27
  601. package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +0 -34
  602. package/esm5/components/event-control-board/service/e075der/e075der-dto.js +0 -1
  603. package/esm5/components/event-control-board/service/e075der/e075der.js +0 -36
  604. package/esm5/components/event-control-board/service/e075der/e075der.module.js +0 -27
  605. package/esm5/components/event-control-board/service/e075der/e075der.service.js +0 -32
  606. package/esm5/components/event-control-board/service/e113saf/e113saf-dto.js +0 -1
  607. package/esm5/components/event-control-board/service/e113saf/e113saf.js +0 -25
  608. package/esm5/components/event-control-board/service/e205dep/deposit-dto.js +0 -1
  609. package/esm5/components/event-control-board/service/e205dep/e205dep-dto.js +0 -1
  610. package/esm5/components/event-control-board/service/e205dep/e205dep.js +0 -25
  611. package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +0 -32
  612. package/esm5/components/event-control-board/service/event-control/event-control-dto.js +0 -1
  613. package/esm5/components/event-control-board/service/event-control/event-control.js +0 -25
  614. package/esm5/components/event-control-board/service/event-control/event-control.module.js +0 -27
  615. package/esm5/components/event-control-board/service/event-control/event-control.service.js +0 -27
  616. package/esm5/components/event-control-board/service/event-control-item/event-control-item-dto.js +0 -1
  617. package/esm5/components/event-control-board/service/event-control-item/event-control-item.js +0 -40
  618. package/esm5/components/event-control-board/service/event-control-item/event-control-item.module.js +0 -27
  619. package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +0 -32
  620. package/esm5/components/event-control-board/service/external-invoice/external-invoice-dto.js +0 -1
  621. package/esm5/components/event-control-board/service/external-invoice/external-invoice.js +0 -25
  622. package/esm5/components/event-control-board/service/external-invoice/external-invoice.module.js +0 -27
  623. package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +0 -27
  624. package/esm5/components/event-control-board/service/fixation-entity/fixation-dto.js +0 -1
  625. package/esm5/components/event-control-board/service/fixation-entity/fixation.module.js +0 -27
  626. package/esm5/components/event-control-board/service/fixation-entity/fixation.service.js +0 -32
  627. package/esm5/components/event-control-board/service/invoice/invoice-dto.js +0 -1
  628. package/esm5/components/event-control-board/service/invoice/invoice.js +0 -48
  629. package/esm5/components/event-control-board/service/invoice/invoice.module.js +0 -29
  630. package/esm5/components/event-control-board/service/invoice/invoice.service.js +0 -27
  631. package/esm5/components/event-control-board/service/origination/operationType.js +0 -7
  632. package/esm5/components/event-control-board/service/origination/origination-dto.js +0 -1
  633. package/esm5/components/event-control-board/service/origination/origination.js +0 -62
  634. package/esm5/components/event-control-board/service/origination/origination.module.js +0 -27
  635. package/esm5/components/event-control-board/service/origination/origination.service.js +0 -27
  636. package/esm5/components/event-control-board/service/paginator-storage.service.js +0 -71
  637. package/esm5/components/event-control-board/service/rural-estate/rural-estate-dto.js +0 -1
  638. package/esm5/components/event-control-board/service/rural-estate/rural-estate.js +0 -83
  639. package/esm5/components/event-control-board/service/rural-estate/rural-estate.module.js +0 -27
  640. package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +0 -27
  641. package/esm5/components/event-control-board/service/ticket/ticket-dto.js +0 -1
  642. package/esm5/components/event-control-board/service/ticket/ticket.js +0 -44
  643. package/esm5/components/event-control-board/service/ticket/ticket.module.js +0 -29
  644. package/esm5/components/event-control-board/service/ticket/ticket.service.js +0 -62
  645. package/esm5/components/event-control-board/service/transfer/transfer-dto.js +0 -1
  646. package/esm5/components/event-control-board/service/transfer/transfer.module.js +0 -29
  647. package/esm5/components/event-control-board/service/transfer/transfer.service.js +0 -37
  648. package/esm5/components/event-control-board/shared.module.js +0 -59
  649. package/esm5/components/event-steps/event-steps.component.js +0 -113
  650. package/esm5/components/event-steps/event-steps.module.js +0 -19
  651. package/esm5/components/event-steps/index.js +0 -3
  652. package/esm5/components/financial-title-table/financial-title-table-options.interface.js +0 -1
  653. package/esm5/components/financial-title-table/financial-title-table.component.js +0 -438
  654. package/esm5/components/financial-title-table/financial-title-table.module.js +0 -48
  655. package/esm5/components/financial-title-table/index.js +0 -4
  656. package/esm5/components/financial-title-table/services/financial/agro-financial.service.js +0 -76
  657. package/esm5/components/financial-title-table/services/financial/enums.js +0 -33
  658. package/esm5/components/financial-title-table/services/financial/index.js +0 -3
  659. package/esm5/components/financial-title-table/services/financial/intefaces.js +0 -1
  660. package/esm5/components/index.js +0 -6
  661. package/esm5/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +0 -1
  662. package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +0 -223
  663. package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +0 -19
  664. package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +0 -67
  665. package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +0 -19
  666. package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +0 -40
  667. package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +0 -19
  668. package/esm5/components/modal-invoice-pj/index.js +0 -8
  669. package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +0 -213
  670. package/esm5/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +0 -1
  671. package/esm5/components/modal-invoice-pj/modal-shared-imports.js +0 -32
  672. package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +0 -31
  673. package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +0 -56
  674. package/esm5/components/modal-invoice-pj/services/agro-invoice/index.js +0 -3
  675. package/esm5/components/modal-invoice-pj/services/agro-invoice/interfaces.js +0 -13
  676. package/esm5/enums/agro-entity-status.enum.js +0 -6
  677. package/esm5/enums/agro-string-masks.enum.js +0 -12
  678. package/esm5/enums/date-comparison-type.enum.js +0 -6
  679. package/esm5/enums/fixation-status.js +0 -10
  680. package/esm5/enums/http-codes.enum.js +0 -66
  681. package/esm5/enums/index.js +0 -8
  682. package/esm5/enums/invoice-status.enum.js +0 -14
  683. package/esm5/enums/number-comparison-type.enum.js +0 -10
  684. package/esm5/enums/unit-measurement.enum.js +0 -60
  685. package/esm5/form-validator/agro-form-validator.js +0 -341
  686. package/esm5/form-validator/index.js +0 -2
  687. package/esm5/lib-translation.module.js +0 -26
  688. package/esm5/pipe/cnpj-cpf/cnpj-cpf.pipe.js +0 -35
  689. package/esm5/pipe/cnpj-cpf/cnpj-cpf.pipe.module.js +0 -18
  690. package/esm5/pipe/cnpj-cpf/index.js +0 -3
  691. package/esm5/pipe/index.js +0 -6
  692. package/esm5/pipe/kilogram/index.js +0 -3
  693. package/esm5/pipe/kilogram/kilogram.module.js +0 -20
  694. package/esm5/pipe/kilogram/kilogram.pipe.js +0 -41
  695. package/esm5/pipe/lib-translate.pipe.js +0 -29
  696. package/esm5/pipe/stringifier/index.js +0 -3
  697. package/esm5/pipe/stringifier/stringifier.pipe.js +0 -16
  698. package/esm5/pipe/stringifier/stringifier.pipe.module.js +0 -18
  699. package/esm5/pipe/telephone/index.js +0 -3
  700. package/esm5/pipe/telephone/telephone.pipe.js +0 -95
  701. package/esm5/pipe/telephone/telephone.pipe.module.js +0 -18
  702. package/esm5/public-api.js +0 -9
  703. package/esm5/senior-agronegocio-angular-components.js +0 -7
  704. package/esm5/services/agro-entity-service.js +0 -143
  705. package/esm5/services/i18n/en-US.js +0 -322
  706. package/esm5/services/i18n/es-CO.js +0 -322
  707. package/esm5/services/i18n/pt-BR.js +0 -322
  708. package/esm5/services/index.js +0 -3
  709. package/esm5/services/lib-translation.service.js +0 -60
  710. package/esm5/services/producer-invoice/index.js +0 -3
  711. package/esm5/services/producer-invoice/producer-invoice-dto.js +0 -1
  712. package/esm5/services/producer-invoice/producer-invoice.js +0 -37
  713. package/esm5/services/producer-invoice/producer-invoice.service.js +0 -72
  714. package/esm5/services/websocket/async-lock.js +0 -43
  715. package/esm5/services/websocket/index.js +0 -6
  716. package/esm5/services/websocket/models/index.js +0 -2
  717. package/esm5/services/websocket/models/primitive-manager.js +0 -58
  718. package/esm5/services/websocket/protocols/index.js +0 -1
  719. package/esm5/services/websocket/protocols/on-event-options.js +0 -1
  720. package/esm5/services/websocket/protocols/primitive-event.js +0 -1
  721. package/esm5/services/websocket/user-information.service.js +0 -38
  722. package/esm5/services/websocket/websocket.module.js +0 -24
  723. package/esm5/services/websocket/websocket.service.js +0 -410
  724. package/fesm2015/senior-agronegocio-angular-components.js.map +0 -1
  725. package/fesm5/senior-agronegocio-angular-components.js +0 -8646
  726. package/fesm5/senior-agronegocio-angular-components.js.map +0 -1
  727. package/senior-agronegocio-angular-components.d.ts +0 -6
  728. package/senior-agronegocio-angular-components.metadata.json +0 -1
@@ -0,0 +1,422 @@
1
+ import { registerLocaleData } from "@angular/common";
2
+ import localePt from "@angular/common/locales/pt";
3
+ import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
4
+ import { FormArray, FormControl, FormGroup, Validators } from "@angular/forms";
5
+ import { catchError, takeUntil } from "rxjs/operators";
6
+ import { AgroObjectUtils } from "../../common/agro-object-utils.class";
7
+ import { AGRO_NUMBERS } from "../../enums";
8
+ import { OrderByType, TitleFieldsOrderBy } from "./services/financial/enums";
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../services/lib-translation.service";
11
+ import * as i2 from "./services/financial/agro-financial.service";
12
+ import * as i3 from "primeng/api";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "@seniorsistemas/angular-components/empty-state";
15
+ import * as i6 from "primeng/table";
16
+ import * as i7 from "@seniorsistemas/angular-components/badge";
17
+ import * as i8 from "@seniorsistemas/angular-components/button";
18
+ import * as i9 from "@seniorsistemas/angular-components/sidebar";
19
+ import * as i10 from "@angular/forms";
20
+ import * as i11 from "@seniorsistemas/angular-components/loading-state";
21
+ import * as i12 from "primeng/inputtext";
22
+ import * as i13 from "@seniorsistemas/angular-components/structure";
23
+ import * as i14 from "@seniorsistemas/angular-components/number-input";
24
+ import * as i15 from "@seniorsistemas/angular-components/control-errors";
25
+ import * as i16 from "../../pipe/lib-translate.pipe";
26
+ export class FinancialTitleTableComponent {
27
+ translate;
28
+ financialService;
29
+ messageService;
30
+ table;
31
+ options;
32
+ selected = [];
33
+ selectionChange = new EventEmitter();
34
+ gridData = [];
35
+ gridTotalRecords = 0;
36
+ errorMessage = {};
37
+ tableInitialized = false;
38
+ showSidebar = false;
39
+ selectedRow = null;
40
+ gridColumns = [];
41
+ sidebarFields = [];
42
+ componentLoading = false;
43
+ form = new FormGroup({
44
+ titlesForm: new FormArray([], []),
45
+ });
46
+ currentListParams = { first: 0, rows: 10, sortField: null, sortOrder: null, filters: {} };
47
+ ngUnsubscribe = new EventEmitter();
48
+ get titlesForm() {
49
+ return this.form.get("titlesForm");
50
+ }
51
+ constructor(translate, financialService, messageService) {
52
+ this.translate = translate;
53
+ this.financialService = financialService;
54
+ this.messageService = messageService;
55
+ registerLocaleData(localePt);
56
+ this.errorMessage = {
57
+ required: this.translate.instant("agro.angular_components.error_required"),
58
+ lessThanZero: this.translate.instant("agro.angular_components.error_less_or_equal_zero"),
59
+ greatherThanAllowed: this.translate.instant("agro.angular_components.error_greater_than_allowed"),
60
+ };
61
+ }
62
+ /**
63
+ * Inicializa colunas da tabela e campos exibidos no sidebar,
64
+ * depois dispara a primeira busca de títulos com os filtros informados em {@link options}.
65
+ */
66
+ ngOnInit() {
67
+ this.gridColumns = [
68
+ this.getFields("title", "agro.angular_components.title", ["numberTitle"], "String", TitleFieldsOrderBy.NUMBER_TITLE),
69
+ this.getFields("type", "agro.angular_components.type", ["titleType.cod", "titleType.desc"], "String", null),
70
+ this.getFields("entryDate", "agro.angular_components.entry", ["issueDate"], "Date", TitleFieldsOrderBy.ISSUE_DATE),
71
+ this.getFields("dueDate", "agro.angular_components.due_date", ["dueDate"], "Date", TitleFieldsOrderBy.DUE_DATE),
72
+ this.getFields("valueOrigin", "agro.angular_components.original_value", ["values.originalValue"], "Money", TitleFieldsOrderBy.ORIGINAL_VALUE),
73
+ this.getFields("valueOpen", "agro.angular_components.open_value", ["values.openValue"], "Money", TitleFieldsOrderBy.OPEN_VALUE),
74
+ this.getFields("valueNet", "agro.angular_components.value_net", ["values.netValue"], "Money", TitleFieldsOrderBy.NET_VALUE),
75
+ this.getFields("valuePaid", "agro.angular_components.value_to_pay", ["valuePaid"], "Money", null),
76
+ ];
77
+ this.sidebarFields = [
78
+ this.getFields("company", "agro.angular_components.company", ["company.cod", "company.desc"], "String", null),
79
+ this.getFields("branch", "agro.angular_components.branch", ["branch.cod", "branch.desc"], "String", null),
80
+ this.getFields("producer", "agro.angular_components.producer", ["producer.cod", "producer.desc"], "String", null),
81
+ ...this.gridColumns.filter((col) => !["valuePaid", "valueNet"].includes(col.field)),
82
+ this.getFields("valueFees", "agro.angular_components.value_fees", ["values.interestValue"], "Money", null),
83
+ this.getFields("valueFine", "agro.angular_components.value_fine", ["values.fineValue"], "Money", null),
84
+ this.getFields("valueCharge", "agro.angular_components.value_charge", ["values.chargeValue"], "Money", null),
85
+ this.getFields("valueCorrection", "agro.angular_components.value_correction", ["values.monetaryCorrectionValue"], "Money", null),
86
+ this.getFields("valueAdditional", "agro.angular_components.value_additional", ["values.otherAdditionValue"], "Money", null),
87
+ this.getFields("valueDiscount", "agro.angular_components.value_discount", ["values.discountValue"], "Money", null),
88
+ this.getFields("valueOtherDiscount", "agro.angular_components.value_other_discount", ["values.otherDiscountValue"], "Money", null),
89
+ ...this.gridColumns.filter((col) => ["valueNet"].includes(col.field)),
90
+ ];
91
+ this.updateGrid(this.currentListParams);
92
+ }
93
+ /**
94
+ * Após a renderização da tabela, sincroniza o estado de checkbox/linha editável
95
+ * com o array de títulos selecionados para evitar acesso a referências ainda não criadas.
96
+ */
97
+ ngAfterViewInit() {
98
+ this.tableInitialized = true;
99
+ this.synchronizeCheckboxAndEditableFieldState();
100
+ }
101
+ ngOnDestroy() {
102
+ this.ngUnsubscribe.next();
103
+ this.ngUnsubscribe.complete();
104
+ }
105
+ getPageSize() {
106
+ return this.currentListParams?.rows ?? 10;
107
+ }
108
+ getRowIndex() {
109
+ return this.currentListParams?.first ?? 0;
110
+ }
111
+ getSortField() {
112
+ const field = this.currentListParams?.sortField ?? undefined;
113
+ return Array.isArray(field) ? field[0] : field;
114
+ }
115
+ getSortOrder() {
116
+ return this.currentListParams?.sortOrder ?? 1;
117
+ }
118
+ /**
119
+ * Faz requisição paginada/ordenada para listar os títulos, monta o formulário
120
+ * reativo para cada linha e trata erros de backend exibindo mensagem ao usuário.
121
+ *
122
+ * @param event parâmetros de paginação, ordenação e filtros vindos do PrimeNG.
123
+ */
124
+ updateGrid(event) {
125
+ this.componentLoading = true;
126
+ const rows = event.rows ?? 10;
127
+ const first = event.first ?? 0;
128
+ const field = event.sortField ?? undefined;
129
+ const sortOrder = event.sortOrder ?? undefined;
130
+ const page = rows > 0 ? first / rows : 0;
131
+ this.currentListParams = { ...event, rows, first };
132
+ const input = {
133
+ pageRequest: { offset: page, orderBy: this.getRecOrderBy(field, sortOrder), size: rows },
134
+ filter: this.options,
135
+ };
136
+ this.financialService
137
+ .listTitles(input)
138
+ .pipe(takeUntil(this.ngUnsubscribe), catchError((err) => {
139
+ this.componentLoading = false;
140
+ const detailMsg = err?.message || "agro.angular_components.error_loading_accounts_description";
141
+ this.addMessage("warn", "agro.angular_components.error_loading_accounts_title", detailMsg);
142
+ throw err;
143
+ }))
144
+ .subscribe((list) => {
145
+ this.gridData = list.titles || [];
146
+ this.createFormGroupForTitle();
147
+ this.gridTotalRecords = list.totalElements;
148
+ this.componentLoading = false;
149
+ this.synchronizeCheckboxAndEditableFieldState();
150
+ });
151
+ }
152
+ onSelectionChange(event) {
153
+ this.selected = event;
154
+ this.synchronizeCheckboxAndEditableFieldState();
155
+ this.selectionChange.emit(this.selected);
156
+ }
157
+ /**
158
+ * Quando um item é desmarcado, limpa o `valuePaid` correspondente
159
+ * tanto no modelo da linha quanto no {@link titlesForm}, sem disparar novos eventos.
160
+ *
161
+ * @param event evento de desmarcação emitido pelo PrimeNG.
162
+ */
163
+ onUnselect(event) {
164
+ const row = this.gridData.find((r) => r.id === event.data.id);
165
+ if (row) {
166
+ row.valuePaid = undefined;
167
+ // atualiza form control correspondente
168
+ const idx = this.gridData.findIndex((g) => g.id === row.id);
169
+ const ctrl = this.titlesForm.at(idx)?.get("valuePaid");
170
+ if (ctrl) {
171
+ ctrl.setValue(null, { emitEvent: false });
172
+ }
173
+ }
174
+ }
175
+ showDetails(rowData) {
176
+ this.selectedRow = rowData;
177
+ this.showSidebar = true;
178
+ }
179
+ closeDetails() {
180
+ this.showSidebar = false;
181
+ }
182
+ isLastColumn(index, columns) {
183
+ return index === columns.length - 1;
184
+ }
185
+ getStyleColumns(field) {
186
+ let styleClass = {};
187
+ switch (field) {
188
+ case "checkbox":
189
+ styleClass = { width: "50px" };
190
+ break;
191
+ case "title":
192
+ case "dueDate":
193
+ styleClass = { width: "150px" };
194
+ break;
195
+ case "type":
196
+ case "entryDate":
197
+ styleClass = { width: "120px" };
198
+ break;
199
+ default:
200
+ styleClass = { width: "198px" };
201
+ break;
202
+ }
203
+ return styleClass;
204
+ }
205
+ getProp(obj, col) {
206
+ if (!obj || !col?.path) {
207
+ return "-";
208
+ }
209
+ let separator = "";
210
+ let result = "";
211
+ for (const path of col.path) {
212
+ result += separator + AgroObjectUtils.getPropAndFormatValue(obj, path, col.type);
213
+ separator = " - ";
214
+ }
215
+ return result;
216
+ }
217
+ /**
218
+ * Reconstrói o {@link titlesForm} com base na {@link gridData} atual,
219
+ * preservando valores já informados em itens selecionados e registrando listeners de mudança.
220
+ */
221
+ createFormGroupForTitle() {
222
+ const titlesFormArray = this.form.get("titlesForm");
223
+ titlesFormArray.clear();
224
+ this.gridData.forEach((item) => {
225
+ const selectedItem = this.selected.find((sel) => sel.id === item.id);
226
+ const group = new FormGroup({
227
+ id: new FormControl(item.id ?? null, []),
228
+ valuePaid: new FormControl(selectedItem?.valuePaid ?? null, []),
229
+ });
230
+ this.subscribeToValuePaidChanges(group, item);
231
+ titlesFormArray.push(group);
232
+ });
233
+ }
234
+ /**
235
+ * Observa mudanças no campo `valuePaid` de uma linha.
236
+ * Atualiza o array {@link selected} quando o título está selecionado,
237
+ * aplica o limite do valor líquido (`netValue`) e evita loops de eventos usando
238
+ * `setValue` com `emitEvent: false`.
239
+ *
240
+ * @param formGroup grupo de formulário associado à linha da tabela.
241
+ * @param item título financeiro correspondente à linha.
242
+ */
243
+ subscribeToValuePaidChanges(formGroup, item) {
244
+ const valuePaidControl = formGroup.get("valuePaid");
245
+ if (!valuePaidControl) {
246
+ return;
247
+ }
248
+ valuePaidControl.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((rawValue) => {
249
+ const valuePaid = this.parseNumberSafe(rawValue);
250
+ const titleId = formGroup.get("id")?.value;
251
+ // atualiza selected se o título estiver selecionado
252
+ const selIndex = this.selected.findIndex((s) => s.id === titleId);
253
+ if (selIndex !== -1) {
254
+ // garante que valuePaid seja numérico ou undefined
255
+ this.selected[selIndex].valuePaid = valuePaid ?? undefined;
256
+ const net = Number(this.selected[selIndex]?.values?.netValue) || 0;
257
+ if (valuePaid !== null && valuePaid > net) {
258
+ this.selected[selIndex].valuePaid = net;
259
+ // Usado para evitar loop infinito de eventos
260
+ valuePaidControl.setValue(net, { emitEvent: false });
261
+ }
262
+ // atualiza flag de erro
263
+ this.selected[selIndex].hasError = valuePaidControl.invalid;
264
+ // emite mudança de seleção
265
+ this.selectionChange.emit(this.selected);
266
+ }
267
+ else {
268
+ // se não estiver selecionado, apenas aplica limite local baseado no item
269
+ const net = Number(item?.values?.netValue) || 0;
270
+ if (valuePaid !== null && valuePaid > net) {
271
+ valuePaidControl.setValue(net, { emitEvent: false });
272
+ }
273
+ }
274
+ });
275
+ }
276
+ parseNumberSafe(value) {
277
+ if (value === null || value === undefined || value === "") {
278
+ return null;
279
+ }
280
+ if (typeof value === "number") {
281
+ return value;
282
+ }
283
+ if (typeof value === "string") {
284
+ const cleaned = value.replace(/\./g, "").replace(",", ".");
285
+ const n = parseFloat(cleaned);
286
+ return isNaN(n) ? null : n;
287
+ }
288
+ return null;
289
+ }
290
+ /**
291
+ * Inicia o modo de edição na linha da tabela PrimeNG e aplica regras de validação
292
+ * no formulário reativo correspondente àquela linha.
293
+ *
294
+ * @param row objeto de linha recebido da tabela.
295
+ */
296
+ initRowEdit(row) {
297
+ if (this.table) {
298
+ this.table.initRowEdit(row);
299
+ this.applyValidationToRowEdit(row);
300
+ }
301
+ }
302
+ /**
303
+ * Adiciona validadores dinamicamente ao campo `valuePaid` da linha em edição,
304
+ * marca o controle como sujo e força revalidação imediata para exibir erros na tela.
305
+ *
306
+ * @param row objeto de linha para aplicar validação.
307
+ */
308
+ applyValidationToRowEdit(row) {
309
+ const rowIndex = this.gridData.findIndex((r) => r.id === row.id);
310
+ const formGroup = this.titlesForm.at(rowIndex);
311
+ if (!formGroup) {
312
+ return;
313
+ }
314
+ const valuePaidControl = formGroup.get("valuePaid");
315
+ valuePaidControl?.setValidators([this.getValidatorsForRowEdit(), Validators.required]);
316
+ valuePaidControl?.markAsDirty();
317
+ valuePaidControl?.updateValueAndValidity();
318
+ }
319
+ /**
320
+ * Constrói o {@link ValidatorFn} que valida o `valuePaid`:
321
+ * - deve ser maior que zero;
322
+ * - não pode ultrapassar o valor líquido (`netValue`) do título.
323
+ *
324
+ * Retorna os erros consumidos pelo componente `s-control-errors`.
325
+ */
326
+ getValidatorsForRowEdit() {
327
+ return (control) => {
328
+ const parent = control.parent;
329
+ const titleId = parent?.get("id")?.value;
330
+ const rawValue = control.value;
331
+ const valuePaid = this.parseNumberSafe(rawValue);
332
+ if (valuePaid === null || valuePaid === undefined) {
333
+ return null;
334
+ }
335
+ if (valuePaid <= AGRO_NUMBERS.ZERO) {
336
+ return { lessThanZero: true };
337
+ }
338
+ // procura pelo título no selected ou no gridData (prioriza selected)
339
+ const selectedRow = this.selected.find((sel) => sel.id === titleId) || this.gridData.find((g) => g.id === titleId);
340
+ const netValue = Number(selectedRow?.values?.netValue) || 0;
341
+ if (valuePaid > netValue) {
342
+ return { greatherThanAllowed: true };
343
+ }
344
+ return null;
345
+ };
346
+ }
347
+ cancelRowEdit(row) {
348
+ if (this.table) {
349
+ this.table.cancelRowEdit(row);
350
+ }
351
+ }
352
+ /**
353
+ * Mantém o estado visual da tabela (checkbox marcado e linha editável) em
354
+ * sincronia com o array de títulos selecionados, inclusive restaurando valores
355
+ * digitados ao recarregar, ordenar ou paginar a grid.
356
+ */
357
+ synchronizeCheckboxAndEditableFieldState() {
358
+ if (!this.gridData || !this.tableInitialized) {
359
+ return;
360
+ }
361
+ this.gridData.forEach((row, index) => {
362
+ const selectedRow = this.selected.find((sel) => sel.id === row.id);
363
+ const ctrl = this.titlesForm.at(index)?.get("valuePaid");
364
+ if (selectedRow) {
365
+ // Sincroniza o valor pago do item selecionado
366
+ row.valuePaid = selectedRow.valuePaid;
367
+ if (ctrl) {
368
+ ctrl.setValue(selectedRow.valuePaid, { emitEvent: false });
369
+ }
370
+ this.initRowEdit(row);
371
+ }
372
+ else {
373
+ // Cancela a edição se não estiver selecionado
374
+ if (ctrl) {
375
+ ctrl.setValue(null, { emitEvent: false });
376
+ }
377
+ this.cancelRowEdit(row);
378
+ }
379
+ });
380
+ }
381
+ getFields(field, header, path, type, fieldOrderBy) {
382
+ return { field, path, type, header: this.translate.instant(header), orderBy: fieldOrderBy };
383
+ }
384
+ addMessage(severity, summary, detail, sticky = false, life = 7000) {
385
+ this.messageService.add({
386
+ severity,
387
+ sticky,
388
+ life,
389
+ summary: this.translate.instant(summary),
390
+ detail: this.translate.instant(detail),
391
+ });
392
+ }
393
+ getRecOrderBy(field, order) {
394
+ if (!field || Array.isArray(field)) {
395
+ return undefined;
396
+ }
397
+ const gridColumnField = this.gridColumns.find((col) => col.field === field);
398
+ if (gridColumnField?.orderBy === null) {
399
+ return undefined;
400
+ }
401
+ return {
402
+ field: gridColumnField?.orderBy ?? TitleFieldsOrderBy.NUMBER_TITLE,
403
+ order: order === -1 ? OrderByType.DESC : OrderByType.ASC,
404
+ };
405
+ }
406
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FinancialTitleTableComponent, deps: [{ token: i1.LibTranslationService }, { token: i2.AgroFinancialService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component });
407
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FinancialTitleTableComponent, selector: "s-financial-title-table", inputs: { options: "options", selected: "selected" }, outputs: { selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["TitleTable"], descendants: true }], ngImport: i0, template: "<ng-container *sLoadingState=\"componentLoading\">\r\n <div [hidden]=\"gridData.length > 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-inbox\"\r\n title=\"{{ 'agro.angular_components.no_accounts_found_title' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.no_accounts_found_description' | libTranslate }}\"\r\n ></s-empty-state>\r\n </div>\r\n <p-table\r\n #TitleTable\r\n [hidden]=\"gridData.length === 0\"\r\n [value]=\"gridData\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [paginator]=\"true\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [sortField]=\"getSortField()\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [rows]=\"getPageSize()\"\r\n [lazyLoadOnInit]=\"false\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n (onLazyLoad)=\"updateGrid($event)\"\r\n [(selection)]=\"selected\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onRowUnselect)=\"onUnselect($event)\"\r\n sortMode=\"single\"\r\n [selectionMode]=\"'multiple'\"\r\n editMode=\"row\"\r\n [scrollable]=\"true\"\r\n frozenWidth=\"160px\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th class=\"table-checkbox-header\" scope=\"col\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <ng-container *ngIf=\"col.orderBy; else notSortable\">\r\n <th [pSortableColumn]=\"col.field\" [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </th>\r\n </ng-container>\r\n <ng-template #notSortable>\r\n <th [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n </th>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenheader\">\r\n <tr>\r\n <th scope=\"col\" pFrozenColumn>\r\n {{ 'agro.angular_components.details' | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowData\r\n let-columns=\"columns\"\r\n let-rowIndex=\"rowIndex\"\r\n let-editing=\"editing\"\r\n let-ri=\"rowIndex\"\r\n >\r\n <tr [pEditableRow]=\"rowData\" [formGroup]=\"$any(titlesForm.at(rowIndex))\">\r\n <td class=\"table-checkbox-header\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n <p-cellEditor>\r\n <ng-template pTemplate=\"input\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n <input\r\n pInputText\r\n sNumberInput\r\n class=\"w-full\"\r\n id=\"valuePaid-input-{{ rowData.id || rowIndex }}\"\r\n decimalSeparator=\",\"\r\n thousandsSeparator=\".\"\r\n formControlName=\"valuePaid\"\r\n type=\"text\"\r\n [scale]=\"2\"\r\n [allowNegative]=\"false\"\r\n [attr.aria-label]=\"'agro.angular_components.value_paid' | libTranslate\"\r\n />\r\n <br />\r\n <s-control-errors\r\n [control]=\"$any(titlesForm.at(rowIndex)).get('valuePaid')\"\r\n [errorMessages]=\"errorMessage\"\r\n >\r\n </s-control-errors>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template pTemplate=\"output\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n {{ rowData['valuePaid'] || 0 | currency: 'BRL':'symbol':'1.2-2':'pt-BR' }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </p-cellEditor>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenbody\" let-rowData let-columns>\r\n <tr [pEditableRow]=\"rowData\">\r\n <td pFrozenColumn>\r\n <s-button\r\n id=\"details-{{ rowData.id }}\"\r\n (click)=\"showDetails(rowData)\"\r\n (keydown.enter)=\"showDetails(rowData)\"\r\n label=\"{{ 'agro.angular_components.details' | libTranslate }}\"\r\n [priority]=\"'default'\"\r\n [disabled]=\"false\"\r\n [auxiliary]=\"true\"\r\n [size]=\"'small'\"\r\n iconClass=\"fa fa-rocket\"\r\n ></s-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</ng-container>\r\n<s-sidebar\r\n [(visible)]=\"showSidebar\"\r\n position=\"right\"\r\n [header]=\"('agro.angular_components.account_details' | libTranslate) + ' ' + (selectedRow?.numberTitle || '')\"\r\n>\r\n <div class=\"ui-fluid\">\r\n <div class=\"ui-g\">\r\n <ng-container *ngFor=\"let field of sidebarFields\">\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ field.header }}</strong>\r\n </span>\r\n <p>{{ getProp(selectedRow, field) || '-' }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-template #noValue>-</ng-template>\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ 'agro.angular_components.status_label' | libTranslate }}</strong>\r\n </span>\r\n <p>\r\n <ng-container [ngSwitch]=\"selectedRow?.status\">\r\n <span *ngSwitchCase=\"'OPEN'\">\r\n <s-badge\r\n [color]=\"'yellow'\"\r\n text=\"{{ 'agro.angular_components.status_open' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n <span *ngSwitchCase=\"'PAID'\">\r\n <s-badge\r\n [color]=\"'green'\"\r\n text=\"{{ 'agro.angular_components.status_paid' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <s-footer>\r\n <s-button label=\"{{ 'agro.angular_components.close' | libTranslate }}\" (onClick)=\"closeDetails()\"> </s-button>\r\n </s-footer>\r\n</s-sidebar>\r\n", styles: [".error-message{color:#c13018;margin-top:5px;font-size:12px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i5.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: i6.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i6.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "component", type: i6.CellEditor, selector: "p-cellEditor" }, { kind: "component", type: i6.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i6.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i6.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i6.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "component", type: i7.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign", "enableTruncateText"], outputs: ["selected"] }, { kind: "component", type: i8.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i9.SidebarComponent, selector: "s-sidebar", inputs: ["visible", "closable", "dismissible", "closeOnEscape", "header", "largeSized", "cache", "registerConfirmClose"], outputs: ["visibleChange"] }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.LoadingStateDirective, selector: "[sLoadingState]", inputs: ["sLoadingState"] }, { kind: "directive", type: i12.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "component", type: i13.FooterComponent, selector: "s-footer" }, { kind: "directive", type: i14.NumberInputDirective, selector: "input[sNumberInput]", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "placeholder"], outputs: ["pasteRejected"] }, { kind: "component", type: i15.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i16.LibTranslatePipe, name: "libTranslate" }] });
408
+ }
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FinancialTitleTableComponent, decorators: [{
410
+ type: Component,
411
+ args: [{ selector: "s-financial-title-table", template: "<ng-container *sLoadingState=\"componentLoading\">\r\n <div [hidden]=\"gridData.length > 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-inbox\"\r\n title=\"{{ 'agro.angular_components.no_accounts_found_title' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.no_accounts_found_description' | libTranslate }}\"\r\n ></s-empty-state>\r\n </div>\r\n <p-table\r\n #TitleTable\r\n [hidden]=\"gridData.length === 0\"\r\n [value]=\"gridData\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [paginator]=\"true\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [sortField]=\"getSortField()\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [rows]=\"getPageSize()\"\r\n [lazyLoadOnInit]=\"false\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n (onLazyLoad)=\"updateGrid($event)\"\r\n [(selection)]=\"selected\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (onRowUnselect)=\"onUnselect($event)\"\r\n sortMode=\"single\"\r\n [selectionMode]=\"'multiple'\"\r\n editMode=\"row\"\r\n [scrollable]=\"true\"\r\n frozenWidth=\"160px\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th class=\"table-checkbox-header\" scope=\"col\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <ng-container *ngIf=\"col.orderBy; else notSortable\">\r\n <th [pSortableColumn]=\"col.field\" [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </th>\r\n </ng-container>\r\n <ng-template #notSortable>\r\n <th [scope]=\"'col'\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n {{ col.header }}\r\n </th>\r\n </ng-template>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenheader\">\r\n <tr>\r\n <th scope=\"col\" pFrozenColumn>\r\n {{ 'agro.angular_components.details' | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowData\r\n let-columns=\"columns\"\r\n let-rowIndex=\"rowIndex\"\r\n let-editing=\"editing\"\r\n let-ri=\"rowIndex\"\r\n >\r\n <tr [pEditableRow]=\"rowData\" [formGroup]=\"$any(titlesForm.at(rowIndex))\">\r\n <td class=\"table-checkbox-header\" [ngStyle]=\"getStyleColumns('checkbox')\">\r\n <p-tableCheckbox [value]=\"rowData\"></p-tableCheckbox>\r\n </td>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngStyle]=\"getStyleColumns(col.field)\">\r\n <p-cellEditor>\r\n <ng-template pTemplate=\"input\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n <input\r\n pInputText\r\n sNumberInput\r\n class=\"w-full\"\r\n id=\"valuePaid-input-{{ rowData.id || rowIndex }}\"\r\n decimalSeparator=\",\"\r\n thousandsSeparator=\".\"\r\n formControlName=\"valuePaid\"\r\n type=\"text\"\r\n [scale]=\"2\"\r\n [allowNegative]=\"false\"\r\n [attr.aria-label]=\"'agro.angular_components.value_paid' | libTranslate\"\r\n />\r\n <br />\r\n <s-control-errors\r\n [control]=\"$any(titlesForm.at(rowIndex)).get('valuePaid')\"\r\n [errorMessages]=\"errorMessage\"\r\n >\r\n </s-control-errors>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template pTemplate=\"output\">\r\n <ng-container [ngSwitch]=\"col.field\">\r\n <ng-container *ngSwitchCase=\"'valuePaid'\">\r\n {{ rowData['valuePaid'] || 0 | currency: 'BRL':'symbol':'1.2-2':'pt-BR' }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ getProp(rowData, col) }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </p-cellEditor>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"frozenbody\" let-rowData let-columns>\r\n <tr [pEditableRow]=\"rowData\">\r\n <td pFrozenColumn>\r\n <s-button\r\n id=\"details-{{ rowData.id }}\"\r\n (click)=\"showDetails(rowData)\"\r\n (keydown.enter)=\"showDetails(rowData)\"\r\n label=\"{{ 'agro.angular_components.details' | libTranslate }}\"\r\n [priority]=\"'default'\"\r\n [disabled]=\"false\"\r\n [auxiliary]=\"true\"\r\n [size]=\"'small'\"\r\n iconClass=\"fa fa-rocket\"\r\n ></s-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</ng-container>\r\n<s-sidebar\r\n [(visible)]=\"showSidebar\"\r\n position=\"right\"\r\n [header]=\"('agro.angular_components.account_details' | libTranslate) + ' ' + (selectedRow?.numberTitle || '')\"\r\n>\r\n <div class=\"ui-fluid\">\r\n <div class=\"ui-g\">\r\n <ng-container *ngFor=\"let field of sidebarFields\">\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ field.header }}</strong>\r\n </span>\r\n <p>{{ getProp(selectedRow, field) || '-' }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-template #noValue>-</ng-template>\r\n <div class=\"ui-g-4\">\r\n <span>\r\n <strong>{{ 'agro.angular_components.status_label' | libTranslate }}</strong>\r\n </span>\r\n <p>\r\n <ng-container [ngSwitch]=\"selectedRow?.status\">\r\n <span *ngSwitchCase=\"'OPEN'\">\r\n <s-badge\r\n [color]=\"'yellow'\"\r\n text=\"{{ 'agro.angular_components.status_open' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n <span *ngSwitchCase=\"'PAID'\">\r\n <s-badge\r\n [color]=\"'green'\"\r\n text=\"{{ 'agro.angular_components.status_paid' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n ></s-badge>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n <s-footer>\r\n <s-button label=\"{{ 'agro.angular_components.close' | libTranslate }}\" (onClick)=\"closeDetails()\"> </s-button>\r\n </s-footer>\r\n</s-sidebar>\r\n", styles: [".error-message{color:#c13018;margin-top:5px;font-size:12px}\n"] }]
412
+ }], ctorParameters: () => [{ type: i1.LibTranslationService }, { type: i2.AgroFinancialService }, { type: i3.MessageService }], propDecorators: { table: [{
413
+ type: ViewChild,
414
+ args: ["TitleTable"]
415
+ }], options: [{
416
+ type: Input
417
+ }], selected: [{
418
+ type: Input
419
+ }], selectionChange: [{
420
+ type: Output
421
+ }] } });
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXRpdGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jb21wb25lbnRzL2ZpbmFuY2lhbC10aXRsZS10YWJsZS9maW5hbmNpYWwtdGl0bGUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbXBvbmVudHMvZmluYW5jaWFsLXRpdGxlLXRhYmxlL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0csT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUkzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCN0UsTUFBTSxPQUFPLDRCQUE0QjtJQWtDaEI7SUFDQTtJQUNBO0lBbkNJLEtBQUssQ0FBUztJQUU5QixPQUFPLENBQXlCO0lBQ2hDLFFBQVEsR0FBNEIsRUFBRSxDQUFDO0lBQ3RDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRXRELFFBQVEsR0FBNEIsRUFBRSxDQUFDO0lBQ3ZDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUVyQixZQUFZLEdBQVEsRUFBRSxDQUFDO0lBRXZCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFdBQVcsR0FBMEIsSUFBSSxDQUFDO0lBRTFDLFdBQVcsR0FBbUIsRUFBRSxDQUFDO0lBQ2pDLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFFMUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBR3pCLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztRQUNqQixVQUFVLEVBQUUsSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztLQUNwQyxDQUFDLENBQUM7SUFFSyxpQkFBaUIsR0FBdUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM3RyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVsRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBYyxDQUFDO0lBQ3BELENBQUM7SUFFRCxZQUNxQixTQUFnQyxFQUNoQyxnQkFBc0MsRUFDdEMsY0FBOEI7UUFGOUIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtRQUN0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFL0Msa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUM7WUFDMUUsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtEQUFrRCxDQUFDO1lBQ3hGLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLG9EQUFvRCxDQUFDO1NBQ3BHLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7WUFDcEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQzNHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLCtCQUErQixFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztZQUNsSCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7WUFDL0csSUFBSSxDQUFDLFNBQVMsQ0FDVixhQUFhLEVBQ2Isd0NBQXdDLEVBQ3hDLENBQUMsc0JBQXNCLENBQUMsRUFDeEIsT0FBTyxFQUNQLGtCQUFrQixDQUFDLGNBQWMsQ0FDcEM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUNWLFdBQVcsRUFDWCxvQ0FBb0MsRUFDcEMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNwQixPQUFPLEVBQ1Asa0JBQWtCLENBQUMsVUFBVSxDQUNoQztZQUNELElBQUksQ0FBQyxTQUFTLENBQ1YsVUFBVSxFQUNWLG1DQUFtQyxFQUNuQyxDQUFDLGlCQUFpQixDQUFDLEVBQ25CLE9BQU8sRUFDUCxrQkFBa0IsQ0FBQyxTQUFTLENBQy9CO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1NBQ3BHLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7WUFDN0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztZQUN6RyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQ2pILEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxvQ0FBb0MsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztZQUMxRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxvQ0FBb0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztZQUN0RyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxzQ0FBc0MsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztZQUM1RyxJQUFJLENBQUMsU0FBUyxDQUNWLGlCQUFpQixFQUNqQiwwQ0FBMEMsRUFDMUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUNsQyxPQUFPLEVBQ1AsSUFBSSxDQUNQO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FDVixpQkFBaUIsRUFDakIsMENBQTBDLEVBQzFDLENBQUMsMkJBQTJCLENBQUMsRUFDN0IsT0FBTyxFQUNQLElBQUksQ0FDUDtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLHdDQUF3QyxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ2xILElBQUksQ0FBQyxTQUFTLENBQ1Ysb0JBQW9CLEVBQ3BCLDhDQUE4QyxFQUM5QyxDQUFDLDJCQUEyQixDQUFDLEVBQzdCLE9BQU8sRUFDUCxJQUFJLENBQ1A7WUFDRCxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEUsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFlBQVk7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUM3RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25ELENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsS0FBeUI7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBRW5ELE1BQU0sS0FBSyxHQUEyQjtZQUNsQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3hGLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN2QixDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQjthQUNoQixVQUFVLENBQUMsS0FBSyxDQUFDO2FBQ2pCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixVQUFVLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxPQUFPLElBQUksNERBQTRELENBQUM7WUFDL0YsSUFBSSxDQUFDLFVBQVUsQ0FDWCxNQUFNLEVBQ04sc0RBQXNELEVBQ3RELFNBQVMsQ0FDWixDQUFDO1lBQ0YsTUFBTSxHQUFHLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxDQUFDLElBQWdDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBRWxDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBRS9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsd0NBQXdDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEtBQVU7UUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDMUIsdUNBQXVDO1lBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsT0FBYztRQUN0QyxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDekIsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDWixLQUFLLFVBQVU7Z0JBQ1gsVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMvQixNQUFNO1lBQ1YsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFNBQVM7Z0JBQ1YsVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxNQUFNO1lBQ1YsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFdBQVc7Z0JBQ1osVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxNQUFNO1lBQ1Y7Z0JBQ0ksVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxNQUFNO1FBQ2QsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBUSxFQUFFLEdBQVE7UUFDdEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyQixPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pGLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSyx1QkFBdUI7UUFDM0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFjLENBQUM7UUFDakUsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDO2dCQUN4QixFQUFFLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxTQUFTLEVBQUUsSUFBSSxXQUFXLENBQUMsWUFBWSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO2FBQ2xFLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLDJCQUEyQixDQUFDLFNBQW9CLEVBQUUsSUFBMkI7UUFDakYsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUUzQyxvREFBb0Q7WUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7WUFDbEUsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsbURBQW1EO2dCQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDO2dCQUUzRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7b0JBQ3hDLDZDQUE2QztvQkFDN0MsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUVELHdCQUF3QjtnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2dCQUM1RCwyQkFBMkI7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0oseUVBQXlFO2dCQUN6RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ3hDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDekQsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBVTtRQUM5QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxXQUFXLENBQUMsR0FBUTtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssd0JBQXdCLENBQUMsR0FBUTtRQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEQsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdkYsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDaEMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssdUJBQXVCO1FBQzNCLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDaEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQW1CLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2hELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxJQUFJLFNBQVMsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbEMsQ0FBQztZQUNELHFFQUFxRTtZQUNyRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNuSCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUQsSUFBSSxTQUFTLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFRO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssd0NBQXdDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0MsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXpELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2QsOENBQThDO2dCQUM5QyxHQUFHLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQy9ELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osOENBQThDO2dCQUM5QyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzlDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsSUFBYyxFQUFFLElBQVksRUFBRSxZQUF1QztRQUNsSCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRU8sVUFBVSxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLE1BQWMsRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQ3BCLFFBQVE7WUFDUixNQUFNO1lBQ04sSUFBSTtZQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUN6QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQW9DLEVBQUUsS0FBZ0M7UUFDeEYsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzVFLElBQUksZUFBZSxFQUFFLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTztZQUNILEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxJQUFJLGtCQUFrQixDQUFDLFlBQVk7WUFDbEUsS0FBSyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUc7U0FDM0QsQ0FBQztJQUNOLENBQUM7d0dBbGRRLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLDJRQ2xDekMsa3NSQXFMQTs7NEZEbkphLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSx5QkFBeUI7MEpBS1YsS0FBSztzQkFBN0IsU0FBUzt1QkFBQyxZQUFZO2dCQUVkLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcHRcIjtcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcclxuaW1wb3J0IHsgVGFibGUsIFRhYmxlTGF6eUxvYWRFdmVudCB9IGZyb20gXCJwcmltZW5nL3RhYmxlXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi8uLi9lbnVtc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmluYW5jaWFsVGl0bGVPcHRpb25zIH0gZnJvbSBcIi4vZmluYW5jaWFsLXRpdGxlLXRhYmxlLW9wdGlvbnMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFncm9GaW5hbmNpYWxTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvZmluYW5jaWFsL2Fncm8tZmluYW5jaWFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT3JkZXJCeVR5cGUsIFRpdGxlRmllbGRzT3JkZXJCeSB9IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9lbnVtc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRmluYW5jaWFsUXVlcnlEYXRhUmVzcG9uc2UsXHJcbiAgICBGaW5hbmNpYWxUaXRsZUxpc3REdG8sXHJcbiAgICBSZWNPcmRlckJ5LFxyXG4gICAgUmVjb3JkVGl0bGVEdG8sXHJcbiAgICBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0LFxyXG59IGZyb20gXCIuL3NlcnZpY2VzL2ZpbmFuY2lhbC9pbnRlZmFjZXNcIjtcclxuXHJcbmludGVyZmFjZSBDb2x1bW5Db25maWcge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nW107XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBvcmRlckJ5OiBUaXRsZUZpZWxkc09yZGVyQnkgfCBudWxsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInMtZmluYW5jaWFsLXRpdGxlLXRhYmxlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbmFuY2lhbC10aXRsZS10YWJsZS5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmluYW5jaWFsVGl0bGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoXCJUaXRsZVRhYmxlXCIpIHRhYmxlITogVGFibGU7XHJcblxyXG4gICAgQElucHV0KCkgb3B0aW9ucyE6IEZpbmFuY2lhbFRpdGxlT3B0aW9ucztcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkOiBGaW5hbmNpYWxUaXRsZUxpc3REdG9bXSA9IFtdO1xyXG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gICAgZ3JpZERhdGE6IEZpbmFuY2lhbFRpdGxlTGlzdER0b1tdID0gW107XHJcbiAgICBncmlkVG90YWxSZWNvcmRzID0gMDtcclxuXHJcbiAgICBlcnJvck1lc3NhZ2U6IGFueSA9IHt9O1xyXG5cclxuICAgIHRhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZFJvdzogUmVjb3JkVGl0bGVEdG8gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBncmlkQ29sdW1uczogQ29sdW1uQ29uZmlnW10gPSBbXTtcclxuICAgIHNpZGViYXJGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgdGl0bGVzRm9ybTogbmV3IEZvcm1BcnJheShbXSwgW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcHJpdmF0ZSBjdXJyZW50TGlzdFBhcmFtczogVGFibGVMYXp5TG9hZEV2ZW50ID0geyBmaXJzdDogMCwgcm93czogMTAsIHNvcnRGaWVsZDogbnVsbCwgc29ydE9yZGVyOiBudWxsLCBmaWx0ZXJzOiB7fSB9O1xyXG4gICAgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBnZXQgdGl0bGVzRm9ybSgpOiBGb3JtQXJyYXkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwidGl0bGVzRm9ybVwiKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IExpYlRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbmFuY2lhbFNlcnZpY2U6IEFncm9GaW5hbmNpYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUHQpO1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0ge1xyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgICAgICBsZXNzVGhhblplcm86IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9sZXNzX29yX2VxdWFsX3plcm9cIiksXHJcbiAgICAgICAgICAgIGdyZWF0aGVyVGhhbkFsbG93ZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9ncmVhdGVyX3RoYW5fYWxsb3dlZFwiKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBjb2x1bmFzIGRhIHRhYmVsYSBlIGNhbXBvcyBleGliaWRvcyBubyBzaWRlYmFyLFxyXG4gICAgICogZGVwb2lzIGRpc3BhcmEgYSBwcmltZWlyYSBidXNjYSBkZSB0w610dWxvcyBjb20gb3MgZmlsdHJvcyBpbmZvcm1hZG9zIGVtIHtAbGluayBvcHRpb25zfS5cclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0aXRsZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnRpdGxlXCIsIFtcIm51bWJlclRpdGxlXCJdLCBcIlN0cmluZ1wiLCBUaXRsZUZpZWxkc09yZGVyQnkuTlVNQkVSX1RJVExFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ0eXBlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudHlwZVwiLCBbXCJ0aXRsZVR5cGUuY29kXCIsIFwidGl0bGVUeXBlLmRlc2NcIl0sIFwiU3RyaW5nXCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImVudHJ5RGF0ZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVudHJ5XCIsIFtcImlzc3VlRGF0ZVwiXSwgXCJEYXRlXCIsIFRpdGxlRmllbGRzT3JkZXJCeS5JU1NVRV9EQVRFKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJkdWVEYXRlXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZHVlX2RhdGVcIiwgW1wiZHVlRGF0ZVwiXSwgXCJEYXRlXCIsIFRpdGxlRmllbGRzT3JkZXJCeS5EVUVfREFURSksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZU9yaWdpblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcmlnaW5hbF92YWx1ZVwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm9yaWdpbmFsVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBcIk1vbmV5XCIsXHJcbiAgICAgICAgICAgICAgICBUaXRsZUZpZWxkc09yZGVyQnkuT1JJR0lOQUxfVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlT3BlblwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5vcGVuX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3BlblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk9QRU5fVkFMVUVcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXHJcbiAgICAgICAgICAgICAgICBcInZhbHVlTmV0XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX25ldFwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm5ldFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgVGl0bGVGaWVsZHNPcmRlckJ5Lk5FVF9WQUxVRVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlUGFpZFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX3RvX3BheVwiLCBbXCJ2YWx1ZVBhaWRcIl0sIFwiTW9uZXlcIiwgbnVsbCksXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNpZGViYXJGaWVsZHMgPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwiY29tcGFueVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIiwgW1wiY29tcGFueS5jb2RcIiwgXCJjb21wYW55LmRlc2NcIl0sIFwiU3RyaW5nXCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcImJyYW5jaFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmJyYW5jaFwiLCBbXCJicmFuY2guY29kXCIsIFwiYnJhbmNoLmRlc2NcIl0sIFwiU3RyaW5nXCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInByb2R1Y2VyXCIsIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMucHJvZHVjZXJcIiwgW1wicHJvZHVjZXIuY29kXCIsIFwicHJvZHVjZXIuZGVzY1wiXSwgXCJTdHJpbmdcIiwgbnVsbCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMuZmlsdGVyKChjb2wpID0+ICFbXCJ2YWx1ZVBhaWRcIiwgXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUZlZXNcIiwgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy52YWx1ZV9mZWVzXCIsIFtcInZhbHVlcy5pbnRlcmVzdFZhbHVlXCJdLCBcIk1vbmV5XCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcInZhbHVlRmluZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2ZpbmVcIiwgW1widmFsdWVzLmZpbmVWYWx1ZVwiXSwgXCJNb25leVwiLCBudWxsKSxcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHMoXCJ2YWx1ZUNoYXJnZVwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2NoYXJnZVwiLCBbXCJ2YWx1ZXMuY2hhcmdlVmFsdWVcIl0sIFwiTW9uZXlcIiwgbnVsbCksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFxyXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZUNvcnJlY3Rpb25cIixcclxuICAgICAgICAgICAgICAgIFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfY29ycmVjdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgW1widmFsdWVzLm1vbmV0YXJ5Q29ycmVjdGlvblZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVBZGRpdGlvbmFsXCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2FkZGl0aW9uYWxcIixcclxuICAgICAgICAgICAgICAgIFtcInZhbHVlcy5vdGhlckFkZGl0aW9uVmFsdWVcIl0sXHJcbiAgICAgICAgICAgICAgICBcIk1vbmV5XCIsXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmllbGRzKFwidmFsdWVEaXNjb3VudFwiLCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX2Rpc2NvdW50XCIsIFtcInZhbHVlcy5kaXNjb3VudFZhbHVlXCJdLCBcIk1vbmV5XCIsIG51bGwpLFxyXG4gICAgICAgICAgICB0aGlzLmdldEZpZWxkcyhcclxuICAgICAgICAgICAgICAgIFwidmFsdWVPdGhlckRpc2NvdW50XCIsXHJcbiAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnZhbHVlX290aGVyX2Rpc2NvdW50XCIsXHJcbiAgICAgICAgICAgICAgICBbXCJ2YWx1ZXMub3RoZXJEaXNjb3VudFZhbHVlXCJdLFxyXG4gICAgICAgICAgICAgICAgXCJNb25leVwiLFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAuLi50aGlzLmdyaWRDb2x1bW5zLmZpbHRlcigoY29sKSA9PiBbXCJ2YWx1ZU5ldFwiXS5pbmNsdWRlcyhjb2wuZmllbGQpKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmN1cnJlbnRMaXN0UGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFww7NzIGEgcmVuZGVyaXphw6fDo28gZGEgdGFiZWxhLCBzaW5jcm9uaXphIG8gZXN0YWRvIGRlIGNoZWNrYm94L2xpbmhhIGVkaXTDoXZlbFxyXG4gICAgICogY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zIHBhcmEgZXZpdGFyIGFjZXNzbyBhIHJlZmVyw6puY2lhcyBhaW5kYSBuw6NvIGNyaWFkYXMuXHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnRhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFnZVNpemUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LnJvd3MgPz8gMTA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um93SW5kZXgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXM/LmZpcnN0ID8/IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U29ydEZpZWxkKCkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uc29ydEZpZWxkID8/IHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaWVsZCkgPyBmaWVsZFswXSA6IGZpZWxkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNvcnRPcmRlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TGlzdFBhcmFtcz8uc29ydE9yZGVyID8/IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGYXogcmVxdWlzacOnw6NvIHBhZ2luYWRhL29yZGVuYWRhIHBhcmEgbGlzdGFyIG9zIHTDrXR1bG9zLCBtb250YSBvIGZvcm11bMOhcmlvXHJcbiAgICAgKiByZWF0aXZvIHBhcmEgY2FkYSBsaW5oYSBlIHRyYXRhIGVycm9zIGRlIGJhY2tlbmQgZXhpYmluZG8gbWVuc2FnZW0gYW8gdXN1w6FyaW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IHBhcsOibWV0cm9zIGRlIHBhZ2luYcOnw6NvLCBvcmRlbmHDp8OjbyBlIGZpbHRyb3MgdmluZG9zIGRvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUdyaWQoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgcm93cyA9IGV2ZW50LnJvd3MgPz8gMTA7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBldmVudC5maXJzdCA/PyAwO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gZXZlbnQuc29ydEZpZWxkID8/IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBzb3J0T3JkZXIgPSBldmVudC5zb3J0T3JkZXIgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IHBhZ2UgPSByb3dzID4gMCA/IGZpcnN0IC8gcm93cyA6IDA7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4uZXZlbnQsIHJvd3MsIGZpcnN0IH07XHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0OiBSZXF1ZXN0TGlzdFRpdGxlc0lucHV0ID0ge1xyXG4gICAgICAgICAgICBwYWdlUmVxdWVzdDogeyBvZmZzZXQ6IHBhZ2UsIG9yZGVyQnk6IHRoaXMuZ2V0UmVjT3JkZXJCeShmaWVsZCwgc29ydE9yZGVyKSwgc2l6ZTogcm93cyB9LFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHRoaXMub3B0aW9ucyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmZpbmFuY2lhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3RUaXRsZXMoaW5wdXQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldGFpbE1zZyA9IGVycj8ubWVzc2FnZSB8fCBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xvYWRpbmdfYWNjb3VudHNfZGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2FyblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX2xvYWRpbmdfYWNjb3VudHNfdGl0bGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsTXNnXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3Q6IEZpbmFuY2lhbFF1ZXJ5RGF0YVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gbGlzdC50aXRsZXMgfHwgW107XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXBGb3JUaXRsZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUNoZWNrYm94QW5kRWRpdGFibGVGaWVsZFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1YW5kbyB1bSBpdGVtIMOpIGRlc21hcmNhZG8sIGxpbXBhIG8gYHZhbHVlUGFpZGAgY29ycmVzcG9uZGVudGVcclxuICAgICAqIHRhbnRvIG5vIG1vZGVsbyBkYSBsaW5oYSBxdWFudG8gbm8ge0BsaW5rIHRpdGxlc0Zvcm19LCBzZW0gZGlzcGFyYXIgbm92b3MgZXZlbnRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgZXZlbnRvIGRlIGRlc21hcmNhw6fDo28gZW1pdGlkbyBwZWxvIFByaW1lTkcuXHJcbiAgICAgKi9cclxuICAgIG9uVW5zZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ3JpZERhdGEuZmluZCgocikgPT4gci5pZCA9PT0gZXZlbnQuZGF0YS5pZCk7XHJcbiAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICByb3cudmFsdWVQYWlkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAvLyBhdHVhbGl6YSBmb3JtIGNvbnRyb2wgY29ycmVzcG9uZGVudGVcclxuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5ncmlkRGF0YS5maW5kSW5kZXgoKGcpID0+IGcuaWQgPT09IHJvdy5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnRpdGxlc0Zvcm0uYXQoaWR4KT8uZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgICAgICBpZiAoY3RybCkge1xyXG4gICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0RldGFpbHMocm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IHJvd0RhdGE7XHJcbiAgICAgICAgdGhpcy5zaG93U2lkZWJhciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xhc3RDb2x1bW4oaW5kZXg6IG51bWJlciwgY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHlsZUNvbHVtbnMoZmllbGQ6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgbGV0IHN0eWxlQ2xhc3MgPSB7fTtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRpdGxlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkdWVEYXRlXCI6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxNTBweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInR5cGVcIjpcclxuICAgICAgICAgICAgY2FzZSBcImVudHJ5RGF0ZVwiOlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9IHsgd2lkdGg6IFwiMTIwcHhcIiB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0geyB3aWR0aDogXCIxOThweFwiIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvcChvYmo6IGFueSwgY29sOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICghb2JqIHx8ICFjb2w/LnBhdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VwYXJhdG9yID0gXCJcIjtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgY29sLnBhdGgpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvciArIEFncm9PYmplY3RVdGlscy5nZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqLCBwYXRoLCBjb2wudHlwZSk7XHJcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFwiIC0gXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjb25zdHLDs2kgbyB7QGxpbmsgdGl0bGVzRm9ybX0gY29tIGJhc2UgbmEge0BsaW5rIGdyaWREYXRhfSBhdHVhbCxcclxuICAgICAqIHByZXNlcnZhbmRvIHZhbG9yZXMgasOhIGluZm9ybWFkb3MgZW0gaXRlbnMgc2VsZWNpb25hZG9zIGUgcmVnaXN0cmFuZG8gbGlzdGVuZXJzIGRlIG11ZGFuw6dhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cEZvclRpdGxlKCkge1xyXG4gICAgICAgIGNvbnN0IHRpdGxlc0Zvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQoXCJ0aXRsZXNGb3JtXCIpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICB0aXRsZXNGb3JtQXJyYXkuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZC5maW5kKChzZWwpID0+IHNlbC5pZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVQYWlkOiBuZXcgRm9ybUNvbnRyb2woc2VsZWN0ZWRJdGVtPy52YWx1ZVBhaWQgPz8gbnVsbCwgW10pLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZ3JvdXAsIGl0ZW0pO1xyXG4gICAgICAgICAgICB0aXRsZXNGb3JtQXJyYXkucHVzaChncm91cCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPYnNlcnZhIG11ZGFuw6dhcyBubyBjYW1wbyBgdmFsdWVQYWlkYCBkZSB1bWEgbGluaGEuXHJcbiAgICAgKiBBdHVhbGl6YSBvIGFycmF5IHtAbGluayBzZWxlY3RlZH0gcXVhbmRvIG8gdMOtdHVsbyBlc3TDoSBzZWxlY2lvbmFkbyxcclxuICAgICAqIGFwbGljYSBvIGxpbWl0ZSBkbyB2YWxvciBsw61xdWlkbyAoYG5ldFZhbHVlYCkgZSBldml0YSBsb29wcyBkZSBldmVudG9zIHVzYW5kb1xyXG4gICAgICogYHNldFZhbHVlYCBjb20gYGVtaXRFdmVudDogZmFsc2VgLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXAgZ3J1cG8gZGUgZm9ybXVsw6FyaW8gYXNzb2NpYWRvIMOgIGxpbmhhIGRhIHRhYmVsYS5cclxuICAgICAqIEBwYXJhbSBpdGVtIHTDrXR1bG8gZmluYW5jZWlybyBjb3JyZXNwb25kZW50ZSDDoCBsaW5oYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZhbHVlUGFpZENoYW5nZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW06IEZpbmFuY2lhbFRpdGxlTGlzdER0bykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUGFpZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFwidmFsdWVQYWlkXCIpO1xyXG4gICAgICAgIGlmICghdmFsdWVQYWlkQ29udHJvbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbHVlUGFpZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmF3VmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVQYWlkID0gdGhpcy5wYXJzZU51bWJlclNhZmUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZUlkID0gZm9ybUdyb3VwLmdldChcImlkXCIpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIGF0dWFsaXphIHNlbGVjdGVkIHNlIG8gdMOtdHVsbyBlc3RpdmVyIHNlbGVjaW9uYWRvXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbEluZGV4ID0gdGhpcy5zZWxlY3RlZC5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBpZiAoc2VsSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBnYXJhbnRlIHF1ZSB2YWx1ZVBhaWQgc2VqYSBudW3DqXJpY28gb3UgdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS52YWx1ZVBhaWQgPSB2YWx1ZVBhaWQgPz8gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ldCA9IE51bWJlcih0aGlzLnNlbGVjdGVkW3NlbEluZGV4XT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFtzZWxJbmRleF0udmFsdWVQYWlkID0gbmV0O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzYWRvIHBhcmEgZXZpdGFyIGxvb3AgaW5maW5pdG8gZGUgZXZlbnRvc1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUGFpZENvbnRyb2wuc2V0VmFsdWUobmV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gYXR1YWxpemEgZmxhZyBkZSBlcnJvXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkW3NlbEluZGV4XS5oYXNFcnJvciA9IHZhbHVlUGFpZENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIC8vIGVtaXRlIG11ZGFuw6dhIGRlIHNlbGXDp8Ojb1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIHNlIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkbywgYXBlbmFzIGFwbGljYSBsaW1pdGUgbG9jYWwgYmFzZWFkbyBubyBpdGVtXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXQgPSBOdW1iZXIoaXRlbT8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgIT09IG51bGwgJiYgdmFsdWVQYWlkID4gbmV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQYWlkQ29udHJvbC5zZXRWYWx1ZShuZXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcGFyc2VOdW1iZXJTYWZlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xlYW5lZCA9IHZhbHVlLnJlcGxhY2UoL1xcLi9nLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KGNsZWFuZWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmljaWEgbyBtb2RvIGRlIGVkacOnw6NvIG5hIGxpbmhhIGRhIHRhYmVsYSBQcmltZU5HIGUgYXBsaWNhIHJlZ3JhcyBkZSB2YWxpZGHDp8Ojb1xyXG4gICAgICogbm8gZm9ybXVsw6FyaW8gcmVhdGl2byBjb3JyZXNwb25kZW50ZSDDoHF1ZWxhIGxpbmhhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHJlY2ViaWRvIGRhIHRhYmVsYS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbml0Um93RWRpdChyb3c6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGljaW9uYSB2YWxpZGFkb3JlcyBkaW5hbWljYW1lbnRlIGFvIGNhbXBvIGB2YWx1ZVBhaWRgIGRhIGxpbmhhIGVtIGVkacOnw6NvLFxyXG4gICAgICogbWFyY2EgbyBjb250cm9sZSBjb21vIHN1am8gZSBmb3LDp2EgcmV2YWxpZGHDp8OjbyBpbWVkaWF0YSBwYXJhIGV4aWJpciBlcnJvcyBuYSB0ZWxhLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByb3cgb2JqZXRvIGRlIGxpbmhhIHBhcmEgYXBsaWNhciB2YWxpZGHDp8Ojby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25Ub1Jvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ3JpZERhdGEuZmluZEluZGV4KChyKSA9PiByLmlkID09PSByb3cuaWQpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMudGl0bGVzRm9ybS5hdChyb3dJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGlmICghZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVQYWlkQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoXCJ2YWx1ZVBhaWRcIik7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbdGhpcy5nZXRWYWxpZGF0b3JzRm9yUm93RWRpdCgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdmFsdWVQYWlkQ29udHJvbD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB2YWx1ZVBhaWRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHLDs2kgbyB7QGxpbmsgVmFsaWRhdG9yRm59IHF1ZSB2YWxpZGEgbyBgdmFsdWVQYWlkYDpcclxuICAgICAqIC0gZGV2ZSBzZXIgbWFpb3IgcXVlIHplcm87XHJcbiAgICAgKiAtIG7Do28gcG9kZSB1bHRyYXBhc3NhciBvIHZhbG9yIGzDrXF1aWRvIChgbmV0VmFsdWVgKSBkbyB0w610dWxvLlxyXG4gICAgICpcclxuICAgICAqIFJldG9ybmEgb3MgZXJyb3MgY29uc3VtaWRvcyBwZWxvIGNvbXBvbmVudGUgYHMtY29udHJvbC1lcnJvcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhbGlkYXRvcnNGb3JSb3dFZGl0KCk6IFZhbGlkYXRvckZuIHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBjb250cm9sLnBhcmVudCBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlSWQgPSBwYXJlbnQ/LmdldChcImlkXCIpPy52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVBhaWQgPSB0aGlzLnBhcnNlTnVtYmVyU2FmZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPT09IG51bGwgfHwgdmFsdWVQYWlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVBhaWQgPD0gQUdST19OVU1CRVJTLlpFUk8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IGxlc3NUaGFuWmVybzogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHByb2N1cmEgcGVsbyB0w610dWxvIG5vIHNlbGVjdGVkIG91IG5vIGdyaWREYXRhIChwcmlvcml6YSBzZWxlY3RlZClcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSB0aXRsZUlkKSB8fCB0aGlzLmdyaWREYXRhLmZpbmQoKGcpID0+IGcuaWQgPT09IHRpdGxlSWQpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXRWYWx1ZSA9IE51bWJlcihzZWxlY3RlZFJvdz8udmFsdWVzPy5uZXRWYWx1ZSkgfHwgMDtcclxuICAgICAgICAgICAgaWYgKHZhbHVlUGFpZCA+IG5ldFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBncmVhdGhlclRoYW5BbGxvd2VkOiB0cnVlIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbmNlbFJvd0VkaXQocm93OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW50w6ltIG8gZXN0YWRvIHZpc3VhbCBkYSB0YWJlbGEgKGNoZWNrYm94IG1hcmNhZG8gZSBsaW5oYSBlZGl0w6F2ZWwpIGVtXHJcbiAgICAgKiBzaW5jcm9uaWEgY29tIG8gYXJyYXkgZGUgdMOtdHVsb3Mgc2VsZWNpb25hZG9zLCBpbmNsdXNpdmUgcmVzdGF1cmFuZG8gdmFsb3Jlc1xyXG4gICAgICogZGlnaXRhZG9zIGFvIHJlY2FycmVnYXIsIG9yZGVuYXIgb3UgcGFnaW5hciBhIGdyaWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3luY2hyb25pemVDaGVja2JveEFuZEVkaXRhYmxlRmllbGRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JpZERhdGEgfHwgIXRoaXMudGFibGVJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdyaWREYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3cgPSB0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbCkgPT4gc2VsLmlkID09PSByb3cuaWQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY3RybCA9IHRoaXMudGl0bGVzRm9ybS5hdChpbmRleCk/LmdldChcInZhbHVlUGFpZFwiKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFJvdykge1xyXG4gICAgICAgICAgICAgICAgLy8gU2luY3Jvbml6YSBvIHZhbG9yIHBhZ28gZG8gaXRlbSBzZWxlY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgcm93LnZhbHVlUGFpZCA9IHNlbGVjdGVkUm93LnZhbHVlUGFpZDtcclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShzZWxlY3RlZFJvdy52YWx1ZVBhaWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIENhbmNlbGEgYSBlZGnDp8OjbyBzZSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgICAgICAgICAgICAgIGlmIChjdHJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3RybC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbFJvd0VkaXQocm93KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RmllbGRzKGZpZWxkOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nLCBwYXRoOiBzdHJpbmdbXSwgdHlwZTogc3RyaW5nLCBmaWVsZE9yZGVyQnk6IFRpdGxlRmllbGRzT3JkZXJCeSB8IG51bGwpOiBDb2x1bW5Db25maWcge1xyXG4gICAgICAgIHJldHVybiB7IGZpZWxkLCBwYXRoLCB0eXBlLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaGVhZGVyKSwgb3JkZXJCeTogZmllbGRPcmRlckJ5IH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlKHNldmVyaXR5OiBzdHJpbmcsIHN1bW1hcnk6IHN0cmluZywgZGV0YWlsOiBzdHJpbmcsIHN0aWNreSA9IGZhbHNlLCBsaWZlID0gNzAwMCkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHksXHJcbiAgICAgICAgICAgIHN0aWNreSxcclxuICAgICAgICAgICAgbGlmZSxcclxuICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChzdW1tYXJ5KSxcclxuICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldGFpbCksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRSZWNPcmRlckJ5KGZpZWxkOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCwgb3JkZXI6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBSZWNPcmRlckJ5IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAoIWZpZWxkIHx8IEFycmF5LmlzQXJyYXkoZmllbGQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGdyaWRDb2x1bW5GaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wuZmllbGQgPT09IGZpZWxkKTtcclxuICAgICAgICBpZiAoZ3JpZENvbHVtbkZpZWxkPy5vcmRlckJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiBncmlkQ29sdW1uRmllbGQ/Lm9yZGVyQnkgPz8gVGl0bGVGaWVsZHNPcmRlckJ5Lk5VTUJFUl9USVRMRSxcclxuICAgICAgICAgICAgb3JkZXI6IG9yZGVyID09PSAtMSA/IE9yZGVyQnlUeXBlLkRFU0MgOiBPcmRlckJ5VHlwZS5BU0MsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpzTG9hZGluZ1N0YXRlPVwiY29tcG9uZW50TG9hZGluZ1wiPlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cImdyaWREYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8cy1lbXB0eS1zdGF0ZVxyXG4gICAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1pbmJveFwiXHJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm5vX2FjY291bnRzX2ZvdW5kX3RpdGxlJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgIFtzaG93UHJpbWFyeUFjdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm5vX2FjY291bnRzX2ZvdW5kX2Rlc2NyaXB0aW9uJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgPjwvcy1lbXB0eS1zdGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPHAtdGFibGVcclxuICAgICAgICAjVGl0bGVUYWJsZVxyXG4gICAgICAgIFtoaWRkZW5dPVwiZ3JpZERhdGEubGVuZ3RoID09PSAwXCJcclxuICAgICAgICBbdmFsdWVdPVwiZ3JpZERhdGFcIlxyXG4gICAgICAgIFtjb2x1bW5zXT1cImdyaWRDb2x1bW5zXCJcclxuICAgICAgICBkYXRhS2V5PVwiaWRcIlxyXG4gICAgICAgIFtsYXp5XT1cInRydWVcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJncmlkVG90YWxSZWNvcmRzXCJcclxuICAgICAgICBbc29ydEZpZWxkXT1cImdldFNvcnRGaWVsZCgpXCJcclxuICAgICAgICBbc29ydE9yZGVyXT1cImdldFNvcnRPcmRlcigpXCJcclxuICAgICAgICBbZmlyc3RdPVwiZ2V0Um93SW5kZXgoKVwiXHJcbiAgICAgICAgW3Jvd3NdPVwiZ2V0UGFnZVNpemUoKVwiXHJcbiAgICAgICAgW2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuICAgICAgICAob25MYXp5TG9hZCk9XCJ1cGRhdGVHcmlkKCRldmVudClcIlxyXG4gICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFwiXHJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAob25Sb3dVbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIHNvcnRNb2RlPVwic2luZ2xlXCJcclxuICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcclxuICAgICAgICBlZGl0TW9kZT1cInJvd1wiXHJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgZnJvemVuV2lkdGg9XCIxNjBweFwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0YWJsZS1jaGVja2JveC1oZWFkZXJcIiBzY29wZT1cImNvbFwiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ29sdW1ucygnY2hlY2tib3gnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLm9yZGVyQnk7IGVsc2Ugbm90U29ydGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sLmZpZWxkXCIgW3Njb3BlXT1cIidjb2wnXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDb2x1bW5zKGNvbC5maWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFtzY29wZV09XCInY29sJ1wiIFtuZ1N0eWxlXT1cImdldFN0eWxlQ29sdW1ucyhjb2wuZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZyb3plbmhlYWRlclwiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBwRnJvemVuQ29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5kZXRhaWxzJyB8IGxpYlRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgICAgICAgbGV0LXJvd0RhdGFcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gICAgICAgICAgICBsZXQtZWRpdGluZz1cImVkaXRpbmdcIlxyXG4gICAgICAgICAgICBsZXQtcmk9XCJyb3dJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJyb3dEYXRhXCIgW2Zvcm1Hcm91cF09XCIkYW55KHRpdGxlc0Zvcm0uYXQocm93SW5kZXgpKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtY2hlY2tib3gtaGVhZGVyXCIgW25nU3R5bGVdPVwiZ2V0U3R5bGVDb2x1bW5zKCdjaGVja2JveCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwicm93RGF0YVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIiBbbmdTdHlsZV09XCJnZXRTdHlsZUNvbHVtbnMoY29sLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sLmZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3ZhbHVlUGFpZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzTnVtYmVySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwidmFsdWVQYWlkLWlucHV0LXt7IHJvd0RhdGEuaWQgfHwgcm93SW5kZXggfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcj1cIixcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yPVwiLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVBhaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjYWxlXT1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93TmVnYXRpdmVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYWdyby5hbmd1bGFyX2NvbXBvbmVudHMudmFsdWVfcGFpZCcgfCBsaWJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtY29udHJvbC1lcnJvcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cIiRhbnkodGl0bGVzRm9ybS5hdChyb3dJbmRleCkpLmdldCgndmFsdWVQYWlkJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZXNdPVwiZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtY29udHJvbC1lcnJvcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRQcm9wKHJvd0RhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwib3V0cHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2wuZmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndmFsdWVQYWlkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dEYXRhWyd2YWx1ZVBhaWQnXSB8fCAwIHwgY3VycmVuY3k6ICdCUkwnOidzeW1ib2wnOicxLjItMic6J3B0LUJSJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0UHJvcChyb3dEYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZnJvemVuYm9keVwiIGxldC1yb3dEYXRhIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJyb3dEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkZXRhaWxzLXt7IHJvd0RhdGEuaWQgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0RldGFpbHMocm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzaG93RGV0YWlscyhyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmRldGFpbHMnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ByaW9yaXR5XT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXhpbGlhcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3M9XCJmYSBmYS1yb2NrZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3MtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRhYmxlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPHMtc2lkZWJhclxyXG4gICAgWyh2aXNpYmxlKV09XCJzaG93U2lkZWJhclwiXHJcbiAgICBwb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgIFtoZWFkZXJdPVwiKCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5hY2NvdW50X2RldGFpbHMnIHwgbGliVHJhbnNsYXRlKSArICcgJyArIChzZWxlY3RlZFJvdz8ubnVtYmVyVGl0bGUgfHwgJycpXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cInVpLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLWdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2lkZWJhckZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWctNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGZpZWxkLmhlYWRlciB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8cD57eyBnZXRQcm9wKHNlbGVjdGVkUm93LCBmaWVsZCkgfHwgJy0nIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVmFsdWU+LTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1nLTRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLnN0YXR1c19sYWJlbCcgfCBsaWJUcmFuc2xhdGUgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlbGVjdGVkUm93Py5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidPUEVOJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYmFkZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3llbGxvdydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuc3RhdHVzX29wZW4nIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInUEFJRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJhZGdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidncmVlbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuc3RhdHVzX3BhaWQnIHwgbGliVHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8cy1mb290ZXI+XHJcbiAgICAgICAgPHMtYnV0dG9uIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLmNsb3NlJyB8IGxpYlRyYW5zbGF0ZSB9fVwiIChvbkNsaWNrKT1cImNsb3NlRGV0YWlscygpXCI+IDwvcy1idXR0b24+XHJcbiAgICA8L3MtZm9vdGVyPlxyXG48L3Mtc2lkZWJhcj5cclxuIl19