@hmcts/ccd-case-ui-toolkit 6.19.15-restricted-case-access → 6.19.15-welsh-translation-FirstErrorPipe-fix

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 (331) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +9845 -4911
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +2 -2
  6. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +1 -1
  7. package/esm2015/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.js +1 -1
  8. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +2 -11
  9. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.js +7 -0
  10. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +167 -128
  11. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +17 -21
  12. package/esm2015/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.js +2 -3
  13. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +2 -2
  14. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +2 -2
  15. package/esm2015/lib/shared/components/case-editor/services/case-flag-state.service.js +19 -0
  16. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +6 -1
  17. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +5 -18
  18. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +77 -49
  19. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +5 -2
  20. package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +1 -1
  21. package/esm2015/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.js +76 -33
  22. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.js +264 -45
  23. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.js +144 -73
  24. package/esm2015/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.js +181 -0
  25. package/esm2015/lib/shared/components/palette/case-flag/components/index.js +4 -1
  26. package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +72 -77
  27. package/esm2015/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.js +6 -0
  28. package/esm2015/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.js +133 -101
  29. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.js +21 -8
  30. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.js +223 -114
  31. package/esm2015/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.js +292 -0
  32. package/esm2015/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.js +465 -109
  33. package/esm2015/lib/shared/components/palette/case-flag/domain/case-flag-state.model.js +1 -1
  34. package/esm2015/lib/shared/components/palette/case-flag/domain/case-flag.model.js +1 -1
  35. package/esm2015/lib/shared/components/palette/case-flag/domain/language.model.js +1 -1
  36. package/esm2015/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.js +2 -1
  37. package/esm2015/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.js +3 -1
  38. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.js +12 -0
  39. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.js +15 -0
  40. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.js +13 -0
  41. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.js +3 -2
  42. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.js +11 -3
  43. package/esm2015/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.js +6 -0
  44. package/esm2015/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.js +6 -0
  45. package/esm2015/lib/shared/components/palette/case-flag/enums/index.js +9 -2
  46. package/esm2015/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.js +3 -2
  47. package/esm2015/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.js +4 -1
  48. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.js +6 -0
  49. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.js +6 -0
  50. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.js +5 -1
  51. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.js +7 -2
  52. package/esm2015/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.js +10 -7
  53. package/esm2015/lib/shared/components/palette/case-flag/index.js +2 -1
  54. package/esm2015/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.js +41 -0
  55. package/esm2015/lib/shared/components/palette/case-flag/pipes/index.js +5 -0
  56. package/esm2015/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.js +41 -0
  57. package/esm2015/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.js +109 -0
  58. package/esm2015/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.js +77 -0
  59. package/esm2015/lib/shared/components/palette/case-flag/read-case-flag-field.component.js +153 -51
  60. package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +387 -171
  61. package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +4 -5
  62. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +34 -37
  63. package/esm2015/lib/shared/components/palette/complex/read-complex-field.component.js +9 -7
  64. package/esm2015/lib/shared/components/palette/complex/sort-order.js +7 -0
  65. package/esm2015/lib/shared/components/palette/date/write-date-field.component.js +4 -5
  66. package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +4 -5
  67. package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +4 -5
  68. package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +4 -5
  69. package/esm2015/lib/shared/components/palette/email/write-email-field.component.js +4 -5
  70. package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +4 -5
  71. package/esm2015/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.js +4 -5
  72. package/esm2015/lib/shared/components/palette/index.js +3 -1
  73. package/esm2015/lib/shared/components/palette/markdown/index.js +2 -1
  74. package/esm2015/lib/shared/components/palette/markdown/markdown-component.module.js +42 -0
  75. package/esm2015/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.js +4 -5
  76. package/esm2015/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +4 -5
  77. package/esm2015/lib/shared/components/palette/number/write-number-field.component.js +4 -5
  78. package/esm2015/lib/shared/components/palette/palette.module.js +147 -50
  79. package/esm2015/lib/shared/components/palette/palette.service.js +4 -2
  80. package/esm2015/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.js +4 -5
  81. package/esm2015/lib/shared/components/palette/query-management/__mocks__/index.js +210 -0
  82. package/esm2015/lib/shared/components/palette/query-management/components/index.js +13 -0
  83. package/esm2015/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.js +45 -0
  84. package/esm2015/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.js +154 -0
  85. package/esm2015/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.js +69 -0
  86. package/esm2015/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.js +64 -0
  87. package/esm2015/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.js +316 -0
  88. package/esm2015/lib/shared/components/palette/query-management/components/query-details/query-details.component.js +380 -0
  89. package/esm2015/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.js +25 -0
  90. package/esm2015/lib/shared/components/palette/query-management/components/query-list/query-list.component.js +181 -0
  91. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.js +78 -0
  92. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.js +125 -0
  93. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.js +239 -0
  94. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.js +120 -0
  95. package/esm2015/lib/shared/components/palette/query-management/enums/index.js +6 -0
  96. package/esm2015/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.js +5 -0
  97. package/esm2015/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.js +6 -0
  98. package/esm2015/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.js +10 -0
  99. package/esm2015/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.js +6 -0
  100. package/esm2015/lib/shared/components/palette/query-management/index.js +7 -0
  101. package/esm2015/lib/shared/components/palette/query-management/models/case-queries-collection.model.js +2 -0
  102. package/esm2015/lib/shared/components/palette/query-management/models/index.js +8 -0
  103. package/esm2015/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.js +2 -0
  104. package/esm2015/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.js +2 -0
  105. package/esm2015/lib/shared/components/palette/query-management/models/query-create-context.enum.js +9 -0
  106. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.js +2 -0
  107. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.js +18 -0
  108. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.js +41 -0
  109. package/esm2015/lib/shared/components/palette/query-management/read-query-management-field.component.js +128 -0
  110. package/esm2015/lib/shared/components/palette/query-management/utils/query-management.utils.js +22 -0
  111. package/esm2015/lib/shared/components/palette/text/write-text-field.component.js +4 -5
  112. package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +4 -5
  113. package/esm2015/lib/shared/components/palette/utils/first-error.pipe.js +16 -9
  114. package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +7 -5
  115. package/esm2015/lib/shared/components/palette/yes-no/write-yes-no-field.component.js +8 -8
  116. package/esm2015/lib/shared/domain/case-flag/flag-type.model.js +17 -2
  117. package/esm2015/lib/shared/domain/case-view/case-view-event-ids.enum.js +6 -0
  118. package/esm2015/lib/shared/domain/case-view/case-view-trigger.model.js +1 -2
  119. package/esm2015/lib/shared/domain/definition/display-context-enum.model.js +3 -1
  120. package/esm2015/lib/shared/fixture/shared.test.fixture.js +2 -1
  121. package/esm2015/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.js +16 -0
  122. package/esm2015/lib/shared/pipes/generic/index.js +2 -0
  123. package/esm2015/lib/shared/pipes/index.js +3 -2
  124. package/esm2015/lib/shared/pipes/pipes.module.js +9 -5
  125. package/esm2015/lib/shared/services/case-flag/case-flag-refdata.service.js +9 -3
  126. package/esm2015/lib/shared/services/fields/fields.utils.js +21 -3
  127. package/esm2015/lib/shared/services/form/form-value.service.js +14 -11
  128. package/esm2015/lib/shared/services/jurisdiction/jurisdiction.service.js +2 -1
  129. package/esm2015/lib/shared/services/request/request.options.builder.js +7 -1
  130. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +8433 -4028
  131. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  132. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  133. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  134. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts +6 -0
  135. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts.map +1 -0
  136. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +1 -1
  137. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  138. package/lib/shared/components/case-editor/case-editor.module.d.ts +17 -20
  139. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  140. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  141. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  142. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +11 -0
  143. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -0
  144. package/lib/shared/components/case-editor/services/cases.service.d.ts +1 -0
  145. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  146. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  147. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +6 -2
  148. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  149. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +4 -4
  150. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  151. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  152. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +6 -2
  153. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  154. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts +23 -8
  155. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts.map +1 -1
  156. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts +2 -1
  157. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts.map +1 -1
  158. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +28 -0
  159. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -0
  160. package/lib/shared/components/palette/case-flag/components/index.d.ts +3 -0
  161. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  162. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -8
  163. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  164. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts +5 -0
  165. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts.map +1 -0
  166. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +10 -8
  167. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  168. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -1
  169. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  170. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +16 -9
  171. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  172. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +27 -0
  173. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +1 -0
  174. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +26 -11
  175. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  176. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts +1 -10
  177. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts.map +1 -1
  178. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +12 -1
  179. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts.map +1 -1
  180. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts +1 -0
  181. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts.map +1 -1
  182. package/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.d.ts +1 -0
  183. package/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.d.ts.map +1 -1
  184. package/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.d.ts +3 -1
  185. package/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.d.ts.map +1 -1
  186. package/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.d.ts +11 -0
  187. package/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.d.ts.map +1 -0
  188. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts +14 -0
  189. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts.map +1 -0
  190. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts +12 -0
  191. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts.map +1 -0
  192. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts +2 -1
  193. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts.map +1 -1
  194. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts +11 -3
  195. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts.map +1 -1
  196. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts +5 -0
  197. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts.map +1 -0
  198. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts +5 -0
  199. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts.map +1 -0
  200. package/lib/shared/components/palette/case-flag/enums/index.d.ts +8 -1
  201. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  202. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts +2 -1
  203. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts.map +1 -1
  204. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts +3 -0
  205. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts.map +1 -1
  206. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts +5 -0
  207. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts.map +1 -0
  208. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts +5 -0
  209. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts.map +1 -0
  210. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts +5 -1
  211. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts.map +1 -1
  212. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts +7 -2
  213. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts.map +1 -1
  214. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts +7 -4
  215. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts.map +1 -1
  216. package/lib/shared/components/palette/case-flag/index.d.ts +1 -0
  217. package/lib/shared/components/palette/case-flag/index.d.ts.map +1 -1
  218. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts +19 -0
  219. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts.map +1 -0
  220. package/lib/shared/components/palette/case-flag/pipes/index.d.ts +5 -0
  221. package/lib/shared/components/palette/case-flag/pipes/index.d.ts.map +1 -0
  222. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts +18 -0
  223. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts.map +1 -0
  224. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts +25 -0
  225. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts.map +1 -0
  226. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts +21 -0
  227. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts.map +1 -0
  228. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +12 -8
  229. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  230. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +51 -26
  231. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  232. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +3 -2
  233. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  234. package/lib/shared/components/palette/complex/sort-order.d.ts +6 -0
  235. package/lib/shared/components/palette/complex/sort-order.d.ts.map +1 -0
  236. package/lib/shared/components/palette/index.d.ts +2 -0
  237. package/lib/shared/components/palette/index.d.ts.map +1 -1
  238. package/lib/shared/components/palette/markdown/index.d.ts +1 -0
  239. package/lib/shared/components/palette/markdown/index.d.ts.map +1 -1
  240. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +13 -0
  241. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +1 -0
  242. package/lib/shared/components/palette/palette.module.d.ts +140 -118
  243. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  244. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  245. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts +11 -0
  246. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts.map +1 -0
  247. package/lib/shared/components/palette/query-management/components/index.d.ts +13 -0
  248. package/lib/shared/components/palette/query-management/components/index.d.ts.map +1 -0
  249. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts +8 -0
  250. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -0
  251. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +22 -0
  252. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -0
  253. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts +11 -0
  254. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts.map +1 -0
  255. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts +10 -0
  256. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts.map +1 -0
  257. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +30 -0
  258. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -0
  259. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +16 -0
  260. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -0
  261. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts +9 -0
  262. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts.map +1 -0
  263. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +18 -0
  264. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts.map +1 -0
  265. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts +20 -0
  266. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts.map +1 -0
  267. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts +20 -0
  268. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts.map +1 -0
  269. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +11 -0
  270. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +1 -0
  271. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +21 -0
  272. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts.map +1 -0
  273. package/lib/shared/components/palette/query-management/enums/index.d.ts +6 -0
  274. package/lib/shared/components/palette/query-management/enums/index.d.ts.map +1 -0
  275. package/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.d.ts +4 -0
  276. package/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.d.ts.map +1 -0
  277. package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts +5 -0
  278. package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts.map +1 -0
  279. package/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.d.ts +9 -0
  280. package/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.d.ts.map +1 -0
  281. package/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.d.ts +5 -0
  282. package/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.d.ts.map +1 -0
  283. package/lib/shared/components/palette/query-management/index.d.ts +7 -0
  284. package/lib/shared/components/palette/query-management/index.d.ts.map +1 -0
  285. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +27 -0
  286. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -0
  287. package/lib/shared/components/palette/query-management/models/index.d.ts +8 -0
  288. package/lib/shared/components/palette/query-management/models/index.d.ts.map +1 -0
  289. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts +5 -0
  290. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts.map +1 -0
  291. package/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.d.ts +6 -0
  292. package/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.d.ts.map +1 -0
  293. package/lib/shared/components/palette/query-management/models/query-create-context.enum.d.ts +8 -0
  294. package/lib/shared/components/palette/query-management/models/query-create-context.enum.d.ts.map +1 -0
  295. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts +7 -0
  296. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts.map +1 -0
  297. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts +10 -0
  298. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts.map +1 -0
  299. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +22 -0
  300. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -0
  301. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +18 -0
  302. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -0
  303. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +12 -0
  304. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -0
  305. package/lib/shared/components/palette/utils/first-error.pipe.d.ts +8 -5
  306. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  307. package/lib/shared/domain/case-flag/flag-type.model.d.ts +6 -1
  308. package/lib/shared/domain/case-flag/flag-type.model.d.ts.map +1 -1
  309. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts +5 -0
  310. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts.map +1 -0
  311. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts +0 -1
  312. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts.map +1 -1
  313. package/lib/shared/domain/definition/display-context-enum.model.d.ts +3 -1
  314. package/lib/shared/domain/definition/display-context-enum.model.d.ts.map +1 -1
  315. package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -1
  316. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts +8 -0
  317. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts.map +1 -0
  318. package/lib/shared/pipes/generic/index.d.ts +2 -0
  319. package/lib/shared/pipes/generic/index.d.ts.map +1 -0
  320. package/lib/shared/pipes/index.d.ts +2 -1
  321. package/lib/shared/pipes/index.d.ts.map +1 -1
  322. package/lib/shared/pipes/pipes.module.d.ts +3 -2
  323. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  324. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts +3 -2
  325. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts.map +1 -1
  326. package/lib/shared/services/fields/fields.utils.d.ts +1 -0
  327. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  328. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  329. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  330. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  331. package/package.json +1 -1
@@ -1,192 +1,548 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormControl, FormGroup } from '@angular/forms';
3
- import { CaseFlagFieldState, CaseFlagStatus, CaseFlagWizardStepTitle, UpdateFlagErrorMessage, UpdateFlagStep } from '../../enums';
3
+ import { RpxTranslationService } from 'rpx-xui-translation';
4
+ import { CaseFlagDisplayContextParameter, CaseFlagFieldState, CaseFlagFormFields, CaseFlagStatus, CaseFlagWizardStepTitle, UpdateFlagErrorMessage, UpdateFlagStep } from '../../enums';
4
5
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/forms";
6
- import * as i2 from "@angular/common";
7
- function UpdateFlagComponent_div_8_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelementStart(0, "div", 16);
9
- i0.ɵɵelementStart(1, "span", 17);
10
- i0.ɵɵtext(2, "Error:");
11
- i0.ɵɵelementEnd();
12
- i0.ɵɵtext(3);
6
+ import * as i1 from "rpx-xui-translation";
7
+ function UpdateFlagComponent_div_7_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵelementStart(0, "div", 17);
9
+ i0.ɵɵtext(1);
10
+ i0.ɵɵpipe(2, "updateFlagTitleDisplay");
13
11
  i0.ɵɵelementEnd();
14
12
  } if (rf & 2) {
15
13
  const ctx_r0 = i0.ɵɵnextContext();
16
- i0.ɵɵadvance(3);
17
- i0.ɵɵtextInterpolate1(" ", ctx_r0.updateFlagNotEnteredErrorMessage, " ");
14
+ i0.ɵɵadvance(1);
15
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r0.selectedFlag == null ? null : ctx_r0.selectedFlag.flagDetailDisplay == null ? null : ctx_r0.selectedFlag.flagDetailDisplay.flagDetail), " ");
18
16
  } }
19
- function UpdateFlagComponent_div_9_Template(rf, ctx) { if (rf & 1) {
17
+ function UpdateFlagComponent_div_14_Template(rf, ctx) { if (rf & 1) {
20
18
  i0.ɵɵelementStart(0, "div", 18);
21
- i0.ɵɵelementStart(1, "span", 17);
22
- i0.ɵɵtext(2, "Error:");
19
+ i0.ɵɵtext(1);
20
+ i0.ɵɵpipe(2, "rpxTranslate");
21
+ i0.ɵɵelementEnd();
22
+ } if (rf & 2) {
23
+ const ctx_r1 = i0.ɵɵnextContext();
24
+ i0.ɵɵadvance(1);
25
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r1.updateFlagStepEnum.COMMENT_HINT_TEXT_EXTERNAL), " ");
26
+ } }
27
+ function UpdateFlagComponent_ng_container_15_div_5_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "div", 25);
29
+ i0.ɵɵelementStart(1, "span", 26);
30
+ i0.ɵɵtext(2, "!");
31
+ i0.ɵɵelementEnd();
32
+ i0.ɵɵelementStart(3, "strong", 27);
33
+ i0.ɵɵelementStart(4, "span", 28);
34
+ i0.ɵɵtext(5);
35
+ i0.ɵɵpipe(6, "rpxTranslate");
36
+ i0.ɵɵelementEnd();
37
+ i0.ɵɵtext(7);
38
+ i0.ɵɵpipe(8, "rpxTranslate");
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const ctx_r10 = i0.ɵɵnextContext(2);
43
+ i0.ɵɵadvance(5);
44
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 2, "Warning"));
45
+ i0.ɵɵadvance(2);
46
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 4, ctx_r10.updateFlagStepEnum.WARNING_TEXT), " ");
47
+ } }
48
+ function UpdateFlagComponent_ng_container_15_div_6_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementStart(0, "div", 29);
50
+ i0.ɵɵelementStart(1, "span", 30);
51
+ i0.ɵɵtext(2);
52
+ i0.ɵɵpipe(3, "rpxTranslate");
53
+ i0.ɵɵelementEnd();
54
+ i0.ɵɵtext(4);
55
+ i0.ɵɵpipe(5, "rpxTranslate");
23
56
  i0.ɵɵelementEnd();
57
+ } if (rf & 2) {
58
+ const ctx_r11 = i0.ɵɵnextContext(2);
59
+ i0.ɵɵadvance(2);
60
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
61
+ i0.ɵɵadvance(2);
62
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r11.commentsNotEnteredErrorMessage), " ");
63
+ } }
64
+ function UpdateFlagComponent_ng_container_15_div_7_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵelementStart(0, "div", 31);
66
+ i0.ɵɵelementStart(1, "span", 30);
67
+ i0.ɵɵtext(2);
68
+ i0.ɵɵpipe(3, "rpxTranslate");
69
+ i0.ɵɵelementEnd();
70
+ i0.ɵɵtext(4);
71
+ i0.ɵɵpipe(5, "rpxTranslate");
72
+ i0.ɵɵelementEnd();
73
+ } if (rf & 2) {
74
+ const ctx_r12 = i0.ɵɵnextContext(2);
75
+ i0.ɵɵadvance(2);
76
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
77
+ i0.ɵɵadvance(2);
78
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r12.commentsCharLimitErrorMessage), " ");
79
+ } }
80
+ function UpdateFlagComponent_ng_container_15_Template(rf, ctx) { if (rf & 1) {
81
+ i0.ɵɵelementContainerStart(0);
82
+ i0.ɵɵelementStart(1, "div", 19);
83
+ i0.ɵɵtext(2);
84
+ i0.ɵɵpipe(3, "rpxTranslate");
85
+ i0.ɵɵpipe(4, "rpxTranslate");
86
+ i0.ɵɵelementEnd();
87
+ i0.ɵɵtemplate(5, UpdateFlagComponent_ng_container_15_div_5_Template, 9, 6, "div", 20);
88
+ i0.ɵɵtemplate(6, UpdateFlagComponent_ng_container_15_div_6_Template, 6, 6, "div", 21);
89
+ i0.ɵɵtemplate(7, UpdateFlagComponent_ng_container_15_div_7_Template, 6, 6, "div", 22);
90
+ i0.ɵɵelementStart(8, "textarea", 23);
91
+ i0.ɵɵtext(9, " ");
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵelementStart(10, "div", 24);
94
+ i0.ɵɵtext(11);
95
+ i0.ɵɵpipe(12, "rpxTranslate");
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵelementContainerEnd();
98
+ } if (rf & 2) {
99
+ const ctx_r2 = i0.ɵɵnextContext();
100
+ i0.ɵɵadvance(2);
101
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.internalUserUpdate ? i0.ɵɵpipeBind1(3, 8, ctx_r2.updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL) : i0.ɵɵpipeBind1(4, 10, ctx_r2.updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL_2_POINT_1), " ");
102
+ i0.ɵɵadvance(3);
103
+ i0.ɵɵproperty("ngIf", ctx_r2.internalUser2Point1EnabledUpdate && ctx_r2.externallyVisibleFlag);
104
+ i0.ɵɵadvance(1);
105
+ i0.ɵɵproperty("ngIf", ctx_r2.commentsNotEnteredErrorMessage);
106
+ i0.ɵɵadvance(1);
107
+ i0.ɵɵproperty("ngIf", ctx_r2.commentsCharLimitErrorMessage);
108
+ i0.ɵɵadvance(1);
109
+ i0.ɵɵproperty("id", ctx_r2.caseFlagFormFields.COMMENTS)("name", ctx_r2.caseFlagFormFields.COMMENTS)("formControlName", ctx_r2.caseFlagFormFields.COMMENTS);
110
+ i0.ɵɵadvance(3);
111
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 12, ctx_r2.updateFlagStepEnum.CHARACTER_LIMIT_INFO), " ");
112
+ } }
113
+ function UpdateFlagComponent_ng_template_16_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
114
+ i0.ɵɵelementContainer(0);
115
+ } }
116
+ function UpdateFlagComponent_ng_template_16_ng_container_0_Template(rf, ctx) { if (rf & 1) {
117
+ i0.ɵɵelementContainerStart(0);
118
+ i0.ɵɵtemplate(1, UpdateFlagComponent_ng_template_16_ng_container_0_ng_container_1_Template, 1, 0, "ng-container", 33);
119
+ i0.ɵɵelementContainerEnd();
120
+ } if (rf & 2) {
121
+ i0.ɵɵnextContext(2);
122
+ const _r5 = i0.ɵɵreference(19);
123
+ i0.ɵɵadvance(1);
124
+ i0.ɵɵproperty("ngTemplateOutlet", _r5);
125
+ } }
126
+ function UpdateFlagComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵtemplate(0, UpdateFlagComponent_ng_template_16_ng_container_0_Template, 2, 1, "ng-container", 32);
128
+ } if (rf & 2) {
129
+ const ctx_r4 = i0.ɵɵnextContext();
130
+ i0.ɵɵproperty("ngIf", ctx_r4.externalUserUpdate);
131
+ } }
132
+ function UpdateFlagComponent_ng_template_18_div_0_Template(rf, ctx) { if (rf & 1) {
133
+ i0.ɵɵelementStart(0, "div", 38);
134
+ i0.ɵɵelementStart(1, "span", 30);
135
+ i0.ɵɵtext(2);
136
+ i0.ɵɵpipe(3, "rpxTranslate");
137
+ i0.ɵɵelementEnd();
138
+ i0.ɵɵtext(4);
139
+ i0.ɵɵpipe(5, "rpxTranslate");
140
+ i0.ɵɵelementEnd();
141
+ } if (rf & 2) {
142
+ const ctx_r15 = i0.ɵɵnextContext(2);
143
+ i0.ɵɵadvance(2);
144
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
145
+ i0.ɵɵadvance(2);
146
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r15.statusReasonNotEnteredErrorMessage), " ");
147
+ } }
148
+ function UpdateFlagComponent_ng_template_18_div_1_Template(rf, ctx) { if (rf & 1) {
149
+ i0.ɵɵelementStart(0, "div", 39);
150
+ i0.ɵɵelementStart(1, "span", 30);
151
+ i0.ɵɵtext(2);
152
+ i0.ɵɵpipe(3, "rpxTranslate");
153
+ i0.ɵɵelementEnd();
154
+ i0.ɵɵtext(4);
155
+ i0.ɵɵpipe(5, "rpxTranslate");
156
+ i0.ɵɵelementEnd();
157
+ } if (rf & 2) {
158
+ const ctx_r16 = i0.ɵɵnextContext(2);
159
+ i0.ɵɵadvance(2);
160
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
161
+ i0.ɵɵadvance(2);
162
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r16.statusReasonCharLimitErrorMessage), " ");
163
+ } }
164
+ function UpdateFlagComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵtemplate(0, UpdateFlagComponent_ng_template_18_div_0_Template, 6, 6, "div", 34);
166
+ i0.ɵɵtemplate(1, UpdateFlagComponent_ng_template_18_div_1_Template, 6, 6, "div", 35);
167
+ i0.ɵɵelementStart(2, "textarea", 36);
168
+ i0.ɵɵtext(3, " ");
169
+ i0.ɵɵelementEnd();
170
+ i0.ɵɵelementStart(4, "div", 37);
171
+ i0.ɵɵtext(5);
172
+ i0.ɵɵpipe(6, "rpxTranslate");
173
+ i0.ɵɵelementEnd();
174
+ } if (rf & 2) {
175
+ const ctx_r6 = i0.ɵɵnextContext();
176
+ i0.ɵɵproperty("ngIf", ctx_r6.statusReasonNotEnteredErrorMessage);
177
+ i0.ɵɵadvance(1);
178
+ i0.ɵɵproperty("ngIf", ctx_r6.statusReasonCharLimitErrorMessage);
179
+ i0.ɵɵadvance(1);
180
+ i0.ɵɵproperty("id", ctx_r6.caseFlagFormFields.STATUS_CHANGE_REASON)("name", ctx_r6.caseFlagFormFields.STATUS_CHANGE_REASON)("formControlName", ctx_r6.caseFlagFormFields.STATUS_CHANGE_REASON);
181
+ i0.ɵɵadvance(3);
182
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 6, ctx_r6.updateFlagStepEnum.CHARACTER_LIMIT_INFO), " ");
183
+ } }
184
+ function UpdateFlagComponent_div_20_div_8_Template(rf, ctx) { if (rf & 1) {
185
+ i0.ɵɵelementStart(0, "div", 47);
186
+ i0.ɵɵelement(1, "input", 48);
187
+ i0.ɵɵelementStart(2, "label", 49);
24
188
  i0.ɵɵtext(3);
189
+ i0.ɵɵpipe(4, "rpxTranslate");
190
+ i0.ɵɵelementEnd();
25
191
  i0.ɵɵelementEnd();
26
192
  } if (rf & 2) {
27
- const ctx_r1 = i0.ɵɵnextContext();
193
+ const status_r19 = ctx.$implicit;
194
+ const ctx_r17 = i0.ɵɵnextContext(2);
195
+ i0.ɵɵadvance(1);
196
+ i0.ɵɵproperty("id", ctx_r17.caseFlagFormFields.STATUS + "_" + status_r19)("name", ctx_r17.caseFlagFormFields.STATUS)("formControlName", ctx_r17.caseFlagFormFields.STATUS)("value", status_r19);
197
+ i0.ɵɵadvance(1);
198
+ i0.ɵɵproperty("for", ctx_r17.caseFlagFormFields.STATUS + "_" + status_r19);
199
+ i0.ɵɵadvance(1);
200
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 6, ctx_r17.caseFlagStatusEnum[status_r19]), " ");
201
+ } }
202
+ function UpdateFlagComponent_div_20_ng_container_12_Template(rf, ctx) { if (rf & 1) {
203
+ i0.ɵɵelementContainer(0);
204
+ } }
205
+ function UpdateFlagComponent_div_20_Template(rf, ctx) { if (rf & 1) {
206
+ i0.ɵɵelementStart(0, "div", 40);
207
+ i0.ɵɵelementStart(1, "fieldset", 41);
208
+ i0.ɵɵelementStart(2, "legend", 42);
209
+ i0.ɵɵelementStart(3, "h1", 43);
210
+ i0.ɵɵtext(4);
211
+ i0.ɵɵpipe(5, "rpxTranslate");
212
+ i0.ɵɵpipe(6, "rpxTranslate");
213
+ i0.ɵɵelementEnd();
214
+ i0.ɵɵelementEnd();
215
+ i0.ɵɵelementStart(7, "div", 44);
216
+ i0.ɵɵtemplate(8, UpdateFlagComponent_div_20_div_8_Template, 5, 8, "div", 45);
217
+ i0.ɵɵelementEnd();
218
+ i0.ɵɵelementEnd();
219
+ i0.ɵɵelementStart(9, "div", 46);
220
+ i0.ɵɵtext(10);
221
+ i0.ɵɵpipe(11, "rpxTranslate");
222
+ i0.ɵɵelementEnd();
223
+ i0.ɵɵtemplate(12, UpdateFlagComponent_div_20_ng_container_12_Template, 1, 0, "ng-container", 33);
224
+ i0.ɵɵelementEnd();
225
+ } if (rf & 2) {
226
+ const ctx_r7 = i0.ɵɵnextContext();
227
+ const _r5 = i0.ɵɵreference(19);
228
+ i0.ɵɵadvance(4);
229
+ i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(5, 6, ctx_r7.updateFlagTitle), " ", i0.ɵɵpipeBind1(6, 8, "status"), " ");
230
+ i0.ɵɵadvance(3);
231
+ i0.ɵɵproperty("id", ctx_r7.caseFlagFormFields.STATUS);
232
+ i0.ɵɵadvance(1);
233
+ i0.ɵɵproperty("ngForOf", ctx_r7.validStatusProgressions);
234
+ i0.ɵɵadvance(2);
235
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 10, ctx_r7.updateFlagStepEnum.STATUS_HINT_TEXT), " ");
236
+ i0.ɵɵadvance(2);
237
+ i0.ɵɵproperty("ngTemplateOutlet", _r5);
238
+ } }
239
+ function UpdateFlagComponent_div_21_Template(rf, ctx) { if (rf & 1) {
240
+ i0.ɵɵelementStart(0, "div", 50);
241
+ i0.ɵɵelementStart(1, "div", 51);
242
+ i0.ɵɵelementStart(2, "div", 52);
243
+ i0.ɵɵelement(3, "input", 53);
244
+ i0.ɵɵelementStart(4, "label", 54);
245
+ i0.ɵɵtext(5);
246
+ i0.ɵɵpipe(6, "rpxTranslate");
247
+ i0.ɵɵelementEnd();
248
+ i0.ɵɵelementEnd();
249
+ i0.ɵɵelementEnd();
250
+ i0.ɵɵelementEnd();
251
+ } if (rf & 2) {
252
+ const ctx_r8 = i0.ɵɵnextContext();
28
253
  i0.ɵɵadvance(3);
29
- i0.ɵɵtextInterpolate1(" ", ctx_r1.updateFlagCharLimitErrorMessage, " ");
254
+ i0.ɵɵproperty("formControlName", ctx_r8.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)("id", ctx_r8.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)("name", ctx_r8.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED);
255
+ i0.ɵɵadvance(1);
256
+ i0.ɵɵproperty("for", ctx_r8.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED);
257
+ i0.ɵɵadvance(1);
258
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 5, "I need to add a translation"), " ");
30
259
  } }
31
- function UpdateFlagComponent_button_22_Template(rf, ctx) { if (rf & 1) {
32
- const _r4 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "button", 19);
34
- i0.ɵɵlistener("click", function UpdateFlagComponent_button_22_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.onChangeStatus(); });
35
- i0.ɵɵtext(1, " Make inactive ");
260
+ function UpdateFlagComponent_div_22_button_10_Template(rf, ctx) { if (rf & 1) {
261
+ const _r22 = i0.ɵɵgetCurrentView();
262
+ i0.ɵɵelementStart(0, "button", 59);
263
+ i0.ɵɵlistener("click", function UpdateFlagComponent_div_22_button_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.onMakeInactive(); });
264
+ i0.ɵɵtext(1);
265
+ i0.ɵɵpipe(2, "rpxTranslate");
36
266
  i0.ɵɵelementEnd();
267
+ } if (rf & 2) {
268
+ i0.ɵɵadvance(1);
269
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Make inactive"), " ");
37
270
  } }
38
- const _c0 = function (a0) { return { "form-group-error": a0 }; };
39
- const _c1 = function (a0) { return { "govuk-tag--grey": a0 }; };
271
+ const _c0 = function (a0) { return { "govuk-tag--grey": a0 }; };
272
+ function UpdateFlagComponent_div_22_Template(rf, ctx) { if (rf & 1) {
273
+ i0.ɵɵelementStart(0, "div", 55);
274
+ i0.ɵɵelementStart(1, "div", 56);
275
+ i0.ɵɵelementStart(2, "p");
276
+ i0.ɵɵtext(3);
277
+ i0.ɵɵpipe(4, "rpxTranslate");
278
+ i0.ɵɵelementStart(5, "span");
279
+ i0.ɵɵelementStart(6, "strong", 57);
280
+ i0.ɵɵtext(7);
281
+ i0.ɵɵpipe(8, "rpxTranslate");
282
+ i0.ɵɵelementEnd();
283
+ i0.ɵɵelementEnd();
284
+ i0.ɵɵelementEnd();
285
+ i0.ɵɵelementEnd();
286
+ i0.ɵɵelementStart(9, "div", 56);
287
+ i0.ɵɵtemplate(10, UpdateFlagComponent_div_22_button_10_Template, 3, 3, "button", 58);
288
+ i0.ɵɵelementEnd();
289
+ i0.ɵɵelementEnd();
290
+ } if (rf & 2) {
291
+ const ctx_r9 = i0.ɵɵnextContext();
292
+ i0.ɵɵadvance(3);
293
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(4, 4, "Flag status:"), " ");
294
+ i0.ɵɵadvance(3);
295
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c0, ctx_r9.selectedFlag.flagDetailDisplay.flagDetail.status === "Inactive"));
296
+ i0.ɵɵadvance(1);
297
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 6, ctx_r9.selectedFlag == null ? null : ctx_r9.selectedFlag.flagDetailDisplay == null ? null : ctx_r9.selectedFlag.flagDetailDisplay.flagDetail == null ? null : ctx_r9.selectedFlag.flagDetailDisplay.flagDetail.status), " ");
298
+ i0.ɵɵadvance(3);
299
+ i0.ɵɵproperty("ngIf", ctx_r9.selectedFlag.flagDetailDisplay.flagDetail.status === "Active");
300
+ } }
301
+ const _c1 = function (a0) { return { "form-group-error": a0 }; };
40
302
  export class UpdateFlagComponent {
41
- constructor() {
303
+ constructor(rpxTranslationService) {
304
+ this.rpxTranslationService = rpxTranslationService;
42
305
  this.caseFlagStateEmitter = new EventEmitter();
43
306
  this.updateFlagTitle = '';
44
307
  this.errorMessages = [];
45
- this.updateFlagNotEnteredErrorMessage = null;
46
- this.updateFlagCharLimitErrorMessage = null;
47
- this.updateFlagControlName = 'flagComments';
48
- this.commentsMaxCharLimit = 200;
308
+ this.commentsNotEnteredErrorMessage = null;
309
+ this.commentsCharLimitErrorMessage = null;
310
+ this.statusReasonNotEnteredErrorMessage = null;
311
+ this.statusReasonCharLimitErrorMessage = null;
312
+ this.updateFlagStepEnum = UpdateFlagStep;
313
+ this.caseFlagStatusEnum = CaseFlagStatus;
314
+ this.caseFlagFormFields = CaseFlagFormFields;
315
+ this.textMaxCharLimit = 200;
316
+ this.selectedManageCaseLocation = 'selectedManageCaseLocation';
317
+ this.caseFlagDisplayContextParameter = CaseFlagDisplayContextParameter;
318
+ this.externalUserUpdate = false;
319
+ this.internalUserUpdate = false;
320
+ this.internalUser2Point1EnabledUpdate = false;
321
+ }
322
+ get externallyVisibleFlag() {
323
+ var _a;
324
+ return ((_a = this.selectedFlag.flagDetailDisplay.visibility) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'external';
49
325
  }
50
326
  ngOnInit() {
51
- this.updateFlagHint = UpdateFlagStep.HINT_TEXT;
52
- this.updateFlagCharLimitInfo = UpdateFlagStep.CHARACTER_LIMIT_INFO;
53
- this.formGroup.addControl(this.updateFlagControlName, new FormControl(''));
54
- if (this.selectedFlag && this.selectedFlag.flagDetailDisplay && this.selectedFlag.flagDetailDisplay.flagDetail) {
55
- const flagDetail = this.selectedFlag.flagDetailDisplay.flagDetail;
56
- // Populate flag comments text area with existing comments
57
- this.formGroup.get(this.updateFlagControlName).setValue(flagDetail.flagComment);
58
- if (flagDetail.name) {
59
- this.updateFlagTitle =
60
- `${CaseFlagWizardStepTitle.UPDATE_FLAG_TITLE} "${flagDetail.name}${flagDetail.subTypeValue
61
- ? `, ${flagDetail.subTypeValue}"`
62
- : '"'}`;
327
+ var _a, _b;
328
+ // Set whether this is an external, internal, or internal Case Flags v2.1 enabled user update
329
+ this.externalUserUpdate = this.displayContextParameter === CaseFlagDisplayContextParameter.UPDATE_EXTERNAL;
330
+ this.internalUserUpdate = this.displayContextParameter === CaseFlagDisplayContextParameter.UPDATE;
331
+ this.internalUser2Point1EnabledUpdate = this.displayContextParameter === CaseFlagDisplayContextParameter.UPDATE_2_POINT_1;
332
+ this.selectedFlag = this.formGroup.get(this.selectedManageCaseLocation).value;
333
+ if ((_b = (_a = this.selectedFlag) === null || _a === void 0 ? void 0 : _a.flagDetailDisplay) === null || _b === void 0 ? void 0 : _b.flagDetail) {
334
+ this.flagDetail = this.selectedFlag.flagDetailDisplay.flagDetail;
335
+ // If present, use the *original* flag status, not the one in the flagDetail object, because the status could have
336
+ // been modified via a previous "Update Flag" journey through the UI but not persisted yet (thus not the *true* flag
337
+ // status). Otherwise, use the status from the flagDetail object (initially, the original flag status won't be
338
+ // present because it gets cached only on first update by WriteCaseFlagFieldComponent)
339
+ const currentFlagStatusKey = Object.keys(CaseFlagStatus).find((key) => CaseFlagStatus[key] === (this.selectedFlag.originalStatus || this.flagDetail.status));
340
+ // Populate flag comments text area with existing comments; use the comments appropriate for the selected language,
341
+ // falling back on their alternate counterpart if none are available. Comments are to be populated one time only -
342
+ // when the user first visits the page - even if they switch language subsequently
343
+ let existingComments;
344
+ if (this.rpxTranslationService.language === 'cy') {
345
+ existingComments = this.flagDetail.flagComment_cy || this.flagDetail.flagComment;
346
+ }
347
+ else {
348
+ existingComments = this.flagDetail.flagComment || this.flagDetail.flagComment_cy;
349
+ }
350
+ this.formGroup.addControl(CaseFlagFormFields.COMMENTS, new FormControl(existingComments));
351
+ this.formGroup.addControl(CaseFlagFormFields.STATUS, new FormControl(currentFlagStatusKey));
352
+ // Populate status reason only if the user is not external
353
+ this.formGroup.addControl(CaseFlagFormFields.STATUS_CHANGE_REASON, new FormControl(this.externalUserUpdate ? '' : this.flagDetail.flagUpdateComment));
354
+ this.formGroup.addControl(CaseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED, new FormControl(false));
355
+ this.updateFlagTitle = this.setUpdateCaseFlagTitle(this.flagDetail);
356
+ // Set the valid status options for display, based on current status of the selected flag. "Active" flags can
357
+ // remain "Active" or move to "Inactive" only; "Requested" flags can remain "Requested" or move to "Active",
358
+ // "Inactive", or "Not approved". No other status progressions are valid
359
+ if (currentFlagStatusKey) {
360
+ switch (currentFlagStatusKey) {
361
+ case 'ACTIVE':
362
+ this.validStatusProgressions = Object.keys(CaseFlagStatus).filter(key => !['REQUESTED', 'NOT_APPROVED'].includes(key));
363
+ break;
364
+ case 'REQUESTED':
365
+ this.validStatusProgressions = Object.keys(CaseFlagStatus);
366
+ break;
367
+ default:
368
+ this.validStatusProgressions = [];
369
+ }
63
370
  }
64
371
  }
65
372
  }
373
+ setUpdateCaseFlagTitle(flagDetail) {
374
+ switch (this.displayContextParameter) {
375
+ case CaseFlagDisplayContextParameter.UPDATE:
376
+ case CaseFlagDisplayContextParameter.UPDATE_2_POINT_1:
377
+ if (flagDetail === null || flagDetail === void 0 ? void 0 : flagDetail.name) {
378
+ const subTypeValue = flagDetail.subTypeValue || flagDetail.subTypeValue_cy
379
+ ? `, ${flagDetail.subTypeValue || flagDetail.subTypeValue_cy}`
380
+ : '';
381
+ const otherDescription = flagDetail.otherDescription || flagDetail.otherDescription_cy
382
+ ? `, ${flagDetail.otherDescription || flagDetail.otherDescription_cy}`
383
+ : '';
384
+ return subTypeValue
385
+ ? `${CaseFlagWizardStepTitle.UPDATE_FLAG_TITLE} "${flagDetail.name}${subTypeValue}"`
386
+ : `${CaseFlagWizardStepTitle.UPDATE_FLAG_TITLE} "${flagDetail.name}${otherDescription}"`;
387
+ }
388
+ return `${CaseFlagWizardStepTitle.UPDATE_FLAG_TITLE}`;
389
+ case CaseFlagDisplayContextParameter.UPDATE_EXTERNAL:
390
+ return CaseFlagWizardStepTitle.UPDATE_FLAG_TITLE_EXTERNAL;
391
+ default:
392
+ return CaseFlagWizardStepTitle.NONE;
393
+ }
394
+ }
66
395
  onNext() {
67
- // Validate flag comments entry
396
+ // Validate flag comments and status reason entry
68
397
  this.validateTextEntry();
69
- // If validation has passed, update the flag details with the comments entered
70
- if (this.errorMessages.length === 0) {
71
- this.selectedFlag.flagDetailDisplay.flagDetail = Object.assign(Object.assign({}, this.selectedFlag.flagDetailDisplay.flagDetail), { flagComment: this.formGroup.get(this.updateFlagControlName).value });
398
+ // Set selected flag status to "Inactive" if update is by external user
399
+ if (this.externalUserUpdate) {
400
+ this.formGroup.get(CaseFlagFormFields.STATUS).setValue(Object.keys(CaseFlagStatus)[2]);
72
401
  }
73
402
  // Return case flag field state, error messages, and selected flag detail to the parent. The selected flag must be
74
403
  // re-emitted because the parent component repopulates this on handling this EventEmitter
75
404
  this.caseFlagStateEmitter.emit({
76
405
  currentCaseFlagFieldState: CaseFlagFieldState.FLAG_UPDATE,
77
406
  errorMessages: this.errorMessages,
78
- selectedFlag: this.selectedFlag
407
+ selectedFlag: this.selectedFlag,
79
408
  });
409
+ window.scrollTo(0, 0);
80
410
  }
81
- onChangeStatus() {
82
- this.selectedFlag.flagDetailDisplay.flagDetail = Object.assign(Object.assign({}, this.selectedFlag.flagDetailDisplay.flagDetail), { status: this.selectedFlag.flagDetailDisplay.flagDetail.status === CaseFlagStatus.ACTIVE
83
- ? CaseFlagStatus.INACTIVE
84
- : this.selectedFlag.flagDetailDisplay.flagDetail.status });
411
+ onMakeInactive() {
412
+ // Set selected flag status to "Inactive" on screen and in the FormGroup
413
+ this.selectedFlag.flagDetailDisplay.flagDetail.status = CaseFlagStatus.INACTIVE;
414
+ this.formGroup.get(CaseFlagFormFields.STATUS).setValue(Object.keys(CaseFlagStatus)[2]);
85
415
  }
86
416
  validateTextEntry() {
87
- this.updateFlagNotEnteredErrorMessage = null;
88
- this.updateFlagCharLimitErrorMessage = null;
417
+ this.commentsNotEnteredErrorMessage = null;
418
+ this.commentsCharLimitErrorMessage = null;
419
+ this.statusReasonNotEnteredErrorMessage = null;
420
+ this.statusReasonCharLimitErrorMessage = null;
89
421
  this.errorMessages = [];
90
- const comment = this.formGroup.get(this.updateFlagControlName).value;
91
- if (!comment) {
92
- this.updateFlagNotEnteredErrorMessage = UpdateFlagErrorMessage.FLAG_COMMENTS_NOT_ENTERED;
422
+ // Validation should fail if the flag has an existing comment and it has been deleted on screen; conversely, if there
423
+ // is no existing comment then one is not required for validation to pass
424
+ const comment = this.formGroup.get(CaseFlagFormFields.COMMENTS).value;
425
+ if (!comment && (this.flagDetail.flagComment || this.flagDetail.flagComment_cy)) {
426
+ this.commentsNotEnteredErrorMessage = !this.displayContextParameter
427
+ ? UpdateFlagErrorMessage.NONE
428
+ : UpdateFlagErrorMessage.FLAG_COMMENTS_NOT_ENTERED;
93
429
  this.errorMessages.push({
94
430
  title: '',
95
- description: UpdateFlagErrorMessage.FLAG_COMMENTS_NOT_ENTERED,
96
- fieldId: this.updateFlagControlName
431
+ description: this.commentsNotEnteredErrorMessage,
432
+ fieldId: CaseFlagFormFields.COMMENTS
97
433
  });
98
434
  }
99
- if (comment && comment.length > this.commentsMaxCharLimit) {
100
- this.updateFlagCharLimitErrorMessage = UpdateFlagErrorMessage.FLAG_COMMENTS_CHAR_LIMIT_EXCEEDED;
435
+ if (comment && comment.length > this.textMaxCharLimit) {
436
+ this.commentsCharLimitErrorMessage = UpdateFlagErrorMessage.FLAG_COMMENTS_CHAR_LIMIT_EXCEEDED;
101
437
  this.errorMessages.push({
102
438
  title: '',
103
439
  description: UpdateFlagErrorMessage.FLAG_COMMENTS_CHAR_LIMIT_EXCEEDED,
104
- fieldId: this.updateFlagControlName
440
+ fieldId: CaseFlagFormFields.COMMENTS
441
+ });
442
+ }
443
+ const statusReason = this.formGroup.get(CaseFlagFormFields.STATUS_CHANGE_REASON).value;
444
+ const flagStatusNotApprovedKey = Object.keys(CaseFlagStatus).find(key => CaseFlagStatus[key] === CaseFlagStatus.NOT_APPROVED);
445
+ // Status reason is mandatory if flag status is "Not approved" or user is external
446
+ if (this.formGroup.get(CaseFlagFormFields.STATUS).value === flagStatusNotApprovedKey && !statusReason) {
447
+ this.statusReasonNotEnteredErrorMessage = UpdateFlagErrorMessage.STATUS_REASON_NOT_ENTERED;
448
+ this.errorMessages.push({
449
+ title: '',
450
+ description: UpdateFlagErrorMessage.STATUS_REASON_NOT_ENTERED,
451
+ fieldId: CaseFlagFormFields.STATUS_CHANGE_REASON
452
+ });
453
+ }
454
+ if (this.externalUserUpdate && !statusReason) {
455
+ this.statusReasonNotEnteredErrorMessage = UpdateFlagErrorMessage.STATUS_REASON_NOT_ENTERED_EXTERNAL;
456
+ this.errorMessages.push({
457
+ title: '',
458
+ description: UpdateFlagErrorMessage.STATUS_REASON_NOT_ENTERED_EXTERNAL,
459
+ fieldId: CaseFlagFormFields.STATUS_CHANGE_REASON
460
+ });
461
+ }
462
+ if (statusReason && statusReason.length > this.textMaxCharLimit) {
463
+ this.statusReasonCharLimitErrorMessage = UpdateFlagErrorMessage.STATUS_REASON_CHAR_LIMIT_EXCEEDED;
464
+ this.errorMessages.push({
465
+ title: '',
466
+ description: UpdateFlagErrorMessage.STATUS_REASON_CHAR_LIMIT_EXCEEDED,
467
+ fieldId: CaseFlagFormFields.STATUS_CHANGE_REASON
105
468
  });
106
469
  }
107
470
  }
108
471
  }
109
- UpdateFlagComponent.ɵfac = function UpdateFlagComponent_Factory(t) { return new (t || UpdateFlagComponent)(); };
110
- UpdateFlagComponent.ɵcmp = i0.ɵɵdefineComponent({ type: UpdateFlagComponent, selectors: [["ccd-update-flag"]], inputs: { formGroup: "formGroup", selectedFlag: "selectedFlag" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, decls: 26, vars: 18, consts: [[1, "form-group", 3, "formGroup"], ["data-module", "govuk-character-count", "data-maxlength", "200", 1, "govuk-character-count"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-label-wrapper"], [1, "govuk-label", "govuk-label--l", 3, "for"], ["id", "update-flag-hint", 1, "govuk-hint"], ["id", "update-flag-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-hint update-flag-char-limit-info update-flag-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], [1, "govuk-grid-row"], [1, "govuk-grid-column-one-half"], [1, "govuk-tag", 3, "ngClass"], ["class", "button button-secondary", "type", "button", 3, "click", 4, "ngIf"], [1, "govuk-button-group"], ["type", "button", 1, "button", "button-primary", 3, "click"], ["id", "update-flag-not-entered-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], ["id", "update-flag-char-limit-error", 1, "govuk-error-message"], ["type", "button", 1, "button", "button-secondary", 3, "click"]], template: function UpdateFlagComponent_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵelementStart(0, "div", 0);
472
+ UpdateFlagComponent.ɵfac = function UpdateFlagComponent_Factory(t) { return new (t || UpdateFlagComponent)(i0.ɵɵdirectiveInject(i1.RpxTranslationService)); };
473
+ UpdateFlagComponent.ɵcmp = i0.ɵɵdefineComponent({ type: UpdateFlagComponent, selectors: [["ccd-update-flag"]], inputs: { formGroup: "formGroup", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, decls: 27, vars: 25, consts: [[3, "formGroup"], ["data-module", "govuk-character-count", "data-maxlength", "200", 1, "govuk-character-count"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-label-wrapper", "govuk-!-margin-bottom-4"], [1, "govuk-label", "govuk-label--m"], ["id", "update-flag-hint-external", "class", "govuk-hint", 4, "ngIf"], [1, "govuk-!-margin-bottom-4"], [1, "govuk-label", "govuk-label--s", 3, "for"], ["id", "update-flag-comments-hint-external", "class", "govuk-hint", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["externalUser", ""], ["updateFlagStatusReason", ""], ["id", "flag-status-container-v2_1", "class", "govuk-!-margin-bottom-4", 4, "ngIf"], ["id", "translation-checkbox-container", "class", "govuk-!-margin-bottom-6", 4, "ngIf"], ["id", "flag-status-container-v1", "class", "govuk-grid-row", 4, "ngIf"], [1, "govuk-button-group"], ["id", "updateFlagNextButton", "type", "button", 1, "govuk-button", 3, "click"], ["id", "update-flag-hint-external", 1, "govuk-hint"], ["id", "update-flag-comments-hint-external", 1, "govuk-hint"], ["id", "update-flag-comments-hint", 1, "govuk-hint"], ["class", "govuk-warning-text", 4, "ngIf"], ["id", "update-flag-comments-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-comments-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-comments-hint update-flag-comments-char-limit-info update-flag-comments-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-comments-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], [1, "govuk-warning-text"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-warning-text__assistive"], ["id", "update-flag-comments-not-entered-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], ["id", "update-flag-comments-char-limit-error", 1, "govuk-error-message"], [4, "ngIf"], [4, "ngTemplateOutlet"], ["id", "update-flag-status-reason-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-status-reason-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-comments-hint-external update-flag-status-hint update-flag-status-reason-char-limit-info\n update-flag-status-reason-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-status-reason-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], ["id", "update-flag-status-reason-not-entered-error-message", 1, "govuk-error-message"], ["id", "update-flag-status-reason-char-limit-error", 1, "govuk-error-message"], ["id", "flag-status-container-v2_1", 1, "govuk-!-margin-bottom-4"], ["aria-describedby", "update-flag-status-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--s"], ["id", "update-flag-status-heading", 1, "govuk-fieldset__heading"], ["data-module", "govuk-radios", 1, "govuk-radios", "govuk-radios--conditional", "govuk-!-margin-bottom-4", 3, "id"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["id", "update-flag-status-hint", 1, "govuk-hint"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "formControlName", "value"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "translation-checkbox-container", 1, "govuk-!-margin-bottom-6"], ["data-module", "govuk-checkboxes", 1, "govuk-checkboxes"], [1, "govuk-checkboxes__item"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "formControlName", "id", "name"], [1, "govuk-label", "govuk-checkboxes__label", 3, "for"], ["id", "flag-status-container-v1", 1, "govuk-grid-row"], [1, "govuk-grid-column-one-half"], [1, "govuk-tag", 3, "ngClass"], ["class", "button button-secondary", "type", "button", 3, "click", 4, "ngIf"], ["type", "button", 1, "button", "button-secondary", 3, "click"]], template: function UpdateFlagComponent_Template(rf, ctx) { if (rf & 1) {
474
+ i0.ɵɵelementContainerStart(0, 0);
112
475
  i0.ɵɵelementStart(1, "div", 1);
113
476
  i0.ɵɵelementStart(2, "div", 2);
114
477
  i0.ɵɵelementStart(3, "h1", 3);
115
478
  i0.ɵɵelementStart(4, "label", 4);
116
479
  i0.ɵɵtext(5);
480
+ i0.ɵɵpipe(6, "rpxTranslate");
117
481
  i0.ɵɵelementEnd();
118
482
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(6, "div", 5);
120
- i0.ɵɵtext(7);
483
+ i0.ɵɵtemplate(7, UpdateFlagComponent_div_7_Template, 3, 3, "div", 5);
484
+ i0.ɵɵelementStart(8, "div", 6);
485
+ i0.ɵɵelementStart(9, "label", 7);
486
+ i0.ɵɵtext(10);
487
+ i0.ɵɵpipe(11, "rpxTranslate");
488
+ i0.ɵɵpipe(12, "rpxTranslate");
489
+ i0.ɵɵpipe(13, "rpxTranslate");
121
490
  i0.ɵɵelementEnd();
122
- i0.ɵɵtemplate(8, UpdateFlagComponent_div_8_Template, 4, 1, "div", 6);
123
- i0.ɵɵtemplate(9, UpdateFlagComponent_div_9_Template, 4, 1, "div", 7);
124
- i0.ɵɵelementStart(10, "textarea", 8);
125
- i0.ɵɵtext(11, " ");
491
+ i0.ɵɵtemplate(14, UpdateFlagComponent_div_14_Template, 3, 3, "div", 8);
492
+ i0.ɵɵtemplate(15, UpdateFlagComponent_ng_container_15_Template, 13, 14, "ng-container", 9);
493
+ i0.ɵɵtemplate(16, UpdateFlagComponent_ng_template_16_Template, 1, 1, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
126
494
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(12, "div", 9);
128
- i0.ɵɵtext(13);
495
+ i0.ɵɵtemplate(18, UpdateFlagComponent_ng_template_18_Template, 7, 8, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor);
496
+ i0.ɵɵtemplate(20, UpdateFlagComponent_div_20_Template, 13, 12, "div", 12);
497
+ i0.ɵɵtemplate(21, UpdateFlagComponent_div_21_Template, 7, 7, "div", 13);
498
+ i0.ɵɵtemplate(22, UpdateFlagComponent_div_22_Template, 11, 10, "div", 14);
129
499
  i0.ɵɵelementEnd();
130
500
  i0.ɵɵelementEnd();
131
- i0.ɵɵelementEnd();
132
- i0.ɵɵelementStart(14, "div", 10);
133
- i0.ɵɵelementStart(15, "div", 11);
134
- i0.ɵɵelementStart(16, "p");
135
- i0.ɵɵtext(17, "Flag status: ");
136
- i0.ɵɵelementStart(18, "span");
137
- i0.ɵɵelementStart(19, "strong", 12);
138
- i0.ɵɵtext(20);
139
- i0.ɵɵelementEnd();
140
- i0.ɵɵelementEnd();
141
- i0.ɵɵelementEnd();
142
- i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(21, "div", 11);
144
- i0.ɵɵtemplate(22, UpdateFlagComponent_button_22_Template, 2, 0, "button", 13);
145
- i0.ɵɵelementEnd();
146
- i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(23, "div", 14);
148
- i0.ɵɵelementStart(24, "button", 15);
501
+ i0.ɵɵelementContainerEnd();
502
+ i0.ɵɵelementStart(23, "div", 15);
503
+ i0.ɵɵelementStart(24, "button", 16);
149
504
  i0.ɵɵlistener("click", function UpdateFlagComponent_Template_button_click_24_listener() { return ctx.onNext(); });
150
- i0.ɵɵtext(25, "Next");
151
- i0.ɵɵelementEnd();
505
+ i0.ɵɵtext(25);
506
+ i0.ɵɵpipe(26, "rpxTranslate");
152
507
  i0.ɵɵelementEnd();
153
508
  i0.ɵɵelementEnd();
154
509
  } if (rf & 2) {
510
+ const _r3 = i0.ɵɵreference(17);
155
511
  i0.ɵɵproperty("formGroup", ctx.formGroup);
156
512
  i0.ɵɵadvance(2);
157
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c0, ctx.errorMessages.length > 0));
513
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c1, ctx.errorMessages.length > 0));
514
+ i0.ɵɵadvance(3);
515
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 13, ctx.updateFlagTitle), " ");
158
516
  i0.ɵɵadvance(2);
159
- i0.ɵɵproperty("for", ctx.updateFlagControlName);
160
- i0.ɵɵadvance(1);
161
- i0.ɵɵtextInterpolate1(" ", ctx.updateFlagTitle, " ");
517
+ i0.ɵɵproperty("ngIf", ctx.externalUserUpdate);
162
518
  i0.ɵɵadvance(2);
163
- i0.ɵɵtextInterpolate1(" ", ctx.updateFlagHint, " ");
519
+ i0.ɵɵproperty("for", ctx.caseFlagFormFields.COMMENTS);
164
520
  i0.ɵɵadvance(1);
165
- i0.ɵɵproperty("ngIf", ctx.updateFlagNotEnteredErrorMessage);
521
+ i0.ɵɵtextInterpolate1(" ", ctx.externalUserUpdate ? i0.ɵɵpipeBind1(11, 15, ctx.updateFlagStepEnum.COMMENT_FIELD_LABEL_EXTERNAL) : i0.ɵɵpipeBind1(12, 17, ctx.updateFlagTitle) + i0.ɵɵpipeBind1(13, 19, " comments"), " ");
522
+ i0.ɵɵadvance(4);
523
+ i0.ɵɵproperty("ngIf", ctx.externalUserUpdate);
166
524
  i0.ɵɵadvance(1);
167
- i0.ɵɵproperty("ngIf", ctx.updateFlagCharLimitErrorMessage);
525
+ i0.ɵɵproperty("ngIf", ctx.internalUserUpdate || ctx.internalUser2Point1EnabledUpdate || ctx.displayContextParameter === "")("ngIfElse", _r3);
526
+ i0.ɵɵadvance(5);
527
+ i0.ɵɵproperty("ngIf", ctx.internalUser2Point1EnabledUpdate);
168
528
  i0.ɵɵadvance(1);
169
- i0.ɵɵproperty("id", ctx.updateFlagControlName)("name", ctx.updateFlagControlName)("formControlName", ctx.updateFlagControlName);
170
- i0.ɵɵadvance(3);
171
- i0.ɵɵtextInterpolate1(" ", ctx.updateFlagCharLimitInfo, " ");
172
- i0.ɵɵadvance(6);
173
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(16, _c1, ctx.selectedFlag.flagDetailDisplay.flagDetail.status === "Inactive"));
529
+ i0.ɵɵproperty("ngIf", ctx.internalUser2Point1EnabledUpdate);
174
530
  i0.ɵɵadvance(1);
175
- i0.ɵɵtextInterpolate1(" ", ctx.selectedFlag.flagDetailDisplay.flagDetail.status, " ");
176
- i0.ɵɵadvance(2);
177
- i0.ɵɵproperty("ngIf", ctx.selectedFlag.flagDetailDisplay.flagDetail.status === "Active");
178
- } }, directives: [i1.NgControlStatusGroup, i1.FormGroupDirective, i2.NgClass, i2.NgIf, i1.DefaultValueAccessor, i1.NgControlStatus, i1.FormControlName], encapsulation: 2 });
531
+ i0.ɵɵproperty("ngIf", ctx.internalUserUpdate);
532
+ i0.ɵɵadvance(3);
533
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 21, "Next"), " ");
534
+ } }, encapsulation: 2 });
179
535
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UpdateFlagComponent, [{
180
536
  type: Component,
181
537
  args: [{
182
538
  selector: 'ccd-update-flag',
183
539
  templateUrl: './update-flag.component.html'
184
540
  }]
185
- }], null, { formGroup: [{
541
+ }], function () { return [{ type: i1.RpxTranslationService }]; }, { formGroup: [{
186
542
  type: Input
187
- }], selectedFlag: [{
543
+ }], displayContextParameter: [{
188
544
  type: Input
189
545
  }], caseFlagStateEmitter: [{
190
546
  type: Output
191
547
  }] }); })();
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWZsYWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztJQ001SCwrQkFDMkM7SUFDekMsZ0NBQW9DO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU07OztJQUQ4QyxlQUNwRDtJQURvRCx3RUFDcEQ7OztJQUNBLCtCQUMwQztJQUN4QyxnQ0FBb0M7SUFBQSxzQkFBTTtJQUFBLGlCQUFPO0lBQUMsWUFDcEQ7SUFBQSxpQkFBTTs7O0lBRDhDLGVBQ3BEO0lBRG9ELHVFQUNwRDs7OztJQXFCQSxrQ0FBdUo7SUFBakcsK0xBQTBCO0lBQzlFLCtCQUNGO0lBQUEsaUJBQVM7Ozs7QUQ5QmYsTUFBTSxPQUFPLG1CQUFtQjtJQUpoQztRQVNtQix5QkFBb0IsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFaEcsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLHFDQUFnQyxHQUEyQixJQUFJLENBQUM7UUFDaEUsb0NBQStCLEdBQTJCLElBQUksQ0FBQztRQUd0RCwwQkFBcUIsR0FBRyxjQUFjLENBQUM7UUFDdEMseUJBQW9CLEdBQUcsR0FBRyxDQUFDO0tBcUU3QztJQW5FUSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFFO1FBQ2hELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxjQUFjLENBQUMsb0JBQW9CLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0UsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUU7WUFDOUcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDbEUsMERBQTBEO1lBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEYsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZTtvQkFDbEIsR0FBRyx1QkFBdUIsQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxZQUFZO3dCQUN4RixDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsWUFBWSxHQUFHO3dCQUNqQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDYjtTQUNGO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsOEVBQThFO1FBQzlFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsVUFBVSxtQ0FDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEtBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEtBQUssR0FDckgsQ0FBQztTQUNIO1FBQ0Qsa0hBQWtIO1FBQ2xILHlGQUF5RjtRQUN6RixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQzdCLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLFdBQVc7WUFDekQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsbUNBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsVUFBVSxLQUNqRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxNQUFNO2dCQUNyRixDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVE7Z0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQzFELENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDckUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUN6RixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLHNCQUFzQixDQUFDLHlCQUF5QjtnQkFDN0QsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUI7YUFDcEMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxJQUFJLENBQUMsK0JBQStCLEdBQUcsc0JBQXNCLENBQUMsaUNBQWlDLENBQUM7WUFDaEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssRUFBRSxFQUFFO2dCQUNULFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxpQ0FBaUM7Z0JBQ3JFLE9BQU8sRUFBRSxJQUFJLENBQUMscUJBQXFCO2FBQ3BDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7c0ZBbEZVLG1CQUFtQjt3REFBbkIsbUJBQW1CO1FDVmhDLDhCQUFnRDtRQUM5Qyw4QkFBNEY7UUFDMUYsOEJBQXlGO1FBQ3ZGLDZCQUFnQztRQUFBLGdDQUF3RTtRQUNwRyxZQUNGO1FBQUEsaUJBQVE7UUFDVixpQkFBSztRQUNMLDhCQUE4QztRQUM1QyxZQUNGO1FBQUEsaUJBQU07UUFDTixvRUFHTTtRQUNOLG9FQUdNO1FBQ04sb0NBRStGO1FBQy9GLHVCQUFBO1FBQUEsaUJBQVc7UUFDWCwrQkFBMkc7UUFDekcsYUFDRjtRQUFBLGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTtRQUNOLGdDQUE0QjtRQUMxQixnQ0FBd0M7UUFDdEMsMEJBQUc7UUFBQSw4QkFDRDtRQUFBLDZCQUFNO1FBQ0osbUNBQTJIO1FBQ3pILGFBQ0Y7UUFBQSxpQkFBUztRQUNYLGlCQUFPO1FBQ1QsaUJBQUk7UUFDTixpQkFBTTtRQUNOLGdDQUF3QztRQUN0Qyw2RUFFUztRQUNYLGlCQUFNO1FBQ1IsaUJBQU07UUFDTixnQ0FBZ0M7UUFDOUIsbUNBQXVFO1FBQW5CLGlHQUFTLFlBQVEsSUFBQztRQUFDLHFCQUFJO1FBQUEsaUJBQVM7UUFDdEYsaUJBQU07UUFDUixpQkFBTTs7UUE5Q2tCLHlDQUF1QjtRQUViLGVBQTBEO1FBQTFELG1GQUEwRDtRQUNaLGVBQTZCO1FBQTdCLCtDQUE2QjtRQUNuRyxlQUNGO1FBREUsb0RBQ0Y7UUFHQSxlQUNGO1FBREUsbURBQ0Y7UUFFRyxlQUFzQztRQUF0QywyREFBc0M7UUFJdEMsZUFBcUM7UUFBckMsMERBQXFDO1FBR1AsZUFBNEI7UUFBNUIsOENBQTRCLG1DQUFBLDhDQUFBO1FBSzNELGVBQ0Y7UUFERSw0REFDRjtRQU84QixlQUFnRztRQUFoRywwSEFBZ0c7UUFDeEgsZUFDRjtRQURFLHFGQUNGO1FBSzhFLGVBQW1FO1FBQW5FLHdGQUFtRTs7dUZENUI5SSxtQkFBbUI7Y0FKL0IsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLFdBQVcsRUFBRSw4QkFBOEI7YUFDNUM7Z0JBR2lCLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBRVcsb0JBQW9CO2tCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlLCBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdTdGF0dXMsIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLCBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLCBVcGRhdGVGbGFnU3RlcCB9IGZyb20gJy4uLy4uL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXVwZGF0ZS1mbGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwZGF0ZS1mbGFnLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBVcGRhdGVGbGFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZEZsYWc6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGg7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjYXNlRmxhZ1N0YXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPigpO1xuXG4gIHB1YmxpYyB1cGRhdGVGbGFnVGl0bGUgPSAnJztcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyB1cGRhdGVGbGFnTm90RW50ZXJlZEVycm9yTWVzc2FnZTogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSA9IG51bGw7XG4gIHB1YmxpYyB1cGRhdGVGbGFnQ2hhckxpbWl0RXJyb3JNZXNzYWdlOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZUZsYWdIaW50OiBVcGRhdGVGbGFnU3RlcDtcbiAgcHVibGljIHVwZGF0ZUZsYWdDaGFyTGltaXRJbmZvOiBVcGRhdGVGbGFnU3RlcDtcbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZUZsYWdDb250cm9sTmFtZSA9ICdmbGFnQ29tbWVudHMnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1lbnRzTWF4Q2hhckxpbWl0ID0gMjAwO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUZsYWdIaW50ID0gVXBkYXRlRmxhZ1N0ZXAuSElOVF9URVhUIDtcbiAgICB0aGlzLnVwZGF0ZUZsYWdDaGFyTGltaXRJbmZvID0gVXBkYXRlRmxhZ1N0ZXAuQ0hBUkFDVEVSX0xJTUlUX0lORk87XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLnVwZGF0ZUZsYWdDb250cm9sTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsYWcgJiYgdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkgJiYgdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbCkge1xuICAgICAgY29uc3QgZmxhZ0RldGFpbCA9IHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWw7XG4gICAgICAvLyBQb3B1bGF0ZSBmbGFnIGNvbW1lbnRzIHRleHQgYXJlYSB3aXRoIGV4aXN0aW5nIGNvbW1lbnRzXG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy51cGRhdGVGbGFnQ29udHJvbE5hbWUpLnNldFZhbHVlKGZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQpO1xuICAgICAgaWYgKGZsYWdEZXRhaWwubmFtZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUZsYWdUaXRsZSA9XG4gICAgICAgICAgYCR7Q2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEV9IFwiJHtmbGFnRGV0YWlsLm5hbWV9JHtmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZVxuICAgICAgICAgICAgPyBgLCAke2ZsYWdEZXRhaWwuc3ViVHlwZVZhbHVlfVwiYFxuICAgICAgICAgICAgOiAnXCInfWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTmV4dCgpOiB2b2lkIHtcbiAgICAvLyBWYWxpZGF0ZSBmbGFnIGNvbW1lbnRzIGVudHJ5XG4gICAgdGhpcy52YWxpZGF0ZVRleHRFbnRyeSgpO1xuICAgIC8vIElmIHZhbGlkYXRpb24gaGFzIHBhc3NlZCwgdXBkYXRlIHRoZSBmbGFnIGRldGFpbHMgd2l0aCB0aGUgY29tbWVudHMgZW50ZXJlZFxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsID0ge1xuICAgICAgICAuLi50aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLCBmbGFnQ29tbWVudDogdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMudXBkYXRlRmxhZ0NvbnRyb2xOYW1lKS52YWx1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSwgZXJyb3IgbWVzc2FnZXMsIGFuZCBzZWxlY3RlZCBmbGFnIGRldGFpbCB0byB0aGUgcGFyZW50LiBUaGUgc2VsZWN0ZWQgZmxhZyBtdXN0IGJlXG4gICAgLy8gcmUtZW1pdHRlZCBiZWNhdXNlIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlcG9wdWxhdGVzIHRoaXMgb24gaGFuZGxpbmcgdGhpcyBFdmVudEVtaXR0ZXJcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoe1xuICAgICAgY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZTogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgc2VsZWN0ZWRGbGFnOiB0aGlzLnNlbGVjdGVkRmxhZ1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWwgPSB7XG4gICAgICAuLi50aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLFxuICAgICAgc3RhdHVzOiB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1cyA9PT0gQ2FzZUZsYWdTdGF0dXMuQUNUSVZFXG4gICAgICAgID8gQ2FzZUZsYWdTdGF0dXMuSU5BQ1RJVkVcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1c1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVGV4dEVudHJ5KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRmxhZ05vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMudXBkYXRlRmxhZ0NoYXJMaW1pdEVycm9yTWVzc2FnZSA9IG51bGw7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgY29uc3QgY29tbWVudCA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnVwZGF0ZUZsYWdDb250cm9sTmFtZSkudmFsdWU7XG4gICAgaWYgKCFjb21tZW50KSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYWdOb3RFbnRlcmVkRXJyb3JNZXNzYWdlID0gVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5GTEFHX0NPTU1FTlRTX05PVF9FTlRFUkVEO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLkZMQUdfQ09NTUVOVFNfTk9UX0VOVEVSRUQsXG4gICAgICAgIGZpZWxkSWQ6IHRoaXMudXBkYXRlRmxhZ0NvbnRyb2xOYW1lXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGNvbW1lbnQgJiYgY29tbWVudC5sZW5ndGggPiB0aGlzLmNvbW1lbnRzTWF4Q2hhckxpbWl0KSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYWdDaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLkZMQUdfQ09NTUVOVFNfQ0hBUl9MSU1JVF9FWENFRURFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5GTEFHX0NPTU1FTlRTX0NIQVJfTElNSVRfRVhDRUVERUQsXG4gICAgICAgIGZpZWxkSWQ6IHRoaXMudXBkYXRlRmxhZ0NvbnRyb2xOYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWNoYXJhY3Rlci1jb3VudFwiIGRhdGEtbW9kdWxlPVwiZ292dWstY2hhcmFjdGVyLWNvdW50XCIgZGF0YS1tYXhsZW5ndGg9XCIyMDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGVycm9yTWVzc2FnZXMubGVuZ3RoID4gMH1cIj5cbiAgICAgIDxoMSBjbGFzcz1cImdvdnVrLWxhYmVsLXdyYXBwZXJcIj48bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tbFwiIFtmb3JdPVwidXBkYXRlRmxhZ0NvbnRyb2xOYW1lXCI+XG4gICAgICAgICAge3t1cGRhdGVGbGFnVGl0bGV9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9oMT5cbiAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1oaW50XCIgY2xhc3M9XCJnb3Z1ay1oaW50XCI+XG4gICAgICAgIHt7dXBkYXRlRmxhZ0hpbnR9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctbm90LWVudGVyZWQtZXJyb3ItbWVzc2FnZVwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwidXBkYXRlRmxhZ05vdEVudGVyZWRFcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj5FcnJvcjo8L3NwYW4+IHt7dXBkYXRlRmxhZ05vdEVudGVyZWRFcnJvck1lc3NhZ2V9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY2hhci1saW1pdC1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwidXBkYXRlRmxhZ0NoYXJMaW1pdEVycm9yTWVzc2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPkVycm9yOjwvc3Bhbj4ge3t1cGRhdGVGbGFnQ2hhckxpbWl0RXJyb3JNZXNzYWdlfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZ292dWstdGV4dGFyZWFcIiBbaWRdPVwidXBkYXRlRmxhZ0NvbnRyb2xOYW1lXCJcbiAgICAgICAgW25hbWVdPVwidXBkYXRlRmxhZ0NvbnRyb2xOYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJ1cGRhdGVGbGFnQ29udHJvbE5hbWVcIiByb3dzPVwiNVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJ1cGRhdGUtZmxhZy1oaW50IHVwZGF0ZS1mbGFnLWNoYXItbGltaXQtaW5mbyB1cGRhdGUtZmxhZy1jaGFyLWxpbWl0LWVycm9yXCI+XG4gICAgICA8L3RleHRhcmVhPlxuICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLWNoYXItbGltaXQtaW5mb1wiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1jaGFyYWN0ZXItY291bnRfX21lc3NhZ2VcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAge3t1cGRhdGVGbGFnQ2hhckxpbWl0SW5mb319XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtaGFsZlwiPlxuICAgICAgPHA+RmxhZyBzdGF0dXM6XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJnb3Z1ay10YWdcIiBbbmdDbGFzc109XCJ7J2dvdnVrLXRhZy0tZ3JleSc6IHNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1cyA9PT0gJ0luYWN0aXZlJ31cIj5cbiAgICAgICAgICAgIHt7c2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWwuc3RhdHVzfX1cbiAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtaGFsZlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkNoYW5nZVN0YXR1cygpXCIgKm5nSWY9XCJzZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXMgPT09ICdBY3RpdmUnXCI+XG4gICAgICAgIE1ha2UgaW5hY3RpdmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWZsYWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzVELE9BQU8sRUFDTCwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixjQUFjLEVBQ2YsTUFBTSxhQUFhLENBQUM7Ozs7SUNMZiwrQkFBa0Y7SUFDaEYsWUFDRjs7SUFBQSxpQkFBTTs7O0lBREosZUFDRjtJQURFLG1NQUNGOzs7SUFVRSwrQkFBMkY7SUFDekYsWUFDRjs7SUFBQSxpQkFBTTs7O0lBREosZUFDRjtJQURFLDJHQUNGOzs7SUFVRSwrQkFBa0c7SUFDaEcsZ0NBQTBEO0lBQUEsaUJBQUM7SUFBQSxpQkFBTztJQUNsRSxrQ0FBeUM7SUFDdkMsZ0NBQTRDO0lBQUEsWUFBNEI7O0lBQUEsaUJBQU87SUFDL0UsWUFDRjs7SUFBQSxpQkFBUztJQUNYLGlCQUFNOzs7SUFIMEMsZUFBNEI7SUFBNUIscURBQTRCO0lBQ3hFLGVBQ0Y7SUFERSw4RkFDRjs7O0lBRUYsK0JBQTRIO0lBQzFILGdDQUFvQztJQUFBLFlBQTJCOztJQUFBLGlCQUFPO0lBQUMsWUFDekU7O0lBQUEsaUJBQU07OztJQURnQyxlQUEyQjtJQUEzQixvREFBMkI7SUFBUSxlQUN6RTtJQUR5RSw2RkFDekU7OztJQUNBLCtCQUFrSDtJQUNoSCxnQ0FBb0M7SUFBQSxZQUEyQjs7SUFBQSxpQkFBTztJQUFDLFlBQ3pFOztJQUFBLGlCQUFNOzs7SUFEZ0MsZUFBMkI7SUFBM0Isb0RBQTJCO0lBQVEsZUFDekU7SUFEeUUsNEZBQ3pFOzs7SUFyQkYsNkJBQ3FCO0lBQ25CLCtCQUF1RDtJQUNyRCxZQUtGOzs7SUFBQSxpQkFBTTtJQUNOLHFGQU1NO0lBQ04scUZBRU07SUFDTixxRkFFTTtJQUNOLG9DQUtrSTtJQUNsSSwwQkFBQTtJQUFBLGlCQUFXO0lBQ1gsZ0NBQW9IO0lBQ2xILGFBQ0Y7O0lBQUEsaUJBQU07SUFDUiwwQkFBZTs7O0lBN0JYLGVBS0Y7SUFMRSwrTkFLRjtJQUNpQyxlQUErRDtJQUEvRCw4RkFBK0Q7SUFPVixlQUFvQztJQUFwQyw0REFBb0M7SUFHN0MsZUFBbUM7SUFBbkMsMkRBQW1DO0lBSXRHLGVBQWtDO0lBQWxDLHVEQUFrQyw0Q0FBQSx1REFBQTtJQU8xQyxlQUNGO0lBREUsdUdBQ0Y7OztJQUlFLHdCQUF3RTs7O0lBRDFFLDZCQUF5QztJQUN2QyxxSEFBd0U7SUFDMUUsMEJBQWU7Ozs7SUFERSxlQUF3QztJQUF4QyxzQ0FBd0M7OztJQUR6RCxzR0FFZTs7O0lBRkEsZ0RBQXdCOzs7SUFPekMsK0JBQXFJO0lBQ25JLGdDQUFvQztJQUFBLFlBQTJCOztJQUFBLGlCQUFPO0lBQUMsWUFDekU7O0lBQUEsaUJBQU07OztJQURnQyxlQUEyQjtJQUEzQixvREFBMkI7SUFBUSxlQUN6RTtJQUR5RSxpR0FDekU7OztJQUNBLCtCQUEySDtJQUN6SCxnQ0FBb0M7SUFBQSxZQUEyQjs7SUFBQSxpQkFBTztJQUFDLFlBQ3pFOztJQUFBLGlCQUFNOzs7SUFEZ0MsZUFBMkI7SUFBM0Isb0RBQTJCO0lBQVEsZUFDekU7SUFEeUUsZ0dBQ3pFOzs7SUFMQSxvRkFFTTtJQUNOLG9GQUVNO0lBQ04sb0NBTXNEO0lBQ3RELHdCQUFBO0lBQUEsaUJBQVc7SUFDWCwrQkFBeUg7SUFDdkgsWUFDRjs7SUFBQSxpQkFBTTs7O0lBaEJxRixnRUFBd0M7SUFHakQsZUFBdUM7SUFBdkMsK0RBQXVDO0lBSS9HLGVBQThDO0lBQTlDLG1FQUE4Qyx3REFBQSxtRUFBQTtJQVF0RCxlQUNGO0lBREUscUdBQ0Y7OztJQVdJLCtCQUErRTtJQUM3RSw0QkFJeUI7SUFDekIsaUNBQWdHO0lBQzlGLFlBQ0Y7O0lBQUEsaUJBQVE7SUFDVixpQkFBTTs7OztJQVBJLGVBQStDO0lBQS9DLHlFQUErQywyQ0FBQSxzREFBQSxxQkFBQTtJQUlSLGVBQWdEO0lBQWhELDBFQUFnRDtJQUM3RixlQUNGO0lBREUsNkZBQ0Y7OztJQVFOLHdCQUF3RTs7O0lBeEIxRSwrQkFBOEc7SUFDNUcsb0NBQStFO0lBQzdFLGtDQUFpRTtJQUMvRCw4QkFBb0U7SUFDbEUsWUFDRjs7O0lBQUEsaUJBQUs7SUFDUCxpQkFBUztJQUNULCtCQUF3STtJQUN0SSw0RUFTTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQVc7SUFFWCwrQkFBcUQ7SUFDbkQsYUFDRjs7SUFBQSxpQkFBTTtJQUNOLGdHQUF3RTtJQUMxRSxpQkFBTTs7OztJQXJCRSxlQUNGO0lBREUsa0hBQ0Y7SUFFcUcsZUFBZ0M7SUFBaEMscURBQWdDO0lBQ2xGLGVBQTBCO0lBQTFCLHdEQUEwQjtJQWMvRSxlQUNGO0lBREUsbUdBQ0Y7SUFDZSxlQUF3QztJQUF4QyxzQ0FBd0M7OztJQUd6RCwrQkFBa0g7SUFDaEgsK0JBQTZEO0lBQzNELCtCQUFvQztJQUNsQyw0QkFHK0Q7SUFDL0QsaUNBQzhEO0lBQzVELFlBQ0Y7O0lBQUEsaUJBQVE7SUFDVixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07OztJQVRPLGVBQWtFO0lBQWxFLHVGQUFrRSw2REFBQSwrREFBQTtJQUlsRSxlQUFzRDtJQUF0RCwyRUFBc0Q7SUFDM0QsZUFDRjtJQURFLG9GQUNGOzs7O0lBZ0JGLGtDQUF1SjtJQUFqRywwTUFBMEI7SUFDOUUsWUFDRjs7SUFBQSxpQkFBUzs7SUFEUCxlQUNGO0lBREUsc0VBQ0Y7Ozs7SUFiSiwrQkFBcUY7SUFDbkYsK0JBQXdDO0lBQ3RDLHlCQUFHO0lBQUEsWUFDRDs7SUFBQSw0QkFBTTtJQUNKLGtDQUEySDtJQUN6SCxZQUNGOztJQUFBLGlCQUFTO0lBQ1gsaUJBQU87SUFDVCxpQkFBSTtJQUNOLGlCQUFNO0lBQ04sK0JBQXdDO0lBQ3RDLG9GQUVTO0lBQ1gsaUJBQU07SUFDUixpQkFBTTs7O0lBYkMsZUFDRDtJQURDLG9FQUNEO0lBQzRCLGVBQWdHO0lBQWhHLDRIQUFnRztJQUN4SCxlQUNGO0lBREUsNFFBQ0Y7SUFLOEUsZUFBbUU7SUFBbkUsMkZBQW1FOzs7QURySC9KLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjlCLFlBQTZCLHFCQUE0QztRQUE1QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBekJ4RCx5QkFBb0IsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFHaEcsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLG1DQUE4QixHQUEyQixJQUFJLENBQUM7UUFDOUQsa0NBQTZCLEdBQTJCLElBQUksQ0FBQztRQUM3RCx1Q0FBa0MsR0FBMkIsSUFBSSxDQUFDO1FBQ2xFLHNDQUFpQyxHQUEyQixJQUFJLENBQUM7UUFDakUsdUJBQWtCLEdBQUcsY0FBYyxDQUFDO1FBRTNCLHVCQUFrQixHQUFHLGNBQWMsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFDdkIsK0JBQTBCLEdBQUcsNEJBQTRCLENBQUM7UUFFcEUsb0NBQStCLEdBQUcsK0JBQStCLENBQUM7UUFDbEUsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixxQ0FBZ0MsR0FBRyxLQUFLLENBQUM7SUFNNkIsQ0FBQztJQUo5RSxJQUFXLHFCQUFxQjs7UUFDOUIsT0FBTyxPQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsVUFBVSwwQ0FBRSxXQUFXLFFBQU8sVUFBVSxDQUFDO0lBQ3RGLENBQUM7SUFJTSxRQUFROztRQUNiLDZGQUE2RjtRQUM3RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixLQUFLLCtCQUErQixDQUFDLGVBQWUsQ0FBQztRQUMzRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixLQUFLLCtCQUErQixDQUFDLE1BQU0sQ0FBQztRQUNsRyxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixLQUFLLCtCQUErQixDQUFDLGdCQUFnQixDQUFDO1FBQzFILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsS0FBMkMsQ0FBQztRQUNwSCxnQkFBSSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxpQkFBaUIsMENBQUUsVUFBVSxFQUFFO1lBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDakUsa0hBQWtIO1lBQ2xILG9IQUFvSDtZQUNwSCw4R0FBOEc7WUFDOUcsc0ZBQXNGO1lBQ3RGLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQzNELENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFakcsbUhBQW1IO1lBQ25ILGtIQUFrSDtZQUNsSCxrRkFBa0Y7WUFDbEYsSUFBSSxnQkFBd0IsQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUNoRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQzthQUNsRjtpQkFBTTtnQkFDTCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQzthQUNsRjtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUM1RiwwREFBMEQ7WUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxXQUFXLENBQ2hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRWxHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVwRSw2R0FBNkc7WUFDN0csNEdBQTRHO1lBQzVHLHdFQUF3RTtZQUN4RSxJQUFJLG9CQUFvQixFQUFFO2dCQUN4QixRQUFRLG9CQUFvQixFQUFFO29CQUM1QixLQUFLLFFBQVE7d0JBQ1gsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDdkgsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzNELE1BQU07b0JBQ1I7d0JBQ0UsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztpQkFDckM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVNLHNCQUFzQixDQUFDLFVBQXNCO1FBQ2xELFFBQVEsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQ3BDLEtBQUssK0JBQStCLENBQUMsTUFBTSxDQUFDO1lBQzVDLEtBQUssK0JBQStCLENBQUMsZ0JBQWdCO2dCQUNuRCxJQUFJLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxJQUFJLEVBQUU7b0JBQ3BCLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLGVBQWU7d0JBQ3hFLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLGVBQWUsRUFBRTt3QkFDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDUCxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsbUJBQW1CO3dCQUNwRixDQUFDLENBQUMsS0FBSyxVQUFVLENBQUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDLG1CQUFtQixFQUFFO3dCQUN0RSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNQLE9BQU8sWUFBWTt3QkFDakIsQ0FBQyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsaUJBQWlCLEtBQUssVUFBVSxDQUFDLElBQUksR0FBRyxZQUFZLEdBQUc7d0JBQ3BGLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLGlCQUFpQixLQUFLLFVBQVUsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQztpQkFDNUY7Z0JBQ0QsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEQsS0FBSywrQkFBK0IsQ0FBQyxlQUFlO2dCQUNsRCxPQUFPLHVCQUF1QixDQUFDLDBCQUEwQixDQUFDO1lBQzVEO2dCQUNFLE9BQU8sdUJBQXVCLENBQUMsSUFBSSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsdUVBQXVFO1FBQ3ZFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEY7UUFFRCxrSEFBa0g7UUFDbEgseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7WUFDN0IseUJBQXlCLEVBQUUsa0JBQWtCLENBQUMsV0FBVztZQUN6RCxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxjQUFjO1FBQ25CLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7UUFDL0MsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixxSEFBcUg7UUFDckgseUVBQXlFO1FBQ3pFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0RSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMvRSxJQUFJLENBQUMsOEJBQThCLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCO2dCQUNqRSxDQUFDLENBQUMsc0JBQXNCLENBQUMsSUFBSTtnQkFDN0IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDO1lBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUN0QixLQUFLLEVBQUUsRUFBRTtnQkFDVCxXQUFXLEVBQUUsSUFBSSxDQUFDLDhCQUE4QjtnQkFDaEQsT0FBTyxFQUFFLGtCQUFrQixDQUFDLFFBQVE7YUFDckMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsc0JBQXNCLENBQUMsaUNBQWlDLENBQUM7WUFDOUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssRUFBRSxFQUFFO2dCQUNULFdBQVcsRUFBRSxzQkFBc0IsQ0FBQyxpQ0FBaUM7Z0JBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxRQUFRO2FBQ3JDLENBQUMsQ0FBQztTQUNKO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkYsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUgsa0ZBQWtGO1FBQ2xGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxLQUFLLHdCQUF3QixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JHLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUMzRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLHNCQUFzQixDQUFDLHlCQUF5QjtnQkFDN0QsT0FBTyxFQUFFLGtCQUFrQixDQUFDLG9CQUFvQjthQUNqRCxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzVDLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxzQkFBc0IsQ0FBQyxrQ0FBa0MsQ0FBQztZQUNwRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLHNCQUFzQixDQUFDLGtDQUFrQztnQkFDdEUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLG9CQUFvQjthQUNqRCxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQy9ELElBQUksQ0FBQyxpQ0FBaUMsR0FBRyxzQkFBc0IsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsV0FBVyxFQUFFLHNCQUFzQixDQUFDLGlDQUFpQztnQkFDckUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLG9CQUFvQjthQUNqRCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O3NGQTdMVSxtQkFBbUI7d0RBQW5CLG1CQUFtQjtRQ25CaEMsZ0NBQXNDO1FBQ3BDLDhCQUE0RjtRQUMxRiw4QkFBeUY7UUFDdkYsNkJBQXdEO1FBQ3RELGdDQUEwQztRQUN4QyxZQUNGOztRQUFBLGlCQUFRO1FBQ1YsaUJBQUs7UUFDTCxvRUFFTTtRQUVOLDhCQUFxQztRQUNuQyxnQ0FBOEU7UUFDNUUsYUFLRjs7OztRQUFBLGlCQUFRO1FBQ1Isc0VBRU07UUFDTiwwRkFnQ2U7UUFDZix3SEFJYztRQUNoQixpQkFBTTtRQUVOLHdIQWtCYztRQUVkLHlFQXlCTTtRQUVOLHVFQWFNO1FBRU4seUVBZU07UUFDUixpQkFBTTtRQUNSLGlCQUFNO1FBQ1IsMEJBQWU7UUFFZixnQ0FBZ0M7UUFDOUIsbUNBQXdGO1FBQW5CLGlHQUFTLFlBQVEsSUFBQztRQUNyRixhQUNGOztRQUFBLGlCQUFTO1FBQ1gsaUJBQU07OztRQXJKUSx5Q0FBdUI7UUFFSCxlQUEwRDtRQUExRCxtRkFBMEQ7UUFHbEYsZUFDRjtRQURFLDJFQUNGO1FBRXNELGVBQXdCO1FBQXhCLDZDQUF3QjtRQUtwQyxlQUFtQztRQUFuQyxxREFBbUM7UUFDM0UsZUFLRjtRQUxFLHlOQUtGO1FBQ2lFLGVBQXdCO1FBQXhCLDZDQUF3QjtRQUcxRSxlQUNiO1FBRGEsMkhBQ2IsaUJBQUE7UUEyRGtFLGVBQXNDO1FBQXRDLDJEQUFzQztRQTJCbEMsZUFBc0M7UUFBdEMsMkRBQXNDO1FBZXJELGVBQXdCO1FBQXhCLDZDQUF3QjtRQXNCckYsZUFDRjtRQURFLCtEQUNGOzt1RkRqSVcsbUJBQW1CO2NBSi9CLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixXQUFXLEVBQUUsOEJBQThCO2FBQzVDO3dFQUVpQixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsdUJBQXVCO2tCQUF0QyxLQUFLO1lBRVcsb0JBQW9CO2tCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGUsIEZsYWdEZXRhaWwsIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGggfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlcixcbiAgQ2FzZUZsYWdGaWVsZFN0YXRlLFxuICBDYXNlRmxhZ0Zvcm1GaWVsZHMsXG4gIENhc2VGbGFnU3RhdHVzLFxuICBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSxcbiAgVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSxcbiAgVXBkYXRlRmxhZ1N0ZXBcbn0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtdXBkYXRlLWZsYWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBkYXRlLWZsYWcuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVwZGF0ZUZsYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FzZUZsYWdTdGF0ZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4oKTtcblxuICBwdWJsaWMgc2VsZWN0ZWRGbGFnOiBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoO1xuICBwdWJsaWMgdXBkYXRlRmxhZ1RpdGxlID0gJyc7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgY29tbWVudHNOb3RFbnRlcmVkRXJyb3JNZXNzYWdlOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgcHVibGljIGNvbW1lbnRzQ2hhckxpbWl0RXJyb3JNZXNzYWdlOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgcHVibGljIHN0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2U6IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgc3RhdHVzUmVhc29uQ2hhckxpbWl0RXJyb3JNZXNzYWdlOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZUZsYWdTdGVwRW51bSA9IFVwZGF0ZUZsYWdTdGVwO1xuICBwdWJsaWMgdmFsaWRTdGF0dXNQcm9ncmVzc2lvbnM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZUZsYWdTdGF0dXNFbnVtID0gQ2FzZUZsYWdTdGF0dXM7XG4gIHB1YmxpYyByZWFkb25seSBjYXNlRmxhZ0Zvcm1GaWVsZHMgPSBDYXNlRmxhZ0Zvcm1GaWVsZHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGV4dE1heENoYXJMaW1pdCA9IDIwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbiA9ICdzZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbic7XG4gIHByaXZhdGUgZmxhZ0RldGFpbDogRmxhZ0RldGFpbDtcbiAgcHVibGljIGNhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyO1xuICBwdWJsaWMgZXh0ZXJuYWxVc2VyVXBkYXRlID0gZmFsc2U7XG4gIHB1YmxpYyBpbnRlcm5hbFVzZXJVcGRhdGUgPSBmYWxzZTtcbiAgcHVibGljIGludGVybmFsVXNlcjJQb2ludDFFbmFibGVkVXBkYXRlID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBleHRlcm5hbGx5VmlzaWJsZUZsYWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LnZpc2liaWxpdHk/LnRvTG93ZXJDYXNlKCkgPT09ICdleHRlcm5hbCc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJweFRyYW5zbGF0aW9uU2VydmljZTogUnB4VHJhbnNsYXRpb25TZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU2V0IHdoZXRoZXIgdGhpcyBpcyBhbiBleHRlcm5hbCwgaW50ZXJuYWwsIG9yIGludGVybmFsIENhc2UgRmxhZ3MgdjIuMSBlbmFibGVkIHVzZXIgdXBkYXRlXG4gICAgdGhpcy5leHRlcm5hbFVzZXJVcGRhdGUgPSB0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDtcbiAgICB0aGlzLmludGVybmFsVXNlclVwZGF0ZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFO1xuICAgIHRoaXMuaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGUgPSB0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE7XG4gICAgdGhpcy5zZWxlY3RlZEZsYWcgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbikudmFsdWUgYXMgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsYWc/LmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsKSB7XG4gICAgICB0aGlzLmZsYWdEZXRhaWwgPSB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsO1xuICAgICAgLy8gSWYgcHJlc2VudCwgdXNlIHRoZSAqb3JpZ2luYWwqIGZsYWcgc3RhdHVzLCBub3QgdGhlIG9uZSBpbiB0aGUgZmxhZ0RldGFpbCBvYmplY3QsIGJlY2F1c2UgdGhlIHN0YXR1cyBjb3VsZCBoYXZlXG4gICAgICAvLyBiZWVuIG1vZGlmaWVkIHZpYSBhIHByZXZpb3VzIFwiVXBkYXRlIEZsYWdcIiBqb3VybmV5IHRocm91Z2ggdGhlIFVJIGJ1dCBub3QgcGVyc2lzdGVkIHlldCAodGh1cyBub3QgdGhlICp0cnVlKiBmbGFnXG4gICAgICAvLyBzdGF0dXMpLiBPdGhlcndpc2UsIHVzZSB0aGUgc3RhdHVzIGZyb20gdGhlIGZsYWdEZXRhaWwgb2JqZWN0IChpbml0aWFsbHksIHRoZSBvcmlnaW5hbCBmbGFnIHN0YXR1cyB3b24ndCBiZVxuICAgICAgLy8gcHJlc2VudCBiZWNhdXNlIGl0IGdldHMgY2FjaGVkIG9ubHkgb24gZmlyc3QgdXBkYXRlIGJ5IFdyaXRlQ2FzZUZsYWdGaWVsZENvbXBvbmVudClcbiAgICAgIGNvbnN0IGN1cnJlbnRGbGFnU3RhdHVzS2V5ID0gT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpLmZpbmQoXG4gICAgICAgIChrZXkpID0+IENhc2VGbGFnU3RhdHVzW2tleV0gPT09ICh0aGlzLnNlbGVjdGVkRmxhZy5vcmlnaW5hbFN0YXR1cyB8fCB0aGlzLmZsYWdEZXRhaWwuc3RhdHVzKSk7XG5cbiAgICAgIC8vIFBvcHVsYXRlIGZsYWcgY29tbWVudHMgdGV4dCBhcmVhIHdpdGggZXhpc3RpbmcgY29tbWVudHM7IHVzZSB0aGUgY29tbWVudHMgYXBwcm9wcmlhdGUgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSxcbiAgICAgIC8vIGZhbGxpbmcgYmFjayBvbiB0aGVpciBhbHRlcm5hdGUgY291bnRlcnBhcnQgaWYgbm9uZSBhcmUgYXZhaWxhYmxlLiBDb21tZW50cyBhcmUgdG8gYmUgcG9wdWxhdGVkIG9uZSB0aW1lIG9ubHkgLVxuICAgICAgLy8gd2hlbiB0aGUgdXNlciBmaXJzdCB2aXNpdHMgdGhlIHBhZ2UgLSBldmVuIGlmIHRoZXkgc3dpdGNoIGxhbmd1YWdlIHN1YnNlcXVlbnRseVxuICAgICAgbGV0IGV4aXN0aW5nQ29tbWVudHM6IHN0cmluZztcbiAgICAgIGlmICh0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5Jykge1xuICAgICAgICBleGlzdGluZ0NvbW1lbnRzID0gdGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5IHx8IHRoaXMuZmxhZ0RldGFpbC5mbGFnQ29tbWVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aXN0aW5nQ29tbWVudHMgPSB0aGlzLmZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQgfHwgdGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5O1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFMsIG5ldyBGb3JtQ29udHJvbChleGlzdGluZ0NvbW1lbnRzKSk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMsIG5ldyBGb3JtQ29udHJvbChjdXJyZW50RmxhZ1N0YXR1c0tleSkpO1xuICAgICAgLy8gUG9wdWxhdGUgc3RhdHVzIHJlYXNvbiBvbmx5IGlmIHRoZSB1c2VyIGlzIG5vdCBleHRlcm5hbFxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT04sIG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgdGhpcy5leHRlcm5hbFVzZXJVcGRhdGUgPyAnJyA6IHRoaXMuZmxhZ0RldGFpbC5mbGFnVXBkYXRlQ29tbWVudCkpO1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVELCBuZXcgRm9ybUNvbnRyb2woZmFsc2UpKTtcblxuICAgICAgdGhpcy51cGRhdGVGbGFnVGl0bGUgPSB0aGlzLnNldFVwZGF0ZUNhc2VGbGFnVGl0bGUodGhpcy5mbGFnRGV0YWlsKTtcblxuICAgICAgLy8gU2V0IHRoZSB2YWxpZCBzdGF0dXMgb3B0aW9ucyBmb3IgZGlzcGxheSwgYmFzZWQgb24gY3VycmVudCBzdGF0dXMgb2YgdGhlIHNlbGVjdGVkIGZsYWcuIFwiQWN0aXZlXCIgZmxhZ3MgY2FuXG4gICAgICAvLyByZW1haW4gXCJBY3RpdmVcIiBvciBtb3ZlIHRvIFwiSW5hY3RpdmVcIiBvbmx5OyBcIlJlcXVlc3RlZFwiIGZsYWdzIGNhbiByZW1haW4gXCJSZXF1ZXN0ZWRcIiBvciBtb3ZlIHRvIFwiQWN0aXZlXCIsXG4gICAgICAvLyBcIkluYWN0aXZlXCIsIG9yIFwiTm90IGFwcHJvdmVkXCIuIE5vIG90aGVyIHN0YXR1cyBwcm9ncmVzc2lvbnMgYXJlIHZhbGlkXG4gICAgICBpZiAoY3VycmVudEZsYWdTdGF0dXNLZXkpIHtcbiAgICAgICAgc3dpdGNoIChjdXJyZW50RmxhZ1N0YXR1c0tleSkge1xuICAgICAgICAgIGNhc2UgJ0FDVElWRSc6XG4gICAgICAgICAgICB0aGlzLnZhbGlkU3RhdHVzUHJvZ3Jlc3Npb25zID0gT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpLmZpbHRlcihrZXkgPT4gIVsnUkVRVUVTVEVEJywgJ05PVF9BUFBST1ZFRCddLmluY2x1ZGVzKGtleSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnUkVRVUVTVEVEJzpcbiAgICAgICAgICAgIHRoaXMudmFsaWRTdGF0dXNQcm9ncmVzc2lvbnMgPSBPYmplY3Qua2V5cyhDYXNlRmxhZ1N0YXR1cyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy52YWxpZFN0YXR1c1Byb2dyZXNzaW9ucyA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFVwZGF0ZUNhc2VGbGFnVGl0bGUoZmxhZ0RldGFpbDogRmxhZ0RldGFpbCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKSB7XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFOlxuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE6XG4gICAgICAgIGlmIChmbGFnRGV0YWlsPy5uYW1lKSB7XG4gICAgICAgICAgY29uc3Qgc3ViVHlwZVZhbHVlID0gZmxhZ0RldGFpbC5zdWJUeXBlVmFsdWUgfHwgZmxhZ0RldGFpbC5zdWJUeXBlVmFsdWVfY3lcbiAgICAgICAgICAgID8gYCwgJHtmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZSB8fCBmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZV9jeX1gXG4gICAgICAgICAgICA6ICcnO1xuICAgICAgICAgIGNvbnN0IG90aGVyRGVzY3JpcHRpb24gPSBmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb24gfHwgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uX2N5XG4gICAgICAgICAgICA/IGAsICR7ZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uIHx8IGZsYWdEZXRhaWwub3RoZXJEZXNjcmlwdGlvbl9jeX1gXG4gICAgICAgICAgICA6ICcnO1xuICAgICAgICAgIHJldHVybiBzdWJUeXBlVmFsdWVcbiAgICAgICAgICAgID8gYCR7Q2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEV9IFwiJHtmbGFnRGV0YWlsLm5hbWV9JHtzdWJUeXBlVmFsdWV9XCJgXG4gICAgICAgICAgICA6IGAke0Nhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLlVQREFURV9GTEFHX1RJVExFfSBcIiR7ZmxhZ0RldGFpbC5uYW1lfSR7b3RoZXJEZXNjcmlwdGlvbn1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke0Nhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLlVQREFURV9GTEFHX1RJVExFfWA7XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMOlxuICAgICAgICByZXR1cm4gQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEVfRVhURVJOQUw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuTk9ORTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIC8vIFZhbGlkYXRlIGZsYWcgY29tbWVudHMgYW5kIHN0YXR1cyByZWFzb24gZW50cnlcbiAgICB0aGlzLnZhbGlkYXRlVGV4dEVudHJ5KCk7XG5cbiAgICAvLyBTZXQgc2VsZWN0ZWQgZmxhZyBzdGF0dXMgdG8gXCJJbmFjdGl2ZVwiIGlmIHVwZGF0ZSBpcyBieSBleHRlcm5hbCB1c2VyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxVc2VyVXBkYXRlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUykuc2V0VmFsdWUoT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpWzJdKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gY2FzZSBmbGFnIGZpZWxkIHN0YXRlLCBlcnJvciBtZXNzYWdlcywgYW5kIHNlbGVjdGVkIGZsYWcgZGV0YWlsIHRvIHRoZSBwYXJlbnQuIFRoZSBzZWxlY3RlZCBmbGFnIG11c3QgYmVcbiAgICAvLyByZS1lbWl0dGVkIGJlY2F1c2UgdGhlIHBhcmVudCBjb21wb25lbnQgcmVwb3B1bGF0ZXMgdGhpcyBvbiBoYW5kbGluZyB0aGlzIEV2ZW50RW1pdHRlclxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEUsXG4gICAgICBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMsXG4gICAgICBzZWxlY3RlZEZsYWc6IHRoaXMuc2VsZWN0ZWRGbGFnLFxuICAgIH0pO1xuXG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICB9XG5cbiAgcHVibGljIG9uTWFrZUluYWN0aXZlKCk6IHZvaWQge1xuICAgIC8vIFNldCBzZWxlY3RlZCBmbGFnIHN0YXR1cyB0byBcIkluYWN0aXZlXCIgb24gc2NyZWVuIGFuZCBpbiB0aGUgRm9ybUdyb3VwXG4gICAgdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXMgPSBDYXNlRmxhZ1N0YXR1cy5JTkFDVElWRTtcbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUykuc2V0VmFsdWUoT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpWzJdKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUZXh0RW50cnkoKTogdm9pZCB7XG4gICAgdGhpcy5jb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuY29tbWVudHNDaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuc3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZSA9IG51bGw7XG4gICAgdGhpcy5zdGF0dXNSZWFzb25DaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIC8vIFZhbGlkYXRpb24gc2hvdWxkIGZhaWwgaWYgdGhlIGZsYWcgaGFzIGFuIGV4aXN0aW5nIGNvbW1lbnQgYW5kIGl0IGhhcyBiZWVuIGRlbGV0ZWQgb24gc2NyZWVuOyBjb252ZXJzZWx5LCBpZiB0aGVyZVxuICAgIC8vIGlzIG5vIGV4aXN0aW5nIGNvbW1lbnQgdGhlbiBvbmUgaXMgbm90IHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uIHRvIHBhc3NcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UUykudmFsdWU7XG4gICAgaWYgKCFjb21tZW50ICYmICh0aGlzLmZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQgfHwgdGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5KSkge1xuICAgICAgdGhpcy5jb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSAhdGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlclxuICAgICAgICA/IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuTk9ORVxuICAgICAgICA6IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuRkxBR19DT01NRU5UU19OT1RfRU5URVJFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2UsXG4gICAgICAgIGZpZWxkSWQ6IENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UU1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbW1lbnQgJiYgY29tbWVudC5sZW5ndGggPiB0aGlzLnRleHRNYXhDaGFyTGltaXQpIHtcbiAgICAgIHRoaXMuY29tbWVudHNDaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLkZMQUdfQ09NTUVOVFNfQ0hBUl9MSU1JVF9FWENFRURFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5GTEFHX0NPTU1FTlRTX0NIQVJfTElNSVRfRVhDRUVERUQsXG4gICAgICAgIGZpZWxkSWQ6IENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UU1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzUmVhc29uID0gdGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTikudmFsdWU7XG4gICAgY29uc3QgZmxhZ1N0YXR1c05vdEFwcHJvdmVkS2V5ID0gT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpLmZpbmQoa2V5ID0+IENhc2VGbGFnU3RhdHVzW2tleV0gPT09IENhc2VGbGFnU3RhdHVzLk5PVF9BUFBST1ZFRCk7XG4gICAgLy8gU3RhdHVzIHJlYXNvbiBpcyBtYW5kYXRvcnkgaWYgZmxhZyBzdGF0dXMgaXMgXCJOb3QgYXBwcm92ZWRcIiBvciB1c2VyIGlzIGV4dGVybmFsXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTKS52YWx1ZSA9PT0gZmxhZ1N0YXR1c05vdEFwcHJvdmVkS2V5ICYmICFzdGF0dXNSZWFzb24pIHtcbiAgICAgIHRoaXMuc3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZSA9IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9OT1RfRU5URVJFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX05PVF9FTlRFUkVELFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT05cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4dGVybmFsVXNlclVwZGF0ZSAmJiAhc3RhdHVzUmVhc29uKSB7XG4gICAgICB0aGlzLnN0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLlNUQVRVU19SRUFTT05fTk9UX0VOVEVSRURfRVhURVJOQUw7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9OT1RfRU5URVJFRF9FWFRFUk5BTCxcbiAgICAgICAgZmllbGRJZDogQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzUmVhc29uICYmIHN0YXR1c1JlYXNvbi5sZW5ndGggPiB0aGlzLnRleHRNYXhDaGFyTGltaXQpIHtcbiAgICAgIHRoaXMuc3RhdHVzUmVhc29uQ2hhckxpbWl0RXJyb3JNZXNzYWdlID0gVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX0NIQVJfTElNSVRfRVhDRUVERUQ7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9DSEFSX0xJTUlUX0VYQ0VFREVELFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT05cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstY2hhcmFjdGVyLWNvdW50XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1jaGFyYWN0ZXItY291bnRcIiBkYXRhLW1heGxlbmd0aD1cIjIwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwfVwiPlxuICAgICAgPGgxIGNsYXNzPVwiZ292dWstbGFiZWwtd3JhcHBlciBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiPlxuICAgICAgICAgIHt7dXBkYXRlRmxhZ1RpdGxlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvaDE+XG4gICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctaGludC1leHRlcm5hbFwiIGNsYXNzPVwiZ292dWstaGludFwiICpuZ0lmPVwiZXh0ZXJuYWxVc2VyVXBkYXRlXCI+XG4gICAgICAgIHt7c2VsZWN0ZWRGbGFnPy5mbGFnRGV0YWlsRGlzcGxheT8uZmxhZ0RldGFpbCB8IHVwZGF0ZUZsYWdUaXRsZURpc3BsYXl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tc1wiIFtmb3JdPVwiY2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGV4dGVybmFsVXNlclVwZGF0ZVxuICAgICAgICAgICAgICA/ICh1cGRhdGVGbGFnU3RlcEVudW0uQ09NTUVOVF9GSUVMRF9MQUJFTF9FWFRFUk5BTCB8IHJweFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiAodXBkYXRlRmxhZ1RpdGxlIHwgcnB4VHJhbnNsYXRlKSArICgnIGNvbW1lbnRzJyB8IHJweFRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtaGludC1leHRlcm5hbFwiIGNsYXNzPVwiZ292dWstaGludFwiICpuZ0lmPVwiZXh0ZXJuYWxVc2VyVXBkYXRlXCI+XG4gICAgICAgICAge3t1cGRhdGVGbGFnU3RlcEVudW0uQ09NTUVOVF9ISU5UX1RFWFRfRVhURVJOQUwgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVybmFsVXNlclVwZGF0ZSB8fCBpbnRlcm5hbFVzZXIyUG9pbnQxRW5hYmxlZFVwZGF0ZSB8fCBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gJyc7XG4gICAgICAgICAgZWxzZSBleHRlcm5hbFVzZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgaW50ZXJuYWxVc2VyVXBkYXRlXG4gICAgICAgICAgICAgICAgPyAodXBkYXRlRmxhZ1N0ZXBFbnVtLkNPTU1FTlRfSElOVF9URVhUX0lOVEVSTkFMIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIDogKHVwZGF0ZUZsYWdTdGVwRW51bS5DT01NRU5UX0hJTlRfVEVYVF9JTlRFUk5BTF8yX1BPSU5UXzEgfCBycHhUcmFuc2xhdGUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIiAqbmdJZj1cImludGVybmFsVXNlcjJQb2ludDFFbmFibGVkVXBkYXRlICYmIGV4dGVybmFsbHlWaXNpYmxlRmxhZ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj4hPC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fYXNzaXN0aXZlXCI+e3snV2FybmluZycgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAge3t1cGRhdGVGbGFnU3RlcEVudW0uV0FSTklOR19URVhUIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1ub3QtZW50ZXJlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e2NvbW1lbnRzTm90RW50ZXJlZEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLWNvbW1lbnRzLWNoYXItbGltaXQtZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImNvbW1lbnRzQ2hhckxpbWl0RXJyb3JNZXNzYWdlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J0Vycm9yOicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj4ge3tjb21tZW50c0NoYXJMaW1pdEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZ292dWstdGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcIlxuICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1oaW50IHVwZGF0ZS1mbGFnLWNvbW1lbnRzLWNoYXItbGltaXQtaW5mbyB1cGRhdGUtZmxhZy1jb21tZW50cy1jaGFyLWxpbWl0LWVycm9yXCI+XG4gICAgICAgICAgPC90ZXh0YXJlYT5cbiAgICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtY2hhci1saW1pdC1pbmZvXCIgY2xhc3M9XCJnb3Z1ay1oaW50IGdvdnVrLWNoYXJhY3Rlci1jb3VudF9fbWVzc2FnZVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge3t1cGRhdGVGbGFnU3RlcEVudW0uQ0hBUkFDVEVSX0xJTUlUX0lORk8gfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNleHRlcm5hbFVzZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVybmFsVXNlclVwZGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwZGF0ZUZsYWdTdGF0dXNSZWFzb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3VwZGF0ZUZsYWdTdGF0dXNSZWFzb24+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLW5vdC1lbnRlcmVkLWVycm9yLW1lc3NhZ2VcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInN0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J0Vycm9yOicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj4ge3tzdGF0dXNSZWFzb25Ob3RFbnRlcmVkRXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInN0YXR1c1JlYXNvbkNoYXJMaW1pdEVycm9yTWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e3N0YXR1c1JlYXNvbkNoYXJMaW1pdEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OXCJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTlwiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTlwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwidXBkYXRlLWZsYWctY29tbWVudHMtaGludC1leHRlcm5hbCB1cGRhdGUtZmxhZy1zdGF0dXMtaGludCB1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtaW5mb1xuICAgICAgICAgICAgICAgICAgdXBkYXRlLWZsYWctc3RhdHVzLXJlYXNvbi1jaGFyLWxpbWl0LWVycm9yXCI+XG4gICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtaW5mb1wiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1jaGFyYWN0ZXItY291bnRfX21lc3NhZ2VcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5DSEFSQUNURVJfTElNSVRfSU5GTyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBpZD1cImZsYWctc3RhdHVzLWNvbnRhaW5lci12Ml8xXCIgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiICpuZ0lmPVwiaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGVcIj5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwidXBkYXRlLWZsYWctc3RhdHVzLWhlYWRpbmdcIj5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1zXCI+XG4gICAgICAgICAgICA8aDEgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtaGVhZGluZ1wiIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAge3t1cGRhdGVGbGFnVGl0bGUgfCBycHhUcmFuc2xhdGV9fSB7eydzdGF0dXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvcyBnb3Z1ay1yYWRpb3MtLWNvbmRpdGlvbmFsIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIiBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBzdGF0dXMgb2YgdmFsaWRTdGF0dXNQcm9ncmVzc2lvbnNcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMgKyAnXycgKyBzdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgW2Zvcl09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTICsgJ18nICsgc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAge3tjYXNlRmxhZ1N0YXR1c0VudW1bc3RhdHVzXSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctc3RhdHVzLWhpbnRcIiBjbGFzcz1cImdvdnVrLWhpbnRcIj5cbiAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5TVEFUVVNfSElOVF9URVhUIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGRhdGVGbGFnU3RhdHVzUmVhc29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBpZD1cInRyYW5zbGF0aW9uLWNoZWNrYm94LWNvbnRhaW5lclwiIGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTZcIiAqbmdJZj1cImludGVybmFsVXNlcjJQb2ludDFFbmFibGVkVXBkYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1jaGVja2JveGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERURcIlxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEXCJcbiAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgW2Zvcl09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEXCI+XG4gICAgICAgICAgICAgIHt7J0kgbmVlZCB0byBhZGQgYSB0cmFuc2xhdGlvbicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBpZD1cImZsYWctc3RhdHVzLWNvbnRhaW5lci12MVwiIGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIiAqbmdJZj1cImludGVybmFsVXNlclVwZGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tb25lLWhhbGZcIj5cbiAgICAgICAgICA8cD57eydGbGFnIHN0YXR1czonIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstdGFnXCIgW25nQ2xhc3NdPVwieydnb3Z1ay10YWctLWdyZXknOiBzZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXMgPT09ICdJbmFjdGl2ZSd9XCI+XG4gICAgICAgICAgICAgICAge3tzZWxlY3RlZEZsYWc/LmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsPy5zdGF0dXMgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tb25lLWhhbGZcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTWFrZUluYWN0aXZlKClcIiAqbmdJZj1cInNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1cyA9PT0gJ0FjdGl2ZSdcIj5cbiAgICAgICAgICAgIHt7J01ha2UgaW5hY3RpdmUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICA8YnV0dG9uIGlkPVwidXBkYXRlRmxhZ05leHRCdXR0b25cIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25OZXh0KClcIj5cbiAgICB7eydOZXh0JyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=