@dsivd/prestations-ng 17.10.9 → 18.0.0-beta.10

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 (314) hide show
  1. package/CHANGELOG.md +2478 -2466
  2. package/CONTRIBUTING.md +66 -66
  3. package/ESLINT_MIGRATION_GUIDE.md +19 -33
  4. package/MODULES.md +88 -88
  5. package/MULTI_ETAPES.md +9 -9
  6. package/README.md +25 -24
  7. package/README_COMMON.md +10 -10
  8. package/UPGRADING_V12.md +36 -36
  9. package/UPGRADING_V13.md +3 -3
  10. package/UPGRADING_V14.md +2 -2
  11. package/UPGRADING_V15.md +4 -4
  12. package/UPGRADING_V16.md +38 -38
  13. package/UPGRADING_V17.md +51 -51
  14. package/UPGRADING_V18.md +596 -8
  15. package/UPGRADING_V8.md +5 -5
  16. package/abstract-page-component.d.ts +1 -1
  17. package/dsivd-prestations-ng-18.0.0-beta.10.tgz +0 -0
  18. package/fesm2022/dsivd-prestations-ng.mjs +903 -868
  19. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  20. package/foehn-checkables/foehn-checkable-group.component.d.ts +1 -1
  21. package/foehn-checkables/foehn-checkables.module.d.ts +6 -7
  22. package/foehn-date-picker/date-picker.helper.d.ts +1 -1
  23. package/foehn-icons/abstract-icon-component.d.ts +1 -1
  24. package/foehn-input/foehn-input-string.component.d.ts +1 -1
  25. package/foehn-input/foehn-input.component.d.ts +1 -1
  26. package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +1 -1
  27. package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
  28. package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
  29. package/foehn-navigation/abstract-foehn-navigation.component.d.ts +1 -1
  30. package/foehn-table/foehn-table.component.d.ts +1 -6
  31. package/foehn-upload/abstract-foehn-uploader.component.d.ts +1 -2
  32. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +1 -3
  33. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +1 -1
  34. package/index.d.ts +1 -1
  35. package/index.html +1 -1
  36. package/package.json +15 -17
  37. package/prestations-ng-core.module.d.ts +5 -4
  38. package/sdk-appinfo/application-info.service.d.ts +1 -0
  39. package/sdk-drafts/drafts.module.d.ts +7 -8
  40. package/sdk-support-alert/support-alert.module.d.ts +2 -3
  41. package/dsivd-prestations-ng-17.10.9.tgz +0 -0
  42. package/esm2022/abstract-page-component.mjs +0 -232
  43. package/esm2022/directives/currency-formatter.directive.mjs +0 -143
  44. package/esm2022/directives/formatter.module.mjs +0 -37
  45. package/esm2022/directives/iban-formatter.directive.mjs +0 -29
  46. package/esm2022/directives/ide-formatter.directive.mjs +0 -37
  47. package/esm2022/directives/ndc-formatter.directive.mjs +0 -75
  48. package/esm2022/dsivd-prestations-ng.mjs +0 -5
  49. package/esm2022/foehn-address/address.type.mjs +0 -10
  50. package/esm2022/foehn-address/foehn-address.module.mjs +0 -55
  51. package/esm2022/foehn-address/foehn-display-address.component.mjs +0 -69
  52. package/esm2022/foehn-address/foehn-input-address.component.mjs +0 -498
  53. package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +0 -66
  54. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +0 -56
  55. package/esm2022/foehn-agenda/calendar.type.mjs +0 -3
  56. package/esm2022/foehn-agenda/current-week.type.mjs +0 -4
  57. package/esm2022/foehn-agenda/day-slots.type.mjs +0 -3
  58. package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +0 -75
  59. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +0 -242
  60. package/esm2022/foehn-agenda/foehn-agenda.component.mjs +0 -95
  61. package/esm2022/foehn-agenda/foehn-agenda.module.mjs +0 -62
  62. package/esm2022/foehn-agenda/pagination-week.type.mjs +0 -3
  63. package/esm2022/foehn-agenda/selected-slot.type.mjs +0 -3
  64. package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +0 -684
  65. package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +0 -40
  66. package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +0 -28
  67. package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +0 -40
  68. package/esm2022/foehn-boolean/foehn-boolean.module.mjs +0 -33
  69. package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +0 -177
  70. package/esm2022/foehn-breadcrumb/breadcrumb.mjs +0 -5
  71. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +0 -106
  72. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +0 -20
  73. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +0 -291
  74. package/esm2022/foehn-checkables/foehn-checkables.module.mjs +0 -68
  75. package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +0 -37
  76. package/esm2022/foehn-checkables/foehn-radio.component.mjs +0 -64
  77. package/esm2022/foehn-checkables/foehn-select.component.mjs +0 -55
  78. package/esm2022/foehn-checkables/form-select-option-group.mjs +0 -3
  79. package/esm2022/foehn-checkables/form-select-option.mjs +0 -3
  80. package/esm2022/foehn-confirm-modal/foehn-confirm-modal-content.mjs +0 -7
  81. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +0 -40
  82. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +0 -19
  83. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +0 -53
  84. package/esm2022/foehn-date-picker/date-picker-navigation.helper.mjs +0 -168
  85. package/esm2022/foehn-date-picker/date-picker.helper.mjs +0 -132
  86. package/esm2022/foehn-date-picker/day-month.type.mjs +0 -3
  87. package/esm2022/foehn-date-picker/focused-day.type.mjs +0 -3
  88. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +0 -392
  89. package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +0 -40
  90. package/esm2022/foehn-date-picker/month-year.type.mjs +0 -3
  91. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +0 -97
  92. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +0 -36
  93. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +0 -84
  94. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +0 -20
  95. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +0 -37
  96. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +0 -32
  97. package/esm2022/foehn-dropdown-menu/dropdown-menu-group.type.mjs +0 -3
  98. package/esm2022/foehn-dropdown-menu/dropdown-menu-item.type.mjs +0 -6
  99. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +0 -212
  100. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +0 -21
  101. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +0 -113
  102. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +0 -32
  103. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.type.mjs +0 -3
  104. package/esm2022/foehn-footer/foehn-footer.component.mjs +0 -130
  105. package/esm2022/foehn-footer/foehn-footer.module.mjs +0 -19
  106. package/esm2022/foehn-footer/footer-link.type.mjs +0 -3
  107. package/esm2022/foehn-form/foehn-form.component.mjs +0 -136
  108. package/esm2022/foehn-form/foehn-form.module.mjs +0 -32
  109. package/esm2022/foehn-form/register-ng-model.service.mjs +0 -23
  110. package/esm2022/foehn-growl/foehn-growl.component.mjs +0 -45
  111. package/esm2022/foehn-growl/foehn-growl.module.mjs +0 -18
  112. package/esm2022/foehn-growl/growl-broker.service.mjs +0 -37
  113. package/esm2022/foehn-growl/growl-message.mjs +0 -9
  114. package/esm2022/foehn-growl/growl-types.mjs +0 -7
  115. package/esm2022/foehn-header/foehn-header.component.mjs +0 -159
  116. package/esm2022/foehn-header/foehn-header.module.mjs +0 -40
  117. package/esm2022/foehn-header/foehn-skip-link.component.mjs +0 -51
  118. package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +0 -44
  119. package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +0 -20
  120. package/esm2022/foehn-help-modal/foehn-help-modal.type.mjs +0 -2
  121. package/esm2022/foehn-icons/abstract-icon-component.mjs +0 -12
  122. package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +0 -19
  123. package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +0 -19
  124. package/esm2022/foehn-icons/foehn-icon-check.component.mjs +0 -19
  125. package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +0 -19
  126. package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +0 -19
  127. package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +0 -19
  128. package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +0 -19
  129. package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +0 -19
  130. package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +0 -19
  131. package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +0 -19
  132. package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +0 -19
  133. package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +0 -19
  134. package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +0 -19
  135. package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +0 -19
  136. package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +0 -19
  137. package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +0 -19
  138. package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +0 -19
  139. package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +0 -19
  140. package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +0 -19
  141. package/esm2022/foehn-icons/foehn-icon-search.component.mjs +0 -19
  142. package/esm2022/foehn-icons/foehn-icon-times.component.mjs +0 -19
  143. package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +0 -19
  144. package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +0 -19
  145. package/esm2022/foehn-icons/foehn-icon-user.component.mjs +0 -19
  146. package/esm2022/foehn-icons/foehn-icons.module.mjs +0 -139
  147. package/esm2022/foehn-input/foehn-input-email.component.mjs +0 -74
  148. package/esm2022/foehn-input/foehn-input-hidden.component.mjs +0 -54
  149. package/esm2022/foehn-input/foehn-input-number.component.mjs +0 -319
  150. package/esm2022/foehn-input/foehn-input-password.component.mjs +0 -51
  151. package/esm2022/foehn-input/foehn-input-phone.component.mjs +0 -99
  152. package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +0 -116
  153. package/esm2022/foehn-input/foehn-input-string.component.mjs +0 -27
  154. package/esm2022/foehn-input/foehn-input-text.component.mjs +0 -69
  155. package/esm2022/foehn-input/foehn-input-textarea.component.mjs +0 -97
  156. package/esm2022/foehn-input/foehn-input.component.mjs +0 -418
  157. package/esm2022/foehn-input/foehn-input.module.mjs +0 -98
  158. package/esm2022/foehn-input/pattern.const.mjs +0 -16
  159. package/esm2022/foehn-input-date/foehn-input-date.component.mjs +0 -163
  160. package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +0 -201
  161. package/esm2022/foehn-input-time/foehn-input-time.component.mjs +0 -89
  162. package/esm2022/foehn-list/foehn-list.component.mjs +0 -127
  163. package/esm2022/foehn-list/foehn-list.module.mjs +0 -19
  164. package/esm2022/foehn-list/page-change-event.mjs +0 -3
  165. package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +0 -122
  166. package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +0 -31
  167. package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +0 -87
  168. package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +0 -25
  169. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs +0 -2
  170. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs +0 -3
  171. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +0 -161
  172. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +0 -38
  173. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +0 -58
  174. package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +0 -67
  175. package/esm2022/foehn-misc/foehn-abbr.component.mjs +0 -15
  176. package/esm2022/foehn-misc/foehn-misc.module.mjs +0 -17
  177. package/esm2022/foehn-modal/foehn-modal.component.mjs +0 -94
  178. package/esm2022/foehn-modal/foehn-modal.module.mjs +0 -21
  179. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +0 -287
  180. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +0 -40
  181. package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +0 -114
  182. package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +0 -32
  183. package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +0 -55
  184. package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +0 -67
  185. package/esm2022/foehn-navigation/foehn-navigation.module.mjs +0 -37
  186. package/esm2022/foehn-navigation/foehn-navigation.service.mjs +0 -322
  187. package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +0 -26
  188. package/esm2022/foehn-notfound/foehn-notfound.component.mjs +0 -61
  189. package/esm2022/foehn-notfound/foehn-notfound.module.mjs +0 -20
  190. package/esm2022/foehn-page/foehn-page-counter.component.mjs +0 -31
  191. package/esm2022/foehn-page/foehn-page-expiration-timer/current-session-expiration.mjs +0 -3
  192. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +0 -68
  193. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +0 -53
  194. package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +0 -175
  195. package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +0 -29
  196. package/esm2022/foehn-page/foehn-page-modal.component.mjs +0 -54
  197. package/esm2022/foehn-page/foehn-page-modal.service.mjs +0 -38
  198. package/esm2022/foehn-page/foehn-page.component.mjs +0 -223
  199. package/esm2022/foehn-page/foehn-page.module.mjs +0 -101
  200. package/esm2022/foehn-page/foehn-page.service.mjs +0 -54
  201. package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +0 -52
  202. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +0 -23
  203. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +0 -32
  204. package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +0 -98
  205. package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +0 -20
  206. package/esm2022/foehn-recap-section/foehn-recap-section.type.mjs +0 -2
  207. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +0 -50
  208. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +0 -18
  209. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +0 -56
  210. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +0 -20
  211. package/esm2022/foehn-table/foehn-table-column-configuration.mjs +0 -3
  212. package/esm2022/foehn-table/foehn-table-page-change-event.mjs +0 -3
  213. package/esm2022/foehn-table/foehn-table.component.mjs +0 -190
  214. package/esm2022/foehn-table/foehn-table.module.mjs +0 -40
  215. package/esm2022/foehn-table/row-element.type.mjs +0 -3
  216. package/esm2022/foehn-table/tableSort.mjs +0 -3
  217. package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +0 -242
  218. package/esm2022/foehn-upload/document-reference.mjs +0 -6
  219. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +0 -116
  220. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs +0 -6
  221. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +0 -199
  222. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +0 -40
  223. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +0 -250
  224. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +0 -40
  225. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +0 -125
  226. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.type.mjs +0 -6
  227. package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +0 -163
  228. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +0 -178
  229. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +0 -44
  230. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +0 -83
  231. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +0 -21
  232. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +0 -66
  233. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +0 -7
  234. package/esm2022/foehn-upload/page-upload-limit.service.mjs +0 -80
  235. package/esm2022/foehn-upload/pending-upload.type.mjs +0 -3
  236. package/esm2022/foehn-upload/uploader.helper.mjs +0 -329
  237. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +0 -21
  238. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +0 -19
  239. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +0 -96
  240. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +0 -19
  241. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +0 -29
  242. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +0 -18
  243. package/esm2022/form-error.mjs +0 -2
  244. package/esm2022/form-post-response.mjs +0 -10
  245. package/esm2022/gesdem/gesdem-error-handler.service.mjs +0 -85
  246. package/esm2022/gesdem/gesdem-event.service.mjs +0 -38
  247. package/esm2022/gesdem/gesdem-handler.service.mjs +0 -201
  248. package/esm2022/gesdem/gesdem-loader.guard.mjs +0 -25
  249. package/esm2022/gesdem/gesdem-statut-utils.mjs +0 -25
  250. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +0 -170
  251. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +0 -227
  252. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +0 -62
  253. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +0 -97
  254. package/esm2022/gesdem-action-recovery/reprise-info.mjs +0 -4
  255. package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +0 -241
  256. package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +0 -36
  257. package/esm2022/gesdem-error/gesdem-error.component.mjs +0 -96
  258. package/esm2022/gesdem-error/gesdem-error.module.mjs +0 -36
  259. package/esm2022/global.const.mjs +0 -5
  260. package/esm2022/helpers/demande.helper.mjs +0 -19
  261. package/esm2022/helpers/object.helper.mjs +0 -124
  262. package/esm2022/i18n-form.mjs +0 -7
  263. package/esm2022/pipes/currency.pipe.mjs +0 -18
  264. package/esm2022/pipes/date.pipe.mjs +0 -43
  265. package/esm2022/pipes/formatIde.pipe.mjs +0 -22
  266. package/esm2022/pipes/pipes.module.mjs +0 -18
  267. package/esm2022/prestations-ng-core.module.mjs +0 -31
  268. package/esm2022/public_api.mjs +0 -288
  269. package/esm2022/refinf/model/address-type-light.mjs +0 -3
  270. package/esm2022/refinf/model/canton.mjs +0 -3
  271. package/esm2022/refinf/model/district.mjs +0 -3
  272. package/esm2022/refinf/model/municipality.mjs +0 -3
  273. package/esm2022/refinf/model/place-of-origin.mjs +0 -3
  274. package/esm2022/refinf/model/postal-locality.mjs +0 -3
  275. package/esm2022/sdk-appinfo/application-info.mjs +0 -22
  276. package/esm2022/sdk-appinfo/application-info.service.mjs +0 -146
  277. package/esm2022/sdk-currency/currency.helper.mjs +0 -34
  278. package/esm2022/sdk-date/date.helper.mjs +0 -109
  279. package/esm2022/sdk-dictionary/default-dictionary.mjs +0 -312
  280. package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +0 -16
  281. package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +0 -28
  282. package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +0 -122
  283. package/esm2022/sdk-drafts/draft.model.mjs +0 -2
  284. package/esm2022/sdk-drafts/drafts-container.component.mjs +0 -99
  285. package/esm2022/sdk-drafts/drafts.module.mjs +0 -47
  286. package/esm2022/sdk-drafts/drafts.service.mjs +0 -51
  287. package/esm2022/sdk-epayment/model/EPaymentParameters.mjs +0 -2
  288. package/esm2022/sdk-epayment/pending-payment/pending-payment.component.mjs +0 -24
  289. package/esm2022/sdk-epayment/sdk-epayment.component.mjs +0 -76
  290. package/esm2022/sdk-epayment/sdk-epayment.module.mjs +0 -23
  291. package/esm2022/sdk-epayment/sdk-epayment.service.mjs +0 -51
  292. package/esm2022/sdk-events-logger/sdk-event-type.mjs +0 -14
  293. package/esm2022/sdk-events-logger/sdk-event.mjs +0 -3
  294. package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +0 -43
  295. package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +0 -113
  296. package/esm2022/sdk-recaptcha/recaptcha.service.mjs +0 -180
  297. package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +0 -75
  298. package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +0 -19
  299. package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +0 -62
  300. package/esm2022/sdk-redirect/redirect.component.mjs +0 -55
  301. package/esm2022/sdk-redirect/sdk-redirect.module.mjs +0 -19
  302. package/esm2022/sdk-session-info/session-info-data.mjs +0 -6
  303. package/esm2022/sdk-session-info/session-info-with-application.service.mjs +0 -68
  304. package/esm2022/sdk-session-info/session-info.service.mjs +0 -50
  305. package/esm2022/sdk-statistics/sdk-statistics.service.mjs +0 -74
  306. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +0 -49
  307. package/esm2022/sdk-support-alert/support-alert.component.mjs +0 -32
  308. package/esm2022/sdk-support-alert/support-alert.model.mjs +0 -7
  309. package/esm2022/sdk-support-alert/support-alert.module.mjs +0 -21
  310. package/esm2022/sdk-support-alert/support-alert.service.mjs +0 -139
  311. package/esm2022/service-locator.mjs +0 -4
  312. package/esm2022/supported-browser.mjs +0 -2
  313. package/esm2022/validation/validation-handler.service.mjs +0 -44
  314. /package/{public_api.d.ts → public-api.d.ts} +0 -0
@@ -1,329 +0,0 @@
1
- import { DocumentReferenceWithFile } from './document-reference';
2
- // illegal characters that cannot be overriden
3
- const PERMANENT_ILLEGAL_CHARACTERS = [','];
4
- const getSafeFileNameForErrorMessage = (fileName) => encodeURIComponent(fileName).replace(/%[0-9A-F]{2}(?:%[0-9A-F]{2})*/g, (match) => {
5
- // Décoder la séquence complète (peut inclure plusieurs octets)
6
- const decoded = decodeURIComponent(match);
7
- // Vérifier si le caractère décodé est un caractère accentué, un espace ou une virgule
8
- return /[àáâãäåçèéêëìíîïðñòóôõöùúûüýÿÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝŸ ,/]/.test(decoded)
9
- ? decoded
10
- : match;
11
- });
12
- export class UploaderHelper {
13
- constructor(dictionaryService, applicationInfoService) {
14
- this.dictionaryService = dictionaryService;
15
- this.applicationInfoService = applicationInfoService;
16
- this._accept = '.pdf';
17
- this._maxFileNameLength = 64;
18
- this._illegalCharacters = '/,\\,?,%,*,:,|,",<,>,°';
19
- this._fileMinSizeInBytes = 20;
20
- this.CHAR_TO_REPLACE = new RegExp('[^a-zA-Z0-9]', 'g');
21
- this.applicationInfoService.data.subscribe((appInfo) => {
22
- if (appInfo.configuration.document) {
23
- this.accept = appInfo.configuration.document.fileExtensions;
24
- this.maxFileNameLength = Number(appInfo.configuration.document.maxFileNameLength);
25
- this._fileMaxSizeInBytesByFormKey =
26
- appInfo.configuration.document.fileMaxSizeInBytesByFormKey;
27
- this.illegalCharacters =
28
- appInfo.configuration.document.illegalCharacters;
29
- }
30
- });
31
- }
32
- get fileMinSizeInBytes() {
33
- return this._fileMinSizeInBytes;
34
- }
35
- set fileMinSizeInBytes(value) {
36
- this._fileMinSizeInBytes = value;
37
- }
38
- // eslint-disable-next-line @typescript-eslint/member-ordering
39
- get illegalCharacters() {
40
- return this._illegalCharacters;
41
- }
42
- set illegalCharacters(value) {
43
- this._illegalCharacters = value;
44
- }
45
- // eslint-disable-next-line @typescript-eslint/member-ordering
46
- get maxFileNameLength() {
47
- return this._maxFileNameLength;
48
- }
49
- set maxFileNameLength(value) {
50
- this._maxFileNameLength = value;
51
- }
52
- // eslint-disable-next-line @typescript-eslint/member-ordering
53
- get accept() {
54
- return this._accept;
55
- }
56
- set accept(value) {
57
- this._accept = value;
58
- }
59
- getMaxFileSizeInBytesForFormKey(formKey) {
60
- const byFormKey = this._fileMaxSizeInBytesByFormKey[formKey];
61
- if (!isNaN(byFormKey)) {
62
- return byFormKey;
63
- }
64
- else {
65
- const keyAsRegex = Object.keys(this._fileMaxSizeInBytesByFormKey).find(canBeARegex => formKey.match(canBeARegex));
66
- return this._fileMaxSizeInBytesByFormKey[keyAsRegex];
67
- }
68
- }
69
- isFileTooBig(formKey, fileSizeInBytes) {
70
- return this.isTooBig(fileSizeInBytes, this.getMaxFileSizeInBytesForFormKey(formKey));
71
- }
72
- isFileTooSmall(fileSizeInBytes) {
73
- if (!this.fileMinSizeInBytes) {
74
- return false;
75
- }
76
- return fileSizeInBytes < this.fileMinSizeInBytes;
77
- }
78
- isFileNameLengthValid(filename, overrideMaxFileNameLength) {
79
- const maxFileLenght = overrideMaxFileNameLength || this.maxFileNameLength;
80
- return filename.length <= maxFileLenght;
81
- }
82
- isFileNameNameValid(filename, overrideIllegalCharacters) {
83
- const illegalCharacters = !!overrideIllegalCharacters
84
- ? overrideIllegalCharacters.split(',')
85
- : this.illegalCharacters.split(',');
86
- PERMANENT_ILLEGAL_CHARACTERS.forEach(c => illegalCharacters.push(c));
87
- let isValid = true;
88
- for (const illegalCharacter of illegalCharacters) {
89
- if (filename.includes(illegalCharacter)) {
90
- isValid = false;
91
- break;
92
- }
93
- }
94
- return isValid;
95
- }
96
- getFileExtension(filename) {
97
- return `.${filename.split('.').pop()}`;
98
- }
99
- isFileExtensionValid(fileExtension, overrideAcceptedExtensions) {
100
- const acceptedExtensions = overrideAcceptedExtensions || this.accept;
101
- return (!!fileExtension &&
102
- acceptedExtensions
103
- .toUpperCase()
104
- .split(',')
105
- .includes(fileExtension.toUpperCase()));
106
- }
107
- getUniqueErrorByCode(name, errorCode, fileName, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
108
- const uniqSuffix = new Date().getTime();
109
- return {
110
- name,
111
- code: `${errorCode}_${uniqSuffix}`,
112
- message: this.replaceErrorMessageKeys(name, customErrors[errorCode], fileName, errorCode, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters)
113
- };
114
- }
115
- addCustomErrorOrDefault(name, destinationErrors, errorCode, fileName, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
116
- // Check if we have a custom error to manage
117
- if (customErrors[errorCode]) {
118
- // Need to create unique error to ensure ability to display multiple error messages
119
- destinationErrors.push(this.getUniqueErrorByCode(name, errorCode, fileName, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
120
- }
121
- else {
122
- destinationErrors.push({
123
- name,
124
- code: errorCode,
125
- message: this.getDefaultUnknownErrorMessage(fileName)
126
- });
127
- }
128
- }
129
- createDefaultCustomErrors(customErrors) {
130
- customErrors.IMAGE_NOT_READABLE = this.dictionaryService.getKeySync('errors.IMAGE_NOT_READABLE');
131
- customErrors.FILENAME_TOO_LONG = this.dictionaryService.getKeySync('errors.FILENAME_TOO_LONG');
132
- customErrors.FILE_TOO_SMALL = this.dictionaryService.getKeySync('errors.FILE_TOO_SMALL');
133
- customErrors.PDF_PASSWORD_LOCKED = this.dictionaryService.getKeySync('errors.PDF_PASSWORD_LOCKED');
134
- customErrors.PDF_CONTAINS_SCRIPT = this.dictionaryService.getKeySync('errors.PDF_CONTAINS_SCRIPT');
135
- customErrors.PDF_HAS_ATTACHMENTS = this.dictionaryService.getKeySync('errors.PDF_HAS_ATTACHMENTS');
136
- customErrors.EMPTY_PDF =
137
- this.dictionaryService.getKeySync('errors.EMPTY_PDF');
138
- customErrors.PDF_GENERAL_PROBLEM = this.dictionaryService.getKeySync('errors.PDF_GENERAL_PROBLEM');
139
- customErrors.PDF_HAS_RESTRICTIONS = this.dictionaryService.getKeySync('errors.PDF_HAS_RESTRICTIONS');
140
- customErrors.FILENAME_SHOULD_NOT_CONTAIN =
141
- this.dictionaryService.getKeySync('errors.FILENAME_SHOULD_NOT_CONTAIN');
142
- customErrors['406'] = this.dictionaryService.getKeySync('errors.406');
143
- customErrors['413'] = this.dictionaryService.getKeySync('errors.413');
144
- customErrors['415'] = this.dictionaryService.getKeySync('errors.415');
145
- customErrors['422'] = this.dictionaryService.getKeySync('errors.422');
146
- customErrors['500'] = this.dictionaryService.getKeySync('errors.500');
147
- // MultiPartException from Zuul returns HTTP 0
148
- customErrors['0'] = customErrors['413'];
149
- }
150
- getLocalErrors(name, files, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
151
- const errors = [];
152
- files.forEach(file => {
153
- // File bad extension
154
- const fileExtension = this.getFileExtension(file.name);
155
- if (!this.isFileExtensionValid(fileExtension, overrideAcceptedExtensions)) {
156
- // Default custom error 415 exist (see function 'createDefaultCustomErrors')
157
- // Need to create unique error to ensure ability to display multiple error messages
158
- errors.push(this.getUniqueErrorByCode(name, '415', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
159
- }
160
- // File name contains illegal characters
161
- if (!this.isFileNameNameValid(file.name, overrideIllegalCharacters)) {
162
- // Default custom error FILENAME_SHOULD_NOT_CONTAIN exist (see function 'createDefaultCustomErrors')
163
- // Need to create unique error to ensure ability to display multiple error messages
164
- errors.push(this.getUniqueErrorByCode(name, 'FILENAME_SHOULD_NOT_CONTAIN', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
165
- }
166
- // Files too big
167
- if (this.isFileTooBig(name, file.size)) {
168
- // Default custom error 413 exist (see function 'createDefaultCustomErrors')
169
- // Need to create unique error to ensure ability to display multiple error messages
170
- errors.push(this.getUniqueErrorByCode(name, '413', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
171
- }
172
- if (this.isFileTooSmall(file.size)) {
173
- // Default custom error FILE_TOO_SMALL exist (see function 'createDefaultCustomErrors')
174
- // Need to create unique error to ensure ability to display multiple error messages
175
- errors.push(this.getUniqueErrorByCode(name, 'FILE_TOO_SMALL', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
176
- }
177
- // File name too long (64 chars max)
178
- if (!this.isFileNameLengthValid(file.name, overrideMaxFileNameLength)) {
179
- // Default custom error FILENAME_TOO_LONG exist (see function 'createDefaultCustomErrors')
180
- // Need to create unique error to ensure ability to display multiple error messages
181
- errors.push(this.getUniqueErrorByCode(name, 'FILENAME_TOO_LONG', file.name, customErrors, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters));
182
- }
183
- });
184
- return errors;
185
- }
186
- hasLiveUploadErrors(errors) {
187
- return (!!errors &&
188
- !!errors.find(e => e.code.startsWith('413') ||
189
- e.code.startsWith('415') ||
190
- e.code.startsWith('PDF_PASSWORD_LOCKED') ||
191
- e.code.startsWith('PDF_CONTAINS_SCRIPT') ||
192
- e.code.startsWith('PDF_HAS_ATTACHMENTS') ||
193
- e.code.startsWith('EMPTY_PDF') ||
194
- e.code.startsWith('PDF_GENERAL_PROBLEM') ||
195
- e.code.startsWith('PDF_HAS_RESTRICTIONS') ||
196
- e.code.startsWith('FILENAME_TOO_LONG') ||
197
- e.code.startsWith('FILE_TOO_SMALL') ||
198
- e.code.startsWith('FILENAME_SHOULD_NOT_CONTAIN')));
199
- }
200
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
201
- preventAndStop(event) {
202
- event.preventDefault();
203
- event.stopPropagation();
204
- }
205
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
206
- getAllFilesCount(data) {
207
- if (!data) {
208
- return null;
209
- }
210
- return `${data.length}`;
211
- }
212
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
213
- getAllFilesSizeInMo(data) {
214
- if (!data) {
215
- return null;
216
- }
217
- const fileSizeInBytes = data.reduce(
218
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
219
- (totalDocSize, document) => {
220
- if (document.hasOwnProperty('fileSize')) {
221
- return totalDocSize + document.fileSize;
222
- }
223
- return totalDocSize + document.size;
224
- }, 0);
225
- return this.toMegaOctets(fileSizeInBytes);
226
- }
227
- toMegaOctets(size) {
228
- return `${(size / (1024 * 1024)).toFixed(2)}`;
229
- }
230
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
231
- getTransfer(event) {
232
- if (!!event.dataTransfer) {
233
- return event.dataTransfer.files;
234
- }
235
- return null;
236
- }
237
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
238
- getGlobalInfos(data) {
239
- return `${this.getAllFilesCount(data)} fichiers pour un total de ${this.getAllFilesSizeInMo(data)} <abbr title="Megaoctet">Mo</abbr>`;
240
- }
241
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
242
- showGlobalInfos(data, hideGlobalInfos) {
243
- return !hideGlobalInfos && !!data && !!data.length && data.length > 1;
244
- }
245
- mapToDocumentReference(file, label, key, isMultiple, uniqPrefix, globalSequence) {
246
- const document = new DocumentReferenceWithFile();
247
- if (isMultiple) {
248
- // Override key to ensures that GesDem can accept the document key (length of 64 char. max.)
249
- key = `doc${uniqPrefix}${globalSequence}`;
250
- document.key = this.normalizeKey(key);
251
- }
252
- document.key = key;
253
- document.filename = file.name;
254
- document.mimeType = file.type;
255
- document.fileSize = file.size;
256
- document.label = label;
257
- document.file = file;
258
- return document;
259
- }
260
- mapToFormData(documents, formKey, language) {
261
- const formData = new FormData();
262
- documents.forEach(({ file, key, label }) => {
263
- formData.append('keys', key);
264
- formData.append('labels', this.removeCommasInLabel(label));
265
- formData.append('files', file, file.name);
266
- });
267
- formData.append('formKey', formKey);
268
- formData.append('language', language);
269
- return formData;
270
- }
271
- /**
272
- * Commas are removed to avoid a wrong interpretation as an array of string in formData.
273
- * @param label to be cleaned from comma
274
- * @returns string
275
- */
276
- removeCommasInLabel(label) {
277
- return label.split(',').join('');
278
- }
279
- isTooBig(fileSizeInBytes, limitInBytes) {
280
- return fileSizeInBytes > limitInBytes;
281
- }
282
- replaceErrorMessageKeys(name, errorMsg, fileName, errorCode, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
283
- const safeFileName = getSafeFileNameForErrorMessage(fileName);
284
- const formattedErrorMsg = errorMsg.replace('%1$s', safeFileName);
285
- if (errorCode.startsWith('413')) {
286
- // REQUEST_ENTITY_TOO_LARGE_ERROR_MSG
287
- const fileMaxSize = (this.getMaxFileSizeInBytesForFormKey(name) /
288
- (1024 * 1024)).toString();
289
- return formattedErrorMsg.replace('%2$s', fileMaxSize);
290
- }
291
- if (errorCode.startsWith('415')) {
292
- // UNSUPPORTED_MEDIA_TYPE_ERROR_MSG
293
- const fileExtensions = (overrideAcceptedExtensions
294
- ? overrideAcceptedExtensions
295
- : this.accept)
296
- .toUpperCase()
297
- .replace(/,/g, ' ou ');
298
- return formattedErrorMsg.replace('%2$s', fileExtensions);
299
- }
300
- if (errorCode.startsWith('FILENAME_TOO_LONG')) {
301
- const maxFileNameLength = (overrideMaxFileNameLength || this.maxFileNameLength).toString();
302
- return formattedErrorMsg.replace('%2$s', maxFileNameLength);
303
- }
304
- if (errorCode.startsWith('FILE_TOO_SMALL')) {
305
- return formattedErrorMsg.replace('%2$s', this.fileMinSizeInBytes.toString());
306
- }
307
- if (errorCode.startsWith('FILENAME_SHOULD_NOT_CONTAIN')) {
308
- let fileNameIllegalCharacters = (overrideIllegalCharacters || this.illegalCharacters).replace(/,/g, '');
309
- fileNameIllegalCharacters += PERMANENT_ILLEGAL_CHARACTERS.join('');
310
- return formattedErrorMsg.replace('%2$s', fileNameIllegalCharacters);
311
- }
312
- return formattedErrorMsg;
313
- }
314
- getDefaultUnknownErrorMessage(fileName) {
315
- const msg = 'Impossible de transmettre le fichier';
316
- if (!!fileName && !!fileName.length) {
317
- return `${msg} ${getSafeFileNameForErrorMessage(fileName)}.`;
318
- }
319
- return `${msg}.`;
320
- }
321
- /**
322
- * @param key to be normalized
323
- * @returns string
324
- */
325
- normalizeKey(key) {
326
- return key ? key.toLowerCase().replace(this.CHAR_TO_REPLACE, '') : null;
327
- }
328
- }
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC91cGxvYWRlci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakUsOENBQThDO0FBQzlDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUzQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsUUFBZ0IsRUFBVSxFQUFFLENBQ2hFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FDaEMsZ0NBQWdDLEVBQ2hDLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDZCwrREFBK0Q7SUFDL0QsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsc0ZBQXNGO0lBQ3RGLE9BQU8sK0RBQStELENBQUMsSUFBSSxDQUN2RSxPQUFPLENBQ1Y7UUFDRyxDQUFDLENBQUMsT0FBTztRQUNULENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEIsQ0FBQyxDQUNKLENBQUM7QUFFTixNQUFNLE9BQU8sY0FBYztJQVN2QixZQUNZLGlCQUF1QyxFQUN2QyxzQkFBOEM7UUFEOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVmxELFlBQU8sR0FBRyxNQUFNLENBQUM7UUFFakIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLHdCQUF3QixDQUFDO1FBQzlDLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUVoQixvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQU0vRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FD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QUFFLENBQUMsQ0FBQztZQUVwQix5QkFBeUIsSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkUsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztJQUVPLDZCQUE2QixDQUFDLFFBQWdCO1FBQ2xELE1BQU0sR0FBRyxHQUFHLHNDQUFzQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE9BQU8sR0FBRyxHQUFHLElBQUksOEJBQThCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZLENBQUMsR0FBVztRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm8gfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGUgfSBmcm9tICcuL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5cbi8vIGlsbGVnYWwgY2hhcmFjdGVycyB0aGF0IGNhbm5vdCBiZSBvdmVycmlkZW5cbmNvbnN0IFBFUk1BTkVOVF9JTExFR0FMX0NIQVJBQ1RFUlMgPSBbJywnXTtcblxuY29uc3QgZ2V0U2FmZUZpbGVOYW1lRm9yRXJyb3JNZXNzYWdlID0gKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBlbmNvZGVVUklDb21wb25lbnQoZmlsZU5hbWUpLnJlcGxhY2UoXG4gICAgICAgIC8lWzAtOUEtRl17Mn0oPzolWzAtOUEtRl17Mn0pKi9nLFxuICAgICAgICAobWF0Y2g6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gRMOpY29kZXIgbGEgc8OpcXVlbmNlIGNvbXBsw6h0ZSAocGV1dCBpbmNsdXJlIHBsdXNpZXVycyBvY3RldHMpXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoKTtcbiAgICAgICAgICAgIC8vIFbDqXJpZmllciBzaSBsZSBjYXJhY3TDqHJlIGTDqWNvZMOpIGVzdCB1biBjYXJhY3TDqHJlIGFjY2VudHXDqSwgdW4gZXNwYWNlIG91IHVuZSB2aXJndWxlXG4gICAgICAgICAgICByZXR1cm4gL1vDoMOhw6LDo8Okw6XDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO5w7rDu8O8w73Dv8OAw4HDgsODw4TDhcOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5nDmsObw5zDncW4ICwvXS8udGVzdChcbiAgICAgICAgICAgICAgICBkZWNvZGVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPyBkZWNvZGVkXG4gICAgICAgICAgICAgICAgOiBtYXRjaDtcbiAgICAgICAgfVxuICAgICk7XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWRlckhlbHBlciB7XG4gICAgcHJpdmF0ZSBfYWNjZXB0ID0gJy5wZGYnO1xuICAgIHByaXZhdGUgX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcbiAgICBwcml2YXRlIF9tYXhGaWxlTmFtZUxlbmd0aCA9IDY0O1xuICAgIHByaXZhdGUgX2lsbGVnYWxDaGFyYWN0ZXJzID0gJy8sXFxcXCw/LCUsKiw6LHwsXCIsPCw+LMKwJztcbiAgICBwcml2YXRlIF9maWxlTWluU2l6ZUluQnl0ZXMgPSAyMDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgQ0hBUl9UT19SRVBMQUNFID0gbmV3IFJlZ0V4cCgnW15hLXpBLVowLTldJywgJ2cnKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5kYXRhLnN1YnNjcmliZShcbiAgICAgICAgICAgIChhcHBJbmZvOiBBcHBsaWNhdGlvbkluZm8pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0ID0gYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50LmZpbGVFeHRlbnNpb25zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heEZpbGVOYW1lTGVuZ3RoID0gTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50Lm1heEZpbGVOYW1lTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBJbmZvLmNvbmZpZ3VyYXRpb24uZG9jdW1lbnQuZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlsbGVnYWxDaGFyYWN0ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluZm8uY29uZmlndXJhdGlvbi5kb2N1bWVudC5pbGxlZ2FsQ2hhcmFjdGVycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVNaW5TaXplSW5CeXRlcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU1pblNpemVJbkJ5dGVzO1xuICAgIH1cblxuICAgIHNldCBmaWxlTWluU2l6ZUluQnl0ZXModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9maWxlTWluU2l6ZUluQnl0ZXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBpbGxlZ2FsQ2hhcmFjdGVycygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWxsZWdhbENoYXJhY3RlcnM7XG4gICAgfVxuXG4gICAgc2V0IGlsbGVnYWxDaGFyYWN0ZXJzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faWxsZWdhbENoYXJhY3RlcnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtYXhGaWxlTmFtZUxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RmlsZU5hbWVMZW5ndGg7XG4gICAgfVxuXG4gICAgc2V0IG1heEZpbGVOYW1lTGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4RmlsZU5hbWVMZW5ndGggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBhY2NlcHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjY2VwdDtcbiAgICB9XG5cbiAgICBzZXQgYWNjZXB0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWNjZXB0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShmb3JtS2V5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBieUZvcm1LZXkgPSB0aGlzLl9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXlbZm9ybUtleV07XG5cbiAgICAgICAgaWYgKCFpc05hTihieUZvcm1LZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnlGb3JtS2V5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qga2V5QXNSZWdleCA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleVxuICAgICAgICAgICAgKS5maW5kKGNhbkJlQVJlZ2V4ID0+IGZvcm1LZXkubWF0Y2goY2FuQmVBUmVnZXgpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleVtrZXlBc1JlZ2V4XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRmlsZVRvb0JpZyhmb3JtS2V5OiBzdHJpbmcsIGZpbGVTaXplSW5CeXRlczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9vQmlnKFxuICAgICAgICAgICAgZmlsZVNpemVJbkJ5dGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRNYXhGaWxlU2l6ZUluQnl0ZXNGb3JGb3JtS2V5KGZvcm1LZXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNGaWxlVG9vU21hbGwoZmlsZVNpemVJbkJ5dGVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVNaW5TaXplSW5CeXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlU2l6ZUluQnl0ZXMgPCB0aGlzLmZpbGVNaW5TaXplSW5CeXRlcztcbiAgICB9XG5cbiAgICBpc0ZpbGVOYW1lTGVuZ3RoVmFsaWQoXG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlclxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtYXhGaWxlTGVuZ2h0ID1cbiAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGggfHwgdGhpcy5tYXhGaWxlTmFtZUxlbmd0aDtcblxuICAgICAgICByZXR1cm4gZmlsZW5hbWUubGVuZ3RoIDw9IG1heEZpbGVMZW5naHQ7XG4gICAgfVxuXG4gICAgaXNGaWxlTmFtZU5hbWVWYWxpZChcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlsbGVnYWxDaGFyYWN0ZXJzID0gISFvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICA/IG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMuc3BsaXQoJywnKVxuICAgICAgICAgICAgOiB0aGlzLmlsbGVnYWxDaGFyYWN0ZXJzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgUEVSTUFORU5UX0lMTEVHQUxfQ0hBUkFDVEVSUy5mb3JFYWNoKGMgPT4gaWxsZWdhbENoYXJhY3RlcnMucHVzaChjKSk7XG5cbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGlsbGVnYWxDaGFyYWN0ZXIgb2YgaWxsZWdhbENoYXJhY3RlcnMpIHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS5pbmNsdWRlcyhpbGxlZ2FsQ2hhcmFjdGVyKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIGdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgLiR7ZmlsZW5hbWUuc3BsaXQoJy4nKS5wb3AoKX1gO1xuICAgIH1cblxuICAgIGlzRmlsZUV4dGVuc2lvblZhbGlkKFxuICAgICAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmdcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYWNjZXB0ZWRFeHRlbnNpb25zID0gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMgfHwgdGhpcy5hY2NlcHQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhZmlsZUV4dGVuc2lvbiAmJlxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnM6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aDogbnVtYmVyLFxuICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzOiBzdHJpbmdcbiAgICApOiBGb3JtRXJyb3Ige1xuICAgICAgICBjb25zdCB1bmlxU3VmZml4ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgY29kZTogYCR7ZXJyb3JDb2RlfV8ke3VuaXFTdWZmaXh9YCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucmVwbGFjZUVycm9yTWVzc2FnZUtleXMoXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnNbZXJyb3JDb2RlXSxcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYWRkQ3VzdG9tRXJyb3JPckRlZmF1bHQoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZGVzdGluYXRpb25FcnJvcnM6IEZvcm1FcnJvcltdLFxuICAgICAgICBlcnJvckNvZGU6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uczogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnM6IHN0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY3VzdG9tIGVycm9yIHRvIG1hbmFnZVxuICAgICAgICBpZiAoY3VzdG9tRXJyb3JzW2Vycm9yQ29kZV0pIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVzdGluYXRpb25FcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5nZXREZWZhdWx0VW5rbm93bkVycm9yTWVzc2FnZShmaWxlTmFtZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRGVmYXVsdEN1c3RvbUVycm9ycyhjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgY3VzdG9tRXJyb3JzLklNQUdFX05PVF9SRUFEQUJMRSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuSU1BR0VfTk9UX1JFQURBQkxFJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRklMRU5BTUVfVE9PX0xPTkcgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLkZJTEVOQU1FX1RPT19MT05HJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRklMRV9UT09fU01BTEwgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLkZJTEVfVE9PX1NNQUxMJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX1BBU1NXT1JEX0xPQ0tFRCA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX1BBU1NXT1JEX0xPQ0tFRCdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9DT05UQUlOU19TQ1JJUFQgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLlBERl9DT05UQUlOU19TQ1JJUFQnXG4gICAgICAgICk7XG4gICAgICAgIGN1c3RvbUVycm9ycy5QREZfSEFTX0FUVEFDSE1FTlRTID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfSEFTX0FUVEFDSE1FTlRTJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRU1QVFlfUERGID1cbiAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLkVNUFRZX1BERicpO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX0dFTkVSQUxfUFJPQkxFTSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX0dFTkVSQUxfUFJPQkxFTSdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9IQVNfUkVTVFJJQ1RJT05TID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfSEFTX1JFU1RSSUNUSU9OUydcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLkZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTiA9XG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2Vycm9ycy5GSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nXG4gICAgICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQwNiddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDA2Jyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNDEzJ10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy40MTMnKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzWyc0MTUnXSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLjQxNScpO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQyMiddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDIyJyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNTAwJ10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy41MDAnKTtcblxuICAgICAgICAvLyBNdWx0aVBhcnRFeGNlcHRpb24gZnJvbSBadXVsIHJldHVybnMgSFRUUCAwXG4gICAgICAgIGN1c3RvbUVycm9yc1snMCddID0gY3VzdG9tRXJyb3JzWyc0MTMnXTtcbiAgICB9XG5cbiAgICBnZXRMb2NhbEVycm9ycyhcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlczogRmlsZVtdLFxuICAgICAgICBjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogRm9ybUVycm9yW10ge1xuICAgICAgICBjb25zdCBlcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG5cbiAgICAgICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgICAgIC8vIEZpbGUgYmFkIGV4dGVuc2lvblxuICAgICAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF0aGlzLmlzRmlsZUV4dGVuc2lvblZhbGlkKFxuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIDQxNSBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICc0MTUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbGUgbmFtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVOYW1lTmFtZVZhbGlkKGZpbGUubmFtZSwgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVycylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTiBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdGSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbGVzIHRvbyBiaWdcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVRvb0JpZyhuYW1lLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBjdXN0b20gZXJyb3IgNDEzIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJzQxMycsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlVG9vU21hbGwoZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVfVE9PX1NNQUxMIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJTEVfVE9PX1NNQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaWxlIG5hbWUgdG9vIGxvbmcgKDY0IGNoYXJzIG1heClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVOYW1lTGVuZ3RoVmFsaWQoXG4gICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVOQU1FX1RPT19MT05HIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJTEVOQU1FX1RPT19MT05HJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgaGFzTGl2ZVVwbG9hZEVycm9ycyhlcnJvcnM6IEZvcm1FcnJvcltdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIWVycm9ycyAmJlxuICAgICAgICAgICAgISEoZXJyb3JzIGFzIEZvcm1FcnJvcltdKS5maW5kKFxuICAgICAgICAgICAgICAgIGUgPT5cbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJzQxMycpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCc0MTUnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX1BBU1NXT1JEX0xPQ0tFRCcpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCdQREZfQ09OVEFJTlNfU0NSSVBUJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9IQVNfQVRUQUNITUVOVFMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRU1QVFlfUERGJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9HRU5FUkFMX1BST0JMRU0nKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX0hBU19SRVNUUklDVElPTlMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfVE9PX0xPTkcnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRV9UT09fU01BTEwnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJylcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByZXZlbnRBbmRTdG9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXRBbGxGaWxlc0NvdW50KGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7ZGF0YS5sZW5ndGh9YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldEFsbEZpbGVzU2l6ZUluTW8oZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVTaXplSW5CeXRlcyA9IGRhdGEucmVkdWNlKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICh0b3RhbERvY1NpemU6IG51bWJlciwgZG9jdW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oYXNPd25Qcm9wZXJ0eSgnZmlsZVNpemUnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxEb2NTaXplICsgZG9jdW1lbnQuZmlsZVNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbERvY1NpemUgKyBkb2N1bWVudC5zaXplO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50b01lZ2FPY3RldHMoZmlsZVNpemVJbkJ5dGVzKTtcbiAgICB9XG5cbiAgICB0b01lZ2FPY3RldHMoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAkeyhzaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKX1gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0VHJhbnNmZXIoZXZlbnQ6IGFueSk6IEZpbGVMaXN0IHtcbiAgICAgICAgaWYgKCEhZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0R2xvYmFsSW5mb3MoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0QWxsRmlsZXNDb3VudChcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKX0gZmljaGllcnMgcG91ciB1biB0b3RhbCBkZSAke3RoaXMuZ2V0QWxsRmlsZXNTaXplSW5NbyhcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKX0gPGFiYnIgdGl0bGU9XCJNZWdhb2N0ZXRcIj5NbzwvYWJicj5gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc2hvd0dsb2JhbEluZm9zKGRhdGE6IGFueSwgaGlkZUdsb2JhbEluZm9zOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhaGlkZUdsb2JhbEluZm9zICYmICEhZGF0YSAmJiAhIWRhdGEubGVuZ3RoICYmIGRhdGEubGVuZ3RoID4gMTtcbiAgICB9XG5cbiAgICBtYXBUb0RvY3VtZW50UmVmZXJlbmNlKFxuICAgICAgICBmaWxlOiBGaWxlLFxuICAgICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgICBrZXk6IHN0cmluZyxcbiAgICAgICAgaXNNdWx0aXBsZTogYm9vbGVhbixcbiAgICAgICAgdW5pcVByZWZpeDogbnVtYmVyLFxuICAgICAgICBnbG9iYWxTZXF1ZW5jZTogbnVtYmVyXG4gICAgKTogRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGUoKTtcblxuICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgLy8gT3ZlcnJpZGUga2V5IHRvIGVuc3VyZXMgdGhhdCBHZXNEZW0gY2FuIGFjY2VwdCB0aGUgZG9jdW1lbnQga2V5IChsZW5ndGggb2YgNjQgY2hhci4gbWF4LilcbiAgICAgICAgICAgIGtleSA9IGBkb2Mke3VuaXFQcmVmaXh9JHtnbG9iYWxTZXF1ZW5jZX1gO1xuICAgICAgICAgICAgZG9jdW1lbnQua2V5ID0gdGhpcy5ub3JtYWxpemVLZXkoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmtleSA9IGtleTtcbiAgICAgICAgZG9jdW1lbnQuZmlsZW5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgIGRvY3VtZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgICBkb2N1bWVudC5maWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICAgICAgZG9jdW1lbnQubGFiZWwgPSBsYWJlbDtcbiAgICAgICAgZG9jdW1lbnQuZmlsZSA9IGZpbGU7XG5cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cblxuICAgIG1hcFRvRm9ybURhdGEoXG4gICAgICAgIGRvY3VtZW50czogRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZVtdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmdcbiAgICApOiBGb3JtRGF0YSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2goKHsgZmlsZSwga2V5LCBsYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleXMnLCBrZXkpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdsYWJlbHMnLCB0aGlzLnJlbW92ZUNvbW1hc0luTGFiZWwobGFiZWwpKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2Zvcm1LZXknLCBmb3JtS2V5KTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdsYW5ndWFnZScsIGxhbmd1YWdlKTtcblxuICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWFzIGFyZSByZW1vdmVkIHRvIGF2b2lkIGEgd3JvbmcgaW50ZXJwcmV0YXRpb24gYXMgYW4gYXJyYXkgb2Ygc3RyaW5nIGluIGZvcm1EYXRhLlxuICAgICAqIEBwYXJhbSBsYWJlbCB0byBiZSBjbGVhbmVkIGZyb20gY29tbWFcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICByZW1vdmVDb21tYXNJbkxhYmVsKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbGFiZWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVG9vQmlnKGZpbGVTaXplSW5CeXRlczogbnVtYmVyLCBsaW1pdEluQnl0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsZVNpemVJbkJ5dGVzID4gbGltaXRJbkJ5dGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZUVycm9yTWVzc2FnZUtleXMoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JNc2c6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc2FmZUZpbGVOYW1lID0gZ2V0U2FmZUZpbGVOYW1lRm9yRXJyb3JNZXNzYWdlKGZpbGVOYW1lKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvck1zZyA9IGVycm9yTXNnLnJlcGxhY2UoJyUxJHMnLCBzYWZlRmlsZU5hbWUpO1xuXG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnNDEzJykpIHtcbiAgICAgICAgICAgIC8vIFJFUVVFU1RfRU5USVRZX1RPT19MQVJHRV9FUlJPUl9NU0dcbiAgICAgICAgICAgIGNvbnN0IGZpbGVNYXhTaXplID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShuYW1lKSAvXG4gICAgICAgICAgICAgICAgKDEwMjQgKiAxMDI0KVxuICAgICAgICAgICAgKS50b1N0cmluZygpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVycm9yTXNnLnJlcGxhY2UoJyUyJHMnLCBmaWxlTWF4U2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yQ29kZS5zdGFydHNXaXRoKCc0MTUnKSkge1xuICAgICAgICAgICAgLy8gVU5TVVBQT1JURURfTUVESUFfVFlQRV9FUlJPUl9NU0dcbiAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgID8gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmFjY2VwdFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJyBvdSAnKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKCclMiRzJywgZmlsZUV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfVE9PX0xPTkcnKSkge1xuICAgICAgICAgICAgY29uc3QgbWF4RmlsZU5hbWVMZW5ndGggPSAoXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCB8fCB0aGlzLm1heEZpbGVOYW1lTGVuZ3RoXG4gICAgICAgICAgICApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIG1heEZpbGVOYW1lTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JDb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVfVE9PX1NNQUxMJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICclMiRzJyxcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVNaW5TaXplSW5CeXRlcy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJykpIHtcbiAgICAgICAgICAgIGxldCBmaWxlTmFtZUlsbGVnYWxDaGFyYWN0ZXJzID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMgfHwgdGhpcy5pbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgKS5yZXBsYWNlKC8sL2csICcnKTtcblxuICAgICAgICAgICAgZmlsZU5hbWVJbGxlZ2FsQ2hhcmFjdGVycyArPSBQRVJNQU5FTlRfSUxMRUdBTF9DSEFSQUNURVJTLmpvaW4oJycpO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIGZpbGVOYW1lSWxsZWdhbENoYXJhY3RlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERlZmF1bHRVbmtub3duRXJyb3JNZXNzYWdlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtc2cgPSAnSW1wb3NzaWJsZSBkZSB0cmFuc21ldHRyZSBsZSBmaWNoaWVyJztcbiAgICAgICAgaWYgKCEhZmlsZU5hbWUgJiYgISFmaWxlTmFtZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttc2d9ICR7Z2V0U2FmZUZpbGVOYW1lRm9yRXJyb3JNZXNzYWdlKGZpbGVOYW1lKX0uYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7bXNnfS5gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBrZXkgdG8gYmUgbm9ybWFsaXplZFxuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGtleSA/IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UodGhpcy5DSEFSX1RPX1JFUExBQ0UsICcnKSA6IG51bGw7XG4gICAgfVxufVxuIl19
@@ -1,21 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { filter, map } from 'rxjs/operators';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../sdk-session-info/session-info.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../sdk-dictionary/sdk-dictionary.pipe";
7
- export class FoehnUserConnectedAsComponent {
8
- constructor(sessionInfo) {
9
- this.sessionInfo = sessionInfo;
10
- }
11
- ngOnInit() {
12
- this.connectedAs = this.sessionInfo.data.pipe(filter(userInfo => !!userInfo), map((userInfo) => userInfo.espaceLabel));
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsComponent, deps: [{ token: i1.SessionInfo }], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnUserConnectedAsComponent, selector: "foehn-user-connected-as", ngImport: i0, template: "<!-- prettier-ignore -->\n<p\n *ngIf=\"(connectedAs | async) as userConnectedAs\"\n class=\"h2\"\n>\n {{'foehn-user-connected-as.label' | fromDictionary }} <em>&laquo;{{ userConnectedAs }}&raquo;</em>\n</p>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsComponent, decorators: [{
18
- type: Component,
19
- args: [{ selector: 'foehn-user-connected-as', template: "<!-- prettier-ignore -->\n<p\n *ngIf=\"(connectedAs | async) as userConnectedAs\"\n class=\"h2\"\n>\n {{'foehn-user-connected-as.label' | fromDictionary }} <em>&laquo;{{ userConnectedAs }}&raquo;</em>\n</p>\n" }]
20
- }], ctorParameters: () => [{ type: i1.SessionInfo }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdXNlci1jb25uZWN0ZWQtYXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11c2VyLWNvbm5lY3RlZC1hcy9mb2Vobi11c2VyLWNvbm5lY3RlZC1hcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUzdDLE1BQU0sT0FBTyw2QkFBNkI7SUFHdEMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRWhELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QixHQUFHLENBQUMsQ0FBQyxRQUF5QixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQzNELENBQUM7SUFDTixDQUFDOytHQVZRLDZCQUE2QjttR0FBN0IsNkJBQTZCLCtEQ1gxQywyTkFPQTs7NEZESWEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNJLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25JbmZvRGF0YSB9IGZyb20gJy4uL3Nkay1zZXNzaW9uLWluZm8vc2Vzc2lvbi1pbmZvLWRhdGEnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tdXNlci1jb25uZWN0ZWQtYXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuVXNlckNvbm5lY3RlZEFzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBjb25uZWN0ZWRBczogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm8pIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRBcyA9IHRoaXMuc2Vzc2lvbkluZm8uZGF0YS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHVzZXJJbmZvID0+ICEhdXNlckluZm8pLFxuICAgICAgICAgICAgbWFwKCh1c2VySW5mbzogU2Vzc2lvbkluZm9EYXRhKSA9PiB1c2VySW5mby5lc3BhY2VMYWJlbClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8IS0tIHByZXR0aWVyLWlnbm9yZSAtLT5cbjxwXG4gICAgKm5nSWY9XCIoY29ubmVjdGVkQXMgfCBhc3luYykgYXMgdXNlckNvbm5lY3RlZEFzXCJcbiAgICBjbGFzcz1cImgyXCJcbj5cbiAgICB7eydmb2Vobi11c2VyLWNvbm5lY3RlZC1hcy5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeSB9fSA8ZW0+JmxhcXVvO3t7IHVzZXJDb25uZWN0ZWRBcyB9fSZyYXF1bzs8L2VtPlxuPC9wPlxuIl19
@@ -1,19 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
4
- import { FoehnUserConnectedAsComponent } from './foehn-user-connected-as.component';
5
- import * as i0 from "@angular/core";
6
- export class FoehnUserConnectedAsModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, declarations: [FoehnUserConnectedAsComponent], imports: [CommonModule, SdkDictionaryModule], exports: [FoehnUserConnectedAsComponent] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, imports: [CommonModule, SdkDictionaryModule] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnUserConnectedAsModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- imports: [CommonModule, SdkDictionaryModule],
15
- declarations: [FoehnUserConnectedAsComponent],
16
- exports: [FoehnUserConnectedAsComponent]
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdXNlci1jb25uZWN0ZWQtYXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFPcEYsTUFBTSxPQUFPLDBCQUEwQjsrR0FBMUIsMEJBQTBCO2dIQUExQiwwQkFBMEIsaUJBSHBCLDZCQUE2QixhQURsQyxZQUFZLEVBQUUsbUJBQW1CLGFBRWpDLDZCQUE2QjtnSEFFOUIsMEJBQTBCLFlBSnpCLFlBQVksRUFBRSxtQkFBbUI7OzRGQUlsQywwQkFBMEI7a0JBTHRDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNka0RpY3Rpb25hcnlNb2R1bGUgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5Vc2VyQ29ubmVjdGVkQXNDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2RrRGljdGlvbmFyeU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9laG5Vc2VyQ29ubmVjdGVkQXNDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtGb2VoblVzZXJDb25uZWN0ZWRBc0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5Vc2VyQ29ubmVjdGVkQXNNb2R1bGUge31cbiJdfQ==
@@ -1,96 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../validation/validation-handler.service";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../sdk-dictionary/sdk-dictionary.pipe";
6
- const isAllUpperCase = (value) => value.toUpperCase() === value;
7
- const formatErrorMessage = (errorMessage) => {
8
- if (!errorMessage?.length) {
9
- return '';
10
- }
11
- let firstWord = errorMessage.split(' ')[0];
12
- const nextWords = errorMessage.split(' ').slice(1).join(' ');
13
- if (firstWord.length === 1 || !isAllUpperCase(firstWord)) {
14
- firstWord = firstWord.charAt(0).toLowerCase() + firstWord.slice(1);
15
- }
16
- return `${firstWord}${!!nextWords.length ? ` ${nextWords}` : ''}`;
17
- };
18
- // eslint-disable max-classes-per-file
19
- export class FoehnValidationAlertSummaryComponent {
20
- constructor(validationHandlerService) {
21
- this.validationHandlerService = validationHandlerService;
22
- }
23
- get shouldDisplayAlertSummary() {
24
- return !!this.form && this.form.shouldDisplayAlertSummary;
25
- }
26
- get errors() {
27
- const errors = [];
28
- const components = this.form.getAllComponents();
29
- components.forEach(component => {
30
- if (component.hasErrorsToDisplay() &&
31
- !component.excludeFromErrorSummary) {
32
- component.errors.forEach(error => {
33
- errors.push({
34
- name: error.name,
35
- message: formatErrorMessage(this.validationHandlerService.getMessage(component, error)),
36
- componentLabel: component.label
37
- ? `${component.label} : `
38
- : ''
39
- });
40
- });
41
- }
42
- });
43
- return errors;
44
- }
45
- scrollToError(event, errorId) {
46
- event.preventDefault();
47
- const elementContainer = document.getElementById(`${errorId}Container`);
48
- if (!elementContainer) {
49
- console.warn(`"${errorId
50
- // eslint-disable-next-line max-len
51
- }" error cannot be scrolled to nor focused. Please make sure that your HTML Foehn element tag attributs "id" and "name" are identical.`);
52
- return;
53
- }
54
- // Scroll in view should be done on input container
55
- elementContainer.scrollIntoView();
56
- const elementChild = document.getElementById(`${errorId}Child`);
57
- if (elementChild) {
58
- // Focus should be on the input itself
59
- elementChild.focus();
60
- }
61
- else {
62
- // For more complex components such as foehn-input-date, foehn-input-time, foehn-nav13, foehn-radio, foehn-checkbox,...
63
- const elementNodeListOf = elementContainer.querySelectorAll(`input[id^="${errorId}"]`);
64
- if (elementNodeListOf && elementNodeListOf.length > 0) {
65
- const inputElement = this.findFirstHtmlInputElementEnabled(elementNodeListOf);
66
- if (inputElement) {
67
- // Focus should be on the input itself
68
- inputElement.focus();
69
- }
70
- }
71
- }
72
- }
73
- trackByError(index, e) {
74
- return e.name;
75
- }
76
- findFirstHtmlInputElementEnabled(elementNodeListOf) {
77
- for (let i = 0; i < elementNodeListOf.length; i++) {
78
- const htmlInputElement = elementNodeListOf.item(i);
79
- if (!htmlInputElement.disabled) {
80
- return htmlInputElement;
81
- }
82
- }
83
- return null;
84
- }
85
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryComponent, deps: [{ token: i1.ValidationHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
86
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FoehnValidationAlertSummaryComponent, selector: "foehn-validation-alert-summary", inputs: { form: "form" }, ngImport: i0, template: "<div\n aria-labelledby=\"error-summary-title\"\n id=\"error-summary\"\n class=\"vd-error-summary\"\n *ngIf=\"shouldDisplayAlertSummary && errors.length\"\n role=\"alert\"\n tabindex=\"-1\"\n>\n <h2 id=\"error-summary-title\">\n {{ 'errors.summary.title' | fromDictionary }}\n </h2>\n <ul>\n <li *ngFor=\"let error of errors; trackBy: trackByError; let i = index\">\n <a\n class=\"text-danger\"\n href=\"\"\n [id]=\"'foehn-error-summary-list-item-' + i\"\n (click)=\"scrollToError($event, error.name)\"\n >\n <span [innerHTML]=\"error.componentLabel\"></span>\n <span [innerHTML]=\"error.message\"></span>\n </a>\n </li>\n </ul>\n</div>\n", styles: [".vd-error-summary{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
87
- }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryComponent, decorators: [{
89
- type: Component,
90
- args: [{ selector: 'foehn-validation-alert-summary', template: "<div\n aria-labelledby=\"error-summary-title\"\n id=\"error-summary\"\n class=\"vd-error-summary\"\n *ngIf=\"shouldDisplayAlertSummary && errors.length\"\n role=\"alert\"\n tabindex=\"-1\"\n>\n <h2 id=\"error-summary-title\">\n {{ 'errors.summary.title' | fromDictionary }}\n </h2>\n <ul>\n <li *ngFor=\"let error of errors; trackBy: trackByError; let i = index\">\n <a\n class=\"text-danger\"\n href=\"\"\n [id]=\"'foehn-error-summary-list-item-' + i\"\n (click)=\"scrollToError($event, error.name)\"\n >\n <span [innerHTML]=\"error.componentLabel\"></span>\n <span [innerHTML]=\"error.message\"></span>\n </a>\n </li>\n </ul>\n</div>\n", styles: [".vd-error-summary{margin-bottom:1rem}\n"] }]
91
- }], ctorParameters: () => [{ type: i1.ValidationHandlerService }], propDecorators: { form: [{
92
- type: Input
93
- }] } });
94
- export class ComponentError {
95
- }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkvZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkvZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUtqRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFLENBQzlDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFFbEMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFlBQW9CLEVBQVUsRUFBRTtJQUN4RCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENB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LENBQWlCO1FBQ3pDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRVMsZ0NBQWdDLENBQ3RDLGlCQUFzQztRQUV0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQzNDLENBQUMsQ0FDZ0IsQ0FBQztZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sZ0JBQWdCLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOytHQXpGUSxvQ0FBb0M7bUdBQXBDLG9DQUFvQyxnR0M1QmpELDZ5QkF5QkE7OzRGREdhLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDSSxnQ0FBZ0M7NkZBTTFDLElBQUk7c0JBREgsS0FBSzs7QUEyRlYsTUFBTSxPQUFPLGNBQWM7Q0FJMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgRm9laG5Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tZm9ybS9mb2Vobi1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24taGFuZGxlci5zZXJ2aWNlJztcblxuY29uc3QgaXNBbGxVcHBlckNhc2UgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgICB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSB2YWx1ZTtcblxuY29uc3QgZm9ybWF0RXJyb3JNZXNzYWdlID0gKGVycm9yTWVzc2FnZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIWVycm9yTWVzc2FnZT8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RXb3JkID0gZXJyb3JNZXNzYWdlLnNwbGl0KCcgJylbMF07XG4gICAgY29uc3QgbmV4dFdvcmRzID0gZXJyb3JNZXNzYWdlLnNwbGl0KCcgJykuc2xpY2UoMSkuam9pbignICcpO1xuICAgIGlmIChmaXJzdFdvcmQubGVuZ3RoID09PSAxIHx8ICFpc0FsbFVwcGVyQ2FzZShmaXJzdFdvcmQpKSB7XG4gICAgICAgIGZpcnN0V29yZCA9IGZpcnN0V29yZC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGZpcnN0V29yZC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Zmlyc3RXb3JkfSR7ISFuZXh0V29yZHMubGVuZ3RoID8gYCAke25leHRXb3Jkc31gIDogJyd9YDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlIG1heC1jbGFzc2VzLXBlci1maWxlXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLXZhbGlkYXRpb24tYWxlcnQtc3VtbWFyeScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLXZhbGlkYXRpb24tYWxlcnQtc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VoblZhbGlkYXRpb25BbGVydFN1bW1hcnlDb21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybTogRm9laG5Gb3JtQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2YWxpZGF0aW9uSGFuZGxlclNlcnZpY2U6IFZhbGlkYXRpb25IYW5kbGVyU2VydmljZSkge31cblxuICAgIGdldCBzaG91bGREaXNwbGF5QWxlcnRTdW1tYXJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLnNob3VsZERpc3BsYXlBbGVydFN1bW1hcnk7XG4gICAgfVxuXG4gICAgZ2V0IGVycm9ycygpOiBDb21wb25lbnRFcnJvcltdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBDb21wb25lbnRFcnJvcltdID0gW107XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLmZvcm0uZ2V0QWxsQ29tcG9uZW50cygpO1xuICAgICAgICBjb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuaGFzRXJyb3JzVG9EaXNwbGF5KCkgJiZcbiAgICAgICAgICAgICAgICAhY29tcG9uZW50LmV4Y2x1ZGVGcm9tRXJyb3JTdW1tYXJ5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuZXJyb3JzLmZvckVhY2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBlcnJvci5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZm9ybWF0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkhhbmRsZXJTZXJ2aWNlLmdldE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TGFiZWw6IGNvbXBvbmVudC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y29tcG9uZW50LmxhYmVsfSA6IGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIHNjcm9sbFRvRXJyb3IoZXZlbnQ6IEV2ZW50LCBlcnJvcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgZWxlbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke2Vycm9ySWR9Q29udGFpbmVyYCk7XG4gICAgICAgIGlmICghZWxlbWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBcIiR7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ySWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgICAgICB9XCIgZXJyb3IgY2Fubm90IGJlIHNjcm9sbGVkIHRvIG5vciBmb2N1c2VkLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgeW91ciBIVE1MIEZvZWhuIGVsZW1lbnQgdGFnIGF0dHJpYnV0cyBcImlkXCIgYW5kIFwibmFtZVwiIGFyZSBpZGVudGljYWwuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTY3JvbGwgaW4gdmlldyBzaG91bGQgYmUgZG9uZSBvbiBpbnB1dCBjb250YWluZXJcbiAgICAgICAgZWxlbWVudENvbnRhaW5lci5zY3JvbGxJbnRvVmlldygpO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRDaGlsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke2Vycm9ySWR9Q2hpbGRgKTtcbiAgICAgICAgaWYgKGVsZW1lbnRDaGlsZCkge1xuICAgICAgICAgICAgLy8gRm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBpbnB1dCBpdHNlbGZcbiAgICAgICAgICAgIGVsZW1lbnRDaGlsZC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRm9yIG1vcmUgY29tcGxleCBjb21wb25lbnRzIHN1Y2ggYXMgZm9laG4taW5wdXQtZGF0ZSwgZm9laG4taW5wdXQtdGltZSwgZm9laG4tbmF2MTMsIGZvZWhuLXJhZGlvLCBmb2Vobi1jaGVja2JveCwuLi5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnROb2RlTGlzdE9mID0gZWxlbWVudENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgIGBpbnB1dFtpZF49XCIke2Vycm9ySWR9XCJdYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50Tm9kZUxpc3RPZiAmJiBlbGVtZW50Tm9kZUxpc3RPZi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kRmlyc3RIdG1sSW5wdXRFbGVtZW50RW5hYmxlZChlbGVtZW50Tm9kZUxpc3RPZik7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBGb2N1cyBzaG91bGQgYmUgb24gdGhlIGlucHV0IGl0c2VsZlxuICAgICAgICAgICAgICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFja0J5RXJyb3IoaW5kZXg6IG51bWJlciwgZTogQ29tcG9uZW50RXJyb3IpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZS5uYW1lO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kRmlyc3RIdG1sSW5wdXRFbGVtZW50RW5hYmxlZChcbiAgICAgICAgZWxlbWVudE5vZGVMaXN0T2Y6IE5vZGVMaXN0T2Y8RWxlbWVudD5cbiAgICApOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50Tm9kZUxpc3RPZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaHRtbElucHV0RWxlbWVudCA9IGVsZW1lbnROb2RlTGlzdE9mLml0ZW0oXG4gICAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFodG1sSW5wdXRFbGVtZW50LmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGh0bWxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RXJyb3Ige1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29tcG9uZW50TGFiZWw6IHN0cmluZztcbn1cbiIsIjxkaXZcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCJcbiAgICBpZD1cImVycm9yLXN1bW1hcnlcIlxuICAgIGNsYXNzPVwidmQtZXJyb3Itc3VtbWFyeVwiXG4gICAgKm5nSWY9XCJzaG91bGREaXNwbGF5QWxlcnRTdW1tYXJ5ICYmIGVycm9ycy5sZW5ndGhcIlxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGgyIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgICAgICB7eyAnZXJyb3JzLnN1bW1hcnkudGl0bGUnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICA8L2gyPlxuICAgIDx1bD5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlFcnJvcjsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZvZWhuLWVycm9yLXN1bW1hcnktbGlzdC1pdGVtLScgKyBpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2Nyb2xsVG9FcnJvcigkZXZlbnQsIGVycm9yLm5hbWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yLmNvbXBvbmVudExhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZXJyb3IubWVzc2FnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
4
- import { FoehnValidationAlertSummaryComponent } from './foehn-validation-alert-summary.component';
5
- import * as i0 from "@angular/core";
6
- export class FoehnValidationAlertSummaryModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, declarations: [FoehnValidationAlertSummaryComponent], imports: [CommonModule, SdkDictionaryModule], exports: [FoehnValidationAlertSummaryComponent] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, imports: [CommonModule, SdkDictionaryModule] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FoehnValidationAlertSummaryModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- imports: [CommonModule, SdkDictionaryModule],
15
- declarations: [FoehnValidationAlertSummaryComponent],
16
- exports: [FoehnValidationAlertSummaryComponent]
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkvZm9laG4tdmFsaWRhdGlvbi1hbGVydC1zdW1tYXJ5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFPbEcsTUFBTSxPQUFPLGlDQUFpQzsrR0FBakMsaUNBQWlDO2dIQUFqQyxpQ0FBaUMsaUJBSDNCLG9DQUFvQyxhQUR6QyxZQUFZLEVBQUUsbUJBQW1CLGFBRWpDLG9DQUFvQztnSEFFckMsaUNBQWlDLFlBSmhDLFlBQVksRUFBRSxtQkFBbUI7OzRGQUlsQyxpQ0FBaUM7a0JBTDdDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxZQUFZLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNka0RpY3Rpb25hcnlNb2R1bGUgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5WYWxpZGF0aW9uQWxlcnRTdW1tYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0LXN1bW1hcnkuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTZGtEaWN0aW9uYXJ5TW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtGb2VoblZhbGlkYXRpb25BbGVydFN1bW1hcnlDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtGb2VoblZhbGlkYXRpb25BbGVydFN1bW1hcnlDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuVmFsaWRhdGlvbkFsZXJ0U3VtbWFyeU1vZHVsZSB7fVxuIl19