@hmcts/ccd-case-ui-toolkit 6.18.2 → 7.0.0-ConsoleLogs.3

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 (233) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +4246 -3053
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +1 -7
  6. package/esm2015/lib/components/banners/alert/alert.component.js +7 -5
  7. package/esm2015/lib/components/banners/alert/alert.module.js +12 -4
  8. package/esm2015/lib/components/footer/footer.component.js +55 -30
  9. package/esm2015/lib/components/footer/footers.module.js +12 -4
  10. package/esm2015/lib/components/form/date-input/date-input.component.js +56 -37
  11. package/esm2015/lib/components/form/form.module.js +8 -4
  12. package/esm2015/lib/components/header/header-bar/header-bar.component.js +32 -19
  13. package/esm2015/lib/components/header/headers.module.js +6 -4
  14. package/esm2015/lib/components/header/navigation/navigation-item.component.js +9 -7
  15. package/esm2015/lib/components/header/phase/phase.component.js +20 -9
  16. package/esm2015/lib/components/tabs/tabs.component.js +8 -5
  17. package/esm2015/lib/components/tabs/tabs.module.js +6 -2
  18. package/esm2015/lib/shared/commons/case-edit-data/case-edit-validation.model.js +1 -1
  19. package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +12 -9
  20. package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +11 -8
  21. package/esm2015/lib/shared/components/activity/activity.component.js +15 -10
  22. package/esm2015/lib/shared/components/activity/activity.module.js +6 -2
  23. package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +2 -2
  24. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +1 -1
  25. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +29 -25
  26. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +50 -33
  27. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +27 -22
  28. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +30 -26
  29. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +51 -26
  30. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +51 -28
  31. package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +2 -2
  32. package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +3 -2
  33. package/esm2015/lib/shared/components/case-editor/services/case.notifier.js +8 -1
  34. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +16 -2
  35. package/esm2015/lib/shared/components/case-editor/services/work-allocation.service.js +2 -2
  36. package/esm2015/lib/shared/components/case-history/case-history.component.js +89 -63
  37. package/esm2015/lib/shared/components/case-history/case-history.module.js +18 -14
  38. package/esm2015/lib/shared/components/case-list/case-list.component.js +56 -49
  39. package/esm2015/lib/shared/components/case-list/case-list.module.js +8 -4
  40. package/esm2015/lib/shared/components/case-list-filters/case-list-filters.module.js +11 -7
  41. package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +9 -6
  42. package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +12 -8
  43. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +106 -61
  44. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +90 -69
  45. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +45 -23
  46. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +12 -4
  47. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +105 -78
  48. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +32 -20
  49. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +107 -79
  50. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +79 -49
  51. package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +4 -3
  52. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +5 -1
  53. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +34 -27
  54. package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +36 -22
  55. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +12 -4
  56. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.component.js +63 -40
  57. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.module.js +6 -2
  58. package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +28 -14
  59. package/esm2015/lib/shared/components/dialogs/dialogs.module.js +6 -2
  60. package/esm2015/lib/shared/components/dialogs/document-dialog/document-dialog.component.js +28 -14
  61. package/esm2015/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.js +28 -14
  62. package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +28 -14
  63. package/esm2015/lib/shared/components/error/callback-errors.component.js +34 -23
  64. package/esm2015/lib/shared/components/error/errors.module.js +6 -2
  65. package/esm2015/lib/shared/components/error-message/error-message.component.js +14 -11
  66. package/esm2015/lib/shared/components/error-message/error-message.module.js +8 -4
  67. package/esm2015/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.js +39 -20
  68. package/esm2015/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.js +34 -18
  69. package/esm2015/lib/shared/components/event-start/components/task-assigned/task-assigned.component.js +34 -19
  70. package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +50 -25
  71. package/esm2015/lib/shared/components/event-start/components/task-conflict/task-conflict.component.js +39 -20
  72. package/esm2015/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.js +34 -18
  73. package/esm2015/lib/shared/components/event-start/event-start.module.js +8 -4
  74. package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +27 -17
  75. package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +6 -2
  76. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +7 -5
  77. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.module.js +6 -2
  78. package/esm2015/lib/shared/components/pagination/pagination.component.js +84 -67
  79. package/esm2015/lib/shared/components/pagination/pagination.module.js +8 -4
  80. package/esm2015/lib/shared/components/palette/address/write-address-field.component.js +50 -31
  81. package/esm2015/lib/shared/components/palette/base-field/abstract-field-read.component.js +1 -1
  82. package/esm2015/lib/shared/components/palette/base-field/field-read-label.component.js +10 -8
  83. package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +5 -1
  84. package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +1 -1
  85. package/esm2015/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.js +54 -35
  86. package/esm2015/lib/shared/components/palette/case-flag/components/index.js +5 -5
  87. package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +29 -19
  88. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.js +41 -29
  89. package/esm2015/lib/shared/components/palette/case-flag/index.js +1 -1
  90. package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +29 -24
  91. package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +16 -12
  92. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +45 -32
  93. package/esm2015/lib/shared/components/palette/complex/read-complex-field-collection-table.component.js +50 -46
  94. package/esm2015/lib/shared/components/palette/complex/read-complex-field-raw.component.js +7 -6
  95. package/esm2015/lib/shared/components/palette/complex/read-complex-field-table.component.js +22 -20
  96. package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +5 -4
  97. package/esm2015/lib/shared/components/palette/date/write-date-field.component.js +16 -12
  98. package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +29 -17
  99. package/esm2015/lib/shared/components/palette/document/write-document-field.component.js +31 -25
  100. package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +9 -7
  101. package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +32 -20
  102. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.js +12 -7
  103. package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +9 -7
  104. package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +26 -17
  105. package/esm2015/lib/shared/components/palette/email/write-email-field.component.js +16 -12
  106. package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +9 -7
  107. package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +19 -14
  108. package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +9 -7
  109. package/esm2015/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.js +20 -15
  110. package/esm2015/lib/shared/components/palette/history/event-log/event-log-details.component.js +87 -65
  111. package/esm2015/lib/shared/components/palette/history/event-log/event-log-table.component.js +60 -46
  112. package/esm2015/lib/shared/components/palette/index.js +2 -2
  113. package/esm2015/lib/shared/components/palette/label/label-field.component.js +24 -5
  114. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.js +1 -1
  115. package/esm2015/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.js +16 -12
  116. package/esm2015/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.js +15 -11
  117. package/esm2015/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +19 -14
  118. package/esm2015/lib/shared/components/palette/number/write-number-field.component.js +16 -12
  119. package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-field.component.js +43 -25
  120. package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-row.component.js +7 -6
  121. package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-raw.component.js +41 -29
  122. package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-table.component.js +48 -35
  123. package/esm2015/lib/shared/components/palette/organisation/write-organisation-field.component.js +88 -50
  124. package/esm2015/lib/shared/components/palette/palette.module.js +95 -65
  125. package/esm2015/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.js +16 -12
  126. package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +7 -5
  127. package/esm2015/lib/shared/components/palette/text/write-text-field.component.js +16 -12
  128. package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +7 -5
  129. package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +16 -12
  130. package/esm2015/lib/shared/components/palette/utils/first-error.pipe.js +22 -11
  131. package/esm2015/lib/shared/components/palette/utils/utils.module.js +12 -6
  132. package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +1 -1
  133. package/esm2015/lib/shared/components/palette/yes-no/write-yes-no-field.component.js +16 -12
  134. package/esm2015/lib/shared/components/search-filters/search-filters.component.js +60 -35
  135. package/esm2015/lib/shared/components/search-filters/search-filters.module.js +14 -10
  136. package/esm2015/lib/shared/components/search-result/search-result.component.js +132 -95
  137. package/esm2015/lib/shared/components/search-result/search-result.module.js +16 -13
  138. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +90 -52
  139. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.module.js +13 -9
  140. package/esm2015/lib/shared/domain/alert/alert-status-params.model.js +2 -0
  141. package/esm2015/lib/shared/services/alert/alert.service.js +28 -8
  142. package/esm2015/lib/shared/services/http/http-error.service.js +3 -1
  143. package/esm2015/lib/shared/services/loading/loading.service.js +5 -1
  144. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +3989 -2828
  145. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  146. package/lib/app.config.d.ts +2 -2
  147. package/lib/app.config.d.ts.map +1 -1
  148. package/lib/components/banners/alert/alert.module.d.ts +2 -1
  149. package/lib/components/banners/alert/alert.module.d.ts.map +1 -1
  150. package/lib/components/footer/footers.module.d.ts +2 -1
  151. package/lib/components/footer/footers.module.d.ts.map +1 -1
  152. package/lib/components/form/form.module.d.ts +2 -1
  153. package/lib/components/form/form.module.d.ts.map +1 -1
  154. package/lib/components/header/headers.module.d.ts +2 -1
  155. package/lib/components/header/headers.module.d.ts.map +1 -1
  156. package/lib/components/tabs/tabs.component.d.ts.map +1 -1
  157. package/lib/components/tabs/tabs.module.d.ts +2 -1
  158. package/lib/components/tabs/tabs.module.d.ts.map +1 -1
  159. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts +1 -0
  160. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts.map +1 -1
  161. package/lib/shared/components/activity/activity.module.d.ts +2 -1
  162. package/lib/shared/components/activity/activity.module.d.ts.map +1 -1
  163. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  164. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +5 -5
  165. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  166. package/lib/shared/components/case-editor/case-editor.module.d.ts +3 -2
  167. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  168. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -1
  169. package/lib/shared/components/case-editor/services/case.notifier.d.ts.map +1 -1
  170. package/lib/shared/components/case-editor/services/cases.service.d.ts +2 -0
  171. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  172. package/lib/shared/components/case-history/case-history.module.d.ts +2 -1
  173. package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
  174. package/lib/shared/components/case-list/case-list.module.d.ts +2 -1
  175. package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
  176. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +2 -1
  177. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
  178. package/lib/shared/components/case-timeline/case-timeline.module.d.ts +2 -1
  179. package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
  180. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  181. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +1 -1
  182. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts.map +1 -1
  183. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -1
  184. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +7 -5
  185. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  186. package/lib/shared/components/case-viewer/services/case.resolver.d.ts +1 -1
  187. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  188. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts +2 -1
  189. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts.map +1 -1
  190. package/lib/shared/components/dialogs/dialogs.module.d.ts +2 -1
  191. package/lib/shared/components/dialogs/dialogs.module.d.ts.map +1 -1
  192. package/lib/shared/components/error/errors.module.d.ts +2 -1
  193. package/lib/shared/components/error/errors.module.d.ts.map +1 -1
  194. package/lib/shared/components/error-message/error-message.module.d.ts +2 -1
  195. package/lib/shared/components/error-message/error-message.module.d.ts.map +1 -1
  196. package/lib/shared/components/event-start/event-start.module.d.ts +2 -1
  197. package/lib/shared/components/event-start/event-start.module.d.ts.map +1 -1
  198. package/lib/shared/components/event-trigger/event-trigger.module.d.ts +2 -1
  199. package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -1
  200. package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts +2 -1
  201. package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts.map +1 -1
  202. package/lib/shared/components/pagination/pagination.module.d.ts +2 -1
  203. package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
  204. package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts.map +1 -1
  205. package/lib/shared/components/palette/base-field/field-read.component.d.ts +1 -0
  206. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  207. package/lib/shared/components/palette/case-flag/components/index.d.ts +4 -4
  208. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  209. package/lib/shared/components/palette/index.d.ts +1 -1
  210. package/lib/shared/components/palette/index.d.ts.map +1 -1
  211. package/lib/shared/components/palette/label/label-field.component.d.ts +2 -1
  212. package/lib/shared/components/palette/label/label-field.component.d.ts.map +1 -1
  213. package/lib/shared/components/palette/palette.module.d.ts +88 -87
  214. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  215. package/lib/shared/components/palette/utils/first-error.pipe.d.ts +3 -0
  216. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  217. package/lib/shared/components/palette/utils/utils.module.d.ts +2 -1
  218. package/lib/shared/components/palette/utils/utils.module.d.ts.map +1 -1
  219. package/lib/shared/components/palette/yes-no/read-yes-no-field.component.d.ts.map +1 -1
  220. package/lib/shared/components/palette/yes-no/write-yes-no-field.component.d.ts.map +1 -1
  221. package/lib/shared/components/search-filters/search-filters.module.d.ts +2 -1
  222. package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
  223. package/lib/shared/components/search-result/search-result.module.d.ts +3 -2
  224. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
  225. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +2 -1
  226. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
  227. package/lib/shared/domain/alert/alert-status-params.model.d.ts +6 -0
  228. package/lib/shared/domain/alert/alert-status-params.model.d.ts.map +1 -0
  229. package/lib/shared/services/alert/alert.service.d.ts +8 -4
  230. package/lib/shared/services/alert/alert.service.d.ts.map +1 -1
  231. package/lib/shared/services/http/http-error.service.d.ts.map +1 -1
  232. package/lib/shared/services/loading/loading.service.d.ts.map +1 -1
  233. package/package.json +1 -1
@@ -21,21 +21,31 @@ function WriteOrganisationFieldComponent_fieldset_1_Template(rf, ctx) { if (rf &
21
21
  i0.ɵɵnamespaceHTML();
22
22
  i0.ɵɵelementStart(5, "div", 7);
23
23
  i0.ɵɵelementStart(6, "span", 8);
24
- i0.ɵɵtext(7, "information");
24
+ i0.ɵɵtext(7);
25
+ i0.ɵɵpipe(8, "rpxTranslate");
25
26
  i0.ɵɵelementEnd();
26
- i0.ɵɵelementStart(8, "p", 9);
27
- i0.ɵɵtext(9, "Organisation search is currently unavailable.");
27
+ i0.ɵɵelementStart(9, "p", 9);
28
+ i0.ɵɵtext(10);
29
+ i0.ɵɵpipe(11, "rpxTranslate");
28
30
  i0.ɵɵelementEnd();
29
31
  i0.ɵɵelementEnd();
30
32
  i0.ɵɵelementEnd();
31
- i0.ɵɵelementStart(10, "div", 10);
32
- i0.ɵɵelementStart(11, "div", 9);
33
- i0.ɵɵtext(12, " We are working to fix the issue. You can try again later. ");
33
+ i0.ɵɵelementStart(12, "div", 10);
34
+ i0.ɵɵelementStart(13, "div", 9);
35
+ i0.ɵɵtext(14);
36
+ i0.ɵɵpipe(15, "rpxTranslate");
34
37
  i0.ɵɵelementEnd();
35
38
  i0.ɵɵelementEnd();
36
39
  i0.ɵɵelementEnd();
40
+ } if (rf & 2) {
41
+ i0.ɵɵadvance(7);
42
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 3, "information"));
43
+ i0.ɵɵadvance(3);
44
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 5, "Organisation search is currently unavailable."));
45
+ i0.ɵɵadvance(4);
46
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 7, "We are working to fix the issue.You can try again later."), " ");
37
47
  } }
38
- function WriteOrganisationFieldComponent_fieldset_3_div_14_table_2_Template(rf, ctx) { if (rf & 1) {
48
+ function WriteOrganisationFieldComponent_fieldset_3_div_17_table_2_Template(rf, ctx) { if (rf & 1) {
39
49
  const _r9 = i0.ɵɵgetCurrentView();
40
50
  i0.ɵɵelementStart(0, "table", 29);
41
51
  i0.ɵɵelementStart(1, "caption");
@@ -51,8 +61,10 @@ function WriteOrganisationFieldComponent_fieldset_3_div_14_table_2_Template(rf,
51
61
  i0.ɵɵelementEnd();
52
62
  i0.ɵɵelementStart(9, "td", 33);
53
63
  i0.ɵɵelementStart(10, "a", 34);
54
- i0.ɵɵlistener("click", function WriteOrganisationFieldComponent_fieldset_3_div_14_table_2_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r9); const organisation_r7 = ctx.$implicit; const ctx_r8 = i0.ɵɵnextContext(3); return ctx_r8.selectOrg(organisation_r7); });
55
- i0.ɵɵtext(11, "Select");
64
+ i0.ɵɵlistener("click", function WriteOrganisationFieldComponent_fieldset_3_div_17_table_2_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r9); const organisation_r7 = ctx.$implicit; const ctx_r8 = i0.ɵɵnextContext(3); return ctx_r8.selectOrg(organisation_r7); });
65
+ i0.ɵɵpipe(11, "rpxTranslate");
66
+ i0.ɵɵtext(12);
67
+ i0.ɵɵpipe(13, "rpxTranslate");
56
68
  i0.ɵɵelementEnd();
57
69
  i0.ɵɵelementEnd();
58
70
  i0.ɵɵelementEnd();
@@ -65,22 +77,28 @@ function WriteOrganisationFieldComponent_fieldset_3_div_14_table_2_Template(rf,
65
77
  i0.ɵɵadvance(5);
66
78
  i0.ɵɵproperty("content", organisation_r7.address);
67
79
  i0.ɵɵadvance(2);
68
- i0.ɵɵpropertyInterpolate1("title", "Select the organisation ", organisation_r7.name, "");
80
+ i0.ɵɵpropertyInterpolate2("title", "", i0.ɵɵpipeBind1(11, 5, "Select the organisation"), " ", organisation_r7.name, "");
81
+ i0.ɵɵadvance(2);
82
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 7, "Select"), " ");
69
83
  } }
70
- function WriteOrganisationFieldComponent_fieldset_3_div_14_div_4_Template(rf, ctx) { if (rf & 1) {
84
+ function WriteOrganisationFieldComponent_fieldset_3_div_17_div_4_Template(rf, ctx) { if (rf & 1) {
71
85
  i0.ɵɵelementStart(0, "div");
72
86
  i0.ɵɵelementStart(1, "div", 35);
73
- i0.ɵɵtext(2, " No results found. ");
87
+ i0.ɵɵtext(2);
88
+ i0.ɵɵpipe(3, "rpxTranslate");
74
89
  i0.ɵɵelementEnd();
75
90
  i0.ɵɵelementEnd();
91
+ } if (rf & 2) {
92
+ i0.ɵɵadvance(2);
93
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "No results found."), " ");
76
94
  } }
77
95
  const _c0 = function (a0) { return { "scroll-container ": a0 }; };
78
- function WriteOrganisationFieldComponent_fieldset_3_div_14_Template(rf, ctx) { if (rf & 1) {
96
+ function WriteOrganisationFieldComponent_fieldset_3_div_17_Template(rf, ctx) { if (rf & 1) {
79
97
  i0.ɵɵelementStart(0, "div", 26);
80
98
  i0.ɵɵpipe(1, "async");
81
- i0.ɵɵtemplate(2, WriteOrganisationFieldComponent_fieldset_3_div_14_table_2_Template, 12, 3, "table", 27);
99
+ i0.ɵɵtemplate(2, WriteOrganisationFieldComponent_fieldset_3_div_17_table_2_Template, 14, 9, "table", 27);
82
100
  i0.ɵɵpipe(3, "async");
83
- i0.ɵɵtemplate(4, WriteOrganisationFieldComponent_fieldset_3_div_14_div_4_Template, 3, 0, "div", 28);
101
+ i0.ɵɵtemplate(4, WriteOrganisationFieldComponent_fieldset_3_div_17_div_4_Template, 4, 3, "div", 28);
84
102
  i0.ɵɵpipe(5, "async");
85
103
  i0.ɵɵpipe(6, "async");
86
104
  i0.ɵɵelementEnd();
@@ -94,7 +112,7 @@ function WriteOrganisationFieldComponent_fieldset_3_div_14_Template(rf, ctx) { i
94
112
  i0.ɵɵadvance(2);
95
113
  i0.ɵɵproperty("ngIf", ((tmp_2_0 = i0.ɵɵpipeBind1(5, 7, ctx_r2.simpleOrganisations$)) == null ? null : tmp_2_0.length) === 0 && ((tmp_2_0 = i0.ɵɵpipeBind1(6, 9, ctx_r2.searchOrgValue$)) == null ? null : tmp_2_0.length) > 2);
96
114
  } }
97
- function WriteOrganisationFieldComponent_fieldset_3_ng_template_16_table_0_Template(rf, ctx) { if (rf & 1) {
115
+ function WriteOrganisationFieldComponent_fieldset_3_ng_template_19_table_0_Template(rf, ctx) { if (rf & 1) {
98
116
  const _r13 = i0.ɵɵgetCurrentView();
99
117
  i0.ɵɵelementStart(0, "table", 37);
100
118
  i0.ɵɵelementStart(1, "caption");
@@ -110,8 +128,10 @@ function WriteOrganisationFieldComponent_fieldset_3_ng_template_16_table_0_Templ
110
128
  i0.ɵɵelementEnd();
111
129
  i0.ɵɵelementStart(9, "td", 33);
112
130
  i0.ɵɵelementStart(10, "a", 34);
113
- i0.ɵɵlistener("click", function WriteOrganisationFieldComponent_fieldset_3_ng_template_16_table_0_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(3); return ctx_r12.deSelectOrg(); });
114
- i0.ɵɵtext(11, "Clear");
131
+ i0.ɵɵlistener("click", function WriteOrganisationFieldComponent_fieldset_3_ng_template_19_table_0_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(3); return ctx_r12.deSelectOrg(); });
132
+ i0.ɵɵpipe(11, "rpxTranslate");
133
+ i0.ɵɵtext(12);
134
+ i0.ɵɵpipe(13, "rpxTranslate");
115
135
  i0.ɵɵelementEnd();
116
136
  i0.ɵɵelementEnd();
117
137
  i0.ɵɵelementEnd();
@@ -124,10 +144,12 @@ function WriteOrganisationFieldComponent_fieldset_3_ng_template_16_table_0_Templ
124
144
  i0.ɵɵadvance(5);
125
145
  i0.ɵɵproperty("content", selectedOrg_r11.address);
126
146
  i0.ɵɵadvance(2);
127
- i0.ɵɵpropertyInterpolate1("title", "Clear organisation selection for ", selectedOrg_r11.name, "");
147
+ i0.ɵɵpropertyInterpolate2("title", "", i0.ɵɵpipeBind1(11, 5, "Clear organisation selection for"), " ", selectedOrg_r11.name, "");
148
+ i0.ɵɵadvance(2);
149
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 7, "Clear"), " ");
128
150
  } }
129
- function WriteOrganisationFieldComponent_fieldset_3_ng_template_16_Template(rf, ctx) { if (rf & 1) {
130
- i0.ɵɵtemplate(0, WriteOrganisationFieldComponent_fieldset_3_ng_template_16_table_0_Template, 12, 3, "table", 36);
151
+ function WriteOrganisationFieldComponent_fieldset_3_ng_template_19_Template(rf, ctx) { if (rf & 1) {
152
+ i0.ɵɵtemplate(0, WriteOrganisationFieldComponent_fieldset_3_ng_template_19_table_0_Template, 14, 9, "table", 36);
131
153
  i0.ɵɵpipe(1, "async");
132
154
  } if (rf & 2) {
133
155
  const ctx_r4 = i0.ɵɵnextContext(2);
@@ -137,50 +159,66 @@ function WriteOrganisationFieldComponent_fieldset_3_Template(rf, ctx) { if (rf &
137
159
  i0.ɵɵelementStart(0, "fieldset", 2);
138
160
  i0.ɵɵelementStart(1, "legend", 11);
139
161
  i0.ɵɵelementStart(2, "h2", 12);
140
- i0.ɵɵtext(3, " Search for an organisation ");
162
+ i0.ɵɵtext(3);
163
+ i0.ɵɵpipe(4, "rpxTranslate");
141
164
  i0.ɵɵelementEnd();
142
165
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(4, "div", 13);
144
- i0.ɵɵelementStart(5, "label", 14);
145
- i0.ɵɵelementStart(6, "span", 15);
146
- i0.ɵɵtext(7, " You can only search for organisations already registered with MyHMCTS. For example, you can search by organisation name or address. ");
166
+ i0.ɵɵelementStart(5, "div", 13);
167
+ i0.ɵɵelementStart(6, "label", 14);
168
+ i0.ɵɵelementStart(7, "span", 15);
169
+ i0.ɵɵtext(8);
170
+ i0.ɵɵpipe(9, "rpxTranslate");
147
171
  i0.ɵɵelementEnd();
148
172
  i0.ɵɵelementEnd();
149
- i0.ɵɵelement(8, "input", 16);
173
+ i0.ɵɵelement(10, "input", 16);
150
174
  i0.ɵɵelementEnd();
151
- i0.ɵɵelementStart(9, "div", 13);
152
- i0.ɵɵelementStart(10, "label", 17);
153
- i0.ɵɵelementStart(11, "h2", 12);
154
- i0.ɵɵtext(12, "Organisation name and address");
175
+ i0.ɵɵelementStart(11, "div", 13);
176
+ i0.ɵɵelementStart(12, "label", 17);
177
+ i0.ɵɵelementStart(13, "h2", 12);
178
+ i0.ɵɵtext(14);
179
+ i0.ɵɵpipe(15, "rpxTranslate");
155
180
  i0.ɵɵelementEnd();
156
181
  i0.ɵɵelementEnd();
157
- i0.ɵɵelement(13, "hr", 18);
158
- i0.ɵɵtemplate(14, WriteOrganisationFieldComponent_fieldset_3_div_14_Template, 7, 13, "div", 19);
159
- i0.ɵɵpipe(15, "async");
160
- i0.ɵɵtemplate(16, WriteOrganisationFieldComponent_fieldset_3_ng_template_16_Template, 2, 3, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
182
+ i0.ɵɵelement(16, "hr", 18);
183
+ i0.ɵɵtemplate(17, WriteOrganisationFieldComponent_fieldset_3_div_17_Template, 7, 13, "div", 19);
184
+ i0.ɵɵpipe(18, "async");
185
+ i0.ɵɵtemplate(19, WriteOrganisationFieldComponent_fieldset_3_ng_template_19_Template, 2, 3, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
161
186
  i0.ɵɵelementEnd();
162
- i0.ɵɵelement(18, "ccd-write-organisation-complex-field", 21);
163
- i0.ɵɵelementStart(19, "details", 22);
164
- i0.ɵɵelementStart(20, "summary", 23);
165
- i0.ɵɵelementStart(21, "span", 24);
166
- i0.ɵɵtext(22, " Can\u2019t find the organisation you are looking for? ");
187
+ i0.ɵɵelement(21, "ccd-write-organisation-complex-field", 21);
188
+ i0.ɵɵelementStart(22, "details", 22);
189
+ i0.ɵɵelementStart(23, "summary", 23);
190
+ i0.ɵɵelementStart(24, "span", 24);
191
+ i0.ɵɵtext(25);
192
+ i0.ɵɵpipe(26, "rpxTranslate");
167
193
  i0.ɵɵelementEnd();
168
194
  i0.ɵɵelementEnd();
169
- i0.ɵɵelementStart(23, "div", 25);
170
- i0.ɵɵtext(24, " If you know that the solicitor is already registered with MyHMCTS, check that you have entered their details correctly. Remember that organisations can only register one office address. This means that the details could be slightly different from what you're expecting. Contact the solicitor directly if you have any concerns. ");
195
+ i0.ɵɵelementStart(27, "div", 25);
196
+ i0.ɵɵtext(28);
197
+ i0.ɵɵpipe(29, "rpxTranslate");
198
+ i0.ɵɵpipe(30, "rpxTranslate");
171
199
  i0.ɵɵelementEnd();
172
200
  i0.ɵɵelementEnd();
173
201
  i0.ɵɵelementEnd();
174
202
  } if (rf & 2) {
175
- const _r3 = i0.ɵɵreference(17);
203
+ const _r3 = i0.ɵɵreference(20);
176
204
  const ctx_r1 = i0.ɵɵnextContext();
177
- let tmp_1_0 = null;
178
- i0.ɵɵadvance(8);
205
+ let tmp_4_0 = null;
206
+ i0.ɵɵadvance(3);
207
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 12, "Search for an organisation"), " ");
208
+ i0.ɵɵadvance(5);
209
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(9, 14, "You can only search for organisations already registered with MyHMCTS. For example, you can search by organisation name or address."), " ");
210
+ i0.ɵɵadvance(2);
179
211
  i0.ɵɵproperty("formControl", ctx_r1.searchOrgTextFormControl);
180
- i0.ɵɵadvance(6);
181
- i0.ɵɵproperty("ngIf", !((tmp_1_0 = i0.ɵɵpipeBind1(15, 6, ctx_r1.selectedOrg$)) == null ? null : tmp_1_0.organisationIdentifier))("ngIfElse", _r3);
212
+ i0.ɵɵadvance(4);
213
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 16, "Organisation name and address"));
214
+ i0.ɵɵadvance(3);
215
+ i0.ɵɵproperty("ngIf", !((tmp_4_0 = i0.ɵɵpipeBind1(18, 18, ctx_r1.selectedOrg$)) == null ? null : tmp_4_0.organisationIdentifier))("ngIfElse", _r3);
182
216
  i0.ɵɵadvance(4);
183
217
  i0.ɵɵproperty("caseField", ctx_r1.caseField)("formGroup", ctx_r1.formGroup)("selectedOrg$", ctx_r1.selectedOrg$);
218
+ i0.ɵɵadvance(4);
219
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 20, "Can\u2019t find the organisation you are looking for?"), " ");
220
+ i0.ɵɵadvance(3);
221
+ i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(29, 22, "If you know that the solicitor is already registered with MyHMCTS, check that you have entered their details correctly."), " ", i0.ɵɵpipeBind1(30, 24, "Remember that organisations can only register one office address. This means that the details could be slightly different from what you're expecting. Contact the solicitor directly if you have any concerns."), " ");
184
222
  } }
185
223
  export class WriteOrganisationFieldComponent extends AbstractFieldWriteComponent {
186
224
  constructor(organisationService, organisationConverter, windowService) {
@@ -365,9 +403,9 @@ WriteOrganisationFieldComponent.MANDATORY = 'MANDATORY';
365
403
  WriteOrganisationFieldComponent.ɵfac = function WriteOrganisationFieldComponent_Factory(t) { return new (t || WriteOrganisationFieldComponent)(i0.ɵɵdirectiveInject(i1.OrganisationService), i0.ɵɵdirectiveInject(i2.OrganisationConverter), i0.ɵɵdirectiveInject(i3.WindowService)); };
366
404
  WriteOrganisationFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteOrganisationFieldComponent, selectors: [["ccd-write-organisation-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 7, consts: [[1, "form-group", 3, "formGroup"], ["class", "govuk-fieldset", 4, "ngIf"], [1, "govuk-fieldset"], [2, "display", "none"], [1, "hmcts-banner"], ["fill", "currentColor", "role", "presentation", "focusable", "false", "xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 25 25", "height", "25", "width", "25", 1, "hmcts-banner__icon"], ["d", "M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\n C13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z"], [1, "hmcts-banner__message"], [1, "hmcts-banner__assistive"], [1, "warning-message"], [1, "warning-panel"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "heading-h2"], [1, "govuk-form-group"], ["for", "search-org-text", 1, "govuk-label"], ["id", "search-org-hint", 1, "govuk-hint"], ["id", "search-org-text", "type", "text", 1, "form-control", 3, "formControl"], ["for", "organisation-table", 1, "govuk-label"], [1, "govuk-section-break", "govuk-section-break--visible"], [3, "ngClass", 4, "ngIf", "ngIfElse"], ["selectedOrganisation", ""], [3, "caseField", "formGroup", "selectedOrg$"], ["id", "find-organisation-help", "data-module", "govuk-details", 1, "govuk-details"], [1, "govuk-details__summary"], ["id", "content-why-can-not-find-organisation", 1, "govuk-details__summary-text"], ["id", "content-reason-can-not-find-organisation", 1, "govuk-details__text"], [3, "ngClass"], ["id", "organisation-table", 4, "ngFor", "ngForOf"], [4, "ngIf"], ["id", "organisation-table"], [1, "name-header"], [1, "td-address"], [3, "content"], [1, "td-select"], ["href", "javascript:void(0);", 3, "title", "click"], [1, "no-result-message"], ["id", "organisation-selected-table", 4, "ngIf"], ["id", "organisation-selected-table"]], template: function WriteOrganisationFieldComponent_Template(rf, ctx) { if (rf & 1) {
367
405
  i0.ɵɵelementStart(0, "div", 0);
368
- i0.ɵɵtemplate(1, WriteOrganisationFieldComponent_fieldset_1_Template, 13, 0, "fieldset", 1);
406
+ i0.ɵɵtemplate(1, WriteOrganisationFieldComponent_fieldset_1_Template, 16, 9, "fieldset", 1);
369
407
  i0.ɵɵpipe(2, "async");
370
- i0.ɵɵtemplate(3, WriteOrganisationFieldComponent_fieldset_3_Template, 25, 8, "fieldset", 1);
408
+ i0.ɵɵtemplate(3, WriteOrganisationFieldComponent_fieldset_3_Template, 31, 26, "fieldset", 1);
371
409
  i0.ɵɵpipe(4, "async");
372
410
  i0.ɵɵelementEnd();
373
411
  } if (rf & 2) {
@@ -387,4 +425,4 @@ WriteOrganisationFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteOrga
387
425
  styleUrls: ['./organisation-field.scss']
388
426
  }]
389
427
  }], function () { return [{ type: i1.OrganisationService }, { type: i2.OrganisationConverter }, { type: i3.WindowService }]; }, null); })();
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtb3JnYW5pc2F0aW9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL29yZ2FuaXNhdGlvbi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvb3JnYW5pc2F0aW9uL3dyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scURBQXFELENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7SUNUekYsbUNBQWdGO0lBQzlFLDRCQUF3QztJQUN4Qyw4QkFBMEI7SUFDeEIsbUJBQXdLO0lBQXhLLDhCQUF3SztJQUN0SywwQkFDd0c7SUFBQSxpQkFBTTtJQUNoSCxvQkFBbUM7SUFBbkMsOEJBQW1DO0lBQ2pDLCtCQUFzQztJQUFBLDJCQUFXO0lBQUEsaUJBQU87SUFDdEQsNEJBQTJCO0lBQUEsNkRBQTZDO0lBQUEsaUJBQUk7SUFDaEYsaUJBQU07SUFDUixpQkFBTTtJQUNOLGdDQUEyQjtJQUN6QiwrQkFBNkI7SUFDM0IsNEVBQ0Y7SUFBQSxpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQVc7Ozs7SUFxQkwsaUNBQTJGO0lBQ3pGLCtCQUFTO0lBQUEsOEJBQXdCO0lBQUEsWUFBcUI7SUFBQSxpQkFBSztJQUFBLGlCQUFVO0lBQ3JFLDZCQUFPO0lBQ0wsMEJBQUk7SUFDRix3QkFBZ0M7SUFDaEMsOEJBQXVCO0lBQ3JCLG1DQUE4RDtJQUNoRSxpQkFBSztJQUNMLDhCQUFzQjtJQUNwQiw4QkFBc0g7SUFBeEYseVFBQWlDO0lBQXVELHVCQUFNO0lBQUEsaUJBQUk7SUFDbEksaUJBQUs7SUFDUCxpQkFBSztJQUNQLGlCQUFRO0lBQ1YsaUJBQVE7OztJQVoyQixlQUFxQjtJQUFyQiwwQ0FBcUI7SUFLbEMsZUFBZ0M7SUFBaEMsaURBQWdDO0lBR2tCLGVBQXFEO0lBQXJELHdGQUFxRDs7O0lBSzdILDJCQUFtRztJQUNqRywrQkFBK0I7SUFDN0IsbUNBQ0Y7SUFBQSxpQkFBTTtJQUNSLGlCQUFNOzs7O0lBbkJSLCtCQUF1Szs7SUFDckssd0dBYVE7O0lBQ1IsbUdBSU07OztJQUNSLGlCQUFNOzs7OztJQXBCa0YsMkpBQThFO0lBQzVHLGVBQWlDO0lBQWpDLDJFQUFpQztJQWNuRixlQUEyRjtJQUEzRiw4TkFBMkY7Ozs7SUFPakcsaUNBQXNGO0lBQ3BGLCtCQUFTO0lBQUEsOEJBQXdCO0lBQUEsWUFBb0I7SUFBQSxpQkFBSztJQUFBLGlCQUFVO0lBQ3BFLDZCQUFPO0lBQ0wsMEJBQUk7SUFDRix3QkFBZ0M7SUFDaEMsOEJBQXVCO0lBQ3JCLG1DQUE2RDtJQUMvRCxpQkFBSztJQUNMLDhCQUFzQjtJQUNwQiw4QkFBb0g7SUFBdEYsZ09BQXVCO0lBQStELHNCQUFLO0lBQUEsaUJBQUk7SUFDL0gsaUJBQUs7SUFDUCxpQkFBSztJQUNQLGlCQUFRO0lBQ1YsaUJBQVE7OztJQVoyQixlQUFvQjtJQUFwQiwwQ0FBb0I7SUFLakMsZUFBK0I7SUFBL0IsaURBQStCO0lBR1MsZUFBNkQ7SUFBN0QsaUdBQTZEOzs7SUFUM0gsZ0hBYVE7Ozs7SUFiaUMsZ0VBQTZCOzs7SUF6QzVFLG1DQUE4RTtJQUM1RSxrQ0FBaUU7SUFDL0QsOEJBQXVCO0lBQ3JCLDRDQUNGO0lBQUEsaUJBQUs7SUFDUCxpQkFBUztJQUNULCtCQUE4QjtJQUM1QixpQ0FBaUQ7SUFDL0MsZ0NBQThDO0lBQzVDLHFKQUNGO0lBQUEsaUJBQU87SUFDVCxpQkFBUTtJQUNSLDRCQUF3RztJQUMxRyxpQkFBTTtJQUNOLCtCQUE4QjtJQUM1QixrQ0FBb0Q7SUFDbEQsK0JBQXVCO0lBQUEsOENBQTZCO0lBQUEsaUJBQUs7SUFDM0QsaUJBQVE7SUFDUiwwQkFBNkQ7SUFDN0QsK0ZBb0JNOztJQUNOLCtJQWVjO0lBQ2hCLGlCQUFNO0lBQ04sNERBR3VDO0lBQ3ZDLG9DQUF1RjtJQUNyRixvQ0FBd0M7SUFDeEMsaUNBQXFGO0lBQ25GLHdFQUNGO0lBQUEsaUJBQU87SUFDUCxpQkFBVTtJQUNWLGdDQUErRTtJQUM3RSx5VkFFRjtJQUFBLGlCQUFNO0lBQ1IsaUJBQVU7SUFDWixpQkFBVzs7Ozs7SUE1RHNELGVBQXdDO0lBQXhDLDZEQUF3QztJQU8vRixlQUF1RDtJQUF2RCxnSUFBdUQsaUJBQUE7SUFzQ3pCLGVBQXVCO0lBQXZCLDRDQUF1QiwrQkFBQSxxQ0FBQTs7QUQxRGpFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSwyQkFBMkI7SUFzQjlFLFlBQTZCLG1CQUF3QyxFQUN4QyxxQkFBNEMsRUFDNUMsYUFBNEI7UUFDdkQsS0FBSyxFQUFFLENBQUM7UUFIbUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRXZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLCtCQUErQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUMzSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFeEUsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQztRQUNsRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQWMsQ0FBQztRQUN4RixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLCtCQUErQixDQUFDLGtDQUFrQyxDQUFDO2VBQzdJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLGtDQUFrQyxDQUFDLENBQUMsS0FBSztlQUM5RixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7b0JBQzNHLCtCQUErQixDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUc7b0JBQ3JCLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUMvRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtpQkFDaEUsQ0FBQzthQUNIO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1NBQ0Y7UUFFRCx3R0FBd0c7UUFDeEcsbUZBQW1GO1FBQ25GLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ2xFLEtBQUssTUFBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUU7Z0JBQzNFLG9CQUFvQixDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUM7YUFDL0U7U0FDRjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsYUFBcUI7UUFDdEMsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNsRCxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQ2hELENBQ0YsQ0FDRixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELHFJQUFxSTtJQUNySSwrRkFBK0Y7SUFDL0YsdUhBQXVIO0lBQ2hILFNBQVMsQ0FBQyxhQUErQixFQUFFLGtCQUEwQjtRQUMxRSxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGdCQUFnQixHQUFHLCtCQUErQixDQUFDLGdCQUFnQixDQUFDO1FBQzFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNyQyxJQUFLLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO2dCQUM3RyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDMUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsR0FBRywwQkFBMEIsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sdUJBQXVCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNuSCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0seUJBQXlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztZQUV0RSxJQUFJLENBQUMsdUJBQXVCLElBQUkscUJBQXFCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSx5QkFBeUIsSUFBSSxjQUFjLEVBQUU7Z0JBQ2pILDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsR0FBRywwQkFBMEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ3BGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FDbkUsQ0FBQztJQUNKLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBZTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxTQUFTLENBQUMsV0FBb0M7UUFDbkQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRztZQUNyQixjQUFjLEVBQUUsV0FBVyxDQUFDLHNCQUFzQjtZQUNsRCxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsSUFBSTtTQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQ2xCLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxPQUFPLENBQUMsc0JBQXNCLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ2hGLENBQUMsQ0FBQzthQUNDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pHLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUMvRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sZ0NBQWdDLENBQUMsVUFBZSxFQUFFLFlBQWlCO1FBQ3pFLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN2SCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRU8seUJBQXlCLENBQUMsU0FBb0IsRUFBRSxPQUF3QjtRQUM5RSxJQUFJLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUU7WUFDL0QsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWM7aUJBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssK0JBQStCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsWUFBNEIsRUFBRSxrQkFBMEI7UUFDN0UsSUFBSSxZQUFZLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDN0YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksWUFBWSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUMzRyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxZQUFZLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFO1lBQzNHLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNyRixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxZQUFZLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDckcsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksWUFBWSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3JHLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLFlBQVksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNyRyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxZQUFZLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDN0YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3pGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxzQ0FBc0M7UUFDdEMsSUFBSSxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDM0YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUE0QixFQUFFLGtCQUEwQjtRQUM5RSxNQUFNLGVBQWUsR0FBYSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkUsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGVBQWUsRUFBRTtZQUM5QyxJQUFJLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLEVBQUU7Z0JBQzNFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUM7O0FBcE51QixnREFBZ0IsR0FBNEIsRUFBQyxzQkFBc0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7QUFDaEcsZ0RBQWdCLEdBQVcsR0FBRyxDQUFDO0FBQy9CLCtDQUFlLEdBQVcsZ0JBQWdCLENBQUM7QUFDM0MsaURBQWlCLEdBQVcsa0JBQWtCLENBQUM7QUFDL0Msa0VBQWtDLEdBQVcsZ0NBQWdDLENBQUM7QUFDOUUsb0RBQW9CLEdBQVcscUJBQXFCLENBQUM7QUFDckQsbUNBQUcsR0FBVyxLQUFLLENBQUM7QUFDcEIseUNBQVMsR0FBVyxXQUFXLENBQUM7OEdBVDdDLCtCQUErQjtvRUFBL0IsK0JBQStCO1FDakI1Qyw4QkFBNEQ7UUFDMUQsMkZBZ0JXOztRQUNYLDJGQXdFVzs7UUFDYixpQkFBTTs7OztRQTNGa0IscURBQW1DO1FBQzlDLGVBQTRDO1FBQTVDLG1IQUE0QztRQWlCNUMsZUFBMEM7UUFBMUMsaUhBQTBDOzt1RkREMUMsK0JBQStCO2NBTDNDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsOEJBQThCO2dCQUN4QyxXQUFXLEVBQUUsMkNBQTJDO2dCQUN4RCxTQUFTLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IE9yZ2FuaXNhdGlvbkNvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9vcmdhbmlzYXRpb24vb3JnYW5pc2F0aW9uLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBTaW1wbGVPcmdhbmlzYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9vcmdhbmlzYXRpb24vc2ltcGxlLW9yZ2FuaXNhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBPcmdhbmlzYXRpb25TZXJ2aWNlLCBPcmdhbmlzYXRpb25WbSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZ2FuaXNhdGlvbi9vcmdhbmlzYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2luZG93L3dpbmRvdy5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtb3JnYW5pc2F0aW9uLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29yZ2FuaXNhdGlvbi1maWVsZC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU0lNUExFX09SRzogU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwgPSB7b3JnYW5pc2F0aW9uSWRlbnRpZmllcjogJycsIG5hbWU6ICcnLCBhZGRyZXNzOiAnJ307XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BWF9SRVNVTFRfQ09VTlQ6IG51bWJlciA9IDEwMDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgT1JHQU5JU0FUSU9OX0lEOiBzdHJpbmcgPSAnT3JnYW5pc2F0aW9uSUQnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBPUkdBTklTQVRJT05fTkFNRTogc3RyaW5nID0gJ09yZ2FuaXNhdGlvbk5hbWUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBQUkVfUE9QVUxBVEVfVE9fVVNFUlNfT1JHQU5JU0FUSU9OOiBzdHJpbmcgPSAnUHJlcG9wdWxhdGVUb1VzZXJzT3JnYW5pc2F0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgT1JHQU5JU0FUSU9OX0RFVEFJTFM6IHN0cmluZyA9ICdvcmdhbmlzYXRpb25EZXRhaWxzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgWUVTOiBzdHJpbmcgPSAnWUVTJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFOREFUT1JZOiBzdHJpbmcgPSAnTUFOREFUT1JZJztcbiAgcHVibGljIGRlZmF1bHRPcmc6IGFueTtcblxuICBwdWJsaWMgb3JnYW5pc2F0aW9uRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgb3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBvcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuXG4gIHB1YmxpYyBvcmdhbmlzYXRpb25zJDogT2JzZXJ2YWJsZTxPcmdhbmlzYXRpb25WbVtdPjtcbiAgcHVibGljIHNlYXJjaE9yZ1ZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgc2ltcGxlT3JnYW5pc2F0aW9ucyQ6IE9ic2VydmFibGU8U2ltcGxlT3JnYW5pc2F0aW9uTW9kZWxbXT47XG4gIHB1YmxpYyBzZWxlY3RlZE9yZyQ6IE9ic2VydmFibGU8U2ltcGxlT3JnYW5pc2F0aW9uTW9kZWw+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3JnYW5pc2F0aW9uU2VydmljZTogT3JnYW5pc2F0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBvcmdhbmlzYXRpb25Db252ZXJ0ZXI6IE9yZ2FuaXNhdGlvbkNvbnZlcnRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlZmF1bHRPcmcgPSBKU09OLnBhcnNlKHRoaXMud2luZG93U2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50Lk9SR0FOSVNBVElPTl9ERVRBSUxTKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25zJCA9IHRoaXMub3JnYW5pc2F0aW9uU2VydmljZS5nZXRBY3RpdmVPcmdhbmlzYXRpb25zKCk7XG5cbiAgICB0aGlzLnNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5zZWFyY2hPcmdWYWx1ZSQgPSB0aGlzLnNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXM7XG4gICAgdGhpcy5zZWFyY2hPcmdWYWx1ZSQuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMub25TZWFyY2hPcmcodmFsdWUpKTtcblxuICAgIHRoaXMub3JnYW5pc2F0aW9uRm9ybUdyb3VwID0gdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IEZvcm1Hcm91cCh7fSksIHRydWUpIGFzIEZvcm1Hcm91cDtcbiAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuY29udHJvbHMgJiYgdGhpcy5wYXJlbnQuY29udHJvbHMuaGFzT3duUHJvcGVydHkoV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5QUkVfUE9QVUxBVEVfVE9fVVNFUlNfT1JHQU5JU0FUSU9OKVxuICAgICAgJiYgdGhpcy5wYXJlbnQuY29udHJvbHNbV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5QUkVfUE9QVUxBVEVfVE9fVVNFUlNfT1JHQU5JU0FUSU9OXS52YWx1ZVxuICAgICAgJiYgdGhpcy5wYXJlbnQuY29udHJvbHNbV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5QUkVfUE9QVUxBVEVfVE9fVVNFUlNfT1JHQU5JU0FUSU9OXS52YWx1ZS50b1VwcGVyQ2FzZSgpXG4gICAgICA9PT0gV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5ZRVMpIHtcbiAgICAgIGlmICh0aGlzLmNhc2VGaWVsZCAmJiAhdGhpcy5jYXNlRmllbGQudmFsdWUpIHtcbiAgICAgICAgdGhpcy5jYXNlRmllbGQudmFsdWUgPSB7XG4gICAgICAgICAgT3JnYW5pc2F0aW9uSUQ6IHRoaXMuZGVmYXVsdE9yZyA/IHRoaXMuZGVmYXVsdE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyIDogbnVsbCxcbiAgICAgICAgICBPcmdhbmlzYXRpb25OYW1lOiB0aGlzLmRlZmF1bHRPcmcgPyB0aGlzLmRlZmF1bHRPcmcubmFtZSA6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJlU2VsZWN0RGVmYXVsdE9yZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgdGhpcy5jYXNlRmllbGQudmFsdWUgJiYgdGhpcy5jYXNlRmllbGQudmFsdWUuT3JnYW5pc2F0aW9uSUQpIHtcbiAgICAgICAgdGhpcy5wcmVTZWxlY3REZWZhdWx0T3JnKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZVNlbGVjdEVtcHR5T3JnKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgYWxsIHN1Yi1maWVsZHMgaW5oZXJpdCB0aGUgc2FtZSB2YWx1ZSBmb3IgcmV0YWluX2hpZGRlbl92YWx1ZSBhcyB0aGlzIHBhcmVudDsgYWx0aG91Z2ggYW5cbiAgICAvLyBPcmdhbmlzYXRpb24gZmllbGQgdXNlcyB0aGUgQ29tcGxleCB0eXBlLCBpdCBpcyBtZWFudCB0byBiZSB0cmVhdGVkIGFzIG9uZSBmaWVsZFxuICAgIGlmICh0aGlzLmNhc2VGaWVsZCAmJiB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgZm9yIChjb25zdCBvcmdhbmlzYXRpb25TdWJGaWVsZCBvZiB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICAgIG9yZ2FuaXNhdGlvblN1YkZpZWxkLnJldGFpbl9oaWRkZW5fdmFsdWUgPSB0aGlzLmNhc2VGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaE9yZyhvcmdTZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAob3JnU2VhcmNoVGV4dCAmJiBvcmdTZWFyY2hUZXh0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICBjb25zdCBsb3dlck9yZ1NlYXJjaFRleHQgPSBvcmdTZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLnNpbXBsZU9yZ2FuaXNhdGlvbnMkID0gdGhpcy5vcmdhbmlzYXRpb25zJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAob3JnYW5pc2F0aW9ucyA9PiBvZihcbiAgICAgICAgICB0aGlzLnNlYXJjaE9yZyhvcmdhbmlzYXRpb25zLCBsb3dlck9yZ1NlYXJjaFRleHQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpbXBsZU9yZ2FuaXNhdGlvbnMkID0gb2YoW10pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSB3YXkgdGhlIHNlYXJjaCB3b3JrcyBkaXZpZGUgaW50byB0d28gcGhhc2VzXG4gIC8vIDEuIGdvIHRocm91Z2ggY29sbGVjdGlvbiBvZiBvcmcgaXRlbXMgb25lIGJ5IG9uZSBieSBkb2luZyB0aGUgY29tcGFyc2lvbiBvZiBzZWFyY2ggc3RyaW5nIHVzaW5nIGluY2x1ZGVzIHRvIGFsbCB0aGUgYWRkcmVzcyBmaWVsZHNcbiAgLy8gMi4gc3BsaXQgdGhlIHNlYXJjaCBzdHJpbmcgaW50byBhcnJheXMgYW5kIGFwcGx5IHRoZSBlYWNoIGFycmF5IGl0ZW0gaW50byB0aGUgYWRkcmVzcyBmaWVsZHNcbiAgLy8gMy4gYm90aCBzdGVwIDEsIDIgd2lsbCBnbyB1bnRpbCBtYXggY291bnQgcmVzdWx0IHJlYWNoZXMsIGFuZCBmaW5hbGx5IGNvbWJpbmUgYm90aCByZXN1bHQgc2V0cyBpbnRvIGZpbmFsIGNvbGxlY3Rpb25cbiAgcHVibGljIHNlYXJjaE9yZyhvcmdhbmlzYXRpb25zOiBPcmdhbmlzYXRpb25WbVtdLCBsb3dlck9yZ1NlYXJjaFRleHQ6IHN0cmluZyk6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsW10ge1xuICAgIGNvbnN0IHBhcnRNYXRjaGluZ1Jlc3VsdFNldCA9IFtdO1xuICAgIGNvbnN0IHdpdGhTcGFjZU1hdGNoaW5nUmVzdWx0U2V0ID0gW107XG4gICAgY29uc3QgTUFYX1JFU1VMVF9DT1VOVCA9IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuTUFYX1JFU1VMVF9DT1VOVDtcbiAgICBvcmdhbmlzYXRpb25zLmZvckVhY2goKG9yZ2FuaXNhdGlvbikgPT4ge1xuICAgICAgaWYgKCBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQubGVuZ3RoIDwgTUFYX1JFU1VMVF9DT1VOVCAmJiB0aGlzLnNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbiwgbG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgICBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQucHVzaChvcmdhbmlzYXRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgb3JnYW5pc2F0aW9ucy5mb3JFYWNoKChvcmcpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdFNldCA9IFsuLi5wYXJ0TWF0Y2hpbmdSZXN1bHRTZXQsIC4uLndpdGhTcGFjZU1hdGNoaW5nUmVzdWx0U2V0XTtcbiAgICAgIGNvbnN0IGhhc01hdGNoaW5nT3JnYW5pc2F0aW9uID0gcmVzdWx0U2V0LmZpbmQoaXRlbSA9PiBpdGVtLm9yZ2FuaXNhdGlvbklkZW50aWZpZXIgPT09IG9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IHNlYXJjaEhhc1NwYWNlID0gdGhpcy5zZWFyY2hXaXRoU3BhY2Uob3JnLCBsb3dlck9yZ1NlYXJjaFRleHQpO1xuICAgICAgY29uc3QgaGFzUmVzdWx0U2V0QmVsb3dNYXhDb3VudCA9IHJlc3VsdFNldC5sZW5ndGggPCBNQVhfUkVTVUxUX0NPVU5UO1xuXG4gICAgICBpZiAoIWhhc01hdGNoaW5nT3JnYW5pc2F0aW9uICYmIHBhcnRNYXRjaGluZ1Jlc3VsdFNldC5sZW5ndGggPT09IDAgJiYgaGFzUmVzdWx0U2V0QmVsb3dNYXhDb3VudCAmJiBzZWFyY2hIYXNTcGFjZSkge1xuICAgICAgICB3aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldC5wdXNoKG9yZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5wYXJ0TWF0Y2hpbmdSZXN1bHRTZXQsIC4uLndpdGhTcGFjZU1hdGNoaW5nUmVzdWx0U2V0XS5tYXAoKG9yZ2FuaXNhdGlvbikgPT5cbiAgICAgIHRoaXMub3JnYW5pc2F0aW9uQ29udmVydGVyLnRvU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwob3JnYW5pc2F0aW9uKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdHJpbUFsbChvbGRUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBvbGRUZXh0LnJlcGxhY2UoL1xccysvZywgJycpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE9yZyhzZWxlY3RlZE9yZzogU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRPcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllcik7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRPcmcubmFtZSk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSBvZihzZWxlY3RlZE9yZyk7XG4gICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IG9mKFsuLi5bXSwgc2VsZWN0ZWRPcmddKTtcbiAgICB0aGlzLnNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge1xuICAgICAgT3JnYW5pc2F0aW9uSUQ6IHNlbGVjdGVkT3JnLm9yZ2FuaXNhdGlvbklkZW50aWZpZXIsXG4gICAgICBPcmdhbmlzYXRpb25OYW1lOiBzZWxlY3RlZE9yZy5uYW1lXG4gICAgfTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5zZXRWYWx1ZSh0aGlzLmNhc2VGaWVsZC52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGVTZWxlY3RPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25JREZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICB0aGlzLnNlbGVjdGVkT3JnJCA9IG9mKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuRU1QVFlfU0lNUExFX09SRyk7XG4gICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IG9mKFtdKTtcbiAgICB0aGlzLnNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUgPSB7T3JnYW5pc2F0aW9uSUQ6IG51bGwsIE9yZ2FuaXNhdGlvbk5hbWU6IG51bGx9O1xuICAgIHRoaXMub3JnYW5pc2F0aW9uRm9ybUdyb3VwLnNldFZhbHVlKHRoaXMuY2FzZUZpZWxkLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlU2VsZWN0RGVmYXVsdE9yZygpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbnRpYXRlT3JnYW5pc2F0aW9uRm9ybUdyb3VwKHRoaXMuY2FzZUZpZWxkLnZhbHVlLk9yZ2FuaXNhdGlvbklELCB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25OYW1lKTtcbiAgICB0aGlzLnNlbGVjdGVkT3JnJCA9IHRoaXMub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgIG1hcChvcmdhbmlzYXRpb25zID0+XG4gICAgICAgIG9yZ2FuaXNhdGlvbnMuZmlsdGVyKGZpbmRPcmcgPT4ge1xuICAgICAgICAgIHJldHVybiBmaW5kT3JnLm9yZ2FuaXNhdGlvbklkZW50aWZpZXIgPT09IHRoaXMuY2FzZUZpZWxkLnZhbHVlLk9yZ2FuaXNhdGlvbklEO1xuICAgICAgICB9KVxuICAgICAgICAgIC5tYXAob3JnYW5pc2F0aW9uID0+IHRoaXMub3JnYW5pc2F0aW9uQ29udmVydGVyLnRvU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwob3JnYW5pc2F0aW9uKSlbMF0pLFxuICAgICk7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLnZhbHVlICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlLk9yZ2FuaXNhdGlvbklEKSB7XG4gICAgICB0aGlzLnNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcmVTZWxlY3RFbXB0eU9yZygpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbnRpYXRlT3JnYW5pc2F0aW9uRm9ybUdyb3VwKG51bGwsIG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmckID0gb2YoV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5FTVBUWV9TSU1QTEVfT1JHKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFudGlhdGVPcmdhbmlzYXRpb25Gb3JtR3JvdXAob3JnSURTdGF0ZTogYW55LCBvcmdOYW1lU3RhdGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChvcmdJRFN0YXRlKTtcbiAgICB0aGlzLmFkZE9yZ2FuaXNhdGlvblZhbGlkYXRvcnModGhpcy5jYXNlRmllbGQsIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbCk7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50Lk9SR0FOSVNBVElPTl9JRCwgdGhpcy5vcmdhbmlzYXRpb25JREZvcm1Db250cm9sKTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbk5hbWVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChvcmdOYW1lU3RhdGUpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fTkFNRSwgdGhpcy5vcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2wpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPcmdhbmlzYXRpb25WYWxpZGF0b3JzKGNhc2VGaWVsZDogQ2FzZUZpZWxkLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICBpZiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUgJiYgY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgIGNvbnN0IG9yZ2FuaXNhdGlvbklkRmllbGQgPSBjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkc1xuICAgICAgICAuZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fSUQpO1xuICAgICAgdGhpcy5hZGRWYWxpZGF0b3JzKG9yZ2FuaXNhdGlvbklkRmllbGQsIGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoQ3JpdGVyaWEob3JnYW5pc2F0aW9uOiBPcmdhbmlzYXRpb25WbSwgbG93ZXJPcmdTZWFyY2hUZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAob3JnYW5pc2F0aW9uLnBvc3RDb2RlICYmIG9yZ2FuaXNhdGlvbi5wb3N0Q29kZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnBvc3RDb2RlICYmIHRoaXMudHJpbUFsbChvcmdhbmlzYXRpb24ucG9zdENvZGUpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24ucG9zdENvZGUgJiYgb3JnYW5pc2F0aW9uLnBvc3RDb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50cmltQWxsKGxvd2VyT3JnU2VhcmNoVGV4dCkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5uYW1lICYmIG9yZ2FuaXNhdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUxICYmIG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTIgJiYgb3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMyAmJiBvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24udG93bkNpdHkgJiYgb3JnYW5pc2F0aW9uLnRvd25DaXR5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24uY291bnR5ICYmIG9yZ2FuaXNhdGlvbi5jb3VudHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gbm9pbnNwZWN0aW9uIFJlZHVuZGFudElmU3RhdGVtZW50SlNcbiAgICBpZiAob3JnYW5pc2F0aW9uLmNvdW50cnkgJiYgb3JnYW5pc2F0aW9uLmNvdW50cnkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hXaXRoU3BhY2Uob3JnYW5pc2F0aW9uOiBPcmdhbmlzYXRpb25WbSwgbG93ZXJPcmdTZWFyY2hUZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWFyY2hUZXh0QXJyYXk6IHN0cmluZ1tdID0gbG93ZXJPcmdTZWFyY2hUZXh0LnNwbGl0KC9cXHMrL2cpO1xuICAgIGZvciAoY29uc3Qgc2luZ2xlU2VhcmNoVGV4dCBvZiBzZWFyY2hUZXh0QXJyYXkpIHtcbiAgICAgIGlmIChzaW5nbGVTZWFyY2hUZXh0ICYmIHRoaXMuc2VhcmNoQ3JpdGVyaWEob3JnYW5pc2F0aW9uLCBzaW5nbGVTZWFyY2hUZXh0KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJvcmdhbmlzYXRpb25Gb3JtR3JvdXBcIj5cbiAgPGZpZWxkc2V0ICpuZ0lmPVwiKG9yZ2FuaXNhdGlvbnMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgPGRpdiBjbGFzcz1cImhtY3RzLWJhbm5lclwiPlxuICAgICAgPHN2ZyBjbGFzcz1cImhtY3RzLWJhbm5lcl9faWNvblwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNSAyNVwiIGhlaWdodD1cIjI1XCIgd2lkdGg9XCIyNVwiPlxuICAgICAgICA8cGF0aCBkPVwiTTEzLjcsMTguNWgtMi40di0yLjRoMi40VjE4LjV6IE0xMi41LDEzLjdjLTAuNywwLTEuMi0wLjUtMS4yLTEuMlY3LjdjMC0wLjcsMC41LTEuMiwxLjItMS4yczEuMiwwLjUsMS4yLDEuMnY0LjhcbiAgQzEzLjcsMTMuMiwxMy4yLDEzLjcsMTIuNSwxMy43eiBNMTIuNSwwLjVjLTYuNiwwLTEyLDUuNC0xMiwxMnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzE5LjEsMC41LDEyLjUsMC41elwiIC8+PC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiaG1jdHMtYmFubmVyX19tZXNzYWdlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaG1jdHMtYmFubmVyX19hc3Npc3RpdmVcIj5pbmZvcm1hdGlvbjwvc3Bhbj5cbiAgICAgICAgICA8cCBjbGFzcz1cIndhcm5pbmctbWVzc2FnZVwiPk9yZ2FuaXNhdGlvbiBzZWFyY2ggaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3YXJuaW5nLXBhbmVsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid2FybmluZy1tZXNzYWdlXCI+XG4gICAgICAgIFdlIGFyZSB3b3JraW5nIHRvIGZpeCB0aGUgaXNzdWUuIFlvdSBjYW4gdHJ5IGFnYWluIGxhdGVyLlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+XG4gICAgICAgIFNlYXJjaCBmb3IgYW4gb3JnYW5pc2F0aW9uXG4gICAgICA8L2gyPlxuICAgIDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbFwiIGZvcj1cInNlYXJjaC1vcmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBpZD1cInNlYXJjaC1vcmctaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgIFlvdSBjYW4gb25seSBzZWFyY2ggZm9yIG9yZ2FuaXNhdGlvbnMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggTXlITUNUUy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2VhcmNoIGJ5IG9yZ2FuaXNhdGlvbiBuYW1lIG9yIGFkZHJlc3MuXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJzZWFyY2gtb3JnLXRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsXCIgZm9yPVwib3JnYW5pc2F0aW9uLXRhYmxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDJcIj5PcmdhbmlzYXRpb24gbmFtZSBhbmQgYWRkcmVzczwvaDI+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGhyIGNsYXNzPVwiZ292dWstc2VjdGlvbi1icmVhayBnb3Z1ay1zZWN0aW9uLWJyZWFrLS12aXNpYmxlXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIShzZWxlY3RlZE9yZyQgfCBhc3luYyk/Lm9yZ2FuaXNhdGlvbklkZW50aWZpZXI7IGVsc2Ugc2VsZWN0ZWRPcmdhbmlzYXRpb25cIiBbbmdDbGFzc109XCJ7J3Njcm9sbC1jb250YWluZXIgJzogKHNpbXBsZU9yZ2FuaXNhdGlvbnMkIHwgYXN5bmMpPy5sZW5ndGggPiAxMH1cIj5cbiAgICAgICAgPHRhYmxlIGlkPVwib3JnYW5pc2F0aW9uLXRhYmxlXCIgKm5nRm9yPVwibGV0IG9yZ2FuaXNhdGlvbiBvZiAoc2ltcGxlT3JnYW5pc2F0aW9ucyQgfCBhc3luYylcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48aDMgY2xhc3M9XCJuYW1lLWhlYWRlclwiPnt7b3JnYW5pc2F0aW9uLm5hbWV9fTwvaDM+PC9jYXB0aW9uPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZC1hZGRyZXNzXCI+XG4gICAgICAgICAgICAgICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJvcmdhbmlzYXRpb24uYWRkcmVzc1wiPjwvY2NkLW1hcmtkb3duPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJzZWxlY3RPcmcob3JnYW5pc2F0aW9uKVwiIHRpdGxlPVwiU2VsZWN0IHRoZSBvcmdhbmlzYXRpb24ge3tvcmdhbmlzYXRpb24ubmFtZX19XCI+U2VsZWN0PC9hPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKHNpbXBsZU9yZ2FuaXNhdGlvbnMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDAgJiYgKHNlYXJjaE9yZ1ZhbHVlJCB8IGFzeW5jKT8ubGVuZ3RoID4gMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHQtbWVzc2FnZVwiPlxuICAgICAgICAgICAgTm8gcmVzdWx0cyBmb3VuZC5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRPcmdhbmlzYXRpb24+XG4gICAgICAgIDx0YWJsZSBpZD1cIm9yZ2FuaXNhdGlvbi1zZWxlY3RlZC10YWJsZVwiICpuZ0lmPVwiKHNlbGVjdGVkT3JnJCB8IGFzeW5jKSBhcyBzZWxlY3RlZE9yZ1wiPlxuICAgICAgICAgIDxjYXB0aW9uPjxoMyBjbGFzcz1cIm5hbWUtaGVhZGVyXCI+e3tzZWxlY3RlZE9yZy5uYW1lfX08L2gzPjwvY2FwdGlvbj5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0aCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC90aD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtYWRkcmVzc1wiPlxuICAgICAgICAgICAgICAgIDxjY2QtbWFya2Rvd24gW2NvbnRlbnRdPVwic2VsZWN0ZWRPcmcuYWRkcmVzc1wiPjwvY2NkLW1hcmtkb3duPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJkZVNlbGVjdE9yZygpXCIgdGl0bGU9XCJDbGVhciBvcmdhbmlzYXRpb24gc2VsZWN0aW9uIGZvciB7e3NlbGVjdGVkT3JnLm5hbWV9fVwiPkNsZWFyPC9hPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8Y2NkLXdyaXRlLW9yZ2FuaXNhdGlvbi1jb21wbGV4LWZpZWxkIFtjYXNlRmllbGRdPVwiY2FzZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE9yZyRdPVwic2VsZWN0ZWRPcmckXCI+XG4gICAgPC9jY2Qtd3JpdGUtb3JnYW5pc2F0aW9uLWNvbXBsZXgtZmllbGQ+XG4gICAgPGRldGFpbHMgaWQ9XCJmaW5kLW9yZ2FuaXNhdGlvbi1oZWxwXCIgY2xhc3M9XCJnb3Z1ay1kZXRhaWxzXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1kZXRhaWxzXCI+XG4gICAgICA8c3VtbWFyeSBjbGFzcz1cImdvdnVrLWRldGFpbHNfX3N1bW1hcnlcIj5cbiAgICAgIDxzcGFuIGlkPVwiY29udGVudC13aHktY2FuLW5vdC1maW5kLW9yZ2FuaXNhdGlvblwiIGNsYXNzPVwiZ292dWstZGV0YWlsc19fc3VtbWFyeS10ZXh0XCI+XG4gICAgICAgIENhbuKAmXQgZmluZCB0aGUgb3JnYW5pc2F0aW9uIHlvdSBhcmUgbG9va2luZyBmb3I/XG4gICAgICA8L3NwYW4+XG4gICAgICA8L3N1bW1hcnk+XG4gICAgICA8ZGl2IGlkPVwiY29udGVudC1yZWFzb24tY2FuLW5vdC1maW5kLW9yZ2FuaXNhdGlvblwiIGNsYXNzPVwiZ292dWstZGV0YWlsc19fdGV4dFwiPlxuICAgICAgICBJZiB5b3Uga25vdyB0aGF0IHRoZSBzb2xpY2l0b3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggTXlITUNUUywgY2hlY2sgdGhhdCB5b3UgaGF2ZSBlbnRlcmVkIHRoZWlyIGRldGFpbHMgY29ycmVjdGx5LlxuICAgICAgICBSZW1lbWJlciB0aGF0IG9yZ2FuaXNhdGlvbnMgY2FuIG9ubHkgcmVnaXN0ZXIgb25lIG9mZmljZSBhZGRyZXNzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGRldGFpbHMgY291bGQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50IGZyb20gd2hhdCB5b3UncmUgZXhwZWN0aW5nLiBDb250YWN0IHRoZSBzb2xpY2l0b3IgZGlyZWN0bHkgaWYgeW91IGhhdmUgYW55IGNvbmNlcm5zLlxuICAgICAgPC9kaXY+XG4gICAgPC9kZXRhaWxzPlxuICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtb3JnYW5pc2F0aW9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL29yZ2FuaXNhdGlvbi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvb3JnYW5pc2F0aW9uL3dyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scURBQXFELENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7SUNUekYsbUNBQWdGO0lBQzlFLDRCQUF3QztJQUN4Qyw4QkFBMEI7SUFDeEIsbUJBQXdLO0lBQXhLLDhCQUF3SztJQUN0SywwQkFDd0c7SUFBQSxpQkFBTTtJQUNoSCxvQkFBbUM7SUFBbkMsOEJBQW1DO0lBQ2pDLCtCQUFzQztJQUFBLFlB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QUFDO1FBQ25FLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxlQUFlLEVBQUU7WUFDOUMsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUMzRSxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7SUFDSCxDQUFDOztBQXBOdUIsZ0RBQWdCLEdBQTRCLEVBQUMsc0JBQXNCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ2hHLGdEQUFnQixHQUFXLEdBQUcsQ0FBQztBQUMvQiwrQ0FBZSxHQUFXLGdCQUFnQixDQUFDO0FBQzNDLGlEQUFpQixHQUFXLGtCQUFrQixDQUFDO0FBQy9DLGtFQUFrQyxHQUFXLGdDQUFnQyxDQUFDO0FBQzlFLG9EQUFvQixHQUFXLHFCQUFxQixDQUFDO0FBQ3JELG1DQUFHLEdBQVcsS0FBSyxDQUFDO0FBQ3BCLHlDQUFTLEdBQVcsV0FBVyxDQUFDOzhHQVQ3QywrQkFBK0I7b0VBQS9CLCtCQUErQjtRQ2pCNUMsOEJBQTREO1FBQzFELDJGQWdCVzs7UUFDWCw0RkE2RVc7O1FBQ2IsaUJBQU07Ozs7UUFoR2tCLHFEQUFtQztRQUM5QyxlQUE0QztRQUE1QyxtSEFBNEM7UUFpQjVDLGVBQTBDO1FBQTFDLGlIQUEwQzs7dUZERDFDLCtCQUErQjtjQUwzQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsV0FBVyxFQUFFLDJDQUEyQztnQkFDeEQsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7YUFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBPcmdhbmlzYXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vb3JnYW5pc2F0aW9uL3NpbXBsZS1vcmdhbmlzYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgT3JnYW5pc2F0aW9uU2VydmljZSwgT3JnYW5pc2F0aW9uVm0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmdhbmlzYXRpb24vb3JnYW5pc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dpbmRvdy93aW5kb3cuc2VydmljZSc7XG5cbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbmlzYXRpb24tZmllbGQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NJTVBMRV9PUkc6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsID0ge29yZ2FuaXNhdGlvbklkZW50aWZpZXI6ICcnLCBuYW1lOiAnJywgYWRkcmVzczogJyd9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfUkVTVUxUX0NPVU5UOiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE9SR0FOSVNBVElPTl9JRDogc3RyaW5nID0gJ09yZ2FuaXNhdGlvbklEJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgT1JHQU5JU0FUSU9OX05BTUU6IHN0cmluZyA9ICdPcmdhbmlzYXRpb25OYW1lJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTjogc3RyaW5nID0gJ1ByZXBvcHVsYXRlVG9Vc2Vyc09yZ2FuaXNhdGlvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE9SR0FOSVNBVElPTl9ERVRBSUxTOiBzdHJpbmcgPSAnb3JnYW5pc2F0aW9uRGV0YWlscyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFlFUzogc3RyaW5nID0gJ1lFUyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BTkRBVE9SWTogc3RyaW5nID0gJ01BTkRBVE9SWSc7XG4gIHB1YmxpYyBkZWZhdWx0T3JnOiBhbnk7XG5cbiAgcHVibGljIG9yZ2FuaXNhdGlvbkZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIG9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgb3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBwdWJsaWMgb3JnYW5pc2F0aW9ucyQ6IE9ic2VydmFibGU8T3JnYW5pc2F0aW9uVm1bXT47XG4gIHB1YmxpYyBzZWFyY2hPcmdWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIHNpbXBsZU9yZ2FuaXNhdGlvbnMkOiBPYnNlcnZhYmxlPFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsW10+O1xuICBwdWJsaWMgc2VsZWN0ZWRPcmckOiBPYnNlcnZhYmxlPFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9yZ2FuaXNhdGlvblNlcnZpY2U6IE9yZ2FuaXNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3JnYW5pc2F0aW9uQ29udmVydGVyOiBPcmdhbmlzYXRpb25Db252ZXJ0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93U2VydmljZTogV2luZG93U2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZWZhdWx0T3JnID0gSlNPTi5wYXJzZSh0aGlzLndpbmRvd1NlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fREVUQUlMUykpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9ucyQgPSB0aGlzLm9yZ2FuaXNhdGlvblNlcnZpY2UuZ2V0QWN0aXZlT3JnYW5pc2F0aW9ucygpO1xuXG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVmFsdWUkID0gdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzO1xuICAgIHRoaXMuc2VhcmNoT3JnVmFsdWUkLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLm9uU2VhcmNoT3JnKHZhbHVlKSk7XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30pLCB0cnVlKSBhcyBGb3JtR3JvdXA7XG4gICAgaWYgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmNvbnRyb2xzICYmIHRoaXMucGFyZW50LmNvbnRyb2xzLmhhc093blByb3BlcnR5KFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTilcbiAgICAgICYmIHRoaXMucGFyZW50LmNvbnRyb2xzW1dyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTl0udmFsdWVcbiAgICAgICYmIHRoaXMucGFyZW50LmNvbnRyb2xzW1dyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTl0udmFsdWUudG9VcHBlckNhc2UoKVxuICAgICAgPT09IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuWUVTKSB7XG4gICAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgIXRoaXMuY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge1xuICAgICAgICAgIE9yZ2FuaXNhdGlvbklEOiB0aGlzLmRlZmF1bHRPcmcgPyB0aGlzLmRlZmF1bHRPcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllciA6IG51bGwsXG4gICAgICAgICAgT3JnYW5pc2F0aW9uTmFtZTogdGhpcy5kZWZhdWx0T3JnID8gdGhpcy5kZWZhdWx0T3JnLm5hbWUgOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnByZVNlbGVjdERlZmF1bHRPcmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2FzZUZpZWxkICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlLk9yZ2FuaXNhdGlvbklEKSB7XG4gICAgICAgIHRoaXMucHJlU2VsZWN0RGVmYXVsdE9yZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcmVTZWxlY3RFbXB0eU9yZygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBzdWItZmllbGRzIGluaGVyaXQgdGhlIHNhbWUgdmFsdWUgZm9yIHJldGFpbl9oaWRkZW5fdmFsdWUgYXMgdGhpcyBwYXJlbnQ7IGFsdGhvdWdoIGFuXG4gICAgLy8gT3JnYW5pc2F0aW9uIGZpZWxkIHVzZXMgdGhlIENvbXBsZXggdHlwZSwgaXQgaXMgbWVhbnQgdG8gYmUgdHJlYXRlZCBhcyBvbmUgZmllbGRcbiAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIGZvciAoY29uc3Qgb3JnYW5pc2F0aW9uU3ViRmllbGQgb2YgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICBvcmdhbmlzYXRpb25TdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlID0gdGhpcy5jYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hPcmcob3JnU2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG9yZ1NlYXJjaFRleHQgJiYgb3JnU2VhcmNoVGV4dC5sZW5ndGggPj0gMikge1xuICAgICAgY29uc3QgbG93ZXJPcmdTZWFyY2hUZXh0ID0gb3JnU2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IHRoaXMub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKG9yZ2FuaXNhdGlvbnMgPT4gb2YoXG4gICAgICAgICAgdGhpcy5zZWFyY2hPcmcob3JnYW5pc2F0aW9ucywgbG93ZXJPcmdTZWFyY2hUZXh0KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgd2F5IHRoZSBzZWFyY2ggd29ya3MgZGl2aWRlIGludG8gdHdvIHBoYXNlc1xuICAvLyAxLiBnbyB0aHJvdWdoIGNvbGxlY3Rpb24gb2Ygb3JnIGl0ZW1zIG9uZSBieSBvbmUgYnkgZG9pbmcgdGhlIGNvbXBhcnNpb24gb2Ygc2VhcmNoIHN0cmluZyB1c2luZyBpbmNsdWRlcyB0byBhbGwgdGhlIGFkZHJlc3MgZmllbGRzXG4gIC8vIDIuIHNwbGl0IHRoZSBzZWFyY2ggc3RyaW5nIGludG8gYXJyYXlzIGFuZCBhcHBseSB0aGUgZWFjaCBhcnJheSBpdGVtIGludG8gdGhlIGFkZHJlc3MgZmllbGRzXG4gIC8vIDMuIGJvdGggc3RlcCAxLCAyIHdpbGwgZ28gdW50aWwgbWF4IGNvdW50IHJlc3VsdCByZWFjaGVzLCBhbmQgZmluYWxseSBjb21iaW5lIGJvdGggcmVzdWx0IHNldHMgaW50byBmaW5hbCBjb2xsZWN0aW9uXG4gIHB1YmxpYyBzZWFyY2hPcmcob3JnYW5pc2F0aW9uczogT3JnYW5pc2F0aW9uVm1bXSwgbG93ZXJPcmdTZWFyY2hUZXh0OiBzdHJpbmcpOiBTaW1wbGVPcmdhbmlzYXRpb25Nb2RlbFtdIHtcbiAgICBjb25zdCBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQgPSBbXTtcbiAgICBjb25zdCB3aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldCA9IFtdO1xuICAgIGNvbnN0IE1BWF9SRVNVTFRfQ09VTlQgPSBXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50Lk1BWF9SRVNVTFRfQ09VTlQ7XG4gICAgb3JnYW5pc2F0aW9ucy5mb3JFYWNoKChvcmdhbmlzYXRpb24pID0+IHtcbiAgICAgIGlmICggcGFydE1hdGNoaW5nUmVzdWx0U2V0Lmxlbmd0aCA8IE1BWF9SRVNVTFRfQ09VTlQgJiYgdGhpcy5zZWFyY2hDcml0ZXJpYShvcmdhbmlzYXRpb24sIGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgICAgcGFydE1hdGNoaW5nUmVzdWx0U2V0LnB1c2gob3JnYW5pc2F0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9yZ2FuaXNhdGlvbnMuZm9yRWFjaCgob3JnKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHRTZXQgPSBbLi4ucGFydE1hdGNoaW5nUmVzdWx0U2V0LCAuLi53aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldF07XG4gICAgICBjb25zdCBoYXNNYXRjaGluZ09yZ2FuaXNhdGlvbiA9IHJlc3VsdFNldC5maW5kKGl0ZW0gPT4gaXRlbS5vcmdhbmlzYXRpb25JZGVudGlmaWVyID09PSBvcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllcik7XG4gICAgICBjb25zdCBzZWFyY2hIYXNTcGFjZSA9IHRoaXMuc2VhcmNoV2l0aFNwYWNlKG9yZywgbG93ZXJPcmdTZWFyY2hUZXh0KTtcbiAgICAgIGNvbnN0IGhhc1Jlc3VsdFNldEJlbG93TWF4Q291bnQgPSByZXN1bHRTZXQubGVuZ3RoIDwgTUFYX1JFU1VMVF9DT1VOVDtcblxuICAgICAgaWYgKCFoYXNNYXRjaGluZ09yZ2FuaXNhdGlvbiAmJiBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQubGVuZ3RoID09PSAwICYmIGhhc1Jlc3VsdFNldEJlbG93TWF4Q291bnQgJiYgc2VhcmNoSGFzU3BhY2UpIHtcbiAgICAgICAgd2l0aFNwYWNlTWF0Y2hpbmdSZXN1bHRTZXQucHVzaChvcmcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBbLi4ucGFydE1hdGNoaW5nUmVzdWx0U2V0LCAuLi53aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldF0ubWFwKChvcmdhbmlzYXRpb24pID0+XG4gICAgICB0aGlzLm9yZ2FuaXNhdGlvbkNvbnZlcnRlci50b1NpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKG9yZ2FuaXNhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHRyaW1BbGwob2xkVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb2xkVGV4dC5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RPcmcoc2VsZWN0ZWRPcmc6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25JREZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3JnLm9yZ2FuaXNhdGlvbklkZW50aWZpZXIpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3JnLm5hbWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmckID0gb2Yoc2VsZWN0ZWRPcmcpO1xuICAgIHRoaXMuc2ltcGxlT3JnYW5pc2F0aW9ucyQgPSBvZihbLi4uW10sIHNlbGVjdGVkT3JnXSk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZSA9IHtcbiAgICAgIE9yZ2FuaXNhdGlvbklEOiBzZWxlY3RlZE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyLFxuICAgICAgT3JnYW5pc2F0aW9uTmFtZTogc2VsZWN0ZWRPcmcubmFtZVxuICAgIH07XG4gICAgdGhpcy5vcmdhbmlzYXRpb25Gb3JtR3JvdXAuc2V0VmFsdWUodGhpcy5jYXNlRmllbGQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGRlU2VsZWN0T3JnKCk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbC5yZXNldCgpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSBvZihXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50LkVNUFRZX1NJTVBMRV9PUkcpO1xuICAgIHRoaXMuc2ltcGxlT3JnYW5pc2F0aW9ucyQgPSBvZihbXSk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge09yZ2FuaXNhdGlvbklEOiBudWxsLCBPcmdhbmlzYXRpb25OYW1lOiBudWxsfTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5zZXRWYWx1ZSh0aGlzLmNhc2VGaWVsZC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHByZVNlbGVjdERlZmF1bHRPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW50aWF0ZU9yZ2FuaXNhdGlvbkZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRCwgdGhpcy5jYXNlRmllbGQudmFsdWUuT3JnYW5pc2F0aW9uTmFtZSk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSB0aGlzLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAob3JnYW5pc2F0aW9ucyA9PlxuICAgICAgICBvcmdhbmlzYXRpb25zLmZpbHRlcihmaW5kT3JnID0+IHtcbiAgICAgICAgICByZXR1cm4gZmluZE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyID09PSB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRDtcbiAgICAgICAgfSlcbiAgICAgICAgICAubWFwKG9yZ2FuaXNhdGlvbiA9PiB0aGlzLm9yZ2FuaXNhdGlvbkNvbnZlcnRlci50b1NpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKG9yZ2FuaXNhdGlvbikpWzBdKSxcbiAgICApO1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC52YWx1ZSAmJiB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRCkge1xuICAgICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJlU2VsZWN0RW1wdHlPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW50aWF0ZU9yZ2FuaXNhdGlvbkZvcm1Hcm91cChudWxsLCBudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkT3JnJCA9IG9mKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuRU1QVFlfU0lNUExFX09SRyk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbnRpYXRlT3JnYW5pc2F0aW9uRm9ybUdyb3VwKG9yZ0lEU3RhdGU6IGFueSwgb3JnTmFtZVN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wob3JnSURTdGF0ZSk7XG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb25WYWxpZGF0b3JzKHRoaXMuY2FzZUZpZWxkLCB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fSUQsIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbCk7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wob3JnTmFtZVN0YXRlKTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuT1JHQU5JU0FUSU9OX05BTUUsIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uVmFsaWRhdG9ycyhjYXNlRmllbGQ6IENhc2VGaWVsZCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlICYmIGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICBjb25zdCBvcmdhbmlzYXRpb25JZEZpZWxkID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHNcbiAgICAgICAgLmZpbmQoZmllbGQgPT4gZmllbGQuaWQgPT09IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuT1JHQU5JU0FUSU9OX0lEKTtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9ycyhvcmdhbmlzYXRpb25JZEZpZWxkLCBjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uVm0sIGxvd2VyT3JnU2VhcmNoVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5wb3N0Q29kZSAmJiBvcmdhbmlzYXRpb24ucG9zdENvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5wb3N0Q29kZSAmJiB0aGlzLnRyaW1BbGwob3JnYW5pc2F0aW9uLnBvc3RDb2RlKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnBvc3RDb2RlICYmIG9yZ2FuaXNhdGlvbi5wb3N0Q29kZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudHJpbUFsbChsb3dlck9yZ1NlYXJjaFRleHQpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24ubmFtZSAmJiBvcmdhbmlzYXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMSAmJiBvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUxLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUyICYmIG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTMgJiYgb3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnRvd25DaXR5ICYmIG9yZ2FuaXNhdGlvbi50b3duQ2l0eS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmNvdW50eSAmJiBvcmdhbmlzYXRpb24uY291bnR5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIG5vaW5zcGVjdGlvbiBSZWR1bmRhbnRJZlN0YXRlbWVudEpTXG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5jb3VudHJ5ICYmIG9yZ2FuaXNhdGlvbi5jb3VudHJ5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoV2l0aFNwYWNlKG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uVm0sIGxvd2VyT3JnU2VhcmNoVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dEFycmF5OiBzdHJpbmdbXSA9IGxvd2VyT3JnU2VhcmNoVGV4dC5zcGxpdCgvXFxzKy9nKTtcbiAgICBmb3IgKGNvbnN0IHNpbmdsZVNlYXJjaFRleHQgb2Ygc2VhcmNoVGV4dEFycmF5KSB7XG4gICAgICBpZiAoc2luZ2xlU2VhcmNoVGV4dCAmJiB0aGlzLnNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbiwgc2luZ2xlU2VhcmNoVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwib3JnYW5pc2F0aW9uRm9ybUdyb3VwXCI+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgIDxsZWdlbmQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJobWN0cy1iYW5uZXJcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJobWN0cy1iYW5uZXJfX2ljb25cIiBmaWxsPVwiY3VycmVudENvbG9yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIGZvY3VzYWJsZT1cImZhbHNlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBoZWlnaHQ9XCIyNVwiIHdpZHRoPVwiMjVcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xMy43LDE4LjVoLTIuNHYtMi40aDIuNFYxOC41eiBNMTIuNSwxMy43Yy0wLjcsMC0xLjItMC41LTEuMi0xLjJWNy43YzAtMC43LDAuNS0xLjIsMS4yLTEuMnMxLjIsMC41LDEuMiwxLjJ2NC44XG4gIEMxMy43LDEzLjIsMTMuMiwxMy43LDEyLjUsMTMuN3ogTTEyLjUsMC41Yy02LjYsMC0xMiw1LjQtMTIsMTJzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMxOS4xLDAuNSwxMi41LDAuNXpcIiAvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fYXNzaXN0aXZlXCI+e3snaW5mb3JtYXRpb24nIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ3YXJuaW5nLW1lc3NhZ2VcIj57eydPcmdhbmlzYXRpb24gc2VhcmNoIGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid2FybmluZy1wYW5lbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIndhcm5pbmctbWVzc2FnZVwiPlxuICAgICAgICB7eydXZSBhcmUgd29ya2luZyB0byBmaXggdGhlIGlzc3VlLllvdSBjYW4gdHJ5IGFnYWluIGxhdGVyLicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+XG4gICAgICAgIHt7J1NlYXJjaCBmb3IgYW4gb3JnYW5pc2F0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2gyPlxuICAgIDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbFwiIGZvcj1cInNlYXJjaC1vcmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBpZD1cInNlYXJjaC1vcmctaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgIHt7J1lvdSBjYW4gb25seSBzZWFyY2ggZm9yIG9yZ2FuaXNhdGlvbnMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggTXlITUNUUy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2VhcmNoIGJ5IG9yZ2FuaXNhdGlvbiBuYW1lIG9yIGFkZHJlc3MuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJzZWFyY2gtb3JnLXRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbFwiLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWxcIiBmb3I9XCJvcmdhbmlzYXRpb24tdGFibGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiPnt7J09yZ2FuaXNhdGlvbiBuYW1lIGFuZCBhZGRyZXNzJyB8IHJweFRyYW5zbGF0ZX19PC9oMj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhKHNlbGVjdGVkT3JnJCB8IGFzeW5jKT8ub3JnYW5pc2F0aW9uSWRlbnRpZmllcjsgZWxzZSBzZWxlY3RlZE9yZ2FuaXNhdGlvblwiIFtuZ0NsYXNzXT1cInsnc2Nyb2xsLWNvbnRhaW5lciAnOiAoc2ltcGxlT3JnYW5pc2F0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA+IDEwfVwiPlxuICAgICAgICA8dGFibGUgaWQ9XCJvcmdhbmlzYXRpb24tdGFibGVcIiAqbmdGb3I9XCJsZXQgb3JnYW5pc2F0aW9uIG9mIChzaW1wbGVPcmdhbmlzYXRpb25zJCB8IGFzeW5jKVwiPlxuICAgICAgICAgIDxjYXB0aW9uPjxoMyBjbGFzcz1cIm5hbWUtaGVhZGVyXCI+e3tvcmdhbmlzYXRpb24ubmFtZX19PC9oMz48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cIm9yZ2FuaXNhdGlvbi5hZGRyZXNzXCI+PC9jY2QtbWFya2Rvd24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cInNlbGVjdE9yZyhvcmdhbmlzYXRpb24pXCIgdGl0bGU9XCJ7eydTZWxlY3QgdGhlIG9yZ2FuaXNhdGlvbicgfCBycHhUcmFuc2xhdGV9fSB7e29yZ2FuaXNhdGlvbi5uYW1lfX1cIj5cbiAgICAgICAgICAgICAgICAgIHt7J1NlbGVjdCcgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihzaW1wbGVPcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwICYmIChzZWFyY2hPcmdWYWx1ZSQgfCBhc3luYyk/Lmxlbmd0aCA+IDJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIHt7J05vIHJlc3VsdHMgZm91bmQuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGVkT3JnYW5pc2F0aW9uPlxuICAgICAgICA8dGFibGUgaWQ9XCJvcmdhbmlzYXRpb24tc2VsZWN0ZWQtdGFibGVcIiAqbmdJZj1cIihzZWxlY3RlZE9yZyQgfCBhc3luYykgYXMgc2VsZWN0ZWRPcmdcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48aDMgY2xhc3M9XCJuYW1lLWhlYWRlclwiPnt7c2VsZWN0ZWRPcmcubmFtZX19PC9oMz48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cInNlbGVjdGVkT3JnLmFkZHJlc3NcIj48L2NjZC1tYXJrZG93bj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiZGVTZWxlY3RPcmcoKVwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydDbGVhciBvcmdhbmlzYXRpb24gc2VsZWN0aW9uIGZvcicgfCBycHhUcmFuc2xhdGV9fSB7e3NlbGVjdGVkT3JnLm5hbWV9fVwiPlxuICAgICAgICAgICAgICAgICAge3snQ2xlYXInIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxjY2Qtd3JpdGUtb3JnYW5pc2F0aW9uLWNvbXBsZXgtZmllbGQgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkT3JnJF09XCJzZWxlY3RlZE9yZyRcIj5cbiAgICA8L2NjZC13cml0ZS1vcmdhbmlzYXRpb24tY29tcGxleC1maWVsZD5cbiAgICA8ZGV0YWlscyBpZD1cImZpbmQtb3JnYW5pc2F0aW9uLWhlbHBcIiBjbGFzcz1cImdvdnVrLWRldGFpbHNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWRldGFpbHNcIj5cbiAgICAgIDxzdW1tYXJ5IGNsYXNzPVwiZ292dWstZGV0YWlsc19fc3VtbWFyeVwiPlxuICAgICAgPHNwYW4gaWQ9XCJjb250ZW50LXdoeS1jYW4tbm90LWZpbmQtb3JnYW5pc2F0aW9uXCIgY2xhc3M9XCJnb3Z1ay1kZXRhaWxzX19zdW1tYXJ5LXRleHRcIj5cbiAgICAgICAge3tcIkNhbuKAmXQgZmluZCB0aGUgb3JnYW5pc2F0aW9uIHlvdSBhcmUgbG9va2luZyBmb3I/XCIgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPC9zdW1tYXJ5PlxuICAgICAgPGRpdiBpZD1cImNvbnRlbnQtcmVhc29uLWNhbi1ub3QtZmluZC1vcmdhbmlzYXRpb25cIiBjbGFzcz1cImdvdnVrLWRldGFpbHNfX3RleHRcIj5cbiAgICAgICAge3snSWYgeW91IGtub3cgdGhhdCB0aGUgc29saWNpdG9yIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIE15SE1DVFMsIGNoZWNrIHRoYXQgeW91IGhhdmUgZW50ZXJlZCB0aGVpciBkZXRhaWxzIGNvcnJlY3RseS4nIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAge3tcIlJlbWVtYmVyIHRoYXQgb3JnYW5pc2F0aW9ucyBjYW4gb25seSByZWdpc3RlciBvbmUgb2ZmaWNlIGFkZHJlc3MuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZGV0YWlscyBjb3VsZCBiZSBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSdyZSBleHBlY3RpbmcuIENvbnRhY3QgdGhlIHNvbGljaXRvciBkaXJlY3RseSBpZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMuXCIgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kZXRhaWxzPlxuICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=