@hmcts/ccd-case-ui-toolkit 7.0.7-task-completion-error-message → 7.0.7-welsh-translation-fixes

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 (359) hide show
  1. package/esm2020/lib/components/banners/notification-banner/domain/notification-banner-config.model.mjs +1 -1
  2. package/esm2020/lib/components/banners/notification-banner/notification-banner.component.mjs +41 -30
  3. package/esm2020/lib/shared/commons/constants.mjs +1 -2
  4. package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +8 -18
  5. package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +2 -2
  6. package/esm2020/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +2 -2
  7. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +2 -11
  8. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.mjs +7 -0
  9. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +166 -123
  10. package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +17 -22
  11. package/esm2020/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +2 -3
  12. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +2 -2
  13. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +2 -2
  14. package/esm2020/lib/shared/components/case-editor/services/case-flag-state.service.mjs +19 -0
  15. package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +6 -1
  16. package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +1 -1
  17. package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +1 -1
  18. package/esm2020/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +12 -38
  19. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +51 -24
  20. package/esm2020/lib/shared/components/case-viewer/case-viewer.module.mjs +8 -5
  21. package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +19 -20
  22. package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +1 -1
  23. package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +70 -31
  24. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +249 -46
  25. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +140 -71
  26. package/esm2020/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +165 -0
  27. package/esm2020/lib/shared/components/palette/case-flag/components/index.mjs +4 -1
  28. package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +73 -78
  29. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.mjs +6 -0
  30. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +133 -99
  31. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +22 -9
  32. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +213 -112
  33. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +267 -0
  34. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +439 -104
  35. package/esm2020/lib/shared/components/palette/case-flag/domain/case-flag-state.model.mjs +1 -1
  36. package/esm2020/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +1 -1
  37. package/esm2020/lib/shared/components/palette/case-flag/domain/language.model.mjs +1 -1
  38. package/esm2020/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.mjs +2 -1
  39. package/esm2020/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.mjs +3 -1
  40. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.mjs +12 -0
  41. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.mjs +15 -0
  42. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.mjs +13 -0
  43. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.mjs +3 -2
  44. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.mjs +11 -3
  45. package/esm2020/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.mjs +6 -0
  46. package/esm2020/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.mjs +6 -0
  47. package/esm2020/lib/shared/components/palette/case-flag/enums/index.mjs +9 -2
  48. package/esm2020/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.mjs +3 -2
  49. package/esm2020/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.mjs +4 -1
  50. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.mjs +6 -0
  51. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.mjs +6 -0
  52. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.mjs +5 -1
  53. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.mjs +7 -2
  54. package/esm2020/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.mjs +10 -7
  55. package/esm2020/lib/shared/components/palette/case-flag/index.mjs +2 -1
  56. package/esm2020/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +41 -0
  57. package/esm2020/lib/shared/components/palette/case-flag/pipes/index.mjs +5 -0
  58. package/esm2020/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +41 -0
  59. package/esm2020/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +109 -0
  60. package/esm2020/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +77 -0
  61. package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +156 -57
  62. package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +385 -172
  63. package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +8 -10
  64. package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +49 -54
  65. package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +12 -14
  66. package/esm2020/lib/shared/components/palette/complex/sort-order.mjs +7 -0
  67. package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +5 -6
  68. package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +8 -10
  69. package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +8 -10
  70. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +23 -24
  71. package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +8 -10
  72. package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +8 -10
  73. package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +8 -10
  74. package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +8 -10
  75. package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +8 -10
  76. package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +9 -7
  77. package/esm2020/lib/shared/components/palette/index.mjs +3 -1
  78. package/esm2020/lib/shared/components/palette/markdown/index.mjs +2 -1
  79. package/esm2020/lib/shared/components/palette/markdown/markdown-component.module.mjs +40 -0
  80. package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +9 -7
  81. package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +8 -10
  82. package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +8 -10
  83. package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +8 -10
  84. package/esm2020/lib/shared/components/palette/palette.module.mjs +148 -49
  85. package/esm2020/lib/shared/components/palette/palette.service.mjs +4 -2
  86. package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +8 -10
  87. package/esm2020/lib/shared/components/palette/query-management/__mocks__/index.mjs +210 -0
  88. package/esm2020/lib/shared/components/palette/query-management/components/index.mjs +13 -0
  89. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +42 -0
  90. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +144 -0
  91. package/esm2020/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +64 -0
  92. package/esm2020/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +60 -0
  93. package/esm2020/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +281 -0
  94. package/esm2020/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +327 -0
  95. package/esm2020/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +22 -0
  96. package/esm2020/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +164 -0
  97. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +74 -0
  98. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +107 -0
  99. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +201 -0
  100. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +101 -0
  101. package/esm2020/lib/shared/components/palette/query-management/enums/index.mjs +6 -0
  102. package/esm2020/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.mjs +5 -0
  103. package/esm2020/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +6 -0
  104. package/esm2020/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.mjs +10 -0
  105. package/esm2020/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.mjs +6 -0
  106. package/esm2020/lib/shared/components/palette/query-management/index.mjs +7 -0
  107. package/esm2020/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +2 -0
  108. package/esm2020/lib/shared/components/palette/query-management/models/index.mjs +8 -0
  109. package/esm2020/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.mjs +2 -0
  110. package/esm2020/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.mjs +2 -0
  111. package/esm2020/lib/shared/components/palette/query-management/models/query-create-context.enum.mjs +9 -0
  112. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.mjs +2 -0
  113. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +21 -0
  114. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +38 -0
  115. package/esm2020/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +121 -0
  116. package/esm2020/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +22 -0
  117. package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +8 -10
  118. package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +8 -10
  119. package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +14 -7
  120. package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +16 -9
  121. package/esm2020/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +10 -5
  122. package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +12 -13
  123. package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +24 -4
  124. package/esm2020/lib/shared/domain/case-flag/flag-type.model.mjs +16 -2
  125. package/esm2020/lib/shared/domain/case-view/case-view-event-ids.enum.mjs +6 -0
  126. package/esm2020/lib/shared/domain/case-view/case-view-trigger.model.mjs +1 -2
  127. package/esm2020/lib/shared/domain/definition/display-context-enum.model.mjs +3 -1
  128. package/esm2020/lib/shared/domain/work-allocation/task-response.model.mjs +1 -1
  129. package/esm2020/lib/shared/fixture/shared.test.fixture.mjs +2 -1
  130. package/esm2020/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +16 -0
  131. package/esm2020/lib/shared/pipes/generic/index.mjs +2 -0
  132. package/esm2020/lib/shared/pipes/index.mjs +3 -2
  133. package/esm2020/lib/shared/pipes/pipes.module.mjs +9 -5
  134. package/esm2020/lib/shared/services/alert/alert.service.mjs +1 -1
  135. package/esm2020/lib/shared/services/case-flag/case-flag-refdata.service.mjs +9 -3
  136. package/esm2020/lib/shared/services/fields/fields.utils.mjs +22 -4
  137. package/esm2020/lib/shared/services/form/form-value.service.mjs +14 -11
  138. package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +2 -1
  139. package/esm2020/lib/shared/services/request/request.options.builder.mjs +7 -1
  140. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +8805 -4294
  141. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  142. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +9786 -5695
  143. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  144. package/lib/components/banners/notification-banner/domain/notification-banner-config.model.d.ts +6 -5
  145. package/lib/components/banners/notification-banner/domain/notification-banner-config.model.d.ts.map +1 -1
  146. package/lib/shared/commons/constants.d.ts +0 -1
  147. package/lib/shared/commons/constants.d.ts.map +1 -1
  148. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +2 -3
  149. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  150. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  151. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts +6 -0
  152. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts.map +1 -0
  153. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +1 -1
  154. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  155. package/lib/shared/components/case-editor/case-editor.module.d.ts +17 -20
  156. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  157. 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
  158. 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
  159. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +11 -0
  160. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -0
  161. package/lib/shared/components/case-editor/services/cases.service.d.ts +1 -0
  162. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  163. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +2 -2
  164. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  165. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +2 -5
  166. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  167. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +7 -3
  168. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  169. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +4 -4
  170. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  171. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  172. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +6 -2
  173. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  174. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts +25 -8
  175. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts.map +1 -1
  176. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts +2 -1
  177. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts.map +1 -1
  178. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +28 -0
  179. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -0
  180. package/lib/shared/components/palette/case-flag/components/index.d.ts +3 -0
  181. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  182. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -8
  183. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  184. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts +5 -0
  185. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts.map +1 -0
  186. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +10 -8
  187. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  188. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -1
  189. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  190. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +16 -9
  191. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  192. 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
  193. 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
  194. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +26 -11
  195. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  196. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts +1 -10
  197. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts.map +1 -1
  198. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +12 -1
  199. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts.map +1 -1
  200. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts +1 -0
  201. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts.map +1 -1
  202. package/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.d.ts +1 -0
  203. package/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.d.ts.map +1 -1
  204. package/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.d.ts +3 -1
  205. package/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.d.ts.map +1 -1
  206. package/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.d.ts +11 -0
  207. package/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.d.ts.map +1 -0
  208. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts +14 -0
  209. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts.map +1 -0
  210. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts +12 -0
  211. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts.map +1 -0
  212. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts +2 -1
  213. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts.map +1 -1
  214. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts +11 -3
  215. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts.map +1 -1
  216. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts +5 -0
  217. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts.map +1 -0
  218. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts +5 -0
  219. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts.map +1 -0
  220. package/lib/shared/components/palette/case-flag/enums/index.d.ts +8 -1
  221. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  222. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts +2 -1
  223. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts.map +1 -1
  224. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts +3 -0
  225. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts.map +1 -1
  226. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts +5 -0
  227. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts.map +1 -0
  228. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts +5 -0
  229. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts.map +1 -0
  230. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts +5 -1
  231. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts.map +1 -1
  232. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts +7 -2
  233. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts.map +1 -1
  234. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts +7 -4
  235. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts.map +1 -1
  236. package/lib/shared/components/palette/case-flag/index.d.ts +1 -0
  237. package/lib/shared/components/palette/case-flag/index.d.ts.map +1 -1
  238. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts +19 -0
  239. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts.map +1 -0
  240. package/lib/shared/components/palette/case-flag/pipes/index.d.ts +5 -0
  241. package/lib/shared/components/palette/case-flag/pipes/index.d.ts.map +1 -0
  242. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts +18 -0
  243. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts.map +1 -0
  244. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts +25 -0
  245. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts.map +1 -0
  246. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts +21 -0
  247. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts.map +1 -0
  248. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +12 -8
  249. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  250. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +52 -27
  251. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  252. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +3 -2
  253. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  254. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
  255. package/lib/shared/components/palette/complex/sort-order.d.ts +6 -0
  256. package/lib/shared/components/palette/complex/sort-order.d.ts.map +1 -0
  257. package/lib/shared/components/palette/index.d.ts +2 -0
  258. package/lib/shared/components/palette/index.d.ts.map +1 -1
  259. package/lib/shared/components/palette/markdown/index.d.ts +1 -0
  260. package/lib/shared/components/palette/markdown/index.d.ts.map +1 -1
  261. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +13 -0
  262. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +1 -0
  263. package/lib/shared/components/palette/palette.module.d.ts +140 -118
  264. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  265. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  266. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts +11 -0
  267. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts.map +1 -0
  268. package/lib/shared/components/palette/query-management/components/index.d.ts +13 -0
  269. package/lib/shared/components/palette/query-management/components/index.d.ts.map +1 -0
  270. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts +8 -0
  271. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -0
  272. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +22 -0
  273. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -0
  274. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts +11 -0
  275. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts.map +1 -0
  276. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts +10 -0
  277. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts.map +1 -0
  278. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +30 -0
  279. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -0
  280. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +16 -0
  281. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -0
  282. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts +9 -0
  283. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts.map +1 -0
  284. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +18 -0
  285. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts.map +1 -0
  286. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts +20 -0
  287. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts.map +1 -0
  288. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts +20 -0
  289. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts.map +1 -0
  290. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +11 -0
  291. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +1 -0
  292. 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
  293. 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
  294. package/lib/shared/components/palette/query-management/enums/index.d.ts +6 -0
  295. package/lib/shared/components/palette/query-management/enums/index.d.ts.map +1 -0
  296. package/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.d.ts +4 -0
  297. package/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.d.ts.map +1 -0
  298. package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts +5 -0
  299. package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts.map +1 -0
  300. package/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.d.ts +9 -0
  301. package/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.d.ts.map +1 -0
  302. package/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.d.ts +5 -0
  303. package/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.d.ts.map +1 -0
  304. package/lib/shared/components/palette/query-management/index.d.ts +7 -0
  305. package/lib/shared/components/palette/query-management/index.d.ts.map +1 -0
  306. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +27 -0
  307. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -0
  308. package/lib/shared/components/palette/query-management/models/index.d.ts +8 -0
  309. package/lib/shared/components/palette/query-management/models/index.d.ts.map +1 -0
  310. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts +5 -0
  311. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts.map +1 -0
  312. package/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.d.ts +6 -0
  313. package/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.d.ts.map +1 -0
  314. package/lib/shared/components/palette/query-management/models/query-create-context.enum.d.ts +8 -0
  315. package/lib/shared/components/palette/query-management/models/query-create-context.enum.d.ts.map +1 -0
  316. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts +7 -0
  317. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts.map +1 -0
  318. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts +10 -0
  319. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts.map +1 -0
  320. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +22 -0
  321. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -0
  322. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +18 -0
  323. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -0
  324. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +12 -0
  325. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -0
  326. package/lib/shared/components/palette/utils/field-label.pipe.d.ts +3 -0
  327. package/lib/shared/components/palette/utils/field-label.pipe.d.ts.map +1 -1
  328. package/lib/shared/components/palette/utils/first-error.pipe.d.ts +8 -5
  329. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  330. package/lib/shared/components/palette/yes-no/read-yes-no-field.component.d.ts.map +1 -1
  331. package/lib/shared/components/search-filters/search-filters.component.d.ts.map +1 -1
  332. package/lib/shared/domain/case-flag/flag-type.model.d.ts +6 -1
  333. package/lib/shared/domain/case-flag/flag-type.model.d.ts.map +1 -1
  334. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts +5 -0
  335. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts.map +1 -0
  336. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts +0 -1
  337. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts.map +1 -1
  338. package/lib/shared/domain/definition/display-context-enum.model.d.ts +3 -1
  339. package/lib/shared/domain/definition/display-context-enum.model.d.ts.map +1 -1
  340. package/lib/shared/domain/work-allocation/task-response.model.d.ts +1 -1
  341. package/lib/shared/domain/work-allocation/task-response.model.d.ts.map +1 -1
  342. package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -1
  343. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts +8 -0
  344. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts.map +1 -0
  345. package/lib/shared/pipes/generic/index.d.ts +2 -0
  346. package/lib/shared/pipes/generic/index.d.ts.map +1 -0
  347. package/lib/shared/pipes/index.d.ts +2 -1
  348. package/lib/shared/pipes/index.d.ts.map +1 -1
  349. package/lib/shared/pipes/pipes.module.d.ts +3 -2
  350. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  351. package/lib/shared/services/alert/alert.service.d.ts.map +1 -1
  352. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts +3 -2
  353. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts.map +1 -1
  354. package/lib/shared/services/fields/fields.utils.d.ts +1 -0
  355. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  356. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  357. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  358. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  359. package/package.json +1 -1
@@ -117,9 +117,9 @@ CaseEditConfirmComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ca
117
117
  i0.ɵɵproperty("ngIf", ctx.confirmation.getBody());
118
118
  i0.ɵɵadvance(2);
119
119
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 10, ctx.triggerText));
120
- } }, styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0px}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
120
+ } }, styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0px}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.no-bottom-border[_ngcontent-%COMP%]{border-bottom:none}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
121
121
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditConfirmComponent, [{
122
122
  type: Component,
123
- args: [{ template: "<!-- Current Page && Event trigger name -->\n<h1 class=\"heading-h1\">{{ eventTrigger.name | rpxTranslate}}</h1>\n\n<!--Case ID or Title -->\n<div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n<ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: caseFields : editForm.controls['data']\"></ccd-markdown>\n</ng-template>\n<ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n</ng-template>\n\n<form [formGroup]=\"formGroup\" (submit)=\"submit()\">\n <div id=\"confirmation-header\" *ngIf=\"confirmation.getHeader()\">\n <ccd-markdown [content]=\"confirmation.getHeader() | rpxTranslate\"></ccd-markdown>\n </div>\n <div id=\"confirmation-body\" *ngIf=\"confirmation.getBody()\">\n <ccd-markdown [content]=\"confirmation.getBody() | rpxTranslate\"></ccd-markdown>\n </div>\n <button type=\"submit\" class=\"button\" data-ng-click=\"submit()\">{{triggerText | rpxTranslate}}</button>\n</form>\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.case-field-change{width:5%}\n"] }]
123
+ args: [{ template: "<!-- Current Page && Event trigger name -->\n<h1 class=\"heading-h1\">{{ eventTrigger.name | rpxTranslate}}</h1>\n\n<!--Case ID or Title -->\n<div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n<ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: caseFields : editForm.controls['data']\"></ccd-markdown>\n</ng-template>\n<ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n</ng-template>\n\n<form [formGroup]=\"formGroup\" (submit)=\"submit()\">\n <div id=\"confirmation-header\" *ngIf=\"confirmation.getHeader()\">\n <ccd-markdown [content]=\"confirmation.getHeader() | rpxTranslate\"></ccd-markdown>\n </div>\n <div id=\"confirmation-body\" *ngIf=\"confirmation.getBody()\">\n <ccd-markdown [content]=\"confirmation.getBody() | rpxTranslate\"></ccd-markdown>\n </div>\n <button type=\"submit\" class=\"button\" data-ng-click=\"submit()\">{{triggerText | rpxTranslate}}</button>\n</form>\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
124
124
  }], function () { return [{ type: i1.CaseEditComponent }, { type: i2.Router }]; }, null); })();
125
125
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LWNvbmZpcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1jb25maXJtL2Nhc2UtZWRpdC1jb25maXJtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtY29uZmlybS9jYXNlLWVkaXQtY29uZmlybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0lDSHJFLHNCQUFpRTs7O0lBRS9ELGtDQUErRzs7OztJQUFqRywwSEFBaUY7OztJQUcvRiw4QkFBMkM7SUFBQSxZQUFxQzs7SUFBQSxpQkFBSzs7O0lBQTFDLGVBQXFDO0lBQXJDLHdFQUFxQzs7O0lBQWhGLHFGQUFxRjs7O0lBQWhGLHlDQUFpQjs7O0lBSXRCLCtCQUErRDtJQUM3RCxrQ0FBaUY7O0lBQ25GLGlCQUFNOzs7SUFEVSxlQUFtRDtJQUFuRCwrRUFBbUQ7OztJQUVuRSwrQkFBMkQ7SUFDekQsa0NBQStFOztJQUNqRixpQkFBTTs7O0lBRFUsZUFBaUQ7SUFBakQsNkVBQWlEOztBREhuRSxNQUFNLE9BQU8sd0JBQXdCO0lBUW5DLFlBQTZCLFFBQTJCLEVBQW1CLE1BQWM7UUFBNUQsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU5sRixnQkFBVyxHQUFHLGtDQUFrQyxDQUFDO1FBQ2pELGNBQVMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBTW5DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7U0FDaEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsT0FBTyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDN0Q7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7O2dHQXRDVSx3QkFBd0I7MkVBQXhCLHdCQUF3QjtRQ2JyQyw2QkFBdUI7UUFBQSxZQUFxQzs7UUFBQSxpQkFBSztRQUdqRSx5RUFBaUU7UUFDakUsMEhBRWM7UUFDZCwwSEFFYztRQUVkLCtCQUFrRDtRQUFwQixxR0FBVSxZQUFRLElBQUM7UUFDL0MseUVBRU07UUFDTiwyRUFFTTtRQUNOLGtDQUE4RDtRQUFBLGFBQThCOztRQUFBLGlCQUFTLEVBQUE7Ozs7UUFsQmhGLGVBQXFDO1FBQXJDLGlFQUFxQztRQUd0RCxlQUFzQjtRQUF0Qix5Q0FBc0IsaUJBQUEsaUJBQUE7UUFRdEIsZUFBdUI7UUFBdkIseUNBQXVCO1FBQ0ksZUFBOEI7UUFBOUIsbURBQThCO1FBR2hDLGVBQTRCO1FBQTVCLGlEQUE0QjtRQUdLLGVBQThCO1FBQTlCLDZEQUE4Qjs7dUZETGpGLHdCQUF3QjtjQUpwQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS1ldmVudC10cmlnZ2VyLm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uIH0gZnJvbSAnLi4vZG9tYWluL2NvbmZpcm1hdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1lZGl0LWNvbmZpcm0uaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9jYXNlLWVkaXQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0Q29uZmlybUNvbXBvbmVudCB7XG4gIHB1YmxpYyBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXI7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dCA9ICdDbG9zZSBhbmQgUmV0dXJuIHRvIGNhc2UgZGV0YWlscyc7XG4gIHB1YmxpYyBmb3JtR3JvdXAgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgcHVibGljIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LCBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyKSB7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLmVkaXRGb3JtID0gdGhpcy5jYXNlRWRpdC5mb3JtO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNvbmZpcm1hdGlvbikge1xuICAgICAgdGhpcy5jb25maXJtYXRpb24gPSB0aGlzLmNhc2VFZGl0LmNvbmZpcm1hdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5zdWJtaXR0ZWQuZW1pdCh7IGNhc2VJZDogdGhpcy5jb25maXJtYXRpb24uZ2V0Q2FzZUlkKCksIHN0YXR1czogdGhpcy5jb25maXJtYXRpb24uZ2V0U3RhdHVzKCkgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQ/LmNhc2VEZXRhaWxzPy5jYXNlX2lkIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyAmJiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlICYmXG4gICAgICB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gRmllbGRzVXRpbHMuZ2V0Q2FzZUZpZWxkcyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHM7XG4gIH1cbn1cbiIsIjwhLS0gQ3VycmVudCBQYWdlICYmIEV2ZW50IHRyaWdnZXIgbmFtZSAtLT5cbjxoMSBjbGFzcz1cImhlYWRpbmctaDFcIj57eyBldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMT5cblxuPCEtLUNhc2UgSUQgb3IgVGl0bGUgLS0+XG48ZGl2ICpuZ0lmPVwiZ2V0Q2FzZVRpdGxlKCk7IHRoZW4gdGl0bGVCbG9jazsgZWxzZSBpZEJsb2NrXCI+PC9kaXY+XG48bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gIDxjY2QtbWFya2Rvd24gW2NvbnRlbnRdPVwiZ2V0Q2FzZVRpdGxlKCkgfCBjY2RDYXNlVGl0bGU6IGNhc2VGaWVsZHMgOiBlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCI+PC9jY2QtbWFya2Rvd24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICA8aDIgKm5nSWY9XCJnZXRDYXNlSWQoKVwiIGNsYXNzPVwiaGVhZGluZy1oMlwiPiN7eyBnZXRDYXNlSWQoKSB8IGNjZENhc2VSZWZlcmVuY2UgfX08L2gyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gIDxkaXYgaWQ9XCJjb25maXJtYXRpb24taGVhZGVyXCIgKm5nSWY9XCJjb25maXJtYXRpb24uZ2V0SGVhZGVyKClcIj5cbiAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImNvbmZpcm1hdGlvbi5nZXRIZWFkZXIoKSB8IHJweFRyYW5zbGF0ZVwiPjwvY2NkLW1hcmtkb3duPlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cImNvbmZpcm1hdGlvbi1ib2R5XCIgKm5nSWY9XCJjb25maXJtYXRpb24uZ2V0Qm9keSgpXCI+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJjb25maXJtYXRpb24uZ2V0Qm9keSgpIHwgcnB4VHJhbnNsYXRlXCI+PC9jY2QtbWFya2Rvd24+XG4gIDwvZGl2PlxuICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtbmctY2xpY2s9XCJzdWJtaXQoKVwiPnt7dHJpZ2dlclRleHQgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPlxuPC9mb3JtPlxuIl19
@@ -59,10 +59,10 @@ CaseEditGenericErrorsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
59
59
  i0.ɵɵproperty("ngIf", ctx.error && (!(ctx.error.callbackErrors || ctx.error.callbackWarnings || ctx.error.details) && !ctx.error.message));
60
60
  i0.ɵɵadvance(1);
61
61
  i0.ɵɵproperty("ngIf", ctx.error && (ctx.error.details || ctx.error.message));
62
- } }, dependencies: [i1.NgForOf, i1.NgIf], styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0px}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
62
+ } }, dependencies: [i1.NgForOf, i1.NgIf], styles: ["#fieldset-case-data[_ngcontent-%COMP%]{margin-bottom:30px}#fieldset-case-data[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{width:1%;white-space:nowrap;vertical-align:top}.compound-field[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:0}#confirmation-header[_ngcontent-%COMP%]{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body[_ngcontent-%COMP%]{width:630px;background-color:#fff}.valign-top[_ngcontent-%COMP%]{vertical-align:top}.summary-fields[_ngcontent-%COMP%]{margin-bottom:30px}.summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .summary-fields[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0px}a.disabled[_ngcontent-%COMP%]{pointer-events:none;cursor:default}.case-field-label[_ngcontent-%COMP%]{width:45%}.case-field-content[_ngcontent-%COMP%]{width:50%}.no-bottom-border[_ngcontent-%COMP%]{border-bottom:none}.case-field-change[_ngcontent-%COMP%]{width:5%}"] });
63
63
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditGenericErrorsComponent, [{
64
64
  type: Component,
65
- args: [{ selector: 'ccd-case-edit-generic-errors', providers: [], template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && (!(error.callbackErrors || error.callbackWarnings || error.details) && !error.message)\" class=\"error-summary\" role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n Something went wrong\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>We're working to fix the problem. Try again shortly.</p>\n <p><a href=\"get-help\" target=\"_blank\">Contact us</a> if you're still having problems.</p>\n </div>\n </div>\n <!-- Event error heading and error message to be displayed if there are specific error details -->\n <div *ngIf=\"error && (error.details || error.message)\" class=\"error-summary\" role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h3 class=\"heading-h3 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n The event could not be created\n </h3>\n <p>{{error.message}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\" class=\"ccd-error-summary-li\">{{fieldError.message}}</li>\n </ul>\n </div>\n ", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.case-field-change{width:5%}\n"] }]
65
+ args: [{ selector: 'ccd-case-edit-generic-errors', providers: [], template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && (!(error.callbackErrors || error.callbackWarnings || error.details) && !error.message)\" class=\"error-summary\" role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n Something went wrong\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>We're working to fix the problem. Try again shortly.</p>\n <p><a href=\"get-help\" target=\"_blank\">Contact us</a> if you're still having problems.</p>\n </div>\n </div>\n <!-- Event error heading and error message to be displayed if there are specific error details -->\n <div *ngIf=\"error && (error.details || error.message)\" class=\"error-summary\" role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h3 class=\"heading-h3 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n The event could not be created\n </h3>\n <p>{{error.message}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\" class=\"ccd-error-summary-li\">{{fieldError.message}}</li>\n </ul>\n </div>\n ", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
66
66
  }], null, { error: [{
67
67
  type: Input
68
68
  }] }); })();
@@ -363,18 +363,9 @@ export class CaseEditPageComponent {
363
363
  });
364
364
  }
365
365
  else if (FieldsUtils.isCaseFieldOfType(casefield, ['FlagLauncher'])) {
366
- // Check whether the case field DisplayContextParameter is signalling "create" mode or "update" mode
367
- // (expected always to be one of the two), to set the correct error message
368
- let action = '';
369
- if (casefield.display_context_parameter === '#ARGUMENT(CREATE)') {
370
- action = 'creation';
371
- }
372
- else if (casefield.display_context_parameter === '#ARGUMENT(UPDATE)') {
373
- action = 'update';
374
- }
375
366
  this.validationErrors.push({
376
367
  id,
377
- message: `Please select Next to complete the ${action} of the ${action === 'update' ? 'selected ' : ''}case flag`
368
+ message: FieldsUtils.getValidationErrorMessageForFlagLauncherCaseField(casefield)
378
369
  });
379
370
  }
380
371
  else {
@@ -748,4 +739,4 @@ CaseEditPageComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseE
748
739
  type: Component,
749
740
  args: [{ selector: 'ccd-case-edit-page', template: "<ng-container *ngIf=\"currentPage\">\n <h1 *ngIf=\"!currentPage.label\" class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\n <ng-container *ngIf=\"currentPage.label\">\n <span class=\"govuk-caption-l\">{{ eventTrigger.name | rpxTranslate}}</span>\n <h1 class=\"govuk-heading-l\">{{currentPage.label | rpxTranslate}}</h1>\n </ng-container>\n</ng-container>\n\n<!--Case ID or Title -->\n<div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n<ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: caseFields : editForm.controls['data']\"></ccd-markdown>\n</ng-template>\n<ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n</ng-template>\n\n<!-- Error message summary -->\n<div *ngIf=\"validationErrors.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div *ngFor=\"let validationError of validationErrors\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(validationError.id)\" class=\"validation-error\">\n {{ validationError.message | rpxTranslate: getRpxTranslatePipeArgs(validationError.label | rpxTranslate): null }}\n </a>\n </li>\n </ul>\n </div>\n</div>\n\n<ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<div class=\"width-50\">\n <form *ngIf=\"currentPage\" class=\"form\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <fieldset id=\"fieldset-case-data\">\n <legend style=\"display: none;\"></legend>\n <!-- single column -->\n <ccd-case-edit-form id='caseEditForm' *ngIf=\"!currentPage.isMultiColumn()\" [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"\n [pageChangeSubject]=\"pageChangeSubject\"\n (valuesChanged)=\"applyValuesChanged($event)\"></ccd-case-edit-form>\n <!-- two columns -->\n <div *ngIf=\"currentPage.isMultiColumn()\" class=\"grid-row\">\n <div class=\"column-two-thirds rightBorderSeparator\">\n <ccd-case-edit-form id='caseEditForm1' [fields]=\"currentPage.getCol1Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n <div class=\"column-one-third\">\n <ccd-case-edit-form id='caseEditForm2' [fields]=\"currentPage.getCol2Fields()\"\n [formGroup]=\"editForm.controls['data']\" [caseFields]=\"caseFields\"></ccd-case-edit-form>\n </div>\n </div>\n </fieldset>\n\n <div class=\"form-group form-group-related\">\n <button class=\"button button-secondary\" type=\"button\" [disabled]=\"!(hasPreviousPage$ | async)\" (click)=\"toPreviousPage()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button class=\"button\" type=\"submit\" [disabled]=\"submitting()\">{{triggerText | rpxTranslate}}</button>\n </div>\n\n <p class=\"cancel\"><a (click)=\"cancel()\" href=\"javascript:void(0)\">{{getCancelText() | rpxTranslate}}</a></p>\n </form>\n</div>\n\n<ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n</ccd-case-event-completion>\n", styles: [".rightBorderSeparator{border-right-width:4px;border-right-color:#ffcc02;border-right-style:solid}.validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
750
741
  }], function () { return [{ type: i1.CaseEditComponent }, { type: i2.ActivatedRoute }, { type: i3.FormValueService }, { type: i4.FormErrorService }, { type: i0.ChangeDetectorRef }, { type: i5.PageValidationService }, { type: i6.MatLegacyDialog }, { type: i7.CaseFieldService }, { type: i8.CaseEditDataService }, { type: i9.LoadingService }, { type: i10.ValidPageListCaseFieldsService }]; }, null); })();
751
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBMkMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQTJCLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUdyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ3RCOUYsOEJBQXVEO0lBQUEsWUFBb0M7O0lBQUEsaUJBQUs7OztJQUF6QyxlQUFvQztJQUFwQyxvRUFBb0M7OztJQUMzRiw2QkFBd0M7SUFDdEMsZ0NBQThCO0lBQUEsWUFBcUM7O0lBQUEsaUJBQU87SUFDMUUsOEJBQTRCO0lBQUEsWUFBb0M7O0lBQUEsaUJBQUs7SUFDdkUsMEJBQWU7OztJQUZpQixlQUFxQztJQUFyQyxxRUFBcUM7SUFDdkMsZUFBb0M7SUFBcEMscUVBQW9DOzs7SUFKcEUsNkJBQWtDO0lBQ2hDLG9GQUFnRztJQUNoRyx1R0FHZTtJQUNqQiwwQkFBZTs7O0lBTFIsZUFBd0I7SUFBeEIsZ0RBQXdCO0lBQ2QsZUFBdUI7SUFBdkIsK0NBQXVCOzs7SUFPeEMsc0JBQWlFOzs7SUFFL0QsbUNBQStHOzs7O0lBQWpHLDBIQUFpRjs7O0lBRy9GLDhCQUEyQztJQUFBLFlBQXFDOztJQUFBLGlCQUFLOzs7SUFBMUMsZUFBcUM7SUFBckMseUVBQXFDOzs7SUFBaEYsbUZBQXFGOzs7SUFBaEYseUNBQWlCOzs7O0lBUXRCLCtCQUF3RixhQUFBLFNBQUEsWUFBQTtJQUcvRSw2T0FBUyxlQUFBLHNEQUEwQyxDQUFBLElBQUM7SUFDckQsWUFDRjs7O0lBQUEsaUJBQUksRUFBQSxFQUFBLEVBQUE7Ozs7SUFERixlQUNGO0lBREUsMEtBQ0Y7OztJQVRSLCtCQUF3SyxhQUFBO0lBRXBLLFlBQ0Y7O0lBQUEsaUJBQUs7SUFDTCw2RUFRTTtJQUNSLGlCQUFNOzs7SUFYRixlQUNGO0lBREUsMkVBQ0Y7SUFDaUMsZUFBbUI7SUFBbkIsaURBQW1COzs7O0lBd0JoRCw4Q0FHaUU7SUFBN0MsOE5BQWlCLGVBQUEsa0NBQTBCLENBQUEsSUFBQztJQUFDLGlCQUFxQjs7O0lBSFgsNERBQXNDLGdEQUFBLGtDQUFBLGdEQUFBOzs7SUFLakgsK0JBQTBELGNBQUE7SUFFdEQseUNBQzJHO0lBQzdHLGlCQUFNO0lBQ04sK0JBQThCO0lBQzVCLHlDQUMyRztJQUM3RyxpQkFBTSxFQUFBOzs7SUFObUMsZUFBc0M7SUFBdEMsNERBQXNDLGdEQUFBLGtDQUFBO0lBSXRDLGVBQXNDO0lBQXRDLDREQUFzQyxnREFBQSxrQ0FBQTs7OztJQWZyRixnQ0FBa0Y7SUFBcEIsc0tBQVUsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFDL0Usb0NBQWtDO0lBQ2hDLDZCQUF3QztJQUV4Qyw2R0FHc0Y7SUFFdEYsK0VBU007SUFDUixpQkFBVztJQUVYLCtCQUEyQyxpQkFBQTtJQUNzRCxzS0FBUyxlQUFBLHdCQUFnQixDQUFBLElBQUM7O0lBQ3ZILFlBQ0Y7O0lBQUEsaUJBQVM7SUFDVCxtQ0FBK0Q7SUFBQSxhQUE4Qjs7SUFBQSxpQkFBUyxFQUFBO0lBR3hHLDhCQUFrQixhQUFBO0lBQUcsa0tBQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFBMkIsYUFBa0M7O0lBQUEsaUJBQUksRUFBQSxFQUFBOzs7SUE1Qm5FLDJDQUFzQjtJQUlsQixlQUFrQztJQUFsQywwREFBa0M7SUFLbkUsZUFBaUM7SUFBakMseURBQWlDO0lBYWUsZUFBd0M7SUFBeEMseUVBQXdDO0lBQzVGLGVBQ0Y7SUFERSxrRUFDRjtJQUNxQyxlQUF5QjtJQUF6Qiw4Q0FBeUI7SUFBQyxlQUE4QjtJQUE5QixnRUFBOEI7SUFHN0IsZUFBa0M7SUFBbEMsb0VBQWtDOzs7O0lBSXhHLHFEQUV3RDtJQUF0RCxnUEFBdUIsZUFBQSxxQ0FBNkIsQ0FBQSxJQUFDO0lBQ3ZELGlCQUE0Qjs7O0lBRjFCLDZFQUF3RDs7QUQ3QzFELE1BQU0sT0FBTyxxQkFBcUI7SUE0Q2hDLFlBQ1MsUUFBMkIsRUFDakIsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxLQUF3QixFQUN4QixxQkFBNEMsRUFDNUMsTUFBaUIsRUFDakIsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5Qiw4QkFBOEQ7UUFWeEUsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUF6QzFFLHFCQUFnQixHQUFHLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDO1FBQzVELDhCQUF5QixHQUFHLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDO1FBRXhFLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixzQkFBaUIsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVwRCxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBQ2pELHFCQUFnQixHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqRiwwQkFBcUIsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQW1DM0QsQ0FBQztJQXhCTyxNQUFNLENBQUMsV0FBVztRQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWE7UUFDMUIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksRUFBRTtZQUNoQixZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBaUJNLFFBQVE7UUFDYixVQUFVLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBRS9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO2FBQ3BDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRTtnQkFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLElBQUksSUFBSSxFQUFFO29CQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtxQkFBTTtvQkFDTCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUNwQjt5QkFBTTt3QkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDckI7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDN0U7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNMLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDdEUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRO1NBQzNDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxzQ0FBc0M7WUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9DQUFvQyxDQUFDLFNBQVMsQ0FBQztnQkFDdEUsSUFBSSxFQUFFLCtCQUErQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsK0JBQStCLEdBQUcsK0JBQStCO2FBQ2hILENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO1lBQzFGLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDWixJQUFJLEtBQUssRUFBRTtvQkFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDZjtZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLGFBQXNCO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDN0UsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxXQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWM7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFckQsTUFBTSxhQUFhLEdBQWtCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxhQUFhLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIscUJBQXFCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELHdEQUF3RDtJQUNqRCxvQkFBb0IsQ0FBQyxNQUFtQixFQUFFLFNBQTJCLEVBQUUsSUFBYTtRQUN6RixNQUFNLEtBQUssR0FBb0IsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDckUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3pGLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNuQixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzdFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsc0JBQXNCLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QixJQUFJLFlBQVksRUFBRTtnQkFDaEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ2pFLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUNoRSxFQUFFLEdBQUcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDO3FCQUNuRDt5QkFBTTt3QkFDTCxFQUFFLEdBQUcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQzlDO2lCQUNGO2dCQUNELElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUNwRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzNCLHNHQUFzRztvQkFDdEcsa0NBQWtDO29CQUNsQyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFO3dCQUM5RCxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO3FCQUN2RDtpQkFDRjtxQkFBTSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDckcsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUM1QjtxQkFBTSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDcEgsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUM1QjtxQkFBTSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUseUNBQXlDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDbkgsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUM1QjtxQkFBTSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7b0JBQy9CLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUNsRjt5QkFBTSxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3BHLE1BQU0sVUFBVSxHQUFHLFlBQXlCLENBQUM7d0JBQzdDLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDdEgsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO3lCQUMxRDt3QkFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRTs0QkFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzNHLENBQUMsQ0FBQyxDQUFDO3FCQUNKO3lCQUFNLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUU7d0JBQ3JFLG9HQUFvRzt3QkFDcEcsMkVBQTJFO3dCQUMzRSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7d0JBQ2hCLElBQUksU0FBUyxDQUFDLHlCQUF5QixLQUFLLG1CQUFtQixFQUFFOzRCQUMvRCxNQUFNLEdBQUcsVUFBVSxDQUFDO3lCQUNyQjs2QkFBTSxJQUFJLFNBQVMsQ0FBQyx5QkFBeUIsS0FBSyxtQkFBbUIsRUFBRTs0QkFDdEUsTUFBTSxHQUFHLFFBQVEsQ0FBQzt5QkFDbkI7d0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQzs0QkFDekIsRUFBRTs0QkFDRixPQUFPLEVBQUUsc0NBQXNDLE1BQU0sV0FBVyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVzt5QkFDbEgsQ0FBQyxDQUFDO3FCQUNKO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLCtCQUErQixTQUFTLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUNwRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7cUJBQzVCO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxTQUFpQjtRQUM3QywwQkFBMEI7UUFDMUIsSUFBSSxTQUFTLEVBQUU7WUFDYixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELDBCQUEwQjtZQUMxQixJQUFJLFdBQVcsRUFBRTtnQkFDZixXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDcEUsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUN2QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO1lBQ2hDLGlFQUFpRTtZQUNqRSxpRkFBaUY7WUFDakYsbUdBQW1HO1lBQ25HLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hHLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3pEO1NBQ0Y7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRTtZQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFBLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDcEQ7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzNCLE1BQU0sYUFBYSxHQUFrQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7aUJBQzFFLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3RCLDBCQUEwQjtnQkFDMUIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUF5QixDQUFDLENBQUM7aUJBQ2hEO2dCQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFDTCxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyx1R0FBdUc7WUFDdkcsd0dBQXdHO1lBQ3hHLFlBQVk7WUFDWixJQUFJLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDekU7UUFDRCxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQXVCO1FBQzNDLEtBQUssTUFBTSxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsMEJBQTBCO1lBQzFCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNyRixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3RGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUVBQW1FO0lBQzVELG1CQUFtQixDQUFDLFdBQW1CO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLDRCQUE0QixDQUFDLFdBQW1CLEVBQUUsUUFBdUIsRUFBRSxZQUE4QjtRQUM5RywwQkFBMEI7UUFDMUIsSUFBSSxZQUFZLEVBQUUsV0FBVyxFQUFFO1lBQzdCLFlBQVksQ0FBQyxXQUFXO2lCQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQztpQkFDN0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNsQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUV4RixPQUFPLENBQUMsS0FBSyxHQUFHO3dCQUNkLEdBQUcsT0FBTyxDQUFDLEtBQUs7d0JBQ2hCLEdBQUcscUJBQXFCO3FCQUN6QixDQUFDO2lCQUNIO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDNUM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFdBQW1CLEVBQUUsUUFBdUIsRUFBRSxPQUFrQjtRQUMzRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNqRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO1lBQ3JHLE1BQU0sc0JBQXNCLEdBQUcsYUFBYSxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksYUFBYSxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRWxJLE9BQU87Z0JBQ0wsR0FBRyxHQUFHO2dCQUNOLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsYUFBYTthQUNoRixDQUFDO1FBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVPLFVBQVUsQ0FBQyxRQUFpQjtRQUNsQyxPQUFPLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQztJQUN2RixDQUFDO0lBRU0sdUJBQXVCLENBQUMsU0FBb0IsRUFBRSxXQUFtQixFQUFFLEtBQVU7UUFDbEYsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUNyRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO21CQUN0RCxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUM7bUJBQ2pFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLFVBQVU7bUJBQ3ZHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWSxFQUFFO2dCQUM1RyxhQUFhO2FBQ2Q7aUJBQU07Z0JBQ0wsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtTQUNGO0lBQ0gsQ0FBQztJQUVNLG9CQUFvQixDQUFDLFlBQW1DO1FBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO0lBQzlDLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQ3BDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUN4RSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7d0JBQ3hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDaEI7eUJBQU0sSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO3dCQUM1QixNQUFNLGtCQUFrQixHQUFrQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFrQixDQUFDO3dCQUMvRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxXQUFXLEVBQUU7NEJBQy9GLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO3lCQUM3Rzs2QkFBTTs0QkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUscUJBQXFCLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7eUJBQ3pHO3FCQUNGO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDN0UsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUN6QyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3BCLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjO1lBQ25GLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUI7WUFDekMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDO1FBRTdDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ3BDLENBQUMsQ0FBQyx1QkFBdUI7WUFDekIsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNmLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEtBQUssV0FBVyxFQUFFO1lBQy9GLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7U0FDdEY7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7U0FDbEY7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQjtpQkFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUMzSDtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQ3BDLE1BQU0sa0JBQWtCLEdBQWtCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQWtCLENBQUM7WUFDL0csa0JBQWtCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQy9ELGtCQUFrQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUN2RSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUNqRyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO1lBQzdCLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDO0lBRU8sd0NBQXdDO1FBQzlDLE1BQU0sTUFBTSxHQUFnQixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxnQkFBMEI7UUFDbEQsTUFBTSxTQUFTLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFFOUMsOENBQThDO1FBQzlDLE1BQU0sVUFBVSxHQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUM3RCxNQUFNLGFBQWEsR0FBa0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEcseURBQXlEO1FBQ3pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sYUFBYSxHQUFrQixJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFNUgsc0ZBQXNGO1FBQ3RGLHlFQUF5RTtRQUN6RSxhQUFhLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFFOUMscUNBQXFDO1FBQ3JDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDMUQsYUFBYSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUUzRCw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUM3QixhQUFhLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztTQUNsRTtRQUVELCtDQUErQztRQUMvQyxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLHdCQUF3QixDQUFDLFVBQXVCLEVBQUUsU0FBaUIsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUM3RixZQUFZLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixHQUFHLEtBQUs7UUFDOUMseUNBQXlDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEYsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFbkUsaUNBQWlDO1FBQ2pDLE1BQU0sYUFBYSxHQUFrQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBa0IsQ0FBQztRQUVqRyxzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLDhCQUE4QixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFck0sa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUNwRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUM7WUFDOUYsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0I7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFVBQWtCO1FBQy9DLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRU0scUJBQXFCLENBQUMsbUJBQTRCO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7WUFDbEMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLG1CQUFtQjtZQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQ0FBaUMsQ0FBQyxJQUFnQixFQUFFLFFBQW1CO1FBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ25DLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdELFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFlLENBQUMsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQzthQUMvRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF4a0JzQiwwQ0FBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUM5QyxzQ0FBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUN0QyxtQ0FBYSxHQUFHLHVCQUF1QixDQUFDO0FBQ3hDLHVDQUFpQixHQUFHLG1CQUFtQixDQUFDO0FBQ3hDLHdDQUFrQixHQUFHLFVBQVUsQ0FBQztBQUNoQyx1Q0FBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN4QywyQ0FBcUIsR0FBRyw2QkFBNkIsQ0FBQzswRkFQbEUscUJBQXFCO3dFQUFyQixxQkFBcUI7UUM5QmxDLHdGQU1lO1FBR2Ysc0VBQWlFO1FBQ2pFLHVIQUVjO1FBQ2QsdUhBRWM7UUFHZCxzRUFhTTtRQUVOLGtEQUFzRjtRQUV0Riw4Q0FJeUQ7UUFBdkQscUpBQXlCLGdDQUE0QixJQUFDO1FBQ3hELGlCQUFzQjtRQUN0Qiw4QkFBc0I7UUFDcEIsNEVBNkJPO1FBQ1QsaUJBQU07UUFFTixvSEFHNEI7Ozs7UUE3RWIsc0NBQWlCO1FBUzFCLGVBQXNCO1FBQXRCLHlDQUFzQixpQkFBQSxpQkFBQTtRQVN0QixlQUFpQztRQUFqQyxzREFBaUM7UUFlVCxlQUF3QjtRQUF4QiwwQ0FBd0I7UUFHcEQsZUFBd0M7UUFBeEMsMERBQXdDLG9EQUFBLDZEQUFBO1FBTWpDLGVBQWlCO1FBQWpCLHNDQUFpQjtRQWdDRSxlQUE4QztRQUE5QyxtRUFBOEM7O3VGRDVDN0QscUJBQXFCO2NBTGpDLFNBQVM7MkJBQ0Usb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nLCBNYXRMZWdhY3lEaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhc2VFZGl0RGF0YVNlcnZpY2UsIENhc2VFZGl0VmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YSc7XG5pbXBvcnQgeyBDYXNlRXZlbnREYXRhIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZXZlbnQtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLWV2ZW50LXRyaWdnZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24nO1xuaW1wb3J0IHsgRFJBRlRfUFJFRklYIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RyYWZ0Lm1vZGVsJztcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2Nhc2UtZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcyc7XG5pbXBvcnQgeyBGb3JtRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVZhbHVlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS12YWx1ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhdmVPckRpc2NhcmREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL3NhdmUtb3ItZGlzY2FyZC1kaWFsb2cnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3IvZG9tYWluL2Vycm9yLWNvbnRleHQnO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRQYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLm1vZGVsJztcbmltcG9ydCB7IFdpemFyZCB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQubW9kZWwnO1xuaW1wb3J0IHsgUGFnZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcGFnZS12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRQYWdlTGlzdENhc2VGaWVsZHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWQtcGFnZS1saXN0LWNhc2VGaWVsZHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWVkaXQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnY2FzZS1lZGl0LXBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZWRpdC1wYWdlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRWRpdFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVTVU1FRF9GT1JNX0RJU0NBUkQgPSAnUkVTVU1FRF9GT1JNX0RJU0NBUkQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5FV19GT1JNX0RJU0NBUkQgPSAnTkVXX0ZPUk1fRElTQ0FSRCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTkVXX0ZPUk1fU0FWRSA9ICdORVdfRk9STV9DSEFOR0VEX1NBVkUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFU1VNRURfRk9STV9TQVZFID0gJ1JFU1VNRURfRk9STV9TQVZFJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfU1RBUlQgPSAnQ29udGludWUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TQVZFID0gJ1NhdmUgYW5kIGNvbnRpbnVlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIENvbnRpbnVlJztcblxuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIHdpemFyZDogV2l6YXJkO1xuICBwdWJsaWMgY3VycmVudFBhZ2U6IFdpemFyZFBhZ2U7XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRWRpdFBhZ2VDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VFZGl0UGFnZUNvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgZm9ybVZhbHVlc0NoYW5nZWQgPSBmYWxzZTtcbiAgcHVibGljIHBhZ2VDaGFuZ2VTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yczogQ2FzZUVkaXRWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICBwdWJsaWMgaGFzUHJldmlvdXNQYWdlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwOiBib29sZWFuO1xuICBwdWJsaWMgcm91dGVQYXJhbXNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VFZGl0Rm9ybVN1YjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY2FzZUlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXBTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VUcmlnZ2VyU3VibWl0RXZlbnRTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHZhbGlkYXRlU3ViOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dSZWZBZnRlckNsb3NlZFN1YjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgc2F2ZURyYWZ0U3ViOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlRm9ybVZhbGlkYXRpb25FcnJvcnNTdWI6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXRGb2N1c1RvVG9wKCkge1xuICAgIGNvbnN0IHRvcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3AnKTtcbiAgICBpZiAodG9wQ29udGFpbmVyKSB7XG4gICAgICB0b3BDb250YWluZXIuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlU2VydmljZTogRm9ybVZhbHVlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1FcnJvclNlcnZpY2U6IEZvcm1FcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVmFsaWRhdGlvblNlcnZpY2U6IFBhZ2VWYWxpZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0RGF0YVNlcnZpY2U6IENhc2VFZGl0RGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWxpZFBhZ2VMaXN0Q2FzZUZpZWxkc1NlcnZpY2U6IFZhbGlkUGFnZUxpc3RDYXNlRmllbGRzU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLmVkaXRGb3JtID0gdGhpcy5jYXNlRWRpdC5mb3JtO1xuICAgIHRoaXMud2l6YXJkID0gdGhpcy5jYXNlRWRpdC53aXphcmQ7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzKCk7XG5cbiAgICB0aGlzLnN5bmNDYXNlRWRpdERhdGFTZXJ2aWNlKCk7XG5cbiAgICB0aGlzLnJvdXRlUGFyYW1zU3ViID0gdGhpcy5yb3V0ZS5wYXJhbXNcbiAgICAgIC5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgY29uc3QgcGFnZUlkID0gcGFyYW1zWydwYWdlJ107XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50UGFnZSB8fCBwYWdlSWQgIT09IHRoaXMuY3VycmVudFBhZ2U/LmlkKSB7XG4gICAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuY2FzZUVkaXQuZ2V0UGFnZShwYWdlSWQpO1xuICAgICAgICAgIGlmIChwYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5oYXNQcmV2aW91c1BhZ2UkLm5leHQodGhpcy5jYXNlRWRpdC5oYXNQcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlPy5pZCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmdldFRyaWdnZXJUZXh0KCk7XG4gICAgICB9KTtcbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2V0Rm9jdXNUb1RvcCgpO1xuICAgIHRoaXMuY2FzZUVkaXRGb3JtU3ViID0gdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VFZGl0Rm9ybSQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGVkaXRGb3JtID0+IHRoaXMuZWRpdEZvcm0gPSBlZGl0Rm9ybVxuICAgIH0pO1xuICAgIHRoaXMuY2FzZUlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXBTdWIgPVxuICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VJc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBpc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwID0+IHRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCA9IGlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXBcbiAgICAgIH0pO1xuICAgIHRoaXMuY2FzZVRyaWdnZXJTdWJtaXRFdmVudFN1YiA9IHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlVHJpZ2dlclN1Ym1pdEV2ZW50JC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0VHJpZ2dlclN1Ym1pdEV2ZW50KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnN1Ym1pdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVQYXJhbXNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jYXNlRWRpdEZvcm1TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jYXNlSXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNhc2VUcmlnZ2VyU3VibWl0RXZlbnRTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy52YWxpZGF0ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRpYWxvZ1JlZkFmdGVyQ2xvc2VkU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2F2ZURyYWZ0U3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FzZUZvcm1WYWxpZGF0aW9uRXJyb3JzU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5VmFsdWVzQ2hhbmdlZCh2YWx1ZXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCA9IHZhbHVlc0NoYW5nZWQ7XG4gIH1cblxuICBwdWJsaWMgZmlyc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuZmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50UGFnZUlzTm90VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBhZ2VWYWxpZGF0aW9uU2VydmljZS5pc1BhZ2VWYWxpZCh0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLmVkaXRGb3JtKSB8fFxuICAgICAgKHRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXkoKSAmJiAhdGhpcy5pc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xpbmtlZENhc2VzSm91cm5leSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmllbGRzVXRpbHMuY29udGFpbnNMaW5rZWRDYXNlc0Nhc2VGaWVsZCh0aGlzLmN1cnJlbnRQYWdlLmNhc2VfZmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGEgY29udGFpbnMgYWxsIHRoZSB2YWx1ZXMgZnJvbSB0aGUgcHJldmlvdXMgcGFnZXMgc28gd2Ugc2V0IGNhc2VFdmVudERhdGEuZGF0YSA9IGNhc2VFdmVudERhdGEuZXZlbnRfZGF0YVxuICAgKiBUaGlzIGJ1aWxkcyB0aGUgZm9ybSB3aXRoIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgcGFnZXNcbiAgICogRVVJLTM3MzIgLSBCcmVhdGhpbmcgc3BhY2UgZGF0YSBub3QgcGVyc2lzdGVkIG9uIFByZXZpb3VzIGJ1dHRvbiBjbGljayB3aXRoIEV4cFVJIERlbW9cbiAgICovXG4gIHB1YmxpYyB0b1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuXG4gICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuYnVpbGRDYXNlRXZlbnREYXRhKHRydWUpO1xuICAgIGNhc2VFdmVudERhdGEuZGF0YSA9IGNhc2VFdmVudERhdGEuZXZlbnRfZGF0YTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1EYXRhKGNhc2VFdmVudERhdGEpO1xuICAgIHRoaXMucHJldmlvdXMoKTtcbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2V0Rm9jdXNUb1RvcCgpO1xuICB9XG5cbiAgLy8gQWRkaW5nIHZhbGlkYXRpb24gbWVzc2FnZSB0byBzaG93IGl0IGFzIEVycm9yIFN1bW1hcnlcbiAgcHVibGljIGdlbmVyYXRlRXJyb3JNZXNzYWdlKGZpZWxkczogQ2FzZUZpZWxkW10sIGNvbnRhaW5lcj86IEFic3RyYWN0Q29udHJvbCwgcGF0aD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwOiBBYnN0cmFjdENvbnRyb2wgPSBjb250YWluZXIgfHwgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddO1xuICAgIGZpZWxkcy5maWx0ZXIoY2FzZWZpZWxkID0+ICF0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNSZWFkT25seShjYXNlZmllbGQpKVxuICAgICAgLmZpbHRlcihjYXNlZmllbGQgPT4gIXRoaXMucGFnZVZhbGlkYXRpb25TZXJ2aWNlLmlzSGlkZGVuKGNhc2VmaWVsZCwgdGhpcy5lZGl0Rm9ybSwgcGF0aCkpXG4gICAgICAuZm9yRWFjaChjYXNlZmllbGQgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZEVsZW1lbnQgPSBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlZmllbGQsIFsnSnVkaWNpYWxVc2VyJ10pXG4gICAgICAgICAgPyBncm91cC5nZXQoYCR7Y2FzZWZpZWxkLmlkfV9qdWRpY2lhbFVzZXJDb250cm9sYClcbiAgICAgICAgICA6IGdyb3VwLmdldChjYXNlZmllbGQuaWQpO1xuICAgICAgICBpZiAoZmllbGRFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSBjYXNlZmllbGQubGFiZWwgfHwgJ0ZpZWxkJztcbiAgICAgICAgICBsZXQgaWQgPSBjYXNlZmllbGQuaWQ7XG4gICAgICAgICAgaWYgKGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10gJiYgZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5wYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLmlkUHJlZml4LmluZGV4T2YoYF8ke2lkfV9gKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgaWQgPSBgJHtmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLmlkUHJlZml4fSR7aWR9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlkID0gYCR7ZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuYWRkRm9ybVZhbGlkYXRpb25FcnJvcih7IGlkLCBtZXNzYWdlOiBgJUZJRUxETEFCRUwlIGlzIHJlcXVpcmVkYCwgbGFiZWwgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgIC8vIEZvciB0aGUgSnVkaWNpYWxVc2VyIGZpZWxkIHR5cGUsIGFuIGVycm9yIG5lZWRzIHRvIGJlIHNldCBvbiB0aGUgY29tcG9uZW50IHNvIHRoYXQgYW4gZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgLy8gY2FuIGJlIGRpc3BsYXllZCBhdCBmaWVsZCBsZXZlbFxuICAgICAgICAgICAgaWYgKEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VmaWVsZCwgWydKdWRpY2lhbFVzZXInXSkpIHtcbiAgICAgICAgICAgICAgZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5lcnJvcnMgPSB7IHJlcXVpcmVkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCVGSUVMRExBQkVMJSBpcyBub3QgdmFsaWRgLCBsYWJlbCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCVGSUVMRExBQkVMJSBpcyBiZWxvdyB0aGUgbWluaW11bSBsZW5ndGhgLCBsYWJlbCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCVGSUVMRExBQkVMJSBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aGAsIGxhYmVsIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaW52YWxpZCkge1xuICAgICAgICAgICAgaWYgKGNhc2VmaWVsZC5pc0NvbXBsZXgoKSkge1xuICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBmaWVsZEVsZW1lbnQsIGlkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FzZWZpZWxkLmlzQ29sbGVjdGlvbigpICYmIGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGRBcnJheSA9IGZpZWxkRWxlbWVudCBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgICAgIGlmIChmaWVsZEFycmF5Wydjb21wb25lbnQnXSAmJiBmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ10gJiYgZmllbGRBcnJheVsnY29tcG9uZW50J11bJ2NvbGxJdGVtcyddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZCA9IGAke2ZpZWxkQXJyYXlbJ2NvbXBvbmVudCddWydjb2xsSXRlbXMnXVswXS5wcmVmaXh9YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmaWVsZEFycmF5LmNvbnRyb2xzLmZvckVhY2goKGM6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFcnJvck1lc3NhZ2UoY2FzZWZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBjLmdldCgndmFsdWUnKSwgaWQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZWZpZWxkLCBbJ0ZsYWdMYXVuY2hlciddKSkge1xuICAgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBjYXNlIGZpZWxkIERpc3BsYXlDb250ZXh0UGFyYW1ldGVyIGlzIHNpZ25hbGxpbmcgXCJjcmVhdGVcIiBtb2RlIG9yIFwidXBkYXRlXCIgbW9kZVxuICAgICAgICAgICAgICAvLyAoZXhwZWN0ZWQgYWx3YXlzIHRvIGJlIG9uZSBvZiB0aGUgdHdvKSwgdG8gc2V0IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICAgICAgbGV0IGFjdGlvbiA9ICcnO1xuICAgICAgICAgICAgICBpZiAoY2FzZWZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ1JFQVRFKScpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24gPSAnY3JlYXRpb24nO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhc2VmaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKFVQREFURSknKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uID0gJ3VwZGF0ZSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBQbGVhc2Ugc2VsZWN0IE5leHQgdG8gY29tcGxldGUgdGhlICR7YWN0aW9ufSBvZiB0aGUgJHthY3Rpb24gPT09ICd1cGRhdGUnID8gJ3NlbGVjdGVkICcgOiAnJ31jYXNlIGZsYWdgXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goeyBpZCwgbWVzc2FnZTogYFNlbGVjdCBvciBmaWxsIHRoZSByZXF1aXJlZCAke2Nhc2VmaWVsZC5sYWJlbH0gZmllbGRgIH0pO1xuICAgICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZWxlbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoaHRtbEVsZW1lbnQpIHtcbiAgICAgICAgaHRtbEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgaHRtbEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgY29uc29sZS5sb2coJ1BhZ2Ugc3VibWl0IGV2ZW50IGZpcmVkIScpXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIC8vIFRoZSBnZW5lcmF0ZUVycm9yTWVzc2FnZSBtZXRob2QgZmlsdGVycyBvdXQgdGhlIGhpZGRlbiBmaWVsZHMuXG4gICAgICAvLyBUaGUgZXJyb3IgbWVzc2FnZSBmb3IgTGlua2VkQ2FzZXMgam91cm5leSB3aWxsIG5ldmVyIGdldCBkaXNwbGF5ZWQgYmVjYXVzZSB0aGVcbiAgICAgIC8vIExpbmtlZENhc2VzIGlzIGNvbmZpZ3VyZWQgd2l0aCBDb21wb25lbnRMYXVuY2hlciBmaWVsZCBhcyB2aXNpYmxlIGFuZCBjYXNlTGlua3MgZmllbGQgYXMgaGlkZGVuLlxuICAgICAgaWYgKHRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXkoKSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkOiAnbmV4dC1idXR0b24nLCBtZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBOZXh0IHRvIGdvIHRvIHRoZSBuZXh0IHBhZ2UnIH0pO1xuICAgICAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVFcnJvck1lc3NhZ2UodGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhc2VFZGl0LmlzU3VibWl0dGluZyAmJiAhdGhpcy5jdXJyZW50UGFnZUlzTm90VmFsaWQoKSkge1xuICAgICAgY29uc29sZS5sb2coJ0Nhc2UgRWRpdCBFcnJvcicsIHRoaXMuY2FzZUVkaXQuZXJyb3IpO1xuICAgICAgaWYgKHRoaXMuY2FzZUVkaXQudmFsaWRQYWdlTGlzdC5maW5kSW5kZXgocGFnZT0+IHBhZ2UuaWQgPT09IHRoaXMuY3VycmVudFBhZ2UuaWQpID09PSAtMSkge1xuICAgICAgICB0aGlzLmNhc2VFZGl0LnZhbGlkUGFnZUxpc3QucHVzaCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FzZUVkaXQuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FzZUVkaXQuZXJyb3IgPSBudWxsO1xuICAgICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuYnVpbGRDYXNlRXZlbnREYXRhKCk7XG4gICAgICBjb25zdCBsb2FkaW5nU3Bpbm5lclRva2VuID0gdGhpcy5sb2FkaW5nU2VydmljZS5yZWdpc3RlcigpO1xuICAgICAgdGhpcy52YWxpZGF0ZVN1YiA9IHRoaXMuY2FzZUVkaXQudmFsaWRhdGUoY2FzZUV2ZW50RGF0YSwgdGhpcy5jdXJyZW50UGFnZS5pZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS51bnJlZ2lzdGVyKGxvYWRpbmdTcGlubmVyVG9rZW4pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoanNvbkRhdGEpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChqc29uRGF0YSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtRGF0YShqc29uRGF0YSBhcyBDYXNlRXZlbnREYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zYXZlRHJhZnQoKTtcbiAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zY3JvbGxUb1RvcCgpO1xuICAgICAgLy8gUmVtb3ZlIGFsbCBKdWRpY2lhbFVzZXIgRm9ybUNvbnRyb2xzIHdpdGggdGhlIElEIHN1ZmZpeCBcIl9qdWRpY2lhbFVzZXJDb250cm9sXCIgYmVjYXVzZSB0aGVzZSBhcmUgbm90XG4gICAgICAvLyBpbnRlbmRlZCB0byBiZSBwcmVzZW50IGluIHRoZSBDYXNlIEV2ZW50IGRhdGEgKHRoZXkgYXJlIGFkZGVkIG9ubHkgZm9yIHZhbHVlIHNlbGVjdGlvbiBhbmQgdmFsaWRhdGlvblxuICAgICAgLy8gcHVycG9zZXMpXG4gICAgICB0aGlzLnJlbW92ZUFsbEp1ZGljaWFsVXNlckZvcm1Db250cm9scyh0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLmVkaXRGb3JtKTtcbiAgICB9XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JtRGF0YShqc29uRGF0YTogQ2FzZUV2ZW50RGF0YSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgY2FzZUZpZWxkSWQgb2YgT2JqZWN0LmtleXMoanNvbkRhdGEuZGF0YSkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy5wYWdlV2l0aEZpZWxkRXhpc3RzKGNhc2VGaWVsZElkKSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUV2ZW50VHJpZ2dlckNhc2VGaWVsZHMoY2FzZUZpZWxkSWQsIGpzb25EYXRhLCB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcik7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xzVmFsdWUodGhpcy5lZGl0Rm9ybSwgY2FzZUZpZWxkSWQsIGpzb25EYXRhLmRhdGFbY2FzZUZpZWxkSWRdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyB3ZSBkbyB0aGUgY2hlY2ssIGJlY2FzdWUgdGhlIGRhdGEgY29tZXMgZnJvbSB0aGUgZXh0ZXJuYWwgc291cmNlXG4gIHB1YmxpYyBwYWdlV2l0aEZpZWxkRXhpc3RzKGNhc2VGaWVsZElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy53aXphcmQuZmluZFdpemFyZFBhZ2UoY2FzZUZpZWxkSWQpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUV2ZW50VHJpZ2dlckNhc2VGaWVsZHMoY2FzZUZpZWxkSWQ6IHN0cmluZywganNvbkRhdGE6IENhc2VFdmVudERhdGEsIGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50VHJpZ2dlcj8uY2FzZV9maWVsZHMpIHtcbiAgICAgIGV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkc1xuICAgICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gY2FzZUZpZWxkSWQpXG4gICAgICAgIC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmlzQW5PYmplY3QoZWxlbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRKc29uRGF0YU9iamVjdCA9IHRoaXMudXBkYXRlSnNvbkRhdGFPYmplY3QoY2FzZUZpZWxkSWQsIGpzb25EYXRhLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgLi4uZWxlbWVudC52YWx1ZSxcbiAgICAgICAgICAgICAgLi4udXBkYXRlZEpzb25EYXRhT2JqZWN0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IGpzb25EYXRhLmRhdGFbY2FzZUZpZWxkSWRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVKc29uRGF0YU9iamVjdChjYXNlRmllbGRJZDogc3RyaW5nLCBqc29uRGF0YTogQ2FzZUV2ZW50RGF0YSwgZWxlbWVudDogQ2FzZUZpZWxkKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudFZhbHVlID0gZWxlbWVudC52YWx1ZVtrZXldO1xuICAgICAgY29uc3QganNvbkRhdGFWYWx1ZSA9IGpzb25EYXRhLmRhdGFbY2FzZUZpZWxkSWRdW2tleV07XG4gICAgICBjb25zdCBoYXNFbGVtZW50R290VmFsdWVQcm9wZXJ0eSA9IHRoaXMuaXNBbk9iamVjdChlbGVtZW50VmFsdWUpICYmIGVsZW1lbnRWYWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QganNvbkRhdGFPckVsZW1lbnRWYWx1ZSA9IGpzb25EYXRhVmFsdWU/LnZhbHVlICE9PSBudWxsICYmIGpzb25EYXRhVmFsdWU/LnZhbHVlICE9PSB1bmRlZmluZWQgPyBqc29uRGF0YVZhbHVlIDogZWxlbWVudFZhbHVlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtgJHtrZXl9YF06IGhhc0VsZW1lbnRHb3RWYWx1ZVByb3BlcnR5ID8ganNvbkRhdGFPckVsZW1lbnRWYWx1ZSA6IGpzb25EYXRhVmFsdWVcbiAgICAgIH07XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FuT2JqZWN0KHByb3BlcnR5OiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocHJvcGVydHkpICYmIHByb3BlcnR5ICE9PSBudWxsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjYXNlRmllbGRJZDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGhlQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddLmdldChjYXNlRmllbGRJZCk7XG4gICAgaWYgKHRoZUNvbnRyb2wgJiYgdGhlQ29udHJvbFsnc3RhdHVzJ10gIT09ICdESVNBQkxFRCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoZUNvbnRyb2wudmFsdWUpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICYmIHRoZUNvbnRyb2wudmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddXG4gICAgICAgICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddWydkaXNwbGF5X2NvbnRleHQnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZGlzcGxheV9jb250ZXh0J10gPT09ICdPUFRJT05BTCdcbiAgICAgICAgJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2ZpZWxkX3R5cGUnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZmllbGRfdHlwZSddWyd0eXBlJ10gPT09ICdDb2xsZWN0aW9uJykge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGVDb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCkge1xuICAgIHRoaXMuY2FzZUVkaXQuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBlcnJvckNvbnRleHQudHJpZ2dlclRleHQ7XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5jYW5OYXZpZ2F0ZVRvU3VtbWFyeVBhZ2UoKSkge1xuICAgICAgdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQubmV4dCh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5zYXZlRHJhZnQoKTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LnByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Lmhhc1ByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2F2ZU9yRGlzY2FyZERpYWxvZ0NvbXBvbmVudCwgdGhpcy5kaWFsb2dDb25maWcpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZkFmdGVyQ2xvc2VkU3ViID0gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0Rpc2NhcmQnKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gJ1NhdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFmdENhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UodGhpcy5lZGl0Rm9ybS52YWx1ZSkgYXMgQ2FzZUV2ZW50RGF0YTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fU0FWRSwgZGF0YTogZHJhZnRDYXNlRXZlbnREYXRhIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50Lk5FV19GT1JNX1NBVkUsIGRhdGE6IGRyYWZ0Q2FzZUV2ZW50RGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNjYXJkKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdHRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuaXNTdWJtaXR0aW5nO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuY2FzZV9pZCA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgJiYgdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZSAmJlxuICAgICAgdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZS50aXRsZV9kaXNwbGF5ID8gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZS50aXRsZV9kaXNwbGF5IDogJycpO1xuICB9XG5cbiAgcHVibGljIGdldENhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQgPyAnUmV0dXJuIHRvIGNhc2UgbGlzdCcgOiAnQ2FuY2VsJztcbiAgfVxuXG4gIHByaXZhdGUgY2FuTmF2aWdhdGVUb1N1bW1hcnlQYWdlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5leHRQYWdlID0gdGhpcy5jYXNlRWRpdC5nZXROZXh0UGFnZSh7XG4gICAgICBjdXJyZW50UGFnZUlkOiB0aGlzLmN1cnJlbnRQYWdlPy5pZCxcbiAgICAgIHdpemFyZDogdGhpcy53aXphcmQsXG4gICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgZm9ybTogdGhpcy5lZGl0Rm9ybVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfc3VtbWFyeSB8fCAhIW5leHRQYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmlnZ2VyVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRCYXNlZE9uQ2FuU2F2ZURyYWZ0ID0gdGhpcy5ldmVudFRyaWdnZXIgJiYgdGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnRcbiAgICAgID8gQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TQVZFXG4gICAgICA6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG5cbiAgICByZXR1cm4gdGhpcy5jYW5OYXZpZ2F0ZVRvU3VtbWFyeVBhZ2UoKVxuICAgICAgPyB0ZXh0QmFzZWRPbkNhblNhdmVEcmFmdFxuICAgICAgOiAnU3VibWl0JztcbiAgfVxuXG4gIHByaXZhdGUgZGlzY2FyZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlJFU1VNRURfRk9STV9ESVNDQVJEIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHsgc3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuTkVXX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yKSB7XG4gICAgdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNhc2VFZGl0LmVycm9yID0gZXJyb3I7XG4gICAgdGhpcy5jYXNlRWRpdC5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dCh0aGlzLmNhc2VFZGl0LmVycm9yKTtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuY2FzZUVkaXQuZXJyb3IpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuZXJyb3IuZGV0YWlscykge1xuICAgICAgdGhpcy5mb3JtRXJyb3JTZXJ2aWNlXG4gICAgICAgIC5tYXBGaWVsZEVycm9ycyh0aGlzLmNhc2VFZGl0LmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzLCB0aGlzLmVkaXRGb3JtPy5jb250cm9scz8uWydkYXRhJ10gYXMgRm9ybUdyb3VwLCAndmFsaWRhdGlvbicpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnaGFuZGxlRXJyb3IgJywgZXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0LmVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNhc2VFZGl0Lmlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5nZXRUcmlnZ2VyVGV4dCgpO1xuICAgIHRoaXMuY2FzZUVkaXQuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVEcmFmdCgpIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGNvbnN0IGRyYWZ0Q2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZSh0aGlzLmVkaXRGb3JtLnZhbHVlKSBhcyBDYXNlRXZlbnREYXRhO1xuICAgICAgZHJhZnRDYXNlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgICBkcmFmdENhc2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmNhc2VFZGl0Lmlnbm9yZVdhcm5pbmc7XG4gICAgICB0aGlzLnNhdmVEcmFmdFN1YiA9IHRoaXMuY2FzZUVkaXQuc2F2ZURyYWZ0KGRyYWZ0Q2FzZUV2ZW50RGF0YSkuc3Vic2NyaWJlKFxuICAgICAgICAoZHJhZnQpID0+IHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfaWQgPSBEUkFGVF9QUkVGSVggKyBkcmFmdC5pZCwgZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscykge1xuICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmdldENhc2VGaWVsZHModGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzRnJvbUN1cnJlbnRBbmRQcmV2aW91c1BhZ2VzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBjb25zdCByZXN1bHQ6IENhc2VGaWVsZFtdID0gW107XG4gICAgdGhpcy53aXphcmQucGFnZXMuZm9yRWFjaChwYWdlID0+IHtcbiAgICAgIGlmIChwYWdlLm9yZGVyIDw9IHRoaXMuY3VycmVudFBhZ2Uub3JkZXIpIHtcbiAgICAgICAgcGFnZS5jYXNlX2ZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHJlc3VsdC5wdXNoKGZpZWxkKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENhc2VFdmVudERhdGEoZnJvbVByZXZpb3VzUGFnZT86IGJvb2xlYW4pOiBDYXNlRXZlbnREYXRhIHtcbiAgICBjb25zdCBmb3JtVmFsdWU6IG9iamVjdCA9IHRoaXMuZWRpdEZvcm0udmFsdWU7XG5cbiAgICAvLyBHZXQgdGhlIENhc2VFdmVudERhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAgY29uc3QgcGFnZUZpZWxkczogQ2FzZUZpZWxkW10gPSB0aGlzLmN1cnJlbnRQYWdlLmNhc2VfZmllbGRzO1xuICAgIGNvbnN0IHBhZ2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShwYWdlRmllbGRzLCBmb3JtVmFsdWUsIHRydWUpO1xuXG4gICAgLy8gR2V0IHRoZSBDYXNlRXZlbnREYXRhIGZvciB0aGUgZW50aXJlIGZvcm0gKGFsbCBwYWdlcykuXG4gICAgY29uc3QgYWxsQ2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpO1xuICAgIGNvbnN0IGZvcm1FdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShhbGxDYXNlRmllbGRzLCBmb3JtVmFsdWUsIGZhbHNlLCB0cnVlLCBmcm9tUHJldmlvdXNQYWdlKTtcblxuICAgIC8vIE5vdyBoZXJlJ3MgdGhlIGtleSB0aGluZyAtIHRoZSBwYWdlRXZlbnREYXRhIGhhcyBhIHByb3BlcnR5IGNhbGxlZCBgZXZlbnRfZGF0YWAgYW5kXG4gICAgLy8gd2UgbmVlZCBUSEFUIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50aXJlIGZvcm06IGBmb3JtRXZlbnREYXRhLmRhdGFgLlxuICAgIHBhZ2VFdmVudERhdGEuZXZlbnRfZGF0YSA9IGZvcm1FdmVudERhdGEuZGF0YTtcblxuICAgIC8vIEZpbmFsaXNlIHRoZSBDYXNlRXZlbnREYXRhIG9iamVjdC5cbiAgICBwYWdlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgcGFnZUV2ZW50RGF0YS5pZ25vcmVfd2FybmluZyA9IHRoaXMuY2FzZUVkaXQuaWdub3JlV2FybmluZztcblxuICAgIC8vIEZpbmFsbHksIHRyeSB0byBzZXQgdXAgdGhlIGNhc2VfcmVmZXJlbmNlLlxuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICBwYWdlRXZlbnREYXRhLmNhc2VfcmVmZXJlbmNlID0gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0aGUgbm93IGhvcGVmdWxseSBzYW5lIENhc2VFdmVudERhdGEuXG4gICAgcmV0dXJuIHBhZ2VFdmVudERhdGE7XG4gIH1cblxuICAvKipcbiAgICogQWJzdHJhY3RlZCB0aGlzIG1ldGhvZCBmcm9tIGJ1aWxkQ2FzZUV2ZW50RGF0YSB0byByZW1vdmUgZHVwbGljYXRpb24uXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBmaWVsZHMgdG8gZmlsdGVyIHRoZSBkYXRhIGJ5LlxuICAgKiBAcGFyYW0gZm9ybVZhbHVlIFRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgZm9ybS5cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgV2hldGhlciBvciBub3QgdG8gY2xlYXIgb3V0IGVtcHR5IHZhbHVlcy5cbiAgICogQHBhcmFtIGNsZWFyTm9uQ2FzZSBXaGV0aGVyIG9yIG5vdCB0byBjbGVhciBvdXQgZmllbGRzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjYXNlLlxuICAgKiBAcmV0dXJucyBDYXNlRXZlbnREYXRhIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwcml2YXRlIGdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZm9ybVZhbHVlOiBvYmplY3QsIGNsZWFyRW1wdHkgPSBmYWxzZSxcbiAgICBjbGVhck5vbkNhc2UgPSBmYWxzZSwgZnJvbVByZXZpb3VzUGFnZSA9IGZhbHNlKTogQ2FzZUV2ZW50RGF0YSB7XG4gICAgLy8gR2V0IHRoZSBkYXRhIGZvciB0aGUgZmllbGRzIHNwZWNpZmllZC5cbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLmZpbHRlckN1cnJlbnRQYWdlRmllbGRzKGNhc2VGaWVsZHMsIGZvcm1WYWx1ZSk7XG5cbiAgICAvLyBTb3J0IG91dCB0aGUgZHluYW1pYyBsaXN0cy5cbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2VEeW5hbWljTGlzdHMoY2FzZUZpZWxkcywgZm9ybUZpZWxkcyk7XG5cbiAgICAvLyBHZXQgaG9sZCBvZiB0aGUgQ2FzZUV2ZW50RGF0YS5cbiAgICBjb25zdCBjYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlKGZvcm1GaWVsZHMpIGFzIENhc2VFdmVudERhdGE7XG5cbiAgICAvLyBkZWxldGUgZmllbGRzIHdoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgY2FzZSBldmVudCBqb3VybmV5IHdpemFyZCBwYWdlcyBjYXNlIGZpZWxkc1xuICAgIHRoaXMudmFsaWRQYWdlTGlzdENhc2VGaWVsZHNTZXJ2aWNlLmRlbGV0ZU5vblZhbGlkYXRlZEZpZWxkcyh0aGlzLmNhc2VFZGl0LnZhbGlkUGFnZUxpc3QsIGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMsIGZyb21QcmV2aW91c1BhZ2UsIHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXS52YWx1ZSk7XG5cbiAgICAvLyBUaWR5IGl0IHVwIGJlZm9yZSB3ZSByZXR1cm4gaXQuXG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZVVubmVjZXNzYXJ5RmllbGRzKGNhc2VFdmVudERhdGEuZGF0YSwgY2FzZUZpZWxkcywgY2xlYXJFbXB0eSwgY2xlYXJOb25DYXNlLFxuICAgICAgZnJvbVByZXZpb3VzUGFnZSwgdGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG5cbiAgICByZXR1cm4gY2FzZUV2ZW50RGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0Nhc2VFZGl0RGF0YVNlcnZpY2UoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldENhc2VEZXRhaWxzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlRXZlbnRUcmlnZ2VyTmFtZSh0aGlzLmV2ZW50VHJpZ2dlci5uYW1lKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0Q2FzZVRpdGxlKHRoaXMuZ2V0Q2FzZVRpdGxlKCkpO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlRWRpdEZvcm0odGhpcy5lZGl0Rm9ybSk7XG4gICAgdGhpcy5jYXNlRm9ybVZhbGlkYXRpb25FcnJvcnNTdWIgPSB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZUZvcm1WYWxpZGF0aW9uRXJyb3JzJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHZhbGlkYXRpb25FcnJvcnMpID0+IHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRpb25FcnJvcnNcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRScHhUcmFuc2xhdGVQaXBlQXJncyhmaWVsZExhYmVsOiBzdHJpbmcpOiB7IEZJRUxETEFCRUw6IHN0cmluZyB9IHwgbnVsbCB7XG4gICAgcmV0dXJuIGZpZWxkTGFiZWwgPyAoeyBGSUVMRExBQkVMOiBmaWVsZExhYmVsIH0pIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkV2ZW50Q2FuQmVDb21wbGV0ZWQoZXZlbnRDYW5CZUNvbXBsZXRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQub25FdmVudENhbkJlQ29tcGxldGVkKHtcbiAgICAgIGV2ZW50VHJpZ2dlcjogdGhpcy5ldmVudFRyaWdnZXIsXG4gICAgICBldmVudENhbkJlQ29tcGxldGVkLFxuICAgICAgY2FzZURldGFpbHM6IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMsXG4gICAgICBmb3JtOiB0aGlzLmVkaXRGb3JtLFxuICAgICAgc3VibWl0OiB0aGlzLmNhc2VFZGl0LnN1Ym1pdCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQWxsSnVkaWNpYWxVc2VyRm9ybUNvbnRyb2xzKHBhZ2U6IFdpemFyZFBhZ2UsIGVkaXRGb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICBwYWdlLmNhc2VfZmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgIGlmIChGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnSnVkaWNpYWxVc2VyJ10pKSB7XG4gICAgICAgIChlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbChgJHtjYXNlRmllbGQuaWR9X2p1ZGljaWFsVXNlckNvbnRyb2xgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRQYWdlXCI+XG4gIDxoMSAqbmdJZj1cIiFjdXJyZW50UGFnZS5sYWJlbFwiIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRQYWdlLmxhYmVsXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyBldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7Y3VycmVudFBhZ2UubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvaDE+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS1DYXNlIElEIG9yIFRpdGxlIC0tPlxuPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0aXRsZUJsb2NrPlxuICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImdldENhc2VUaXRsZSgpIHwgY2NkQ2FzZVRpdGxlOiBjYXNlRmllbGRzIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiPjwvY2NkLW1hcmtkb3duPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaWRCbG9jaz5cbiAgPGgyICpuZ0lmPVwiZ2V0Q2FzZUlkKClcIiBjbGFzcz1cImhlYWRpbmctaDJcIj4je3sgZ2V0Q2FzZUlkKCkgfCBjY2RDYXNlUmVmZXJlbmNlIH19PC9oMj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuPGRpdiAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAge3snVGhlcmUgaXMgYSBwcm9ibGVtJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHZhbGlkYXRpb25FcnJvciBvZiB2YWxpZGF0aW9uRXJyb3JzXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxhIChjbGljayk9XCJuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KHZhbGlkYXRpb25FcnJvci5pZClcIiBjbGFzcz1cInZhbGlkYXRpb24tZXJyb3JcIj5cbiAgICAgICAgICB7eyB2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZTogZ2V0UnB4VHJhbnNsYXRlUGlwZUFyZ3ModmFsaWRhdGlvbkVycm9yLmxhYmVsIHwgcnB4VHJhbnNsYXRlKTogbnVsbCB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjY2QtY2FzZS1lZGl0LWdlbmVyaWMtZXJyb3JzIFtlcnJvcl09XCJjYXNlRWRpdC5lcnJvclwiPjwvY2NkLWNhc2UtZWRpdC1nZW5lcmljLWVycm9ycz5cblxuPGNjZC1jYWxsYmFjay1lcnJvcnNcbiAgW3RyaWdnZXJUZXh0Q29udGludWVdPVwidHJpZ2dlclRleHRTdGFydFwiXG4gIFt0cmlnZ2VyVGV4dElnbm9yZV09XCJ0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzXCJcbiAgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYXNlRWRpdC5jYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj5cbjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cbjxkaXYgY2xhc3M9XCJ3aWR0aC01MFwiPlxuICA8Zm9ybSAqbmdJZj1cImN1cnJlbnRQYWdlXCIgY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybVwiIChzdWJtaXQpPVwic3VibWl0KClcIj5cbiAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1jYXNlLWRhdGFcIj5cbiAgICAgIDxsZWdlbmQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvbGVnZW5kPlxuICAgICAgPCEtLSBzaW5nbGUgY29sdW1uIC0tPlxuICAgICAgPGNjZC1jYXNlLWVkaXQtZm9ybSBpZD0nY2FzZUVkaXRGb3JtJyAqbmdJZj1cIiFjdXJyZW50UGFnZS5pc011bHRpQ29sdW1uKClcIiBbZmllbGRzXT1cImN1cnJlbnRQYWdlLmdldENvbDFGaWVsZHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUNoYW5nZVN1YmplY3RdPVwicGFnZUNoYW5nZVN1YmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVzQ2hhbmdlZCk9XCJhcHBseVZhbHVlc0NoYW5nZWQoJGV2ZW50KVwiPjwvY2NkLWNhc2UtZWRpdC1mb3JtPlxuICAgICAgPCEtLSB0d28gY29sdW1ucyAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50UGFnZS5pc011bHRpQ29sdW1uKClcIiBjbGFzcz1cImdyaWQtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tdHdvLXRoaXJkcyByaWdodEJvcmRlclNlcGFyYXRvclwiPlxuICAgICAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybTEnIFtmaWVsZHNdPVwiY3VycmVudFBhZ2UuZ2V0Q29sMUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tb25lLXRoaXJkXCI+XG4gICAgICAgICAgPGNjZC1jYXNlLWVkaXQtZm9ybSBpZD0nY2FzZUVkaXRGb3JtMicgW2ZpZWxkc109XCJjdXJyZW50UGFnZS5nZXRDb2wyRmllbGRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiPjwvY2NkLWNhc2UtZWRpdC1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXJlbGF0ZWRcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIShoYXNQcmV2aW91c1BhZ2UkIHwgYXN5bmMpXCIgKGNsaWNrKT1cInRvUHJldmlvdXNQYWdlKClcIj5cbiAgICAgICAge3snUHJldmlvdXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwic3VibWl0dGluZygpXCI+e3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPjxhIChjbGljayk9XCJjYW5jZWwoKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj57e2dldENhbmNlbFRleHQoKSB8IHJweFRyYW5zbGF0ZX19PC9hPjwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxjY2QtY2FzZS1ldmVudC1jb21wbGV0aW9uICpuZ0lmPVwiY2FzZUVkaXQuaXNFdmVudENvbXBsZXRpb25DaGVja3NSZXF1aXJlZFwiXG4gIFtldmVudENvbXBsZXRpb25QYXJhbXNdPVwiY2FzZUVkaXQuZXZlbnRDb21wbGV0aW9uUGFyYW1zXCJcbiAgKGV2ZW50Q2FuQmVDb21wbGV0ZWQpPVwib25FdmVudENhbkJlQ29tcGxldGVkKCRldmVudClcIj5cbjwvY2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbj5cbiJdfQ==
742
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBMkMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQTJCLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixF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ckIscUJBQXFCO1FDOUJsQyx3RkFNZTtRQUdmLHNFQUFpRTtRQUNqRSx1SEFFYztRQUNkLHVIQUVjO1FBR2Qsc0VBYU07UUFFTixrREFBc0Y7UUFFdEYsOENBSXlEO1FBQXZELHFKQUF5QixnQ0FBNEIsSUFBQztRQUN4RCxpQkFBc0I7UUFDdEIsOEJBQXNCO1FBQ3BCLDRFQTZCTztRQUNULGlCQUFNO1FBRU4sb0hBRzRCOzs7O1FBN0ViLHNDQUFpQjtRQVMxQixlQUFzQjtRQUF0Qix5Q0FBc0IsaUJBQUEsaUJBQUE7UUFTdEIsZUFBaUM7UUFBakMsc0RBQWlDO1FBZVQsZUFBd0I7UUFBeEIsMENBQXdCO1FBR3BELGVBQXdDO1FBQXhDLDBEQUF3QyxvREFBQSw2REFBQTtRQU1qQyxlQUFpQjtRQUFqQixzQ0FBaUI7UUFnQ0UsZUFBOEM7UUFBOUMsbUVBQThDOzt1RkQ1QzdELHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXNlRWRpdERhdGFTZXJ2aWNlLCBDYXNlRWRpdFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbnMvY2FzZS1lZGl0LWRhdGEnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50RGF0YSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLWV2ZW50LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS1ldmVudC10cmlnZ2VyLm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uJztcbmltcG9ydCB7IERSQUZUX1BSRUZJWCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kcmFmdC5tb2RlbCc7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VGaWVsZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXNlLWZpZWxkcy9jYXNlLWZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMnO1xuaW1wb3J0IHsgRm9ybUVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1WYWx1ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlT3JEaXNjYXJkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9zYXZlLW9yLWRpc2NhcmQtZGlhbG9nJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yL2RvbWFpbi9lcnJvci1jb250ZXh0JztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkUGFnZSB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQtcGFnZS5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmQgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BhZ2UtdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkUGFnZUxpc3RDYXNlRmllbGRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbGlkLXBhZ2UtbGlzdC1jYXNlRmllbGRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWVkaXQtcGFnZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFU1VNRURfRk9STV9ESVNDQVJEID0gJ1JFU1VNRURfRk9STV9ESVNDQVJEJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBORVdfRk9STV9ESVNDQVJEID0gJ05FV19GT1JNX0RJU0NBUkQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5FV19GT1JNX1NBVkUgPSAnTkVXX0ZPUk1fQ0hBTkdFRF9TQVZFJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRVNVTUVEX0ZPUk1fU0FWRSA9ICdSRVNVTUVEX0ZPUk1fU0FWRSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0NvbnRpbnVlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfU0FWRSA9ICdTYXZlIGFuZCBjb250aW51ZSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX0NPTlRJTlVFID0gJ0lnbm9yZSBXYXJuaW5nIGFuZCBDb250aW51ZSc7XG5cbiAgcHVibGljIGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlcjtcbiAgcHVibGljIGVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB3aXphcmQ6IFdpemFyZDtcbiAgcHVibGljIGN1cnJlbnRQYWdlOiBXaXphcmRQYWdlO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dFN0YXJ0ID0gQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIHRyaWdnZXJUZXh0SWdub3JlV2FybmluZ3MgPSBDYXNlRWRpdFBhZ2VDb21wb25lbnQuVFJJR0dFUl9URVhUX0NPTlRJTlVFO1xuICBwdWJsaWMgdHJpZ2dlclRleHQ6IHN0cmluZztcbiAgcHVibGljIGZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gIHB1YmxpYyBwYWdlQ2hhbmdlU3ViamVjdDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvcnM6IENhc2VFZGl0VmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgcHVibGljIGhhc1ByZXZpb3VzUGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcDogYm9vbGVhbjtcbiAgcHVibGljIHJvdXRlUGFyYW1zU3ViOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlRWRpdEZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VJc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwU3ViOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlVHJpZ2dlclN1Ym1pdEV2ZW50U3ViOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyB2YWxpZGF0ZVN1YjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nUmVmQWZ0ZXJDbG9zZWRTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHNhdmVEcmFmdFN1YjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY2FzZUZvcm1WYWxpZGF0aW9uRXJyb3JzU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2V0Rm9jdXNUb1RvcCgpIHtcbiAgICBjb25zdCB0b3BDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wJyk7XG4gICAgaWYgKHRvcENvbnRhaW5lcikge1xuICAgICAgdG9wQ29udGFpbmVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZVNlcnZpY2U6IEZvcm1WYWx1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRXJyb3JTZXJ2aWNlOiBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVZhbGlkYXRpb25TZXJ2aWNlOiBQYWdlVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGaWVsZFNlcnZpY2U6IENhc2VGaWVsZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdERhdGFTZXJ2aWNlOiBDYXNlRWRpdERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1NlcnZpY2U6IExvYWRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRQYWdlTGlzdENhc2VGaWVsZHNTZXJ2aWNlOiBWYWxpZFBhZ2VMaXN0Q2FzZUZpZWxkc1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaW5pdERpYWxvZygpO1xuICAgIHRoaXMuZXZlbnRUcmlnZ2VyID0gdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXI7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuXG4gICAgdGhpcy5zeW5jQ2FzZUVkaXREYXRhU2VydmljZSgpO1xuXG4gICAgdGhpcy5yb3V0ZVBhcmFtc1N1YiA9IHRoaXMucm91dGUucGFyYW1zXG4gICAgICAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHBhcmFtc1sncGFnZSddO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFBhZ2UgfHwgcGFnZUlkICE9PSB0aGlzLmN1cnJlbnRQYWdlPy5pZCkge1xuICAgICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmNhc2VFZGl0LmdldFBhZ2UocGFnZUlkKTtcbiAgICAgICAgICBpZiAocGFnZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpcnN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaGFzUHJldmlvdXNQYWdlJC5uZXh0KHRoaXMuY2FzZUVkaXQuaGFzUHJldmlvdXModGhpcy5jdXJyZW50UGFnZT8uaWQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5nZXRUcmlnZ2VyVGV4dCgpO1xuICAgICAgfSk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgICB0aGlzLmNhc2VFZGl0Rm9ybVN1YiA9IHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlRWRpdEZvcm0kLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBlZGl0Rm9ybSA9PiB0aGlzLmVkaXRGb3JtID0gZWRpdEZvcm1cbiAgICB9KTtcbiAgICB0aGlzLmNhc2VJc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwU3ViID1cbiAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlSXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCA9PiB0aGlzLmlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAgPSBpc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwXG4gICAgICB9KTtcbiAgICB0aGlzLmNhc2VUcmlnZ2VyU3VibWl0RXZlbnRTdWIgPSB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZVRyaWdnZXJTdWJtaXRFdmVudCQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldFRyaWdnZXJTdWJtaXRFdmVudChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zdWJtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlUGFyYW1zU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FzZUVkaXRGb3JtU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2FzZUlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXBTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jYXNlVHJpZ2dlclN1Ym1pdEV2ZW50U3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudmFsaWRhdGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kaWFsb2dSZWZBZnRlckNsb3NlZFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNhdmVEcmFmdFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNhc2VGb3JtVmFsaWRhdGlvbkVycm9yc1N1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVZhbHVlc0NoYW5nZWQodmFsdWVzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQgPSB2YWx1ZXNDaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIGZpcnN0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LmZpcnN0KCk7XG4gIH1cblxuICBwdWJsaWMgY3VycmVudFBhZ2VJc05vdFZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wYWdlVmFsaWRhdGlvblNlcnZpY2UuaXNQYWdlVmFsaWQodGhpcy5jdXJyZW50UGFnZSwgdGhpcy5lZGl0Rm9ybSkgfHxcbiAgICAgICh0aGlzLmlzTGlua2VkQ2FzZXNKb3VybmV5KCkgJiYgIXRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCk7XG4gIH1cblxuICBwdWJsaWMgaXNMaW5rZWRDYXNlc0pvdXJuZXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvbnRhaW5zTGlua2VkQ2FzZXNDYXNlRmllbGQodGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG4gIH1cblxuICAvKipcbiAgICogY2FzZUV2ZW50RGF0YS5ldmVudF9kYXRhIGNvbnRhaW5zIGFsbCB0aGUgdmFsdWVzIGZyb20gdGhlIHByZXZpb3VzIHBhZ2VzIHNvIHdlIHNldCBjYXNlRXZlbnREYXRhLmRhdGEgPSBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGFcbiAgICogVGhpcyBidWlsZHMgdGhlIGZvcm0gd2l0aCBkYXRhIGZyb20gdGhlIHByZXZpb3VzIHBhZ2VzXG4gICAqIEVVSS0zNzMyIC0gQnJlYXRoaW5nIHNwYWNlIGRhdGEgbm90IHBlcnNpc3RlZCBvbiBQcmV2aW91cyBidXR0b24gY2xpY2sgd2l0aCBFeHBVSSBEZW1vXG4gICAqL1xuICBwdWJsaWMgdG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcblxuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmJ1aWxkQ2FzZUV2ZW50RGF0YSh0cnVlKTtcbiAgICBjYXNlRXZlbnREYXRhLmRhdGEgPSBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGE7XG4gICAgdGhpcy51cGRhdGVGb3JtRGF0YShjYXNlRXZlbnREYXRhKTtcbiAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIC8vIEFkZGluZyB2YWxpZGF0aW9uIG1lc3NhZ2UgdG8gc2hvdyBpdCBhcyBFcnJvciBTdW1tYXJ5XG4gIHB1YmxpYyBnZW5lcmF0ZUVycm9yTWVzc2FnZShmaWVsZHM6IENhc2VGaWVsZFtdLCBjb250YWluZXI/OiBBYnN0cmFjdENvbnRyb2wsIHBhdGg/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBncm91cDogQWJzdHJhY3RDb250cm9sID0gY29udGFpbmVyIHx8IHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXTtcbiAgICBmaWVsZHMuZmlsdGVyKGNhc2VmaWVsZCA9PiAhdGhpcy5jYXNlRmllbGRTZXJ2aWNlLmlzUmVhZE9ubHkoY2FzZWZpZWxkKSlcbiAgICAgIC5maWx0ZXIoY2FzZWZpZWxkID0+ICF0aGlzLnBhZ2VWYWxpZGF0aW9uU2VydmljZS5pc0hpZGRlbihjYXNlZmllbGQsIHRoaXMuZWRpdEZvcm0sIHBhdGgpKVxuICAgICAgLmZvckVhY2goY2FzZWZpZWxkID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRFbGVtZW50ID0gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZWZpZWxkLCBbJ0p1ZGljaWFsVXNlciddKVxuICAgICAgICAgID8gZ3JvdXAuZ2V0KGAke2Nhc2VmaWVsZC5pZH1fanVkaWNpYWxVc2VyQ29udHJvbGApXG4gICAgICAgICAgOiBncm91cC5nZXQoY2FzZWZpZWxkLmlkKTtcbiAgICAgICAgaWYgKGZpZWxkRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gY2FzZWZpZWxkLmxhYmVsIHx8ICdGaWVsZCc7XG4gICAgICAgICAgbGV0IGlkID0gY2FzZWZpZWxkLmlkO1xuICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddICYmIGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10ucGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeC5pbmRleE9mKGBfJHtpZH1fYCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIGlkID0gYCR7ZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeH0ke2lkfWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZCA9IGAke2ZpZWxkRWxlbWVudFsnY29tcG9uZW50J10uaWRQcmVmaXh9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCVGSUVMRExBQkVMJSBpcyByZXF1aXJlZGAsIGxhYmVsIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAvLyBGb3IgdGhlIEp1ZGljaWFsVXNlciBmaWVsZCB0eXBlLCBhbiBlcnJvciBuZWVkcyB0byBiZSBzZXQgb24gdGhlIGNvbXBvbmVudCBzbyB0aGF0IGFuIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICAgIC8vIGNhbiBiZSBkaXNwbGF5ZWQgYXQgZmllbGQgbGV2ZWxcbiAgICAgICAgICAgIGlmIChGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlZmllbGQsIFsnSnVkaWNpYWxVc2VyJ10pKSB7XG4gICAgICAgICAgICAgIGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10uZXJyb3JzID0geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdwYXR0ZXJuJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQsIG1lc3NhZ2U6IGAlRklFTERMQUJFTCUgaXMgbm90IHZhbGlkYCwgbGFiZWwgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQsIG1lc3NhZ2U6IGAlRklFTERMQUJFTCUgaXMgYmVsb3cgdGhlIG1pbmltdW0gbGVuZ3RoYCwgbGFiZWwgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQsIG1lc3NhZ2U6IGAlRklFTERMQUJFTCUgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGhgLCBsYWJlbCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50LmludmFsaWQpIHtcbiAgICAgICAgICAgIGlmIChjYXNlZmllbGQuaXNDb21wbGV4KCkpIHtcbiAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUVycm9yTWVzc2FnZShjYXNlZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZmllbGRFbGVtZW50LCBpZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhc2VmaWVsZC5pc0NvbGxlY3Rpb24oKSAmJiBjYXNlZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkQXJyYXkgPSBmaWVsZEVsZW1lbnQgYXMgRm9ybUFycmF5O1xuICAgICAgICAgICAgICBpZiAoZmllbGRBcnJheVsnY29tcG9uZW50J10gJiYgZmllbGRBcnJheVsnY29tcG9uZW50J11bJ2NvbGxJdGVtcyddICYmIGZpZWxkQXJyYXlbJ2NvbXBvbmVudCddWydjb2xsSXRlbXMnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBgJHtmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ11bMF0ucHJlZml4fWA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZmllbGRBcnJheS5jb250cm9scy5mb3JFYWNoKChjOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgYy5nZXQoJ3ZhbHVlJyksIGlkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VmaWVsZCwgWydGbGFnTGF1bmNoZXInXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IEZpZWxkc1V0aWxzLmdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VGb3JGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZWZpZWxkKVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5wdXNoKHsgaWQsIG1lc3NhZ2U6IGBTZWxlY3Qgb3IgZmlsbCB0aGUgcmVxdWlyZWQgJHtjYXNlZmllbGQubGFiZWx9IGZpZWxkYCB9KTtcbiAgICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2Nyb2xsVG9Ub3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KGVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZWxlbWVudElkKSB7XG4gICAgICBjb25zdCBodG1sRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGh0bWxFbGVtZW50KSB7XG4gICAgICAgIGh0bWxFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIGh0bWxFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIGNvbnNvbGUubG9nKCdQYWdlIHN1Ym1pdCBldmVudCBmaXJlZCEnKVxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSXNOb3RWYWxpZCgpKSB7XG4gICAgICAvLyBUaGUgZ2VuZXJhdGVFcnJvck1lc3NhZ2UgbWV0aG9kIGZpbHRlcnMgb3V0IHRoZSBoaWRkZW4gZmllbGRzLlxuICAgICAgLy8gVGhlIGVycm9yIG1lc3NhZ2UgZm9yIExpbmtlZENhc2VzIGpvdXJuZXkgd2lsbCBuZXZlciBnZXQgZGlzcGxheWVkIGJlY2F1c2UgdGhlXG4gICAgICAvLyBMaW5rZWRDYXNlcyBpcyBjb25maWd1cmVkIHdpdGggQ29tcG9uZW50TGF1bmNoZXIgZmllbGQgYXMgdmlzaWJsZSBhbmQgY2FzZUxpbmtzIGZpZWxkIGFzIGhpZGRlbi5cbiAgICAgIGlmICh0aGlzLmlzTGlua2VkQ2FzZXNKb3VybmV5KCkpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goeyBpZDogJ25leHQtYnV0dG9uJywgbWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgTmV4dCB0byBnbyB0byB0aGUgbmV4dCBwYWdlJyB9KTtcbiAgICAgICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNjcm9sbFRvVG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKHRoaXMuY3VycmVudFBhZ2UuY2FzZV9maWVsZHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgJiYgIXRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdDYXNlIEVkaXQgRXJyb3InLCB0aGlzLmNhc2VFZGl0LmVycm9yKTtcbiAgICAgIGlmICh0aGlzLmNhc2VFZGl0LnZhbGlkUGFnZUxpc3QuZmluZEluZGV4KHBhZ2U9PiBwYWdlLmlkID09PSB0aGlzLmN1cnJlbnRQYWdlLmlkKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC52YWxpZFBhZ2VMaXN0LnB1c2godGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhc2VFZGl0LmlzU3VibWl0dGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNhc2VFZGl0LmVycm9yID0gbnVsbDtcbiAgICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmJ1aWxkQ2FzZUV2ZW50RGF0YSgpO1xuICAgICAgY29uc3QgbG9hZGluZ1NwaW5uZXJUb2tlbiA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcbiAgICAgIHRoaXMudmFsaWRhdGVTdWIgPSB0aGlzLmNhc2VFZGl0LnZhbGlkYXRlKGNhc2VFdmVudERhdGEsIHRoaXMuY3VycmVudFBhZ2UuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UudW5yZWdpc3Rlcihsb2FkaW5nU3Bpbm5lclRva2VuKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGpzb25EYXRhKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoanNvbkRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybURhdGEoanNvbkRhdGEgYXMgQ2FzZUV2ZW50RGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZURyYWZ0KCk7XG4gICAgICAgICAgdGhpcy5uZXh0KCk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIC8vIFJlbW92ZSBhbGwgSnVkaWNpYWxVc2VyIEZvcm1Db250cm9scyB3aXRoIHRoZSBJRCBzdWZmaXggXCJfanVkaWNpYWxVc2VyQ29udHJvbFwiIGJlY2F1c2UgdGhlc2UgYXJlIG5vdFxuICAgICAgLy8gaW50ZW5kZWQgdG8gYmUgcHJlc2VudCBpbiB0aGUgQ2FzZSBFdmVudCBkYXRhICh0aGV5IGFyZSBhZGRlZCBvbmx5IGZvciB2YWx1ZSBzZWxlY3Rpb24gYW5kIHZhbGlkYXRpb25cbiAgICAgIC8vIHB1cnBvc2VzKVxuICAgICAgdGhpcy5yZW1vdmVBbGxKdWRpY2lhbFVzZXJGb3JtQ29udHJvbHModGhpcy5jdXJyZW50UGFnZSwgdGhpcy5lZGl0Rm9ybSk7XG4gICAgfVxuICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zZXRGb2N1c1RvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRm9ybURhdGEoanNvbkRhdGE6IENhc2VFdmVudERhdGEpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNhc2VGaWVsZElkIG9mIE9iamVjdC5rZXlzKGpzb25EYXRhLmRhdGEpKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMucGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZCkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkLCBqc29uRGF0YSwgdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXIpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKHRoaXMuZWRpdEZvcm0sIGNhc2VGaWVsZElkLCBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgZG8gdGhlIGNoZWNrLCBiZWNhc3VlIHRoZSBkYXRhIGNvbWVzIGZyb20gdGhlIGV4dGVybmFsIHNvdXJjZVxuICBwdWJsaWMgcGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMud2l6YXJkLmZpbmRXaXphcmRQYWdlKGNhc2VGaWVsZElkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkOiBzdHJpbmcsIGpzb25EYXRhOiBDYXNlRXZlbnREYXRhLCBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChldmVudFRyaWdnZXI/LmNhc2VfZmllbGRzKSB7XG4gICAgICBldmVudFRyaWdnZXIuY2FzZV9maWVsZHNcbiAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGNhc2VGaWVsZElkKVxuICAgICAgICAuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc0FuT2JqZWN0KGVsZW1lbnQudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkSnNvbkRhdGFPYmplY3QgPSB0aGlzLnVwZGF0ZUpzb25EYXRhT2JqZWN0KGNhc2VGaWVsZElkLCBqc29uRGF0YSwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB7XG4gICAgICAgICAgICAgIC4uLmVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgICAgIC4uLnVwZGF0ZWRKc29uRGF0YU9iamVjdCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSnNvbkRhdGFPYmplY3QoY2FzZUZpZWxkSWQ6IHN0cmluZywganNvbkRhdGE6IENhc2VFdmVudERhdGEsIGVsZW1lbnQ6IENhc2VGaWVsZCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoanNvbkRhdGEuZGF0YVtjYXNlRmllbGRJZF0pLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGVsZW1lbnQudmFsdWVba2V5XTtcbiAgICAgIGNvbnN0IGpzb25EYXRhVmFsdWUgPSBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXVtrZXldO1xuICAgICAgY29uc3QgaGFzRWxlbWVudEdvdFZhbHVlUHJvcGVydHkgPSB0aGlzLmlzQW5PYmplY3QoZWxlbWVudFZhbHVlKSAmJiBlbGVtZW50VmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGpzb25EYXRhT3JFbGVtZW50VmFsdWUgPSBqc29uRGF0YVZhbHVlPy52YWx1ZSAhPT0gbnVsbCAmJiBqc29uRGF0YVZhbHVlPy52YWx1ZSAhPT0gdW5kZWZpbmVkID8ganNvbkRhdGFWYWx1ZSA6IGVsZW1lbnRWYWx1ZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBbYCR7a2V5fWBdOiBoYXNFbGVtZW50R290VmFsdWVQcm9wZXJ0eSA/IGpzb25EYXRhT3JFbGVtZW50VmFsdWUgOiBqc29uRGF0YVZhbHVlXG4gICAgICB9O1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbk9iamVjdChwcm9wZXJ0eTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgcHJvcGVydHkgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHByb3BlcnR5KSAmJiBwcm9wZXJ0eSAhPT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JtQ29udHJvbHNWYWx1ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY2FzZUZpZWxkSWQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHRoZUNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXS5nZXQoY2FzZUZpZWxkSWQpO1xuICAgIGlmICh0aGVDb250cm9sICYmIHRoZUNvbnRyb2xbJ3N0YXR1cyddICE9PSAnRElTQUJMRUQnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGVDb250cm9sLnZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAmJiB0aGVDb250cm9sLnZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVxuICAgICAgICAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZGlzcGxheV9jb250ZXh0J10gJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2Rpc3BsYXlfY29udGV4dCddID09PSAnT1BUSU9OQUwnXG4gICAgICAgICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddWydmaWVsZF90eXBlJ10gJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2ZpZWxkX3R5cGUnXVsndHlwZSddID09PSAnQ29sbGVjdGlvbicpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhlQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoZXJyb3JDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpIHtcbiAgICB0aGlzLmNhc2VFZGl0Lmlnbm9yZVdhcm5pbmcgPSBlcnJvckNvbnRleHQuaWdub3JlV2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gZXJyb3JDb250ZXh0LnRyaWdnZXJUZXh0O1xuICB9XG5cbiAgcHVibGljIG5leHQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuY2FuTmF2aWdhdGVUb1N1bW1hcnlQYWdlKCkpIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Lm5leHQodGhpcy5jdXJyZW50UGFnZS5pZCk7XG4gIH1cblxuICBwdWJsaWMgcHJldmlvdXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuc2F2ZURyYWZ0KCk7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIHRoaXMucGFnZUNoYW5nZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5wcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5oYXNQcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVPckRpc2NhcmREaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWZBZnRlckNsb3NlZFN1YiA9IGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdEaXNjYXJkJykge1xuICAgICAgICAgICAgdGhpcy5kaXNjYXJkKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09ICdTYXZlJykge1xuICAgICAgICAgICAgY29uc3QgZHJhZnRDYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlKHRoaXMuZWRpdEZvcm0udmFsdWUpIGFzIENhc2VFdmVudERhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgICAgICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHsgc3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuUkVTVU1FRF9GT1JNX1NBVkUsIGRhdGE6IGRyYWZ0Q2FzZUV2ZW50RGF0YSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5ORVdfRk9STV9TQVZFLCBkYXRhOiBkcmFmdENhc2VFdmVudERhdGEgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzY2FyZCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXR0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LmlzU3VibWl0dGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLmNhc2VfaWQgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0ID8gJ1JldHVybiB0byBjYXNlIGxpc3QnIDogJ0NhbmNlbCc7XG4gIH1cblxuICBwcml2YXRlIGNhbk5hdmlnYXRlVG9TdW1tYXJ5UGFnZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBuZXh0UGFnZSA9IHRoaXMuY2FzZUVkaXQuZ2V0TmV4dFBhZ2Uoe1xuICAgICAgY3VycmVudFBhZ2VJZDogdGhpcy5jdXJyZW50UGFnZT8uaWQsXG4gICAgICB3aXphcmQ6IHRoaXMud2l6YXJkLFxuICAgICAgZXZlbnRUcmlnZ2VyOiB0aGlzLmV2ZW50VHJpZ2dlcixcbiAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm1cbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5zaG93X3N1bW1hcnkgfHwgISFuZXh0UGFnZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJpZ2dlclRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0QmFzZWRPbkNhblNhdmVEcmFmdCA9IHRoaXMuZXZlbnRUcmlnZ2VyICYmIHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0XG4gICAgICA/IENhc2VFZGl0UGFnZUNvbXBvbmVudC5UUklHR0VSX1RFWFRfU0FWRVxuICAgICAgOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FuTmF2aWdhdGVUb1N1bW1hcnlQYWdlKClcbiAgICAgID8gdGV4dEJhc2VkT25DYW5TYXZlRHJhZnRcbiAgICAgIDogJ1N1Ym1pdCc7XG4gIH1cblxuICBwcml2YXRlIGRpc2NhcmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoQ2FzZUVkaXRDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNKSA9PT0gJ3ZpZXdEcmFmdCcpIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50Lk5FV19GT1JNX0RJU0NBUkQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIHRoaXMuY2FzZUVkaXQuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jYXNlRWRpdC5lcnJvciA9IGVycm9yO1xuICAgIHRoaXMuY2FzZUVkaXQuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQodGhpcy5jYXNlRWRpdC5lcnJvcik7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dCh0aGlzLmNhc2VFZGl0LmVycm9yKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmVycm9yLmRldGFpbHMpIHtcbiAgICAgIHRoaXMuZm9ybUVycm9yU2VydmljZVxuICAgICAgICAubWFwRmllbGRFcnJvcnModGhpcy5jYXNlRWRpdC5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycywgdGhpcy5lZGl0Rm9ybT8uY29udHJvbHM/LlsnZGF0YSddIGFzIEZvcm1Hcm91cCwgJ3ZhbGlkYXRpb24nKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ2hhbmRsZUVycm9yICcsIGVycm9yKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYXNlRWRpdC5pZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IHRoaXMuZ2V0VHJpZ2dlclRleHQoKTtcbiAgICB0aGlzLmNhc2VFZGl0LmNhbGxiYWNrRXJyb3JzU3ViamVjdC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlRHJhZnQoKSB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBjb25zdCBkcmFmdENhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UodGhpcy5lZGl0Rm9ybS52YWx1ZSkgYXMgQ2FzZUV2ZW50RGF0YTtcbiAgICAgIGRyYWZ0Q2FzZUV2ZW50RGF0YS5ldmVudF90b2tlbiA9IHRoaXMuZXZlbnRUcmlnZ2VyLmV2ZW50X3Rva2VuO1xuICAgICAgZHJhZnRDYXNlRXZlbnREYXRhLmlnbm9yZV93YXJuaW5nID0gdGhpcy5jYXNlRWRpdC5pZ25vcmVXYXJuaW5nO1xuICAgICAgdGhpcy5zYXZlRHJhZnRTdWIgPSB0aGlzLmNhc2VFZGl0LnNhdmVEcmFmdChkcmFmdENhc2VFdmVudERhdGEpLnN1YnNjcmliZShcbiAgICAgICAgKGRyYWZ0KSA9PiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2lkID0gRFJBRlRfUFJFRklYICsgZHJhZnQuaWQsIGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBDYXNlRmllbGRbXSA9IFtdO1xuICAgIHRoaXMud2l6YXJkLnBhZ2VzLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICBpZiAocGFnZS5vcmRlciA8PSB0aGlzLmN1cnJlbnRQYWdlLm9yZGVyKSB7XG4gICAgICAgIHBhZ2UuY2FzZV9maWVsZHMuZm9yRWFjaChmaWVsZCA9PiByZXN1bHQucHVzaChmaWVsZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDYXNlRXZlbnREYXRhKGZyb21QcmV2aW91c1BhZ2U/OiBib29sZWFuKTogQ2FzZUV2ZW50RGF0YSB7XG4gICAgY29uc3QgZm9ybVZhbHVlOiBvYmplY3QgPSB0aGlzLmVkaXRGb3JtLnZhbHVlO1xuXG4gICAgLy8gR2V0IHRoZSBDYXNlRXZlbnREYXRhIGZvciB0aGUgY3VycmVudCBwYWdlLlxuICAgIGNvbnN0IHBhZ2VGaWVsZHM6IENhc2VGaWVsZFtdID0gdGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcztcbiAgICBjb25zdCBwYWdlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5nZXRGaWx0ZXJlZENhc2VFdmVudERhdGEocGFnZUZpZWxkcywgZm9ybVZhbHVlLCB0cnVlKTtcblxuICAgIC8vIEdldCB0aGUgQ2FzZUV2ZW50RGF0YSBmb3IgdGhlIGVudGlyZSBmb3JtIChhbGwgcGFnZXMpLlxuICAgIGNvbnN0IGFsbENhc2VGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHNGcm9tQ3VycmVudEFuZFByZXZpb3VzUGFnZXMoKTtcbiAgICBjb25zdCBmb3JtRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5nZXRGaWx0ZXJlZENhc2VFdmVudERhdGEoYWxsQ2FzZUZpZWxkcywgZm9ybVZhbHVlLCBmYWxzZSwgdHJ1ZSwgZnJvbVByZXZpb3VzUGFnZSk7XG5cbiAgICAvLyBOb3cgaGVyZSdzIHRoZSBrZXkgdGhpbmcgLSB0aGUgcGFnZUV2ZW50RGF0YSBoYXMgYSBwcm9wZXJ0eSBjYWxsZWQgYGV2ZW50X2RhdGFgIGFuZFxuICAgIC8vIHdlIG5lZWQgVEhBVCB0byBiZSB0aGUgdmFsdWUgb2YgdGhlIGVudGlyZSBmb3JtOiBgZm9ybUV2ZW50RGF0YS5kYXRhYC5cbiAgICBwYWdlRXZlbnREYXRhLmV2ZW50X2RhdGEgPSBmb3JtRXZlbnREYXRhLmRhdGE7XG5cbiAgICAvLyBGaW5hbGlzZSB0aGUgQ2FzZUV2ZW50RGF0YSBvYmplY3QuXG4gICAgcGFnZUV2ZW50RGF0YS5ldmVudF90b2tlbiA9IHRoaXMuZXZlbnRUcmlnZ2VyLmV2ZW50X3Rva2VuO1xuICAgIHBhZ2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmNhc2VFZGl0Lmlnbm9yZVdhcm5pbmc7XG5cbiAgICAvLyBGaW5hbGx5LCB0cnkgdG8gc2V0IHVwIHRoZSBjYXNlX3JlZmVyZW5jZS5cbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscykge1xuICAgICAgcGFnZUV2ZW50RGF0YS5jYXNlX3JlZmVyZW5jZSA9IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuY2FzZV9pZDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIG5vdyBob3BlZnVsbHkgc2FuZSBDYXNlRXZlbnREYXRhLlxuICAgIHJldHVybiBwYWdlRXZlbnREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEFic3RyYWN0ZWQgdGhpcyBtZXRob2QgZnJvbSBidWlsZENhc2VFdmVudERhdGEgdG8gcmVtb3ZlIGR1cGxpY2F0aW9uLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgZmllbGRzIHRvIGZpbHRlciB0aGUgZGF0YSBieS5cbiAgICogQHBhcmFtIGZvcm1WYWx1ZSBUaGUgb3JpZ2luYWwgdmFsdWUgb2YgdGhlIGZvcm0uXG4gICAqIEBwYXJhbSBjbGVhckVtcHR5IFdoZXRoZXIgb3Igbm90IHRvIGNsZWFyIG91dCBlbXB0eSB2YWx1ZXMuXG4gICAqIEBwYXJhbSBjbGVhck5vbkNhc2UgV2hldGhlciBvciBub3QgdG8gY2xlYXIgb3V0IGZpZWxkcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgY2FzZS5cbiAgICogQHJldHVybnMgQ2FzZUV2ZW50RGF0YSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJlZENhc2VFdmVudERhdGEoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGZvcm1WYWx1ZTogb2JqZWN0LCBjbGVhckVtcHR5ID0gZmFsc2UsXG4gICAgY2xlYXJOb25DYXNlID0gZmFsc2UsIGZyb21QcmV2aW91c1BhZ2UgPSBmYWxzZSk6IENhc2VFdmVudERhdGEge1xuICAgIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpZWxkcyBzcGVjaWZpZWQuXG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5maWx0ZXJDdXJyZW50UGFnZUZpZWxkcyhjYXNlRmllbGRzLCBmb3JtVmFsdWUpO1xuXG4gICAgLy8gU29ydCBvdXQgdGhlIGR5bmFtaWMgbGlzdHMuXG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlRHluYW1pY0xpc3RzKGNhc2VGaWVsZHMsIGZvcm1GaWVsZHMpO1xuXG4gICAgLy8gR2V0IGhvbGQgb2YgdGhlIENhc2VFdmVudERhdGEuXG4gICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZShmb3JtRmllbGRzKSBhcyBDYXNlRXZlbnREYXRhO1xuXG4gICAgLy8gZGVsZXRlIGZpZWxkcyB3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIGNhc2UgZXZlbnQgam91cm5leSB3aXphcmQgcGFnZXMgY2FzZSBmaWVsZHNcbiAgICB0aGlzLnZhbGlkUGFnZUxpc3RDYXNlRmllbGRzU2VydmljZS5kZWxldGVOb25WYWxpZGF0ZWRGaWVsZHModGhpcy5jYXNlRWRpdC52YWxpZFBhZ2VMaXN0LCBjYXNlRXZlbnREYXRhLmRhdGEsIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCBmcm9tUHJldmlvdXNQYWdlLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10udmFsdWUpO1xuXG4gICAgLy8gVGlkeSBpdCB1cCBiZWZvcmUgd2UgcmV0dXJuIGl0LlxuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhjYXNlRXZlbnREYXRhLmRhdGEsIGNhc2VGaWVsZHMsIGNsZWFyRW1wdHksIGNsZWFyTm9uQ2FzZSxcbiAgICAgIGZyb21QcmV2aW91c1BhZ2UsIHRoaXMuY3VycmVudFBhZ2UuY2FzZV9maWVsZHMpO1xuXG4gICAgcmV0dXJuIGNhc2VFdmVudERhdGE7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDYXNlRWRpdERhdGFTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlRGV0YWlscyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0Q2FzZUV2ZW50VHJpZ2dlck5hbWUodGhpcy5ldmVudFRyaWdnZXIubmFtZSk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldENhc2VUaXRsZSh0aGlzLmdldENhc2VUaXRsZSgpKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0Q2FzZUVkaXRGb3JtKHRoaXMuZWRpdEZvcm0pO1xuICAgIHRoaXMuY2FzZUZvcm1WYWxpZGF0aW9uRXJyb3JzU3ViID0gdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VGb3JtVmFsaWRhdGlvbkVycm9ycyQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2YWxpZGF0aW9uRXJyb3JzKSA9PiB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0aW9uRXJyb3JzXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UnB4VHJhbnNsYXRlUGlwZUFyZ3MoZmllbGRMYWJlbDogc3RyaW5nKTogeyBGSUVMRExBQkVMOiBzdHJpbmcgfSB8IG51bGwge1xuICAgIHJldHVybiBmaWVsZExhYmVsID8gKHsgRklFTERMQUJFTDogZmllbGRMYWJlbCB9KSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25FdmVudENhbkJlQ29tcGxldGVkKGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm9uRXZlbnRDYW5CZUNvbXBsZXRlZCh7XG4gICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgZXZlbnRDYW5CZUNvbXBsZXRlZCxcbiAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLFxuICAgICAgZm9ybTogdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXQsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUFsbEp1ZGljaWFsVXNlckZvcm1Db250cm9scyhwYWdlOiBXaXphcmRQYWdlLCBlZGl0Rm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgcGFnZS5jYXNlX2ZpZWxkcy5mb3JFYWNoKGNhc2VGaWVsZCA9PiB7XG4gICAgICBpZiAoRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0p1ZGljaWFsVXNlciddKSkge1xuICAgICAgICAoZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXSBhcyBGb3JtR3JvdXApLnJlbW92ZUNvbnRyb2woYCR7Y2FzZUZpZWxkLmlkfV9qdWRpY2lhbFVzZXJDb250cm9sYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50UGFnZVwiPlxuICA8aDEgKm5nSWY9XCIhY3VycmVudFBhZ2UubGFiZWxcIiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7ZXZlbnRUcmlnZ2VyLm5hbWUgfCBycHhUcmFuc2xhdGV9fTwvaDE+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50UGFnZS5sYWJlbFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgZXZlbnRUcmlnZ2VyLm5hbWUgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57e2N1cnJlbnRQYWdlLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2gxPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbjxkaXYgKm5nSWY9XCJnZXRDYXNlVGl0bGUoKTsgdGhlbiB0aXRsZUJsb2NrOyBlbHNlIGlkQmxvY2tcIj48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjdGl0bGVCbG9jaz5cbiAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY2FzZUZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2lkQmxvY2s+XG4gIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEVycm9yIG1lc3NhZ2Ugc3VtbWFyeSAtLT5cbjxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlcIiBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCIgcm9sZT1cImFsZXJ0XCIgdGFiaW5kZXg9XCItMVwiIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgIHt7J1RoZXJlIGlzIGEgcHJvYmxlbScgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gyPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uRXJyb3Igb2YgdmFsaWRhdGlvbkVycm9yc1wiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgPGxpPlxuICAgICAgICA8YSAoY2xpY2spPVwibmF2aWdhdGVUb0Vycm9yRWxlbWVudCh2YWxpZGF0aW9uRXJyb3IuaWQpXCIgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+XG4gICAgICAgICAge3sgdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGU6IGdldFJweFRyYW5zbGF0ZVBpcGVBcmdzKHZhbGlkYXRpb25FcnJvci5sYWJlbCB8IHJweFRyYW5zbGF0ZSk6IG51bGwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48Y2NkLWNhc2UtZWRpdC1nZW5lcmljLWVycm9ycyBbZXJyb3JdPVwiY2FzZUVkaXQuZXJyb3JcIj48L2NjZC1jYXNlLWVkaXQtZ2VuZXJpYy1lcnJvcnM+XG5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FzZUVkaXQuY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48ZGl2IGNsYXNzPVwid2lkdGgtNTBcIj5cbiAgPGZvcm0gKm5nSWY9XCJjdXJyZW50UGFnZVwiIGNsYXNzPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgPGZpZWxkc2V0IGlkPVwiZmllbGRzZXQtY2FzZS1kYXRhXCI+XG4gICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgIDwhLS0gc2luZ2xlIGNvbHVtbiAtLT5cbiAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybScgKm5nSWY9XCIhY3VycmVudFBhZ2UuaXNNdWx0aUNvbHVtbigpXCIgW2ZpZWxkc109XCJjdXJyZW50UGFnZS5nZXRDb2wxRmllbGRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VDaGFuZ2VTdWJqZWN0XT1cInBhZ2VDaGFuZ2VTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlc0NoYW5nZWQpPVwiYXBwbHlWYWx1ZXNDaGFuZ2VkKCRldmVudClcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgIDwhLS0gdHdvIGNvbHVtbnMgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFBhZ2UuaXNNdWx0aUNvbHVtbigpXCIgY2xhc3M9XCJncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXR3by10aGlyZHMgcmlnaHRCb3JkZXJTZXBhcmF0b3JcIj5cbiAgICAgICAgICA8Y2NkLWNhc2UtZWRpdC1mb3JtIGlkPSdjYXNlRWRpdEZvcm0xJyBbZmllbGRzXT1cImN1cnJlbnRQYWdlLmdldENvbDFGaWVsZHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCI+PC9jY2QtY2FzZS1lZGl0LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS10aGlyZFwiPlxuICAgICAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybTInIFtmaWVsZHNdPVwiY3VycmVudFBhZ2UuZ2V0Q29sMkZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiEoaGFzUHJldmlvdXNQYWdlJCB8IGFzeW5jKVwiIChjbGljayk9XCJ0b1ByZXZpb3VzUGFnZSgpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiPnt7dHJpZ2dlclRleHQgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJjYW5jZWxcIj48YSAoY2xpY2spPVwiY2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+e3tnZXRDYW5jZWxUZXh0KCkgfCBycHhUcmFuc2xhdGV9fTwvYT48L3A+XG4gIDwvZm9ybT5cbjwvZGl2PlxuXG48Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImNhc2VFZGl0LmV2ZW50Q29tcGxldGlvblBhcmFtc1wiXG4gIChldmVudENhbkJlQ29tcGxldGVkKT1cIm9uRXZlbnRDYW5CZUNvbXBsZXRlZCgkZXZlbnQpXCI+XG48L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export var CaseEditSubmitTitles;
2
+ (function (CaseEditSubmitTitles) {
3
+ CaseEditSubmitTitles["REVIEW_SUPPORT_REQUEST"] = "Review support request";
4
+ CaseEditSubmitTitles["REVIEW_FLAG_DETAILS"] = "Review flag details";
5
+ CaseEditSubmitTitles["CHECK_YOUR_ANSWERS"] = "Check your answers";
6
+ })(CaseEditSubmitTitles || (CaseEditSubmitTitles = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC10aXRsZXMuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQtdGl0bGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM5Qix5RUFBaUQsQ0FBQTtJQUNqRCxtRUFBMkMsQ0FBQTtJQUMzQyxpRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBSlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUkvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENhc2VFZGl0U3VibWl0VGl0bGVzIHtcbiAgUkVWSUVXX1NVUFBPUlRfUkVRVUVTVCA9ICdSZXZpZXcgc3VwcG9ydCByZXF1ZXN0JyxcbiAgUkVWSUVXX0ZMQUdfREVUQUlMUyA9ICdSZXZpZXcgZmxhZyBkZXRhaWxzJyxcbiAgQ0hFQ0tfWU9VUl9BTlNXRVJTID0gJ0NoZWNrIHlvdXIgYW5zd2Vycydcbn1cbiJdfQ==