@sumaris-net/ngx-components 4.0.0-rc1 → 4.0.0-rc11

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 (324) hide show
  1. package/esm2022/public_api.mjs +5 -2
  2. package/esm2022/src/app/admin/admin-routing.module.mjs +5 -5
  3. package/esm2022/src/app/admin/admin.module.mjs +6 -6
  4. package/esm2022/src/app/admin/services/filter/person.filter.mjs +3 -2
  5. package/esm2022/src/app/admin/services/person.service.mjs +5 -5
  6. package/esm2022/src/app/admin/services/validator/person.validator.mjs +5 -5
  7. package/esm2022/src/app/admin/users/users.mjs +19 -28
  8. package/esm2022/src/app/admin/users/users.module.mjs +5 -5
  9. package/esm2022/src/app/core/about/about.modal.mjs +6 -6
  10. package/esm2022/src/app/core/about/about.module.mjs +5 -5
  11. package/esm2022/src/app/core/account/account.module.mjs +5 -5
  12. package/esm2022/src/app/core/account/account.page.mjs +23 -21
  13. package/esm2022/src/app/core/account/new-token.modal.mjs +20 -15
  14. package/esm2022/src/app/core/account/token.table.mjs +25 -20
  15. package/esm2022/src/app/core/auth/auth.form.mjs +6 -6
  16. package/esm2022/src/app/core/auth/auth.modal.mjs +5 -5
  17. package/esm2022/src/app/core/auth/auth.module.mjs +5 -5
  18. package/esm2022/src/app/core/core.module.mjs +5 -5
  19. package/esm2022/src/app/core/core.testing.module.mjs +5 -5
  20. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +6 -6
  21. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
  22. package/esm2022/src/app/core/form/entity/editor.class.mjs +18 -13
  23. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +6 -6
  24. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +17 -11
  25. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +5 -5
  26. package/esm2022/src/app/core/form/entity/entity.module.mjs +5 -5
  27. package/esm2022/src/app/core/form/form.class.mjs +5 -5
  28. package/esm2022/src/app/core/form/form.module.mjs +5 -5
  29. package/esm2022/src/app/core/form/list/list.form.mjs +6 -6
  30. package/esm2022/src/app/core/form/list/list.module.mjs +5 -5
  31. package/esm2022/src/app/core/form/properties/properties.form.mjs +7 -7
  32. package/esm2022/src/app/core/form/properties/properties.module.mjs +5 -5
  33. package/esm2022/src/app/core/form/properties/properties.table.mjs +12 -12
  34. package/esm2022/src/app/core/form/properties/property.validator.mjs +5 -5
  35. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +5 -5
  36. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
  37. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +5 -5
  38. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
  39. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +7 -7
  40. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +6 -11
  41. package/esm2022/src/app/core/graphql/graphql.module.mjs +6 -6
  42. package/esm2022/src/app/core/graphql/graphql.service.mjs +19 -18
  43. package/esm2022/src/app/core/home/home.mjs +7 -8
  44. package/esm2022/src/app/core/home/home.module.mjs +5 -5
  45. package/esm2022/src/app/core/icon/icon.component.mjs +4 -4
  46. package/esm2022/src/app/core/icon/icon.module.mjs +5 -5
  47. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +6 -6
  48. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +5 -5
  49. package/esm2022/src/app/core/menu/menu.component.mjs +16 -12
  50. package/esm2022/src/app/core/menu/menu.model.mjs +3 -2
  51. package/esm2022/src/app/core/menu/menu.module.mjs +5 -5
  52. package/esm2022/src/app/core/menu/menu.service.mjs +13 -7
  53. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +5 -5
  54. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +5 -5
  55. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +5 -5
  56. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +5 -5
  57. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +5 -5
  58. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
  59. package/esm2022/src/app/core/peer/select-peer.modal.mjs +8 -7
  60. package/esm2022/src/app/core/peer/select-peer.module.mjs +5 -5
  61. package/esm2022/src/app/core/register/register-confirm.page.mjs +5 -5
  62. package/esm2022/src/app/core/register/register.form.mjs +6 -6
  63. package/esm2022/src/app/core/register/register.modal.mjs +5 -5
  64. package/esm2022/src/app/core/register/register.module.mjs +5 -5
  65. package/esm2022/src/app/core/services/account.service.mjs +52 -26
  66. package/esm2022/src/app/core/services/auth-guard.service.mjs +6 -6
  67. package/esm2022/src/app/core/services/base-entity-service.class.mjs +5 -5
  68. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +6 -6
  69. package/esm2022/src/app/core/services/config/core.config.mjs +7 -7
  70. package/esm2022/src/app/core/services/config.service.mjs +15 -13
  71. package/esm2022/src/app/core/services/crypto.service.mjs +4 -4
  72. package/esm2022/src/app/core/services/local-settings.service.mjs +6 -6
  73. package/esm2022/src/app/core/services/model/account.model.mjs +5 -3
  74. package/esm2022/src/app/core/services/model/config.model.mjs +8 -6
  75. package/esm2022/src/app/core/services/model/department.model.mjs +3 -2
  76. package/esm2022/src/app/core/services/model/peer.model.mjs +3 -2
  77. package/esm2022/src/app/core/services/model/person.model.mjs +3 -2
  78. package/esm2022/src/app/core/services/model/referential.model.mjs +7 -3
  79. package/esm2022/src/app/core/services/model/token.model.mjs +8 -3
  80. package/esm2022/src/app/core/services/network.service.mjs +60 -42
  81. package/esm2022/src/app/core/services/network.types.mjs +1 -1
  82. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +9 -9
  83. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
  84. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
  85. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
  86. package/esm2022/src/app/core/services/platform.service.mjs +23 -12
  87. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +6 -6
  88. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +1 -1
  89. package/esm2022/src/app/core/services/testing/referential.validator.mjs +5 -5
  90. package/esm2022/src/app/core/services/validator/account.validator.mjs +5 -5
  91. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +5 -5
  92. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +5 -5
  93. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +5 -5
  94. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +5 -5
  95. package/esm2022/src/app/core/settings/settings.module.mjs +5 -5
  96. package/esm2022/src/app/core/settings/settings.page.mjs +7 -7
  97. package/esm2022/src/app/core/table/actions-column.component.mjs +5 -5
  98. package/esm2022/src/app/core/table/async-table.class.mjs +5 -5
  99. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +5 -5
  100. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +5 -5
  101. package/esm2022/src/app/core/table/memory-table.class.mjs +5 -5
  102. package/esm2022/src/app/core/table/table-select-columns.component.mjs +5 -5
  103. package/esm2022/src/app/core/table/table.class.mjs +9 -5
  104. package/esm2022/src/app/core/table/table.module.mjs +5 -5
  105. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +5 -5
  106. package/esm2022/src/app/core/table/testing/table.testing.mjs +7 -7
  107. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +5 -5
  108. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +5 -5
  109. package/esm2022/src/app/core/table/testing/table2.testing.mjs +7 -7
  110. package/esm2022/src/app/shared/audio/audio.mjs +6 -6
  111. package/esm2022/src/app/shared/audio/audio.testing.mjs +5 -5
  112. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +5 -5
  113. package/esm2022/src/app/shared/capacitor/keyboard.mjs +5 -5
  114. package/esm2022/src/app/shared/debug/debug.component.mjs +6 -6
  115. package/esm2022/src/app/shared/debug/debug.module.mjs +5 -5
  116. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +5 -5
  117. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +6 -6
  118. package/esm2022/src/app/shared/directives/directives.module.mjs +5 -5
  119. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
  120. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +5 -5
  121. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +6 -6
  122. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +6 -6
  123. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
  124. package/esm2022/src/app/shared/file/file.service.mjs +6 -6
  125. package/esm2022/src/app/shared/form/field.component.mjs +7 -7
  126. package/esm2022/src/app/shared/form/loading-spinner.mjs +4 -4
  127. package/esm2022/src/app/shared/gesture/gesture-config.mjs +4 -4
  128. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +5 -5
  129. package/esm2022/src/app/shared/help/help.modal.mjs +5 -5
  130. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +8 -9
  131. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +5 -5
  132. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
  133. package/esm2022/src/app/shared/http/http.utils.mjs +15 -11
  134. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +6 -6
  135. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
  136. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
  137. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +5 -5
  138. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +5 -5
  139. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
  140. package/esm2022/src/app/shared/image/image.module.mjs +5 -5
  141. package/esm2022/src/app/shared/image/image.service.mjs +6 -6
  142. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
  143. package/esm2022/src/app/shared/logging/logging-service.class.mjs +6 -6
  144. package/esm2022/src/app/shared/logging/logging-service.module.mjs +5 -5
  145. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +9 -9
  146. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
  147. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +6 -6
  148. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +6 -6
  149. package/esm2022/src/app/shared/material/badge/badge.module.mjs +5 -5
  150. package/esm2022/src/app/shared/material/badge/badge.test.mjs +5 -5
  151. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +5 -5
  152. package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +6 -6
  153. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +7 -7
  154. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +5 -5
  155. package/esm2022/src/app/shared/material/chips/chips.module.mjs +5 -5
  156. package/esm2022/src/app/shared/material/chips/material.chips.mjs +7 -7
  157. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +5 -5
  158. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +5 -5
  159. package/esm2022/src/app/shared/material/datetime/material.date.mjs +8 -8
  160. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +7 -7
  161. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +36 -10
  162. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +15 -8
  163. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +8 -7
  164. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +5 -5
  165. package/esm2022/src/app/shared/material/duration/duration.module.mjs +5 -5
  166. package/esm2022/src/app/shared/material/duration/material.duration.mjs +6 -6
  167. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +5 -5
  168. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +35 -10
  169. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
  170. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +5 -5
  171. package/esm2022/src/app/shared/material/material.module.mjs +14 -9
  172. package/esm2022/src/app/shared/material/material.testing.module.mjs +16 -5
  173. package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +5 -5
  174. package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +5 -5
  175. package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +5 -5
  176. package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +4 -4
  177. package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +5 -5
  178. package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +5 -5
  179. package/esm2022/src/app/shared/material/numpad/numpad.module.mjs +5 -5
  180. package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +5 -5
  181. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +5 -5
  182. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +5 -5
  183. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +6 -6
  184. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +5 -5
  185. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +5 -5
  186. package/esm2022/src/app/shared/material/testing/common.test.mjs +5 -5
  187. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +31 -0
  188. package/esm2022/src/app/shared/material/text/text-form.component.mjs +97 -0
  189. package/esm2022/src/app/shared/material/text/text-form.module.mjs +63 -0
  190. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +41 -17
  191. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
  192. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
  193. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +5 -5
  194. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +25 -25
  195. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +4 -4
  196. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +6 -6
  197. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +9 -9
  198. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +6 -6
  199. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +6 -6
  200. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +4 -4
  201. package/esm2022/src/app/shared/pipes/form.pipes.mjs +21 -21
  202. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +5 -5
  203. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
  204. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +13 -13
  205. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +7 -7
  206. package/esm2022/src/app/shared/pipes/math.pipes.mjs +13 -13
  207. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
  208. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +5 -5
  209. package/esm2022/src/app/shared/pipes/pipes.module.mjs +5 -5
  210. package/esm2022/src/app/shared/pipes/property.pipes.mjs +9 -9
  211. package/esm2022/src/app/shared/pipes/string.pipes.mjs +31 -31
  212. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +10 -10
  213. package/esm2022/src/app/shared/pipes/types.pipes.mjs +13 -13
  214. package/esm2022/src/app/shared/rx-state.module.mjs +5 -5
  215. package/esm2022/src/app/shared/services/entity-service.class.mjs +1 -1
  216. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +13 -13
  217. package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
  218. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +6 -6
  219. package/esm2022/src/app/shared/services/startable-service.class.mjs +7 -7
  220. package/esm2022/src/app/shared/services/translate-context.service.mjs +5 -5
  221. package/esm2022/src/app/shared/services.mjs +2 -2
  222. package/esm2022/src/app/shared/shared-routing.module.mjs +9 -9
  223. package/esm2022/src/app/shared/shared.module.mjs +27 -13
  224. package/esm2022/src/app/shared/shared.testing.module.mjs +5 -5
  225. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +6 -6
  226. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +5 -5
  227. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +5 -5
  228. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +5 -5
  229. package/esm2022/src/app/shared/storage/storage.service.mjs +6 -6
  230. package/esm2022/src/app/shared/testing/observable.test.mjs +5 -5
  231. package/esm2022/src/app/shared/testing/tests.page.mjs +6 -6
  232. package/esm2022/src/app/shared/toast/toast.testing.mjs +5 -5
  233. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -5
  234. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +5 -5
  235. package/esm2022/src/app/shared/toolbar/toolbar.mjs +7 -7
  236. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +5 -5
  237. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +5 -5
  238. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
  239. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +5 -5
  240. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +5 -5
  241. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +6 -6
  242. package/esm2022/src/app/social/job/job.module.mjs +5 -5
  243. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +5 -5
  244. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +6 -6
  245. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +5 -5
  246. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +3 -2
  247. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +6 -6
  248. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +6 -6
  249. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
  250. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +5 -5
  251. package/esm2022/src/app/social/message/message.form.mjs +59 -7
  252. package/esm2022/src/app/social/message/message.modal.mjs +21 -13
  253. package/esm2022/src/app/social/message/message.model.mjs +5 -1
  254. package/esm2022/src/app/social/message/message.module.mjs +9 -22
  255. package/esm2022/src/app/social/message/message.service.mjs +33 -11
  256. package/esm2022/src/app/social/social.module.mjs +5 -5
  257. package/esm2022/src/app/social/social.testing.module.mjs +5 -5
  258. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +6 -6
  259. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +6 -6
  260. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +6 -6
  261. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +3 -2
  262. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
  263. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +6 -6
  264. package/esm2022/src/app/social/user-event/user-event.module.mjs +5 -5
  265. package/esm2022/src/app/social/user-event/user-event.service.mjs +40 -26
  266. package/esm2022/src/environments/environment.class.mjs +4 -1
  267. package/esm2022/src/environments/environment.loader.mjs +83 -0
  268. package/esm2022/src/environments/environment.mjs +18 -15
  269. package/fesm2022/sumaris-net.ngx-components.mjs +4422 -3975
  270. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  271. package/package.json +31 -6
  272. package/public_api.d.ts +4 -1
  273. package/src/app/core/account/account.page.d.ts +3 -2
  274. package/src/app/core/account/new-token.modal.d.ts +1 -3
  275. package/src/app/core/account/token.table.d.ts +5 -3
  276. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +1 -1
  277. package/src/app/core/form/entity/editor.class.d.ts +1 -1
  278. package/src/app/core/form/entity/entity-editor.class.d.ts +10 -6
  279. package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
  280. package/src/app/core/form/text-popover/text-popover.component.d.ts +1 -1
  281. package/src/app/core/form/text-popover/text-popover.module.d.ts +4 -5
  282. package/src/app/core/graphql/graphql.service.d.ts +2 -4
  283. package/src/app/core/graphql/graphql.utils.d.ts +1 -1
  284. package/src/app/core/menu/menu.component.d.ts +6 -2
  285. package/src/app/core/menu/menu.service.d.ts +2 -0
  286. package/src/app/core/services/account.service.d.ts +4 -0
  287. package/src/app/core/services/config/core.config.d.ts +2 -2
  288. package/src/app/core/services/model/referential.model.d.ts +2 -1
  289. package/src/app/core/services/model/token.model.d.ts +1 -0
  290. package/src/app/core/services/network.service.d.ts +11 -7
  291. package/src/app/core/table/table.class.d.ts +1 -0
  292. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +2 -4
  293. package/src/app/shared/http/http.utils.d.ts +1 -0
  294. package/src/app/shared/inputs.d.ts +1 -1
  295. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +1 -1
  296. package/src/app/shared/material/datetime/material.datetime.d.ts +10 -4
  297. package/src/app/shared/material/latlong/material.latlong.d.ts +10 -4
  298. package/src/app/shared/material/material.module.d.ts +2 -1
  299. package/src/app/shared/material/material.testing.module.d.ts +14 -13
  300. package/src/app/shared/material/text/testing/text-form.testing.d.ts +13 -0
  301. package/src/app/{core/form/text-popover → shared/material/text}/text-form.component.d.ts +2 -2
  302. package/src/app/shared/material/text/text-form.module.d.ts +16 -0
  303. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +9 -3
  304. package/src/app/shared/services/entity-service.class.d.ts +1 -1
  305. package/src/app/shared/services/memory-entity-service.class.d.ts +7 -3
  306. package/src/app/shared/services.d.ts +1 -0
  307. package/src/app/shared/shared.module.d.ts +5 -3
  308. package/src/app/social/message/message.form.d.ts +8 -2
  309. package/src/app/social/message/message.modal.d.ts +5 -1
  310. package/src/app/social/message/message.model.d.ts +2 -0
  311. package/src/app/social/message/message.module.d.ts +2 -1
  312. package/src/app/social/message/message.service.d.ts +8 -3
  313. package/src/app/social/user-event/user-event.service.d.ts +5 -0
  314. package/src/assets/environments/environment-test.json +6 -0
  315. package/src/assets/i18n/en-US.json +25 -23
  316. package/src/assets/i18n/en.json +25 -23
  317. package/src/assets/i18n/fr.json +8 -5
  318. package/src/assets/manifest.json +1 -1
  319. package/src/environments/environment.class.d.ts +2 -0
  320. package/src/environments/environment.loader.d.ts +26 -0
  321. package/src/theme/_material.scss +20 -4
  322. package/src/theme/_ngx-components.scss +1 -1
  323. package/src/theme/_ngx-components.table.scss +24 -17
  324. package/esm2022/src/app/core/form/text-popover/text-form.component.mjs +0 -97
@@ -377,10 +377,10 @@ export class EntitiesAsyncTableDataSource extends AsyncTableDataSource {
377
377
  this.loadingSubject.next(false);
378
378
  }
379
379
  }
380
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntitiesAsyncTableDataSource, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
381
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: EntitiesAsyncTableDataSource, usesInheritance: true, ngImport: i0 });
380
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EntitiesAsyncTableDataSource, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
381
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: EntitiesAsyncTableDataSource, usesInheritance: true, ngImport: i0 });
382
382
  }
383
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntitiesAsyncTableDataSource, decorators: [{
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EntitiesAsyncTableDataSource, decorators: [{
384
384
  type: Directive
385
- }], ctorParameters: function () { return [{ type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }]; } });
386
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtYXN5bmMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy1hc3luYy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQUU5QixPQUFPLEVBQUUsb0JBQW9CLEVBQThELE1BQU0sMEJBQTBCLENBQUM7QUFDNUgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBSXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBMEJoRSxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyw0QkFVVCxTQUFRLG9CQUFnQztJQStDZDtJQTVDWCxXQUFXLENBQVM7SUFFM0IsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixZQUFZLEdBQStCLElBQUksQ0FBQztJQUNoRCxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWxE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QUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRSxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzt3R0FyYlUsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBRnhDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBub2luc3BlY3Rpb24gRHVwbGljYXRlZENvZGVcblxuaW1wb3J0IHsgQXN5bmNUYWJsZURhdGFTb3VyY2UsIEFzeW5jVGFibGVFbGVtZW50LCBUYWJsZURhdGFTb3VyY2VDb25maWcsIFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHksIElFbnRpdHkgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRXJyb3JDb2RlcyB9IGZyb20gJy4uL3NlcnZpY2VzL2Vycm9ycyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IENvbGxlY3Rpb25WaWV3ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLCBGZXRjaE1vcmVGbiwgSUVudGl0aWVzU2VydmljZSwgTG9hZFJlc3VsdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBmaXJzdEZhbHNlUHJvbWlzZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIHJlbW92ZUVuZCwgc2xlZXAgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcFRhYmxlVXRpbHMgfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElFbnRpdGllc1RhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vdGFibGUubW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNBc3luY1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnlcbiAgPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZUNvbmZpZyB7XG5cbiAgb25Sb3dDcmVhdGVkPzogKHJvdzogQXN5bmNUYWJsZUVsZW1lbnQ8VD4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICBzYXZlT25seURpcnR5Um93cz86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGRhdGFTZXJ2aWNlT3B0aW9ucz86IFdPICYgU087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS53YXRjaEFsbCgpIGFuZCBkYXRhU2VydmljZS5zYXZlQWxsKClcblxuICB3YXRjaEFsbE9wdGlvbnM/OiBXTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuICBzYXZlQWxsT3B0aW9ucz86IFNPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBFbnRpdGllc0FzeW5jVGFibGVEYXRhU291cmNlPFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sXG4gIEYgPSBhbnksXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnksXG4gIFYgZXh0ZW5kcyBWYWxpZGF0b3JTZXJ2aWNlID0gVmFsaWRhdG9yU2VydmljZSxcbiAgQyBleHRlbmRzIEVudGl0aWVzQXN5bmNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4gPSBFbnRpdGllc0FzeW5jVGFibGVEYXRhU291cmNlQ29uZmlnPFQsIElELCBXTywgU08+LFxuICBSIGV4dGVuZHMgQXN5bmNUYWJsZUVsZW1lbnQ8VD4gPSBBc3luY1RhYmxlRWxlbWVudDxUPlxuICA+XG4gICAgZXh0ZW5kcyBBc3luY1RhYmxlRGF0YVNvdXJjZTxULCBWLCBDLCBSPlxuICAgIGltcGxlbWVudHMgSUVudGl0aWVzVGFibGVEYXRhU291cmNlPFI+LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0eU5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2RlYnVnID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfY3JlYXRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zYXZpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9mZXRjaE1vcmVGbjogRmV0Y2hNb3JlRm48TG9hZFJlc3VsdDxUPj4gPSBudWxsO1xuICBwcm90ZWN0ZWQgX3N0b3BXYXRjaFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuXG4gIGdldCB3YXRjaEFsbE9wdGlvbnMoKTogV08ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy53YXRjaEFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgd2F0Y2hBbGxPcHRpb25zKHZhbHVlOiBXTykgIHtcbiAgICB0aGlzLmNvbmZpZy53YXRjaEFsbE9wdGlvbnMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzYXZlQWxsT3B0aW9ucygpOiBTTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zO1xuICB9XG5cbiAgc2V0IHNhdmVBbGxPcHRpb25zKHZhbHVlOiBTTykgIHtcbiAgICB0aGlzLmNvbmZpZy5zYXZlQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGxvYWRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSA9PT0gZmFsc2U7IC8vIFNob3VsZCBiZSBmYWxzZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZTsgLy8gU2hvdWxkIGJlIHRydWUgd2hlbiB1bmRlZmluZWQgKGluaXRpYWwgc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBUYWJsZURhdGFTb3VyY2UgaW5zdGFuY2UsIHRoYXQgY2FuIGJlIHVzZWQgYXMgZGF0YXNvdXJjZSBvZiBgQGFuZ3VsYXIvY2RrYCBkYXRhLXRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVNlcnZpY2UgQSBzZXJ2aWNlIHRvIGxvYWQgYW5kIHNhdmUgZGF0YVxuICAgKiBAcGFyYW0gZGF0YVR5cGUgVHlwZSBvZiBkYXRhIGNvbnRhaW5lZCBieSB0aGUgVGFibGUuIElmIG5vdCBzcGVjaWZpZWQsIHRoZW4gYGRhdGFgIHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gdmFsaWRhdG9yU2VydmljZSBTZXJ2aWNlIHRoYXQgY3JlYXRlIGluc3RhbmNlcyBvZiB0aGUgRm9ybUdyb3VwIHVzZWQgdG8gdmFsaWRhdGUgcm93IGZpZWxkcy5cbiAgICogQHBhcmFtIGNvbmZpZyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRhYmxlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YVR5cGU6IG5ldygpID0+IFQsXG4gICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBkYXRhU2VydmljZTogSUVudGl0aWVzU2VydmljZTxULCBGLCBXTz4sXG4gICAgICAgICAgICAgIHZhbGlkYXRvclNlcnZpY2U/OiBWLFxuICAgICAgICAgICAgICBvcHRpb25zPzogQykge1xuICAgIHN1cGVyKFtdLCBkYXRhVHlwZSwgdmFsaWRhdG9yU2VydmljZSwge1xuICAgICAga2VlcE9yaWdpbmFsRGF0YUFmdGVyQ29uZmlybTogZmFsc2UsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzYXZlT25seURpcnR5Um93czogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG5cbiAgICB0aGlzLl9lbnRpdHlOYW1lID0gcmVtb3ZlRW5kKChuZXcgZGF0YVR5cGUoKSkuX190eXBlbmFtZSB8fCAnVW5rbm93blZPJywgJ1ZPJyk7XG4gICAgdGhpcy5fZGVidWcgPSBvcHRpb25zPy5zdXBwcmVzc0Vycm9ycyA9PT0gZmFsc2UgJiYgIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMud2F0Y2hBbGxPcHRpb25zIGFzIFdPKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCAnRVJST1IuTE9BRF9EQVRBX0VSUk9SJykpLFxuICAgICAgICBtYXAoKHJlczogTG9hZFJlc3VsdDxUPikgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9zYXZpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSAoZnJvbSBzZXJ2aWNlKSwgYnV0IHN0aWxsIHNhdmluZzogc2tpcGApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNTb21lRWRpdGluZ1JvdygpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSZWNlaXZlZCAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGEsIHdoaWxlIHNvbWUgcm93IHN0aWxsIGVkaXRpbmc6IHNraXA7IFBsZWFzZSBjaGVjayBzYXZlKCkgaW1wbGVtZW50YXRpb24gaW4gdGhlIHRhYmxlIWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFzb3VyY2UoKHJlcy5kYXRhIHx8IFtdKSBhcyBUW10pO1xuICAgICAgICAgICAgdGhpcy5fZmV0Y2hNb3JlRm4gPSByZXMuZmV0Y2hNb3JlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KSxcbiAgICAgICAgLy8gU3RvcCB0aGlzIHBpcGUgbmV4dCB0aW1lIHdlIGNhbGwgd2F0Y2hBbGwoKVxuICAgICAgICB0YWtlVW50aWwodGhpcy5fc3RvcFdhdGNoU3ViamVjdClcbiAgICAgICAgLy8g4pqgIE5vdGljZTogRG9uJ3QgcHV0IGFueSBvcGVyYXRvciBhZnRlciB0YWtlVW50aWwgdG8gYXZvaWQgcG90ZW50aWFsIHN1YnNjcmlwdGlvbiBsZWFrc1xuICAgICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVEYXRhc291cmNlRnJvbVJvd3Mocm93czogUltdKSB7XG4gICAgLy8gQXZvaWQgdG8gdXBkYXRlIGRhdGFTb3VyY2VTdWJqZWN0LCB3aGVuIG5vdCBuZWVkXG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZVN1YmplY3Qub2JzZXJ2ZXJzPy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5jb25maWcuc3VwcHJlc3NFcnJvcnMpIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFVwZGF0ZSBkYXRhc291cmNlIHN1YmplY3QuIFBsZWFzZSBwcmVmZXIgdXNpbmcgXFwncm93c1N1YmplY3RcXCcgaW5zdGVhZCBvZiBcXCdkYXRhc291cmNlU3ViamVjdFxcJycpO1xuICAgICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZUZyb21Sb3dzKHJvd3MpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTa2lwcGluZyBkYXRhc291cmNlU3ViamVjdCB1cGRhdGUgKG5vdCB1c2VkIHlldCkuJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5jb25maWcucmVhZE9ubHkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBFbmFibGUgdG8gc2F2ZSwgYmVjYXVzZSBjb25maWcucmVhZE9ubHk9dHJ1ZScpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBTYXZpbmcgdHdpY2UgKHNob3VsZCBuZXZlciBvY2N1cilcbiAgICBpZiAodGhpcy5fc2F2aW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBUcnlpbmcgdG8gc2F2ZSAke3RoaXMuX2VudGl0eU5hbWV9IHJvd3MgdHdpY2UuIFNraXBgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25seURpcnR5Um93cyA9IHRoaXMuY29uZmlnLnNhdmVPbmx5RGlydHlSb3dzO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFNhdmluZyAke3RoaXMuX2VudGl0eU5hbWV9IHJvd3MuLi4ge29ubHlEaXJ0eVJvd3M6ICR7b25seURpcnR5Um93c319YCk7XG5cbiAgICAgIC8vIEdldCBhbGwgcm93c1xuICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ2V0Um93cygpO1xuXG4gICAgICAvLyBGaW5pc2ggZWRpdGluZyBhbGwgcm93c1xuICAgICAgY29uc3QgaW52YWxpZFJvd3M6IEFzeW5jVGFibGVFbGVtZW50PFQ+W10gPSAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHRoaXMuZ2V0RWRpdGluZ1Jvd3MoKVxuICAgICAgICAgIC5tYXAocm93ID0+IHJvdy5jb25maXJtRWRpdENyZWF0ZSgpLnRoZW4oY29uZmlybWVkID0+IGNvbmZpcm1lZCA9PT0gZmFsc2UgPyByb3cgOiBudWxsKVxuICAgICAgICAgICkpKVxuICAgICAgICAuZmlsdGVyKGlzTm90TmlsKTtcblxuICAgICAgLy8gQ2Fubm90IGZpbmlzaCBzb21lIHJvd3M6IGVycm9yXG4gICAgICBpZiAoaW52YWxpZFJvd3MubGVuZ3RoKSB7XG4gICAgICAgIC8vIGxvZyBlcnJvcnNcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBpbnZhbGlkUm93cy5mb3JFYWNoKHJvdyA9PiBBcHBUYWJsZVV0aWxzLmxvZ1Jvd0Vycm9ycyhyb3csIGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gJHt0aGlzLl9lbnRpdHlOYW1lfSByb3cgIyR7cm93LmlkfWApKTtcbiAgICAgICAgLy8gU3RvcCB3aXRoIGFuIGVycm9yXG4gICAgICAgIHRocm93IHtjb2RlOiBFcnJvckNvZGVzLlRBQkxFX0lOVkFMSURfUk9XX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuVEFCTEVfSU5WQUxJRF9ST1dfRVJST1InfTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGE6IFRbXTtcbiAgICAgIGxldCBkYXRhVG9TYXZlOiBUW107XG5cbiAgICAgIGlmICh0aGlzLnZhbGlkYXRvclNlcnZpY2UpIHtcbiAgICAgICAgZGF0YVRvU2F2ZSA9IFtdO1xuICAgICAgICBkYXRhID0gcm93cy5tYXAocm93ID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IG5ldyB0aGlzLmRhdGFDb25zdHJ1Y3RvcigpIGFzIFQ7XG4gICAgICAgICAgY3VycmVudERhdGEuZnJvbU9iamVjdChyb3cuY3VycmVudERhdGEpO1xuICAgICAgICAgIC8vIEZpbHRlciB0byBrZWVwIG9ubHkgZGlydHkgcm93XG4gICAgICAgICAgaWYgKG9ubHlEaXJ0eVJvd3MgJiYgcm93LnZhbGlkYXRvci5kaXJ0eSkgZGF0YVRvU2F2ZS5wdXNoKGN1cnJlbnREYXRhKTtcbiAgICAgICAgICByZXR1cm4gY3VycmVudERhdGE7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIW9ubHlEaXJ0eVJvd3MpIGRhdGFUb1NhdmUgPSBkYXRhO1xuICAgICAgfVxuICAgICAgLy8gT3IgdXNlIHRoZSBjdXJyZW50IGRhdGEgd2l0aG91dCBjb252ZXJzaW9uICh3aGVuIG5vIHZhbGlkYXRvciBzZXJ2aWNlIHVzZWQpXG4gICAgICBlbHNlIHtcbiAgICAgICAgZGF0YSA9IHJvd3MubWFwKHJvdyA9PiByb3cuY3VycmVudERhdGEpO1xuICAgICAgICAvLyBzYXZlIGFsbCBkYXRhLCBhcyB3ZSBkb24ndCBoYXZlIGFueSBkaXJ0eSBtYXJrZXJcbiAgICAgICAgZGF0YVRvU2F2ZSA9IGRhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG5vIGRhdGEgdG8gc2F2ZTogZXhpdFxuICAgICAgaWYgKG9ubHlEaXJ0eVJvd3MgJiYgIWRhdGFUb1NhdmUubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIE5vICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSB0byBzYXZlLiBTa2lwYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gQXNraW5nIHNlcnZpY2UgdG8gc2F2ZSB0aGlzICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YTpgLCBkYXRhVG9TYXZlKTtcbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2Uuc2F2ZUFsbChkYXRhVG9TYXZlLCB0aGlzLnNhdmVBbGxPcHRpb25zKTtcblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2F2aW5nICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSBbT0tdYCk7XG5cbiAgICAgIC8vIExQIDIzLzAzLzIwMjE6IHVwZGF0ZSBkYXRhc291cmNlIGlzIG5lY2Vzc2FyeSBidXQgY2FuIGJlIGNoYW5nZWQgdG8gYSByZWZldGNoKCkgb24gUXVlcnlSZWYgKG11c3QgYmUgY3JlYXRlZCBhbmQgcmVnaXN0ZXJlZCBpbiBHcmFwaHFsU2VydmljZS53YXRjaFF1ZXJ5KVxuICAgICAgdGhpcy51cGRhdGVEYXRhc291cmNlKGRhdGEsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZXJyb3IoJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBFcnJvciB3aGlsZSBzYXZpbmc6ICcgKyBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRGF0YXNvdXJjZShkYXRhOiBUW10sIG9wdHM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gVXBkYXRpbmcgZGF0YXNvdXJjZSB3aXRoIGRhdGE6YCwgZGF0YSk7XG5cbiAgICBzdXBlci51cGRhdGVEYXRhc291cmNlKGRhdGEsIG9wdHMpO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPFJbXSB8IFJlYWRvbmx5QXJyYXk8Uj4+IHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhcIltlbnRpdGllcy1kYXRhc291cmNlXSBjb25uZWN0XCIpO1xuICAgIHJldHVybiBzdXBlci5jb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXIpO1xuICB9XG5cbiAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyPzogQ29sbGVjdGlvblZpZXdlcikge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIERpc2Nvbm5lY3RpbmcuLi4nKTtcbiAgICBzdXBlci5kaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXIpO1xuICAgIGlmICghdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jbG9zZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIENsb3NpbmcuLi4nKTtcbiAgICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdhaXRJZGxlKGRlYm91bmNlVGltZU1zPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gZmlyc3RGYWxzZVByb21pc2UodGhpcy5sb2FkaW5nU3ViamVjdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZU1zIHx8IDEwMCkgLy8gaWYgbm90IHN0YXJ0ZWQgeWV0LCB3YWl0XG4gICAgICApKTtcbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1DcmVhdGUocm93OiBSKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgc3VwZXIuY29uZmlybUNyZWF0ZShyb3cpO1xuICAgIGlmICghY29uZmlybWVkKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1DcmVhdGUoKSEgRm9yY2UgZWRpdGluZyB0byBmYWxzZScpO1xuICAgICAgcm93LnZhbGlkYXRvci5kaXNhYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlybWVkO1xuICB9XG5cbiAgYXN5bmMgY29uZmlybUVkaXQocm93OiBSKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgc3VwZXIuY29uZmlybUVkaXQocm93KTtcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiB0cnVlfSBhZnRlciBjb25maXJtRWRpdCgpISBGb3JjZSBlZGl0aW5nIHRvIGZhbHNlJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRFZGl0KHJvdzogUik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVkaXRpbmcgPSBhd2FpdCBzdXBlci5zdGFydEVkaXQocm93KTtcbiAgICBpZiAoIWVkaXRpbmcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIXJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IGZhbHNlfSBhZnRlciBzdGFydEVkaXQoKSEgRm9yY2UgZWRpdGluZycpO1xuICAgICAgcm93LnZhbGlkYXRvci5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yO1xuICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTZXJ2aWNlICR7dGhpcy5fZW50aXR5TmFtZX0gc2VudCBlcnJvcjogJHtlcnJvck1zZ31gLCBlcnJvcik7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSB8fCBlcnJvck1zZyk7XG4gIH1cblxuICBoYW5kbGVTZXJ2aWNlRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICBjb25zb2xlLmVycm9yKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2VydmljZSAke3RoaXMuX2VudGl0eU5hbWV9IHNlbnQgZXJyb3I6ICR7ZXJyb3JNc2d9YCwgZXJyb3IpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBhc3luYyBkZWxldGUoaWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIElmIG5ldyByb3c6IG5vdCBuZWVkIHRvIHByb3BhZ2F0ZSB0byB0aGUgZGF0YVNlcnZpY2VcbiAgICBpZiAoaWQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3cgPSB0aGlzLmdldFJvdyhpZCk7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgdG8gZGVsZXRlIHdpdGggaWQ9JHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoW3Jvdy5jdXJyZW50RGF0YV0sIHRoaXMuc2F2ZUFsbE9wdGlvbnMpO1xuXG4gICAgICAvLyBXYWl0IGNhY2hlIHVwZGF0ZSwgdGhlbiB0YWJsZSB1cGRhdGVcbiAgICAgIGF3YWl0IHNsZWVwKDMwMCk7XG5cbiAgICAgIC8vIG1ha2Ugc3VyZSByb3cgaGFzIGJlZW4gZGVsZXRlZCAoYmVjYXVzZSBHcmFwaFFsIGNhY2hlIHJlbW92ZSBjYW4gZmFpbClcbiAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLmdldFJvdyhpZCkgPT09IHJvdztcbiAgICAgIGlmIChwcmVzZW50KSBhd2FpdCBzdXBlci5kZWxldGUoaWQpO1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gICAgY2F0Y2goZXJyKSB7XG4gICAgICB0aGlzLmhhbmRsZVNlcnZpY2VFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChyb3dzOiBSW10pOiBQcm9taXNlPGFueT4ge1xuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXREYXRhRnJvbVJvd3Mocm93cyk7XG5cbiAgICB0cnkge1xuXG4gICAgICAvLyBDYWxsIHNlcnZpY2UgZGVsZXRpb25cbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlQWxsKGRhdGEsIHRoaXMuc2F2ZUFsbE9wdGlvbnMpO1xuXG4gICAgICAvLyBXYWl0IHByb3BhZ2F0aW9uIChlLmcuIHVwZGF0ZSBjYWNoZSwgdGhlbiByZWNlaXZlZCB1cGRhdGUgZnJvbSBkYXRhU2VydmljZS53YXRjaEFsbCgpKVxuICAgICAgYXdhaXQgc2xlZXAoNTAwKTtcblxuICAgICAgLy8gV29ya2Fyb3VuZCwgdG8gYmUgc3VyZSBhbGwgcm93cyBoYXZlIGJlZW4gZGVsZXRlZFxuICAgICAgLy8gU29tZXRpbWUsIHRoZSBzZXJ2aWNlIG1pc3MgZGVsZXRpb24sIG9yIEdyYXBoUWwgY2FjaGUgcmVtb3ZlIGZhaWxlZC5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgYXBwbHkgbWlzc2luZyBkZWxldGlvbiB1c2luZyB0aGUgcGFyZW50IGRlbGV0ZSgpIGZ1bmN0aW9uXG4gICAgICBjb25zdCByb3dOb3REZWxldGVkID0gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvdyA9PiByb3dzLmluY2x1ZGVzKHJvdykpO1xuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShyb3dOb3REZWxldGVkKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBGb3JjZSBkZWxldGlvbiBvZiAke3Jvd05vdERlbGV0ZWQubGVuZ3RofSByb3dzISBQbGVhc2UgY2hlY2sgdGhhdCBkYXRhIHNlcnZpY2UgdXBkYXRlIHRoZSBjYWNoZSwgYWZ0ZXIgZGVsZXRpb25gKTtcbiAgICAgICAgLy8gU3RhcnQgYXQgdGhlIGVuZFxuICAgICAgICBmb3IgKGNvbnN0IHIgb2Ygcm93Tm90RGVsZXRlZC5zb3J0KChhLCBiKSA9PiBhLmlkID4gYi5pZCA/IC0xIDogMSkpIHtcbiAgICAgICAgICBhd2FpdCBzdXBlci5kZWxldGUoci5pZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgLy8gSGFuZGxlIHNlcnZpY2UgZXJyb3JcbiAgICAgIHRoaXMuaGFuZGxlU2VydmljZUVycm9yKGVycik7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXRSb3coaWQ6IG51bWJlcik6IFIge1xuICAgIHJldHVybiBzdXBlci5nZXRSb3coaWQpO1xuICB9XG5cbiAgZ2V0Um93cygpOiBSW10ge1xuICAgIHJldHVybiB0aGlzLnJvd3NTdWJqZWN0LnZhbHVlIHx8IFtdO1xuICB9XG5cbiAgZ2V0RWRpdGluZ1Jvd3MoKTogUltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvdyA9PiByb3cuZWRpdGluZyk7XG4gIH1cblxuICBnZXRTaW5nbGVFZGl0aW5nUm93KCk6IFIge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldEVkaXRpbmdSb3dzKCk7XG4gICAgcmV0dXJuIHJvd3MubGVuZ3RoID09PSAxID8gcm93c1swXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGhhc1NvbWVFZGl0aW5nUm93KCkge1xuICAgIHJldHVybiB0aGlzLmdldFJvd3MoKS5zb21lKHJvdyA9PiByb3cuZWRpdGluZyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVOZXcoaW5zZXJ0QXQ/OiBudW1iZXIsIG9wdHMgPSB7ZWRpdGluZzogdHJ1ZX0pOiBQcm9taXNlPFJ8dW5kZWZpbmVkPiB7XG4gICAgLy8gQXZvaWQgbXVsdGlwbGUgY2FsbCAob25seSBvbmUgZWRpdGluZyByb3cgaXMgYWxsb3dlZClcbiAgICBpZiAodGhpcy5fY3JlYXRpbmcgJiYgb3B0cy5lZGl0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl9jcmVhdGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc3VwZXIuY3JlYXRlTmV3KGluc2VydEF0LCBvcHRzKTtcblxuICAgICAgaWYgKCFyb3cpIHJldHVybiB1bmRlZmluZWQ7IC8vIFN0b3AgaGVyZVxuXG4gICAgICAvLyBDYWxsIG9ic2VydmVyc1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5vblJvd0NyZWF0ZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblJvd0NyZWF0ZWQocm93KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSAge1xuICAgICAgICAgIC8vIExvZywgdGhlbiBjb250aW51ZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm93O1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2NyZWF0aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0YSgpOiBUW10ge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRhRnJvbVJvd3Mocm93cyk7XG4gIH1cblxuICBhc3luYyBmZXRjaE1vcmUob3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuX2ZldGNoTW9yZUZuKSByZXR1cm4gZmFsc2U7IC8vIEF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBpZiAodGhpcy5oYXNTb21lRWRpdGluZ1JvdygpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBmZXRjaCBtb3JlICR7dGhpcy5fZW50aXR5TmFtZX0gYmVjYXVzZSBzb21lIHJvdykgc3RpbGwgZWRpdGluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGBXaWxsIGZldGNoaW5nIG1vcmUgcm93KHMpIHN0aWxsLi4uYCk7XG5cbiAgICAvLyBGb3JnZXQgdGhlIGZldGNoTW9yZSBmdW5jdGlvbiwgdG8gYXZvaWQgbXVsdGlwbGUgY2FsbFxuICAgIGNvbnN0IGZldGNoTW9yZUZuID0gdGhpcy5fZmV0Y2hNb3JlRm47XG4gICAgdGhpcy5fZmV0Y2hNb3JlRm4gPSBudWxsO1xuXG4gICAgLy8gRmV0Y2ggbmV4dCBwYWdlXG4gICAgY29uc3QgcmVzOiBMb2FkUmVzdWx0PFQ+ID0gYXdhaXQgZmV0Y2hNb3JlRm4oKTtcblxuICAgIC8vIFNraXAgaWYgZW1wdHkgKG5vIG1vcmUgZGF0YSlcbiAgICBpZiAoaXNFbXB0eUFycmF5KHJlcz8uZGF0YSkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2VcbiAgICBzdXBlci51cGRhdGVEYXRhc291cmNlKCh0aGlzLmN1cnJlbnREYXRhIHx8IFtdKS5jb25jYXQoLi4ucmVzLmRhdGEpLCBvcHRzKTtcblxuICAgIC8vIFJlbWVtYmVyIGZldGNoTW9yZVxuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gcmVzLmZldGNoTW9yZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBtYXJrQXNMb2FkaW5nKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
385
+ }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }] });
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtYXN5bmMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy1hc3luYy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQUU5QixPQUFPLEVBQUUsb0JBQW9CLEVBQThELE1BQU0sMEJBQTBCLENBQUM7QUFDNUgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBSXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBMEJoRSxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyw0QkFVVCxTQUFRLG9CQUFnQztJQStDZDtJQTVDWCxXQUFXLENBQVM7SUFFM0IsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixZQUFZLEdBQStCLElBQUksQ0FBQztJQUNoRCxpQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWxE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QUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRSxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzt1R0FyYlUsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRnhDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBub2luc3BlY3Rpb24gRHVwbGljYXRlZENvZGVcblxuaW1wb3J0IHsgQXN5bmNUYWJsZURhdGFTb3VyY2UsIEFzeW5jVGFibGVFbGVtZW50LCBUYWJsZURhdGFTb3VyY2VDb25maWcsIFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHksIElFbnRpdHkgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRXJyb3JDb2RlcyB9IGZyb20gJy4uL3NlcnZpY2VzL2Vycm9ycyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IENvbGxlY3Rpb25WaWV3ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLCBGZXRjaE1vcmVGbiwgSUVudGl0aWVzU2VydmljZSwgTG9hZFJlc3VsdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBmaXJzdEZhbHNlUHJvbWlzZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIHJlbW92ZUVuZCwgc2xlZXAgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcFRhYmxlVXRpbHMgfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElFbnRpdGllc1RhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vdGFibGUubW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNBc3luY1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnlcbiAgPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZUNvbmZpZyB7XG5cbiAgb25Sb3dDcmVhdGVkPzogKHJvdzogQXN5bmNUYWJsZUVsZW1lbnQ8VD4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICBzYXZlT25seURpcnR5Um93cz86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGRhdGFTZXJ2aWNlT3B0aW9ucz86IFdPICYgU087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS53YXRjaEFsbCgpIGFuZCBkYXRhU2VydmljZS5zYXZlQWxsKClcblxuICB3YXRjaEFsbE9wdGlvbnM/OiBXTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuICBzYXZlQWxsT3B0aW9ucz86IFNPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBFbnRpdGllc0FzeW5jVGFibGVEYXRhU291cmNlPFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sXG4gIEYgPSBhbnksXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnksXG4gIFYgZXh0ZW5kcyBWYWxpZGF0b3JTZXJ2aWNlID0gVmFsaWRhdG9yU2VydmljZSxcbiAgQyBleHRlbmRzIEVudGl0aWVzQXN5bmNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4gPSBFbnRpdGllc0FzeW5jVGFibGVEYXRhU291cmNlQ29uZmlnPFQsIElELCBXTywgU08+LFxuICBSIGV4dGVuZHMgQXN5bmNUYWJsZUVsZW1lbnQ8VD4gPSBBc3luY1RhYmxlRWxlbWVudDxUPlxuICA+XG4gICAgZXh0ZW5kcyBBc3luY1RhYmxlRGF0YVNvdXJjZTxULCBWLCBDLCBSPlxuICAgIGltcGxlbWVudHMgSUVudGl0aWVzVGFibGVEYXRhU291cmNlPFI+LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0eU5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2RlYnVnID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfY3JlYXRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zYXZpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9mZXRjaE1vcmVGbjogRmV0Y2hNb3JlRm48TG9hZFJlc3VsdDxUPj4gPSBudWxsO1xuICBwcm90ZWN0ZWQgX3N0b3BXYXRjaFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuXG4gIGdldCB3YXRjaEFsbE9wdGlvbnMoKTogV08ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy53YXRjaEFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgd2F0Y2hBbGxPcHRpb25zKHZhbHVlOiBXTykgIHtcbiAgICB0aGlzLmNvbmZpZy53YXRjaEFsbE9wdGlvbnMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzYXZlQWxsT3B0aW9ucygpOiBTTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zO1xuICB9XG5cbiAgc2V0IHNhdmVBbGxPcHRpb25zKHZhbHVlOiBTTykgIHtcbiAgICB0aGlzLmNvbmZpZy5zYXZlQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGxvYWRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSA9PT0gZmFsc2U7IC8vIFNob3VsZCBiZSBmYWxzZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZTsgLy8gU2hvdWxkIGJlIHRydWUgd2hlbiB1bmRlZmluZWQgKGluaXRpYWwgc3RhdGUpXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBUYWJsZURhdGFTb3VyY2UgaW5zdGFuY2UsIHRoYXQgY2FuIGJlIHVzZWQgYXMgZGF0YXNvdXJjZSBvZiBgQGFuZ3VsYXIvY2RrYCBkYXRhLXRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YVNlcnZpY2UgQSBzZXJ2aWNlIHRvIGxvYWQgYW5kIHNhdmUgZGF0YVxuICAgKiBAcGFyYW0gZGF0YVR5cGUgVHlwZSBvZiBkYXRhIGNvbnRhaW5lZCBieSB0aGUgVGFibGUuIElmIG5vdCBzcGVjaWZpZWQsIHRoZW4gYGRhdGFgIHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gdmFsaWRhdG9yU2VydmljZSBTZXJ2aWNlIHRoYXQgY3JlYXRlIGluc3RhbmNlcyBvZiB0aGUgRm9ybUdyb3VwIHVzZWQgdG8gdmFsaWRhdGUgcm93IGZpZWxkcy5cbiAgICogQHBhcmFtIGNvbmZpZyBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRhYmxlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YVR5cGU6IG5ldygpID0+IFQsXG4gICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBkYXRhU2VydmljZTogSUVudGl0aWVzU2VydmljZTxULCBGLCBXTz4sXG4gICAgICAgICAgICAgIHZhbGlkYXRvclNlcnZpY2U/OiBWLFxuICAgICAgICAgICAgICBvcHRpb25zPzogQykge1xuICAgIHN1cGVyKFtdLCBkYXRhVHlwZSwgdmFsaWRhdG9yU2VydmljZSwge1xuICAgICAga2VlcE9yaWdpbmFsRGF0YUFmdGVyQ29uZmlybTogZmFsc2UsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzYXZlT25seURpcnR5Um93czogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG5cbiAgICB0aGlzLl9lbnRpdHlOYW1lID0gcmVtb3ZlRW5kKChuZXcgZGF0YVR5cGUoKSkuX190eXBlbmFtZSB8fCAnVW5rbm93blZPJywgJ1ZPJyk7XG4gICAgdGhpcy5fZGVidWcgPSBvcHRpb25zPy5zdXBwcmVzc0Vycm9ycyA9PT0gZmFsc2UgJiYgIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMud2F0Y2hBbGxPcHRpb25zIGFzIFdPKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCAnRVJST1IuTE9BRF9EQVRBX0VSUk9SJykpLFxuICAgICAgICBtYXAoKHJlczogTG9hZFJlc3VsdDxUPikgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9zYXZpbmcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSAoZnJvbSBzZXJ2aWNlKSwgYnV0IHN0aWxsIHNhdmluZzogc2tpcGApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNTb21lRWRpdGluZ1JvdygpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSZWNlaXZlZCAke3RoaXMuX2VudGl0eU5hbWV9IGRhdGEsIHdoaWxlIHNvbWUgcm93IHN0aWxsIGVkaXRpbmc6IHNraXA7IFBsZWFzZSBjaGVjayBzYXZlKCkgaW1wbGVtZW50YXRpb24gaW4gdGhlIHRhYmxlIWApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhdGFzb3VyY2UoKHJlcy5kYXRhIHx8IFtdKSBhcyBUW10pO1xuICAgICAgICAgICAgdGhpcy5fZmV0Y2hNb3JlRm4gPSByZXMuZmV0Y2hNb3JlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KSxcbiAgICAgICAgLy8gU3RvcCB0aGlzIHBpcGUgbmV4dCB0aW1lIHdlIGNhbGwgd2F0Y2hBbGwoKVxuICAgICAgICB0YWtlVW50aWwodGhpcy5fc3RvcFdhdGNoU3ViamVjdClcbiAgICAgICAgLy8g4pqgIE5vdGljZTogRG9uJ3QgcHV0IGFueSBvcGVyYXRvciBhZnRlciB0YWtlVW50aWwgdG8gYXZvaWQgcG90ZW50aWFsIHN1YnNjcmlwdGlvbiBsZWFrc1xuICAgICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVEYXRhc291cmNlRnJvbVJvd3Mocm93czogUltdKSB7XG4gICAgLy8gQXZvaWQgdG8gdXBkYXRlIGRhdGFTb3VyY2VTdWJqZWN0LCB3aGVuIG5vdCBuZWVkXG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZVN1YmplY3Qub2JzZXJ2ZXJzPy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5jb25maWcuc3VwcHJlc3NFcnJvcnMpIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFVwZGF0ZSBkYXRhc291cmNlIHN1YmplY3QuIFBsZWFzZSBwcmVmZXIgdXNpbmcgXFwncm93c1N1YmplY3RcXCcgaW5zdGVhZCBvZiBcXCdkYXRhc291cmNlU3ViamVjdFxcJycpO1xuICAgICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZUZyb21Sb3dzKHJvd3MpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTa2lwcGluZyBkYXRhc291cmNlU3ViamVjdCB1cGRhdGUgKG5vdCB1c2VkIHlldCkuJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5jb25maWcucmVhZE9ubHkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBFbmFibGUgdG8gc2F2ZSwgYmVjYXVzZSBjb25maWcucmVhZE9ubHk9dHJ1ZScpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBTYXZpbmcgdHdpY2UgKHNob3VsZCBuZXZlciBvY2N1cilcbiAgICBpZiAodGhpcy5fc2F2aW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBUcnlpbmcgdG8gc2F2ZSAke3RoaXMuX2VudGl0eU5hbWV9IHJvd3MgdHdpY2UuIFNraXBgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25seURpcnR5Um93cyA9IHRoaXMuY29uZmlnLnNhdmVPbmx5RGlydHlSb3dzO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFNhdmluZyAke3RoaXMuX2VudGl0eU5hbWV9IHJvd3MuLi4ge29ubHlEaXJ0eVJvd3M6ICR7b25seURpcnR5Um93c319YCk7XG5cbiAgICAgIC8vIEdldCBhbGwgcm93c1xuICAgICAgY29uc3Qgcm93cyA9IHRoaXMuZ2V0Um93cygpO1xuXG4gICAgICAvLyBGaW5pc2ggZWRpdGluZyBhbGwgcm93c1xuICAgICAgY29uc3QgaW52YWxpZFJvd3M6IEFzeW5jVGFibGVFbGVtZW50PFQ+W10gPSAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHRoaXMuZ2V0RWRpdGluZ1Jvd3MoKVxuICAgICAgICAgIC5tYXAocm93ID0+IHJvdy5jb25maXJtRWRpdENyZWF0ZSgpLnRoZW4oY29uZmlybWVkID0+IGNvbmZpcm1lZCA9PT0gZmFsc2UgPyByb3cgOiBudWxsKVxuICAgICAgICAgICkpKVxuICAgICAgICAuZmlsdGVyKGlzTm90TmlsKTtcblxuICAgICAgLy8gQ2Fubm90IGZpbmlzaCBzb21lIHJvd3M6IGVycm9yXG4gICAgICBpZiAoaW52YWxpZFJvd3MubGVuZ3RoKSB7XG4gICAgICAgIC8vIGxvZyBlcnJvcnNcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBpbnZhbGlkUm93cy5mb3JFYWNoKHJvdyA9PiBBcHBUYWJsZVV0aWxzLmxvZ1Jvd0Vycm9ycyhyb3csIGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gJHt0aGlzLl9lbnRpdHlOYW1lfSByb3cgIyR7cm93LmlkfWApKTtcbiAgICAgICAgLy8gU3RvcCB3aXRoIGFuIGVycm9yXG4gICAgICAgIHRocm93IHtjb2RlOiBFcnJvckNvZGVzLlRBQkxFX0lOVkFMSURfUk9XX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuVEFCTEVfSU5WQUxJRF9ST1dfRVJST1InfTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGE6IFRbXTtcbiAgICAgIGxldCBkYXRhVG9TYXZlOiBUW107XG5cbiAgICAgIGlmICh0aGlzLnZhbGlkYXRvclNlcnZpY2UpIHtcbiAgICAgICAgZGF0YVRvU2F2ZSA9IFtdO1xuICAgICAgICBkYXRhID0gcm93cy5tYXAocm93ID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IG5ldyB0aGlzLmRhdGFDb25zdHJ1Y3RvcigpIGFzIFQ7XG4gICAgICAgICAgY3VycmVudERhdGEuZnJvbU9iamVjdChyb3cuY3VycmVudERhdGEpO1xuICAgICAgICAgIC8vIEZpbHRlciB0byBrZWVwIG9ubHkgZGlydHkgcm93XG4gICAgICAgICAgaWYgKG9ubHlEaXJ0eVJvd3MgJiYgcm93LnZhbGlkYXRvci5kaXJ0eSkgZGF0YVRvU2F2ZS5wdXNoKGN1cnJlbnREYXRhKTtcbiAgICAgICAgICByZXR1cm4gY3VycmVudERhdGE7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIW9ubHlEaXJ0eVJvd3MpIGRhdGFUb1NhdmUgPSBkYXRhO1xuICAgICAgfVxuICAgICAgLy8gT3IgdXNlIHRoZSBjdXJyZW50IGRhdGEgd2l0aG91dCBjb252ZXJzaW9uICh3aGVuIG5vIHZhbGlkYXRvciBzZXJ2aWNlIHVzZWQpXG4gICAgICBlbHNlIHtcbiAgICAgICAgZGF0YSA9IHJvd3MubWFwKHJvdyA9PiByb3cuY3VycmVudERhdGEpO1xuICAgICAgICAvLyBzYXZlIGFsbCBkYXRhLCBhcyB3ZSBkb24ndCBoYXZlIGFueSBkaXJ0eSBtYXJrZXJcbiAgICAgICAgZGF0YVRvU2F2ZSA9IGRhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG5vIGRhdGEgdG8gc2F2ZTogZXhpdFxuICAgICAgaWYgKG9ubHlEaXJ0eVJvd3MgJiYgIWRhdGFUb1NhdmUubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIE5vICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSB0byBzYXZlLiBTa2lwYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gQXNraW5nIHNlcnZpY2UgdG8gc2F2ZSB0aGlzICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YTpgLCBkYXRhVG9TYXZlKTtcbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2Uuc2F2ZUFsbChkYXRhVG9TYXZlLCB0aGlzLnNhdmVBbGxPcHRpb25zKTtcblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2F2aW5nICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSBbT0tdYCk7XG5cbiAgICAgIC8vIExQIDIzLzAzLzIwMjE6IHVwZGF0ZSBkYXRhc291cmNlIGlzIG5lY2Vzc2FyeSBidXQgY2FuIGJlIGNoYW5nZWQgdG8gYSByZWZldGNoKCkgb24gUXVlcnlSZWYgKG11c3QgYmUgY3JlYXRlZCBhbmQgcmVnaXN0ZXJlZCBpbiBHcmFwaHFsU2VydmljZS53YXRjaFF1ZXJ5KVxuICAgICAgdGhpcy51cGRhdGVEYXRhc291cmNlKGRhdGEsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZXJyb3IoJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBFcnJvciB3aGlsZSBzYXZpbmc6ICcgKyBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRGF0YXNvdXJjZShkYXRhOiBUW10sIG9wdHM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gVXBkYXRpbmcgZGF0YXNvdXJjZSB3aXRoIGRhdGE6YCwgZGF0YSk7XG5cbiAgICBzdXBlci51cGRhdGVEYXRhc291cmNlKGRhdGEsIG9wdHMpO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPFJbXSB8IFJlYWRvbmx5QXJyYXk8Uj4+IHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhcIltlbnRpdGllcy1kYXRhc291cmNlXSBjb25uZWN0XCIpO1xuICAgIHJldHVybiBzdXBlci5jb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXIpO1xuICB9XG5cbiAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyPzogQ29sbGVjdGlvblZpZXdlcikge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIERpc2Nvbm5lY3RpbmcuLi4nKTtcbiAgICBzdXBlci5kaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXIpO1xuICAgIGlmICghdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jbG9zZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIENsb3NpbmcuLi4nKTtcbiAgICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdhaXRJZGxlKGRlYm91bmNlVGltZU1zPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gZmlyc3RGYWxzZVByb21pc2UodGhpcy5sb2FkaW5nU3ViamVjdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZU1zIHx8IDEwMCkgLy8gaWYgbm90IHN0YXJ0ZWQgeWV0LCB3YWl0XG4gICAgICApKTtcbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1DcmVhdGUocm93OiBSKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgc3VwZXIuY29uZmlybUNyZWF0ZShyb3cpO1xuICAgIGlmICghY29uZmlybWVkKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1DcmVhdGUoKSEgRm9yY2UgZWRpdGluZyB0byBmYWxzZScpO1xuICAgICAgcm93LnZhbGlkYXRvci5kaXNhYmxlKHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlybWVkO1xuICB9XG5cbiAgYXN5bmMgY29uZmlybUVkaXQocm93OiBSKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgc3VwZXIuY29uZmlybUVkaXQocm93KTtcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiB0cnVlfSBhZnRlciBjb25maXJtRWRpdCgpISBGb3JjZSBlZGl0aW5nIHRvIGZhbHNlJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRFZGl0KHJvdzogUik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVkaXRpbmcgPSBhd2FpdCBzdXBlci5zdGFydEVkaXQocm93KTtcbiAgICBpZiAoIWVkaXRpbmcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIXJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IGZhbHNlfSBhZnRlciBzdGFydEVkaXQoKSEgRm9yY2UgZWRpdGluZycpO1xuICAgICAgcm93LnZhbGlkYXRvci5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yO1xuICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTZXJ2aWNlICR7dGhpcy5fZW50aXR5TmFtZX0gc2VudCBlcnJvcjogJHtlcnJvck1zZ31gLCBlcnJvcik7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSB8fCBlcnJvck1zZyk7XG4gIH1cblxuICBoYW5kbGVTZXJ2aWNlRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICBjb25zb2xlLmVycm9yKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2VydmljZSAke3RoaXMuX2VudGl0eU5hbWV9IHNlbnQgZXJyb3I6ICR7ZXJyb3JNc2d9YCwgZXJyb3IpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBhc3luYyBkZWxldGUoaWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIElmIG5ldyByb3c6IG5vdCBuZWVkIHRvIHByb3BhZ2F0ZSB0byB0aGUgZGF0YVNlcnZpY2VcbiAgICBpZiAoaWQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3cgPSB0aGlzLmdldFJvdyhpZCk7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgdG8gZGVsZXRlIHdpdGggaWQ9JHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoW3Jvdy5jdXJyZW50RGF0YV0sIHRoaXMuc2F2ZUFsbE9wdGlvbnMpO1xuXG4gICAgICAvLyBXYWl0IGNhY2hlIHVwZGF0ZSwgdGhlbiB0YWJsZSB1cGRhdGVcbiAgICAgIGF3YWl0IHNsZWVwKDMwMCk7XG5cbiAgICAgIC8vIG1ha2Ugc3VyZSByb3cgaGFzIGJlZW4gZGVsZXRlZCAoYmVjYXVzZSBHcmFwaFFsIGNhY2hlIHJlbW92ZSBjYW4gZmFpbClcbiAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLmdldFJvdyhpZCkgPT09IHJvdztcbiAgICAgIGlmIChwcmVzZW50KSBhd2FpdCBzdXBlci5kZWxldGUoaWQpO1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gICAgY2F0Y2goZXJyKSB7XG4gICAgICB0aGlzLmhhbmRsZVNlcnZpY2VFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbChyb3dzOiBSW10pOiBQcm9taXNlPGFueT4ge1xuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXREYXRhRnJvbVJvd3Mocm93cyk7XG5cbiAgICB0cnkge1xuXG4gICAgICAvLyBDYWxsIHNlcnZpY2UgZGVsZXRpb25cbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlQWxsKGRhdGEsIHRoaXMuc2F2ZUFsbE9wdGlvbnMpO1xuXG4gICAgICAvLyBXYWl0IHByb3BhZ2F0aW9uIChlLmcuIHVwZGF0ZSBjYWNoZSwgdGhlbiByZWNlaXZlZCB1cGRhdGUgZnJvbSBkYXRhU2VydmljZS53YXRjaEFsbCgpKVxuICAgICAgYXdhaXQgc2xlZXAoNTAwKTtcblxuICAgICAgLy8gV29ya2Fyb3VuZCwgdG8gYmUgc3VyZSBhbGwgcm93cyBoYXZlIGJlZW4gZGVsZXRlZFxuICAgICAgLy8gU29tZXRpbWUsIHRoZSBzZXJ2aWNlIG1pc3MgZGVsZXRpb24sIG9yIEdyYXBoUWwgY2FjaGUgcmVtb3ZlIGZhaWxlZC5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgYXBwbHkgbWlzc2luZyBkZWxldGlvbiB1c2luZyB0aGUgcGFyZW50IGRlbGV0ZSgpIGZ1bmN0aW9uXG4gICAgICBjb25zdCByb3dOb3REZWxldGVkID0gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvdyA9PiByb3dzLmluY2x1ZGVzKHJvdykpO1xuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShyb3dOb3REZWxldGVkKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBGb3JjZSBkZWxldGlvbiBvZiAke3Jvd05vdERlbGV0ZWQubGVuZ3RofSByb3dzISBQbGVhc2UgY2hlY2sgdGhhdCBkYXRhIHNlcnZpY2UgdXBkYXRlIHRoZSBjYWNoZSwgYWZ0ZXIgZGVsZXRpb25gKTtcbiAgICAgICAgLy8gU3RhcnQgYXQgdGhlIGVuZFxuICAgICAgICBmb3IgKGNvbnN0IHIgb2Ygcm93Tm90RGVsZXRlZC5zb3J0KChhLCBiKSA9PiBhLmlkID4gYi5pZCA/IC0xIDogMSkpIHtcbiAgICAgICAgICBhd2FpdCBzdXBlci5kZWxldGUoci5pZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgLy8gSGFuZGxlIHNlcnZpY2UgZXJyb3JcbiAgICAgIHRoaXMuaGFuZGxlU2VydmljZUVycm9yKGVycik7XG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXRSb3coaWQ6IG51bWJlcik6IFIge1xuICAgIHJldHVybiBzdXBlci5nZXRSb3coaWQpO1xuICB9XG5cbiAgZ2V0Um93cygpOiBSW10ge1xuICAgIHJldHVybiB0aGlzLnJvd3NTdWJqZWN0LnZhbHVlIHx8IFtdO1xuICB9XG5cbiAgZ2V0RWRpdGluZ1Jvd3MoKTogUltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvdyA9PiByb3cuZWRpdGluZyk7XG4gIH1cblxuICBnZXRTaW5nbGVFZGl0aW5nUm93KCk6IFIge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldEVkaXRpbmdSb3dzKCk7XG4gICAgcmV0dXJuIHJvd3MubGVuZ3RoID09PSAxID8gcm93c1swXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGhhc1NvbWVFZGl0aW5nUm93KCkge1xuICAgIHJldHVybiB0aGlzLmdldFJvd3MoKS5zb21lKHJvdyA9PiByb3cuZWRpdGluZyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVOZXcoaW5zZXJ0QXQ/OiBudW1iZXIsIG9wdHMgPSB7ZWRpdGluZzogdHJ1ZX0pOiBQcm9taXNlPFJ8dW5kZWZpbmVkPiB7XG4gICAgLy8gQXZvaWQgbXVsdGlwbGUgY2FsbCAob25seSBvbmUgZWRpdGluZyByb3cgaXMgYWxsb3dlZClcbiAgICBpZiAodGhpcy5fY3JlYXRpbmcgJiYgb3B0cy5lZGl0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl9jcmVhdGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc3VwZXIuY3JlYXRlTmV3KGluc2VydEF0LCBvcHRzKTtcblxuICAgICAgaWYgKCFyb3cpIHJldHVybiB1bmRlZmluZWQ7IC8vIFN0b3AgaGVyZVxuXG4gICAgICAvLyBDYWxsIG9ic2VydmVyc1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5vblJvd0NyZWF0ZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblJvd0NyZWF0ZWQocm93KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSAge1xuICAgICAgICAgIC8vIExvZywgdGhlbiBjb250aW51ZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm93O1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2NyZWF0aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0YSgpOiBUW10ge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRhRnJvbVJvd3Mocm93cyk7XG4gIH1cblxuICBhc3luYyBmZXRjaE1vcmUob3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuX2ZldGNoTW9yZUZuKSByZXR1cm4gZmFsc2U7IC8vIEF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBpZiAodGhpcy5oYXNTb21lRWRpdGluZ1JvdygpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBmZXRjaCBtb3JlICR7dGhpcy5fZW50aXR5TmFtZX0gYmVjYXVzZSBzb21lIHJvdykgc3RpbGwgZWRpdGluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGBXaWxsIGZldGNoaW5nIG1vcmUgcm93KHMpIHN0aWxsLi4uYCk7XG5cbiAgICAvLyBGb3JnZXQgdGhlIGZldGNoTW9yZSBmdW5jdGlvbiwgdG8gYXZvaWQgbXVsdGlwbGUgY2FsbFxuICAgIGNvbnN0IGZldGNoTW9yZUZuID0gdGhpcy5fZmV0Y2hNb3JlRm47XG4gICAgdGhpcy5fZmV0Y2hNb3JlRm4gPSBudWxsO1xuXG4gICAgLy8gRmV0Y2ggbmV4dCBwYWdlXG4gICAgY29uc3QgcmVzOiBMb2FkUmVzdWx0PFQ+ID0gYXdhaXQgZmV0Y2hNb3JlRm4oKTtcblxuICAgIC8vIFNraXAgaWYgZW1wdHkgKG5vIG1vcmUgZGF0YSlcbiAgICBpZiAoaXNFbXB0eUFycmF5KHJlcz8uZGF0YSkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2VcbiAgICBzdXBlci51cGRhdGVEYXRhc291cmNlKCh0aGlzLmN1cnJlbnREYXRhIHx8IFtdKS5jb25jYXQoLi4ucmVzLmRhdGEpLCBvcHRzKTtcblxuICAgIC8vIFJlbWVtYmVyIGZldGNoTW9yZVxuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gcmVzLmZldGNoTW9yZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBtYXJrQXNMb2FkaW5nKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -392,10 +392,10 @@ export class EntitiesTableDataSource extends TableDataSource {
392
392
  this.loadingSubject.next(false);
393
393
  }
394
394
  }
395
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntitiesTableDataSource, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
396
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: EntitiesTableDataSource, usesInheritance: true, ngImport: i0 });
395
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EntitiesTableDataSource, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
396
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: EntitiesTableDataSource, usesInheritance: true, ngImport: i0 });
397
397
  }
398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EntitiesTableDataSource, decorators: [{
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EntitiesTableDataSource, decorators: [{
399
399
  type: Directive
400
- }], ctorParameters: function () { return [{ type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }]; } });
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXlELE1BQU0sMEJBQTBCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBSXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUEyQmhFLFdBQVc7QUFFWCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHVCQVVULFNBQVEsZUFBMkI7SUErRFQ7SUE1RFgsV0FBVyxDQUFTO0lBRTNCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsWUFBWSxHQUErQixJQUFJLENBQUM7SUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVsRCxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENB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QUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRSxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzt3R0FwY1UsdUJBQXVCOzRGQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRm5DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UsIFRhYmxlRGF0YVNvdXJjZUNvbmZpZywgVGFibGVFbGVtZW50LCBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5LCBJRW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRmV0Y2hNb3JlRm4sIElFbnRpdGllc1NlcnZpY2UsIExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgZmlyc3RGYWxzZVByb21pc2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIHJlbW92ZUVuZCwgc2xlZXAgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcFRhYmxlVXRpbHMgfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElFbnRpdGllc1RhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vdGFibGUubW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgPSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIFNPID0gYW55XG4gID4gZXh0ZW5kcyBUYWJsZURhdGFTb3VyY2VDb25maWcge1xuXG4gIG9uUm93Q3JlYXRlZD86IChyb3c6IFRhYmxlRWxlbWVudDxUPikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gIHNhdmVPbmx5RGlydHlSb3dzPzogYm9vbGVhbjtcbiAgc2F2ZUJlZm9yZURlbGV0ZT86IGJvb2xlYW47IC8vIEZhbHNlIGJ5IGRlZmF1bHRcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZGF0YVNlcnZpY2VPcHRpb25zPzogV08gJiBTTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLndhdGNoQWxsKCkgYW5kIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuXG4gIHdhdGNoQWxsT3B0aW9ucz86IFdPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG4gIHNhdmVBbGxPcHRpb25zPzogU087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS5zYXZlQWxsKClcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEVudGl0aWVzVGFibGVEYXRhU291cmNlPFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sXG4gIEYgPSBhbnksXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnksXG4gIFYgZXh0ZW5kcyBWYWxpZGF0b3JTZXJ2aWNlID0gVmFsaWRhdG9yU2VydmljZSxcbiAgQyBleHRlbmRzIEVudGl0aWVzVGFibGVEYXRhU291cmNlQ29uZmlnPFQsIElELCBXTywgU08+ID0gRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4sXG4gIFIgZXh0ZW5kcyBUYWJsZUVsZW1lbnQ8VD4gPSBUYWJsZUVsZW1lbnQ8VD5cbiAgPlxuICAgIGV4dGVuZHMgVGFibGVEYXRhU291cmNlPFQsIFYsIEMsIFI+XG4gICAgaW1wbGVtZW50cyBJRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8Uj4sIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZW50aXR5TmFtZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfZGVidWcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9jcmVhdGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3NhdmluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2ZldGNoTW9yZUZuOiBGZXRjaE1vcmVGbjxMb2FkUmVzdWx0PFQ+PiA9IG51bGw7XG4gIHByb3RlY3RlZCBfc3RvcFdhdGNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIGdldCBzZXJ2aWNlT3B0aW9ucygpOiBXTyAmIFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGF0YVNlcnZpY2VPcHRpb25zXG4gICAgICB8fCB7Li4udGhpcy53YXRjaEFsbE9wdGlvbnMsIC4uLnRoaXMuc2F2ZUFsbE9wdGlvbnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIHNldCBzZXJ2aWNlT3B0aW9ucyh2YWx1ZTogV08gJiBTTykgIHtcbiAgICBjb25zb2xlLndhcm4oJ2RhdGFTb3VyY2Uuc2VydmljZU9wdGlvbnMgaXMgZGVwcmVjYXRlZCEgUGxlYXNlIHVzZSBcXCd3YXRjaEFsbE9wdGlvbnNcXCcgb3IgXFwnc2F2ZUFsbE9wdGlvbnNcXCcgaW5zdGVhZCcpO1xuICAgIHRoaXMuY29uZmlnLmRhdGFTZXJ2aWNlT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHdhdGNoQWxsT3B0aW9ucygpOiBXTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucztcbiAgfVxuXG4gIHNldCB3YXRjaEFsbE9wdGlvbnModmFsdWU6IFdPKSAge1xuICAgIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNhdmVBbGxPcHRpb25zKCk6IFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2F2ZUFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgc2F2ZUFsbE9wdGlvbnModmFsdWU6IFNPKSAge1xuICAgIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlID09PSBmYWxzZTsgLy8gU2hvdWxkIGJlIGZhbHNlIHdoZW4gdW5kZWZpbmVkIChpbml0aWFsIHN0YXRlKVxuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlOyAvLyBTaG91bGQgYmUgdHJ1ZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRhYmxlRGF0YVNvdXJjZSBpbnN0YW5jZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBkYXRhc291cmNlIG9mIGBAYW5ndWxhci9jZGtgIGRhdGEtdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhU2VydmljZSBBIHNlcnZpY2UgdG8gbG9hZCBhbmQgc2F2ZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUeXBlIG9mIGRhdGEgY29udGFpbmVkIGJ5IHRoZSBUYWJsZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlbiBgZGF0YWAgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSB2YWxpZGF0b3JTZXJ2aWNlIFNlcnZpY2UgdGhhdCBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBGb3JtR3JvdXAgdXNlZCB0byB2YWxpZGF0ZSByb3cgZmllbGRzLlxuICAgKiBAcGFyYW0gY29uZmlnIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGFibGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFTZXJ2aWNlOiBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICAgICAgICAgICAgdmFsaWRhdG9yU2VydmljZT86IFYsXG4gICAgICAgICAgICAgIG9wdGlvbnM/OiBDKSB7XG4gICAgc3VwZXIoW10sIGRhdGFUeXBlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICBrZWVwT3JpZ2luYWxEYXRhQWZ0ZXJDb25maXJtOiBmYWxzZSxcbiAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgIHNhdmVPbmx5RGlydHlSb3dzOiBmYWxzZSxcbiAgICAgIHNhdmVCZWZvcmVEZWxldGU6IGZhbHNlLCAvLyBGb3IgdjEgY29tcGF0aWJpbGl0eVxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZW50aXR5TmFtZSA9IHJlbW92ZUVuZCgobmV3IGRhdGFUeXBlKCkpLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTycsICdWTycpO1xuICAgIHRoaXMuX2RlYnVnID0gb3B0aW9ucz8uc3VwcHJlc3NFcnJvcnMgPT09IGZhbHNlICYmICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBkaXNjb25uZWN0XG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGRpc2Nvbm5lY3RcbiAgICovXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jbG9zZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIENsb3NpbmcuLi4nKTtcbiAgICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMuc2VydmljZU9wdGlvbnMgYXMgV08pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsICdFUlJPUi5MT0FEX0RBVEFfRVJST1InKSksXG4gICAgICAgIG1hcCgocmVzOiBMb2FkUmVzdWx0PFQ+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gUmVjZWl2ZWQgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIChmcm9tIHNlcnZpY2UpLCBidXQgc3RpbGwgc2F2aW5nOiBza2lwYCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1NvbWVFZGl0aW5nUm93KCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSwgd2hpbGUgc29tZSByb3cgc3RpbGwgZWRpdGluZzogc2tpcDsgUGxlYXNlIGNoZWNrIHNhdmUoKSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgdGFibGUhYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZSgocmVzLmRhdGEgfHwgW10pIGFzIFRbXSk7XG4gICAgICAgICAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBTdG9wIHRoaXMgcGlwZSBuZXh0IHRpbWUgd2UgY2FsbCB3YXRjaEFsbCgpXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9zdG9wV2F0Y2hTdWJqZWN0KVxuICAgICAgICAvLyDimqAgTm90aWNlOiBEb24ndCBwdXQgYW55IG9wZXJhdG9yIGFmdGVyIHRha2VVbnRpbCB0byBhdm9pZCBwb3RlbnRpYWwgc3Vic2NyaXB0aW9uIGxlYWtzXG4gICAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzOiBSW10pIHtcbiAgICAvLyBBdm9pZCB0byB1cGRhdGUgZGF0YVNvdXJjZVN1YmplY3QsIHdoZW4gbm90IG5lZWRcbiAgICBpZiAodGhpcy5kYXRhc291cmNlU3ViamVjdC5vYnNlcnZlcnM/Lmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5zdXBwcmVzc0Vycm9ycykgY29uc29sZS53YXJuKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gVXBkYXRlIGRhdGFzb3VyY2Ugc3ViamVjdC4gUGxlYXNlIHByZWZlciB1c2luZyBcXCdyb3dzU3ViamVjdFxcJyBpbnN0ZWFkIG9mIFxcJ2RhdGFzb3VyY2VTdWJqZWN0XFwnJyk7XG4gICAgICBzdXBlci51cGRhdGVEYXRhc291cmNlRnJvbVJvd3Mocm93cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFNraXBwaW5nIGRhdGFzb3VyY2VTdWJqZWN0IHVwZGF0ZSAobm90IHVzZWQgeWV0KS4nKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZWFkT25seSkge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEVuYWJsZSB0byBzYXZlLCBiZWNhdXNlIGNvbmZpZy5yZWFkT25seT10cnVlJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNhdmluZyB0d2ljZSAoc2hvdWxkIG5ldmVyIG9jY3VyKVxuICAgIGlmICh0aGlzLl9zYXZpbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFRyeWluZyB0byBzYXZlICR7dGhpcy5fZW50aXR5TmFtZX0gcm93cyB0d2ljZS4gU2tpcGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX3NhdmluZyA9IHRydWU7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zdCBvbmx5RGlydHlSb3dzID0gdGhpcy5jb25maWcuc2F2ZU9ubHlEaXJ0eVJvd3M7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2F2aW5nICR7dGhpcy5fZW50aXR5TmFtZX0gcm93cy4uLiB7b25seURpcnR5Um93czogJHtvbmx5RGlydHlSb3dzfX1gKTtcblxuICAgICAgLy8gR2V0IGFsbCByb3dzXG4gICAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG5cbiAgICAgIC8vIEZpbmlzaCBlZGl0aW5nIGFsbCByb3dzXG4gICAgICBjb25zdCBpbnZhbGlkUm93cyA9IHJvd3MuZmlsdGVyKHJvdyA9PiByb3cuZWRpdGluZyAmJiAhcm93LmNvbmZpcm1FZGl0Q3JlYXRlKCkpO1xuXG4gICAgICAvLyBDYW5ub3QgZmluaXNoIHNvbWUgcm93czogZXJyb3JcbiAgICAgIGlmIChpbnZhbGlkUm93cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gbG9nIGVycm9yc1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGludmFsaWRSb3dzLmZvckVhY2gocm93ID0+IEFwcFRhYmxlVXRpbHMubG9nUm93RXJyb3JzKHJvdywgYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSAke3RoaXMuX2VudGl0eU5hbWV9IHJvdyAjJHtyb3cuaWR9YCkpO1xuICAgICAgICAvLyBTdG9wIHdpdGggYW4gZXJyb3JcbiAgICAgICAgdGhyb3cge2NvZGU6IEVycm9yQ29kZXMuVEFCTEVfSU5WQUxJRF9ST1dfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5UQUJMRV9JTlZBTElEX1JPV19FUlJPUid9O1xuICAgICAgfVxuXG4gICAgICBsZXQgZGF0YTogVFtdO1xuICAgICAgbGV0IGRhdGFUb1NhdmU6IFRbXTtcblxuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yU2VydmljZSkge1xuICAgICAgICBkYXRhVG9TYXZlID0gW107XG4gICAgICAgIGRhdGEgPSByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gbmV3IHRoaXMuZGF0YUNvbnN0cnVjdG9yKCkgYXMgVDtcbiAgICAgICAgICBjdXJyZW50RGF0YS5mcm9tT2JqZWN0KHJvdy5jdXJyZW50RGF0YSk7XG4gICAgICAgICAgLy8gRmlsdGVyIHRvIGtlZXAgb25seSBkaXJ0eSByb3dcbiAgICAgICAgICBpZiAob25seURpcnR5Um93cyAmJiByb3cudmFsaWRhdG9yLmRpcnR5KSBkYXRhVG9TYXZlLnB1c2goY3VycmVudERhdGEpO1xuICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0YTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghb25seURpcnR5Um93cykgZGF0YVRvU2F2ZSA9IGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBPciB1c2UgdGhlIGN1cnJlbnQgZGF0YSB3aXRob3V0IGNvbnZlcnNpb24gKHdoZW4gbm8gdmFsaWRhdG9yIHNlcnZpY2UgdXNlZClcbiAgICAgIGVsc2Uge1xuICAgICAgICBkYXRhID0gcm93cy5tYXAocm93ID0+IHJvdy5jdXJyZW50RGF0YSk7XG4gICAgICAgIC8vIHNhdmUgYWxsIGRhdGEsIGFzIHdlIGRvbid0IGhhdmUgYW55IGRpcnR5IG1hcmtlclxuICAgICAgICBkYXRhVG9TYXZlID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgbm8gZGF0YSB0byBzYXZlOiBleGl0XG4gICAgICBpZiAob25seURpcnR5Um93cyAmJiAhZGF0YVRvU2F2ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gTm8gJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIHRvIHNhdmUuIFNraXBgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBBc2tpbmcgc2VydmljZSB0byBzYXZlIHRoaXMgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhOmAsIGRhdGFUb1NhdmUpO1xuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5zYXZlQWxsKGRhdGFUb1NhdmUsIHRoaXMuc2VydmljZU9wdGlvbnMpO1xuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTYXZpbmcgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIFtPS11gKTtcblxuICAgICAgLy8gTFAgMjMvMDMvMjAyMTogdXBkYXRlIGRhdGFzb3VyY2UgaXMgbmVjZXNzYXJ5IGJ1dCBjYW4gYmUgY2hhbmdlZCB0byBhIHJlZmV0Y2goKSBvbiBRdWVyeVJlZiAobXVzdCBiZSBjcmVhdGVkIGFuZCByZWdpc3RlcmVkIGluIEdyYXBocWxTZXJ2aWNlLndhdGNoUXVlcnkpXG4gICAgICB0aGlzLnVwZGF0ZURhdGFzb3VyY2UoZGF0YSwge2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5lcnJvcignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEVycm9yIHdoaWxlIHNhdmluZzogJyArIGVycm9yICYmIGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3NhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVEYXRhc291cmNlKGRhdGE6IFRbXSwgb3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBVcGRhdGluZyBkYXRhc291cmNlIHdpdGggZGF0YTpgLCBkYXRhKTtcblxuICAgIHN1cGVyLnVwZGF0ZURhdGFzb3VyY2UoZGF0YSwgb3B0cyk7XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8UltdIHwgUmVhZG9ubHlBcnJheTxSPj4ge1xuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW2VudGl0aWVzLWRhdGFzb3VyY2VdIGNvbm5lY3RcIik7XG4gICAgcmV0dXJuIHN1cGVyLmNvbm5lY3QoY29sbGVjdGlvblZpZXdlcik7XG4gIH1cblxuICBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI/OiBDb2xsZWN0aW9uVmlld2VyKSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gRGlzY29ubmVjdGluZy4uLicpO1xuICAgIHN1cGVyLmRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcik7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgd2FpdElkbGUoZGVib3VuY2VUaW1lTXM/OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBmaXJzdEZhbHNlUHJvbWlzZSh0aGlzLmxvYWRpbmdTdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2VUaW1lTXMgfHwgMTAwKSAvLyBpZiBub3Qgc3RhcnRlZCB5ZXQsIHdhaXRcbiAgICAgICkpO1xuICB9XG5cbiAgY29uZmlybUNyZWF0ZShyb3c6IFIpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maXJtZWQgPSBzdXBlci5jb25maXJtQ3JlYXRlKHJvdyk7XG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocm93LmVkaXRpbmcgJiYgcm93LnZhbGlkYXRvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gUm93IHN0aWxsIGhhcyB7ZWRpdGluZzogdHJ1ZX0gYWZ0ZXIgY29uZmlybUNyZWF0ZSgpISBGb3JjZSBlZGl0aW5nIHRvIGZhbHNlJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uZmlybUVkaXQocm93OiBSKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlybWVkID0gc3VwZXIuY29uZmlybUVkaXQocm93KTtcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiB0cnVlfSBhZnRlciBjb25maXJtRWRpdCgpISBGb3JjZSBlZGl0aW5nIHRvIGZhbHNlJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhcnRFZGl0KHJvdzogUik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVkaXRpbmcgPSBzdXBlci5zdGFydEVkaXQocm93KTtcbiAgICBpZiAoIWVkaXRpbmcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIXJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IGZhbHNlfSBhZnRlciBzdGFydEVkaXQoKSEgRm9yY2UgZWRpdGluZycpO1xuICAgICAgcm93LnZhbGlkYXRvci5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yO1xuICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTZXJ2aWNlICR7dGhpcy5fZW50aXR5TmFtZX0gc2VudCBlcnJvcjogJHtlcnJvck1zZ31gLCBlcnJvcik7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSB8fCBlcnJvck1zZyk7XG4gIH1cblxuICBoYW5kbGVTZXJ2aWNlRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICBjb25zb2xlLmVycm9yKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2VydmljZSAke3RoaXMuX2VudGl0eU5hbWV9IHNlbnQgZXJyb3I6ICR7ZXJyb3JNc2d9YCwgZXJyb3IpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBkZWxldGUoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIElmIG5ldyByb3c6IG5vdCBuZWVkIHRvIHByb3BhZ2F0ZSB0byB0aGUgZGF0YVNlcnZpY2VcbiAgICBpZiAoaWQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3cgPSB0aGlzLmdldFJvdyhpZCk7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgdG8gZGVsZXRlIHdpdGggaWQ9JHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IHN1cGVyRGVsZXRlID0gc3VwZXIuZGVsZXRlO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlQWxsKFtyb3cuY3VycmVudERhdGFdLCB0aGlzLnNlcnZpY2VPcHRpb25zKVxuICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmhhbmRsZVNlcnZpY2VFcnJvcihlcnIpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvLyBtYWtlIHN1cmUgcm93IGhhcyBiZWVuIGRlbGV0ZWQgKGJlY2F1c2UgR3JhcFFIbCBjYWNoZSByZW1vdmUgY2FuIGZhaWxlZClcbiAgICAgICAgICBjb25zdCBwcmVzZW50ID0gdGhpcy5nZXRSb3coaWQpID09PSByb3c7XG4gICAgICAgICAgaWYgKHByZXNlbnQpIHN1cGVyRGVsZXRlLmNhbGwoc2VsZiwgaWQpO1xuXG4gICAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKHJvd3M6IFJbXSk6IFByb21pc2U8YW55PiB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGFGcm9tUm93cyhyb3dzKTtcblxuICAgIHRyeSB7XG5cbiAgICAgIC8vIENhbGwgc2VydmljZSBkZWxldGlvblxuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoZGF0YSwgdGhpcy5zZXJ2aWNlT3B0aW9ucyk7XG5cbiAgICAgIGF3YWl0IHNsZWVwKDMwMCk7IC8vIFdhaXQgcHJvcGFnYXRpb24gKGUuZy4gdXBkYXRlIGNhY2hlLCB0aGVuIHJlY2VpdmVkIHVwZGF0ZSBmcm9tIGRhdGFTZXJ2aWNlLndhdGNoQWxsKCkpXG5cbiAgICAgIC8vIFdvcmthcm91bmQsIHRvIGJlIHN1cmUgYWxsIHJvd3MgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgIC8vIFNvbWV0aW1lLCB0aGUgc2VydmljZSBtaXNzIGRlbGV0aW9uLCBvciBHcmFwaFFsIGNhY2hlIHJlbW92ZSBmYWlsZWQuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGFwcGx5IG1pc3NpbmcgZGVsZXRpb24gdXNpbmcgdGhlIHN1cGVyLmRlbGV0ZSgpIGZ1bmN0aW9uXG4gICAgICBjb25zdCByb3dOb3REZWxldGVkID0gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvdyA9PiByb3dzLmluY2x1ZGVzKHJvdykpO1xuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShyb3dOb3REZWxldGVkKSkge1xuICAgICAgICBjb25zdCBzdXBlckRlbGV0ZSA9IHN1cGVyLmRlbGV0ZTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEZvcmNlIGRlbGV0aW9uIG9mICR7cm93Tm90RGVsZXRlZC5sZW5ndGh9IHJvd3MhIFBsZWFzZSBjaGVjayB0aGF0IGRhdGEgc2VydmljZSB1cGRhdGUgdGhlIGNhY2hlLCBhZnRlciBkZWxldGlvbmApO1xuICAgICAgICByb3dOb3REZWxldGVkXG4gICAgICAgICAgLy8gU3RhcnQgYXQgdGhlIGVuZFxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmlkID4gYi5pZCA/IC0xIDogMSlcbiAgICAgICAgICAuZm9yRWFjaChyID0+IHN1cGVyRGVsZXRlLmNhbGwoc2VsZiwgci5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBIYW5kbGUgc2VydmljZSBlcnJvclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvdyhpZDogbnVtYmVyKTogUiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldFJvdyhpZCk7XG4gIH1cblxuICBnZXRSb3dzKCk6IFJbXSB7XG4gICAgcmV0dXJuIHRoaXMucm93c1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGhhc1NvbWVFZGl0aW5nUm93KCkge1xuICAgIHJldHVybiAodGhpcy5yb3dzU3ViamVjdC52YWx1ZSB8fCBbXSkuc29tZShyb3cgPT4gcm93LmVkaXRpbmcpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlTmV3KGluc2VydEF0PzogbnVtYmVyLCBvcHRzID0ge2VkaXRpbmc6IHRydWV9KTogUHJvbWlzZTxSfHVuZGVmaW5lZD4ge1xuICAgIC8vIEF2b2lkIG11bHRpcGxlIGNhbGwgKG9ubHkgb25lIGVkaXRpbmcgcm93IGlzIGFsbG93ZWQpXG4gICAgaWYgKHRoaXMuX2NyZWF0aW5nICYmIG9wdHMuZWRpdGluZykgcmV0dXJuO1xuXG4gICAgdGhpcy5fY3JlYXRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJvdyA9IGF3YWl0IHN1cGVyLmNyZWF0ZU5ldyhpbnNlcnRBdCwgb3B0cyk7XG5cbiAgICAgIGlmICghcm93KSByZXR1cm4gdW5kZWZpbmVkOyAvLyBTdG9wIGhlcmVcblxuICAgICAgLy8gQ2FsbCBvYnNlcnZlcnNcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ub25Sb3dDcmVhdGVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWcub25Sb3dDcmVhdGVkKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikgIHtcbiAgICAgICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLl9jcmVhdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGEoKTogVFtdIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZyb21Sb3dzKHJvd3MpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNb3JlKG9wdHM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9mZXRjaE1vcmVGbikgcmV0dXJuIGZhbHNlOyAvLyBBdm9pZCBtdWx0aXBsZSBjYWxsXG4gICAgaWYgKHRoaXMuaGFzU29tZUVkaXRpbmdSb3coKSkge1xuICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgZmV0Y2ggbW9yZSAke3RoaXMuX2VudGl0eU5hbWV9IGJlY2F1c2Ugc29tZSByb3cpIHN0aWxsIGVkaXRpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgV2lsbCBmZXRjaGluZyBtb3JlIHJvdyhzKSBzdGlsbC4uLmApO1xuXG4gICAgLy8gRm9yZ2V0IHRoZSBmZXRjaE1vcmUgZnVuY3Rpb24sIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBjb25zdCBmZXRjaE1vcmVGbiA9IHRoaXMuX2ZldGNoTW9yZUZuO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcblxuICAgIC8vIEZldGNoIG5leHQgcGFnZVxuICAgIGNvbnN0IHJlczogTG9hZFJlc3VsdDxUPiA9IGF3YWl0IGZldGNoTW9yZUZuKCk7XG5cbiAgICAvLyBTa2lwIGlmIGVtcHR5IChubyBtb3JlIGRhdGEpXG4gICAgaWYgKGlzRW1wdHlBcnJheShyZXM/LmRhdGEpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRhdGEgc291cmNlXG4gICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZSgodGhpcy5jdXJyZW50RGF0YSB8fCBbXSkuY29uY2F0KC4uLnJlcy5kYXRhKSwgb3B0cyk7XG5cbiAgICAvLyBSZW1lbWJlciBmZXRjaE1vcmVcbiAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgbWFya0FzTG9hZGluZygpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
400
+ }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }] });
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXlELE1BQU0sMEJBQTBCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBSXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUEyQmhFLFdBQVc7QUFFWCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHVCQVVULFNBQVEsZUFBMkI7SUErRFQ7SUE1RFgsV0FBVyxDQUFTO0lBRTNCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsWUFBWSxHQUErQixJQUFJLENBQUM7SUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVsRCxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsU0FBUyxDQUFDLENB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QUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRSxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzt1R0FwY1UsdUJBQXVCOzJGQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRm5DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UsIFRhYmxlRGF0YVNvdXJjZUNvbmZpZywgVGFibGVFbGVtZW50LCBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5LCBJRW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRmV0Y2hNb3JlRm4sIElFbnRpdGllc1NlcnZpY2UsIExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgZmlyc3RGYWxzZVByb21pc2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIHJlbW92ZUVuZCwgc2xlZXAgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcFRhYmxlVXRpbHMgfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElFbnRpdGllc1RhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vdGFibGUubW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgPSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIFNPID0gYW55XG4gID4gZXh0ZW5kcyBUYWJsZURhdGFTb3VyY2VDb25maWcge1xuXG4gIG9uUm93Q3JlYXRlZD86IChyb3c6IFRhYmxlRWxlbWVudDxUPikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gIHNhdmVPbmx5RGlydHlSb3dzPzogYm9vbGVhbjtcbiAgc2F2ZUJlZm9yZURlbGV0ZT86IGJvb2xlYW47IC8vIEZhbHNlIGJ5IGRlZmF1bHRcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZGF0YVNlcnZpY2VPcHRpb25zPzogV08gJiBTTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLndhdGNoQWxsKCkgYW5kIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuXG4gIHdhdGNoQWxsT3B0aW9ucz86IFdPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG4gIHNhdmVBbGxPcHRpb25zPzogU087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS5zYXZlQWxsKClcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEVudGl0aWVzVGFibGVEYXRhU291cmNlPFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sXG4gIEYgPSBhbnksXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnksXG4gIFYgZXh0ZW5kcyBWYWxpZGF0b3JTZXJ2aWNlID0gVmFsaWRhdG9yU2VydmljZSxcbiAgQyBleHRlbmRzIEVudGl0aWVzVGFibGVEYXRhU291cmNlQ29uZmlnPFQsIElELCBXTywgU08+ID0gRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4sXG4gIFIgZXh0ZW5kcyBUYWJsZUVsZW1lbnQ8VD4gPSBUYWJsZUVsZW1lbnQ8VD5cbiAgPlxuICAgIGV4dGVuZHMgVGFibGVEYXRhU291cmNlPFQsIFYsIEMsIFI+XG4gICAgaW1wbGVtZW50cyBJRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8Uj4sIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZW50aXR5TmFtZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfZGVidWcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9jcmVhdGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3NhdmluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2ZldGNoTW9yZUZuOiBGZXRjaE1vcmVGbjxMb2FkUmVzdWx0PFQ+PiA9IG51bGw7XG4gIHByb3RlY3RlZCBfc3RvcFdhdGNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIGdldCBzZXJ2aWNlT3B0aW9ucygpOiBXTyAmIFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGF0YVNlcnZpY2VPcHRpb25zXG4gICAgICB8fCB7Li4udGhpcy53YXRjaEFsbE9wdGlvbnMsIC4uLnRoaXMuc2F2ZUFsbE9wdGlvbnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIHNldCBzZXJ2aWNlT3B0aW9ucyh2YWx1ZTogV08gJiBTTykgIHtcbiAgICBjb25zb2xlLndhcm4oJ2RhdGFTb3VyY2Uuc2VydmljZU9wdGlvbnMgaXMgZGVwcmVjYXRlZCEgUGxlYXNlIHVzZSBcXCd3YXRjaEFsbE9wdGlvbnNcXCcgb3IgXFwnc2F2ZUFsbE9wdGlvbnNcXCcgaW5zdGVhZCcpO1xuICAgIHRoaXMuY29uZmlnLmRhdGFTZXJ2aWNlT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHdhdGNoQWxsT3B0aW9ucygpOiBXTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucztcbiAgfVxuXG4gIHNldCB3YXRjaEFsbE9wdGlvbnModmFsdWU6IFdPKSAge1xuICAgIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNhdmVBbGxPcHRpb25zKCk6IFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2F2ZUFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgc2F2ZUFsbE9wdGlvbnModmFsdWU6IFNPKSAge1xuICAgIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlID09PSBmYWxzZTsgLy8gU2hvdWxkIGJlIGZhbHNlIHdoZW4gdW5kZWZpbmVkIChpbml0aWFsIHN0YXRlKVxuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlOyAvLyBTaG91bGQgYmUgdHJ1ZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRhYmxlRGF0YVNvdXJjZSBpbnN0YW5jZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBkYXRhc291cmNlIG9mIGBAYW5ndWxhci9jZGtgIGRhdGEtdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhU2VydmljZSBBIHNlcnZpY2UgdG8gbG9hZCBhbmQgc2F2ZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUeXBlIG9mIGRhdGEgY29udGFpbmVkIGJ5IHRoZSBUYWJsZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlbiBgZGF0YWAgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSB2YWxpZGF0b3JTZXJ2aWNlIFNlcnZpY2UgdGhhdCBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBGb3JtR3JvdXAgdXNlZCB0byB2YWxpZGF0ZSByb3cgZmllbGRzLlxuICAgKiBAcGFyYW0gY29uZmlnIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGFibGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFTZXJ2aWNlOiBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICAgICAgICAgICAgdmFsaWRhdG9yU2VydmljZT86IFYsXG4gICAgICAgICAgICAgIG9wdGlvbnM/OiBDKSB7XG4gICAgc3VwZXIoW10sIGRhdGFUeXBlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICBrZWVwT3JpZ2luYWxEYXRhQWZ0ZXJDb25maXJtOiBmYWxzZSxcbiAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgIHNhdmVPbmx5RGlydHlSb3dzOiBmYWxzZSxcbiAgICAgIHNhdmVCZWZvcmVEZWxldGU6IGZhbHNlLCAvLyBGb3IgdjEgY29tcGF0aWJpbGl0eVxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZW50aXR5TmFtZSA9IHJlbW92ZUVuZCgobmV3IGRhdGFUeXBlKCkpLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTycsICdWTycpO1xuICAgIHRoaXMuX2RlYnVnID0gb3B0aW9ucz8uc3VwcHJlc3NFcnJvcnMgPT09IGZhbHNlICYmICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBkaXNjb25uZWN0XG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGRpc2Nvbm5lY3RcbiAgICovXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jbG9zZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIENsb3NpbmcuLi4nKTtcbiAgICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMuc2VydmljZU9wdGlvbnMgYXMgV08pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsICdFUlJPUi5MT0FEX0RBVEFfRVJST1InKSksXG4gICAgICAgIG1hcCgocmVzOiBMb2FkUmVzdWx0PFQ+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gUmVjZWl2ZWQgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIChmcm9tIHNlcnZpY2UpLCBidXQgc3RpbGwgc2F2aW5nOiBza2lwYCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1NvbWVFZGl0aW5nUm93KCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSwgd2hpbGUgc29tZSByb3cgc3RpbGwgZWRpdGluZzogc2tpcDsgUGxlYXNlIGNoZWNrIHNhdmUoKSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgdGFibGUhYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZSgocmVzLmRhdGEgfHwgW10pIGFzIFRbXSk7XG4gICAgICAgICAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBTdG9wIHRoaXMgcGlwZSBuZXh0IHRpbWUgd2UgY2FsbCB3YXRjaEFsbCgpXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9zdG9wV2F0Y2hTdWJqZWN0KVxuICAgICAgICAvLyDimqAgTm90aWNlOiBEb24ndCBwdXQgYW55IG9wZXJhdG9yIGFmdGVyIHRha2VVbnRpbCB0byBhdm9pZCBwb3RlbnRpYWwgc3Vic2NyaXB0aW9uIGxlYWtzXG4gICAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzOiBSW10pIHtcbiAgICAvLyBBdm9pZCB0byB1cGRhdGUgZGF0YVNvdXJjZVN1YmplY3QsIHdoZW4gbm90IG5lZWRcbiAgICBpZiAodGhpcy5kYXRhc291cmNlU3ViamVjdC5vYnNlcnZlcnM/Lmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5zdXBwcmVzc0Vycm9ycykgY29uc29sZS53YXJuKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gVXBkYXRlIGRhdGFzb3VyY2Ugc3ViamVjdC4gUGxlYXNlIHByZWZlciB1c2luZyBcXCdyb3dzU3ViamVjdFxcJyBpbnN0ZWFkIG9mIFxcJ2RhdGFzb3VyY2VTdWJqZWN0XFwnJyk7XG4gICAgICBzdXBlci51cGRhdGVEYXRhc291cmNlRnJvbVJvd3Mocm93cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFNraXBwaW5nIGRhdGFzb3VyY2VTdWJqZWN0IHVwZGF0ZSAobm90IHVzZWQgeWV0KS4nKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZWFkT25seSkge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEVuYWJsZSB0byBzYXZlLCBiZWNhdXNlIGNvbmZpZy5yZWFkT25seT10cnVlJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNhdmluZyB0d2ljZSAoc2hvdWxkIG5ldmVyIG9jY3VyKVxuICAgIGlmICh0aGlzLl9zYXZpbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFRyeWluZyB0byBzYXZlICR7dGhpcy5fZW50aXR5TmFtZX0gcm93cyB0d2ljZS4gU2tpcGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX3NhdmluZyA9IHRydWU7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zdCBvbmx5RGlydHlSb3dzID0gdGhpcy5jb25maWcuc2F2ZU9ubHlEaXJ0eVJvd3M7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2F2aW5nICR7dGhpcy5fZW50aXR5TmFtZX0gcm93cy4uLiB7b25seURpcnR5Um93czogJHtvbmx5RGlydHlSb3dzfX1gKTtcblxuICAgICAgLy8gR2V0IGFsbCByb3dzXG4gICAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG5cbiAgICAgIC8vIEZpbmlzaCBlZGl0aW5nIGFsbCByb3dzXG4gICAgICBjb25zdCBpbnZhbGlkUm93cyA9IHJvd3MuZmlsdGVyKHJvdyA9PiByb3cuZWRpdGluZyAmJiAhcm93LmNvbmZpcm1FZGl0Q3JlYXRlKCkpO1xuXG4gICAgICAvLyBDYW5ub3QgZmluaXNoIHNvbWUgcm93czogZXJyb3JcbiAgICAgIGlmIChpbnZhbGlkUm93cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gbG9nIGVycm9yc1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGludmFsaWRSb3dzLmZvckVhY2gocm93ID0+IEFwcFRhYmxlVXRpbHMubG9nUm93RXJyb3JzKHJvdywgYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSAke3RoaXMuX2VudGl0eU5hbWV9IHJvdyAjJHtyb3cuaWR9YCkpO1xuICAgICAgICAvLyBTdG9wIHdpdGggYW4gZXJyb3JcbiAgICAgICAgdGhyb3cge2NvZGU6IEVycm9yQ29kZXMuVEFCTEVfSU5WQUxJRF9ST1dfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5UQUJMRV9JTlZBTElEX1JPV19FUlJPUid9O1xuICAgICAgfVxuXG4gICAgICBsZXQgZGF0YTogVFtdO1xuICAgICAgbGV0IGRhdGFUb1NhdmU6IFRbXTtcblxuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yU2VydmljZSkge1xuICAgICAgICBkYXRhVG9TYXZlID0gW107XG4gICAgICAgIGRhdGEgPSByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gbmV3IHRoaXMuZGF0YUNvbnN0cnVjdG9yKCkgYXMgVDtcbiAgICAgICAgICBjdXJyZW50RGF0YS5mcm9tT2JqZWN0KHJvdy5jdXJyZW50RGF0YSk7XG4gICAgICAgICAgLy8gRmlsdGVyIHRvIGtlZXAgb25seSBkaXJ0eSByb3dcbiAgICAgICAgICBpZiAob25seURpcnR5Um93cyAmJiByb3cudmFsaWRhdG9yLmRpcnR5KSBkYXRhVG9TYXZlLnB1c2goY3VycmVudERhdGEpO1xuICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0YTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghb25seURpcnR5Um93cykgZGF0YVRvU2F2ZSA9IGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBPciB1c2UgdGhlIGN1cnJlbnQgZGF0YSB3aXRob3V0IGNvbnZlcnNpb24gKHdoZW4gbm8gdmFsaWRhdG9yIHNlcnZpY2UgdXNlZClcbiAgICAgIGVsc2Uge1xuICAgICAgICBkYXRhID0gcm93cy5tYXAocm93ID0+IHJvdy5jdXJyZW50RGF0YSk7XG4gICAgICAgIC8vIHNhdmUgYWxsIGRhdGEsIGFzIHdlIGRvbid0IGhhdmUgYW55IGRpcnR5IG1hcmtlclxuICAgICAgICBkYXRhVG9TYXZlID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgbm8gZGF0YSB0byBzYXZlOiBleGl0XG4gICAgICBpZiAob25seURpcnR5Um93cyAmJiAhZGF0YVRvU2F2ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gTm8gJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIHRvIHNhdmUuIFNraXBgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBBc2tpbmcgc2VydmljZSB0byBzYXZlIHRoaXMgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhOmAsIGRhdGFUb1NhdmUpO1xuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5zYXZlQWxsKGRhdGFUb1NhdmUsIHRoaXMuc2VydmljZU9wdGlvbnMpO1xuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTYXZpbmcgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIFtPS11gKTtcblxuICAgICAgLy8gTFAgMjMvMDMvMjAyMTogdXBkYXRlIGRhdGFzb3VyY2UgaXMgbmVjZXNzYXJ5IGJ1dCBjYW4gYmUgY2hhbmdlZCB0byBhIHJlZmV0Y2goKSBvbiBRdWVyeVJlZiAobXVzdCBiZSBjcmVhdGVkIGFuZCByZWdpc3RlcmVkIGluIEdyYXBocWxTZXJ2aWNlLndhdGNoUXVlcnkpXG4gICAgICB0aGlzLnVwZGF0ZURhdGFzb3VyY2UoZGF0YSwge2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5lcnJvcignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEVycm9yIHdoaWxlIHNhdmluZzogJyArIGVycm9yICYmIGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3NhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVEYXRhc291cmNlKGRhdGE6IFRbXSwgb3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBVcGRhdGluZyBkYXRhc291cmNlIHdpdGggZGF0YTpgLCBkYXRhKTtcblxuICAgIHN1cGVyLnVwZGF0ZURhdGFzb3VyY2UoZGF0YSwgb3B0cyk7XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8UltdIHwgUmVhZG9ubHlBcnJheTxSPj4ge1xuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW2VudGl0aWVzLWRhdGFzb3VyY2VdIGNvbm5lY3RcIik7XG4gICAgcmV0dXJuIHN1cGVyLmNvbm5lY3QoY29sbGVjdGlvblZpZXdlcik7XG4gIH1cblxuICBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI/OiBDb2xsZWN0aW9uVmlld2VyKSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gRGlzY29ubmVjdGluZy4uLicpO1xuICAgIHN1cGVyLmRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcik7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgd2FpdElkbGUoZGVib3VuY2VUaW1lTXM/OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBmaXJzdEZhbHNlUHJvbWlzZSh0aGlzLmxvYWRpbmdTdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoZGVib3VuY2VUaW1lTXMgfHwgMTAwKSAvLyBpZiBub3Qgc3RhcnRlZCB5ZXQsIHdhaXRcbiAgICAgICkpO1xuICB9XG5cbiAgY29uZmlybUNyZWF0ZShyb3c6IFIpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maXJtZWQgPSBzdXBlci5jb25maXJtQ3JlYXRlKHJvdyk7XG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocm93LmVkaXRpbmcgJiYgcm93LnZhbGlkYXRvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gUm93IHN0aWxsIGhhcyB7ZWRpdGluZzogdHJ1ZX0gYWZ0ZXIgY29uZmlybUNyZWF0ZSgpISBGb3JjZSBlZGl0aW5nIHRvIGZhbHNlJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uZmlybUVkaXQocm93OiBSKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlybWVkID0gc3VwZXIuY29uZmlybUVkaXQocm93KTtcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiB0cnVlfSBhZnRlciBjb25maXJtRWRpdCgpISBGb3JjZSBlZGl0aW5nIHRvIGZhbHNlJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhcnRFZGl0KHJvdzogUik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVkaXRpbmcgPSBzdXBlci5zdGFydEVkaXQocm93KTtcbiAgICBpZiAoIWVkaXRpbmcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIXJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IGZhbHNlfSBhZnRlciBzdGFydEVkaXQoKSEgRm9yY2UgZWRpdGluZycpO1xuICAgICAgcm93LnZhbGlkYXRvci5lbmFibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSwgbWVzc2FnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yO1xuICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTZXJ2aWNlICR7dGhpcy5fZW50aXR5TmFtZX0gc2VudCBlcnJvcjogJHtlcnJvck1zZ31gLCBlcnJvcik7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSB8fCBlcnJvck1zZyk7XG4gIH1cblxuICBoYW5kbGVTZXJ2aWNlRXJyb3IoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSB8fCBlcnJvcjtcbiAgICBjb25zb2xlLmVycm9yKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2VydmljZSAke3RoaXMuX2VudGl0eU5hbWV9IHNlbnQgZXJyb3I6ICR7ZXJyb3JNc2d9YCwgZXJyb3IpO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBkZWxldGUoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIElmIG5ldyByb3c6IG5vdCBuZWVkIHRvIHByb3BhZ2F0ZSB0byB0aGUgZGF0YVNlcnZpY2VcbiAgICBpZiAoaWQgPT09IC0xKSB7XG4gICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3cgPSB0aGlzLmdldFJvdyhpZCk7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgdG8gZGVsZXRlIHdpdGggaWQ9JHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IHN1cGVyRGVsZXRlID0gc3VwZXIuZGVsZXRlO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlQWxsKFtyb3cuY3VycmVudERhdGFdLCB0aGlzLnNlcnZpY2VPcHRpb25zKVxuICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmhhbmRsZVNlcnZpY2VFcnJvcihlcnIpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvLyBtYWtlIHN1cmUgcm93IGhhcyBiZWVuIGRlbGV0ZWQgKGJlY2F1c2UgR3JhcFFIbCBjYWNoZSByZW1vdmUgY2FuIGZhaWxlZClcbiAgICAgICAgICBjb25zdCBwcmVzZW50ID0gdGhpcy5nZXRSb3coaWQpID09PSByb3c7XG4gICAgICAgICAgaWYgKHByZXNlbnQpIHN1cGVyRGVsZXRlLmNhbGwoc2VsZiwgaWQpO1xuXG4gICAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKHJvd3M6IFJbXSk6IFByb21pc2U8YW55PiB7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGFGcm9tUm93cyhyb3dzKTtcblxuICAgIHRyeSB7XG5cbiAgICAgIC8vIENhbGwgc2VydmljZSBkZWxldGlvblxuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoZGF0YSwgdGhpcy5zZXJ2aWNlT3B0aW9ucyk7XG5cbiAgICAgIGF3YWl0IHNsZWVwKDMwMCk7IC8vIFdhaXQgcHJvcGFnYXRpb24gKGUuZy4gdXBkYXRlIGNhY2hlLCB0aGVuIHJlY2VpdmVkIHVwZGF0ZSBmcm9tIGRhdGFTZXJ2aWNlLndhdGNoQWxsKCkpXG5cbiAgICAgIC8vIFdvcmthcm91bmQsIHRvIGJlIHN1cmUgYWxsIHJvd3MgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgIC8vIFNvbWV0aW1lLCB0aGUgc2VydmljZSBtaXNzIGRlbGV0aW9uLCBvciBHcmFwaFFsIGNhY2hlIHJlbW92ZSBmYWlsZWQuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGFwcGx5IG1pc3NpbmcgZGVsZXRpb24gdXNpbmcgdGhlIHN1cGVyLmRlbGV0ZSgpIGZ1bmN0aW9uXG4gICAgICBjb25zdCByb3dOb3REZWxldGVkID0gdGhpcy5nZXRSb3dzKCkuZmlsdGVyKHJvdyA9PiByb3dzLmluY2x1ZGVzKHJvdykpO1xuICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShyb3dOb3REZWxldGVkKSkge1xuICAgICAgICBjb25zdCBzdXBlckRlbGV0ZSA9IHN1cGVyLmRlbGV0ZTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEZvcmNlIGRlbGV0aW9uIG9mICR7cm93Tm90RGVsZXRlZC5sZW5ndGh9IHJvd3MhIFBsZWFzZSBjaGVjayB0aGF0IGRhdGEgc2VydmljZSB1cGRhdGUgdGhlIGNhY2hlLCBhZnRlciBkZWxldGlvbmApO1xuICAgICAgICByb3dOb3REZWxldGVkXG4gICAgICAgICAgLy8gU3RhcnQgYXQgdGhlIGVuZFxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmlkID4gYi5pZCA/IC0xIDogMSlcbiAgICAgICAgICAuZm9yRWFjaChyID0+IHN1cGVyRGVsZXRlLmNhbGwoc2VsZiwgci5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBIYW5kbGUgc2VydmljZSBlcnJvclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvdyhpZDogbnVtYmVyKTogUiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldFJvdyhpZCk7XG4gIH1cblxuICBnZXRSb3dzKCk6IFJbXSB7XG4gICAgcmV0dXJuIHRoaXMucm93c1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGhhc1NvbWVFZGl0aW5nUm93KCkge1xuICAgIHJldHVybiAodGhpcy5yb3dzU3ViamVjdC52YWx1ZSB8fCBbXSkuc29tZShyb3cgPT4gcm93LmVkaXRpbmcpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlTmV3KGluc2VydEF0PzogbnVtYmVyLCBvcHRzID0ge2VkaXRpbmc6IHRydWV9KTogUHJvbWlzZTxSfHVuZGVmaW5lZD4ge1xuICAgIC8vIEF2b2lkIG11bHRpcGxlIGNhbGwgKG9ubHkgb25lIGVkaXRpbmcgcm93IGlzIGFsbG93ZWQpXG4gICAgaWYgKHRoaXMuX2NyZWF0aW5nICYmIG9wdHMuZWRpdGluZykgcmV0dXJuO1xuXG4gICAgdGhpcy5fY3JlYXRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJvdyA9IGF3YWl0IHN1cGVyLmNyZWF0ZU5ldyhpbnNlcnRBdCwgb3B0cyk7XG5cbiAgICAgIGlmICghcm93KSByZXR1cm4gdW5kZWZpbmVkOyAvLyBTdG9wIGhlcmVcblxuICAgICAgLy8gQ2FsbCBvYnNlcnZlcnNcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8ub25Sb3dDcmVhdGVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWcub25Sb3dDcmVhdGVkKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikgIHtcbiAgICAgICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvdztcbiAgICB9XG4gICAgZmluYWxseSB7XG4gICAgICB0aGlzLl9jcmVhdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGEoKTogVFtdIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZyb21Sb3dzKHJvd3MpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNb3JlKG9wdHM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9mZXRjaE1vcmVGbikgcmV0dXJuIGZhbHNlOyAvLyBBdm9pZCBtdWx0aXBsZSBjYWxsXG4gICAgaWYgKHRoaXMuaGFzU29tZUVkaXRpbmdSb3coKSkge1xuICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgZmV0Y2ggbW9yZSAke3RoaXMuX2VudGl0eU5hbWV9IGJlY2F1c2Ugc29tZSByb3cpIHN0aWxsIGVkaXRpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgV2lsbCBmZXRjaGluZyBtb3JlIHJvdyhzKSBzdGlsbC4uLmApO1xuXG4gICAgLy8gRm9yZ2V0IHRoZSBmZXRjaE1vcmUgZnVuY3Rpb24sIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBjb25zdCBmZXRjaE1vcmVGbiA9IHRoaXMuX2ZldGNoTW9yZUZuO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcblxuICAgIC8vIEZldGNoIG5leHQgcGFnZVxuICAgIGNvbnN0IHJlczogTG9hZFJlc3VsdDxUPiA9IGF3YWl0IGZldGNoTW9yZUZuKCk7XG5cbiAgICAvLyBTa2lwIGlmIGVtcHR5IChubyBtb3JlIGRhdGEpXG4gICAgaWYgKGlzRW1wdHlBcnJheShyZXM/LmRhdGEpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRhdGEgc291cmNlXG4gICAgc3VwZXIudXBkYXRlRGF0YXNvdXJjZSgodGhpcy5jdXJyZW50RGF0YSB8fCBbXSkuY29uY2F0KC4uLnJlcy5kYXRhKSwgb3B0cyk7XG5cbiAgICAvLyBSZW1lbWJlciBmZXRjaE1vcmVcbiAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgbWFya0FzTG9hZGluZygpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -44,14 +44,14 @@ export class AppInMemoryTable extends AppTable {
44
44
  equals(t1, t2) {
45
45
  return this.memoryDataService.equals(t1, t2);
46
46
  }
47
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppInMemoryTable, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
48
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: AppInMemoryTable, inputs: { canEdit: "canEdit", canDelete: "canDelete" }, usesInheritance: true, ngImport: i0 });
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppInMemoryTable, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
48
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: AppInMemoryTable, inputs: { canEdit: "canEdit", canDelete: "canDelete" }, usesInheritance: true, ngImport: i0 });
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppInMemoryTable, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppInMemoryTable, decorators: [{
51
51
  type: Directive
52
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined }, { type: undefined }, { type: i1.InMemoryEntitiesService }, { type: i2.ValidatorService }, { type: undefined }, { type: undefined }]; }, propDecorators: { canEdit: [{
52
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: undefined }, { type: undefined }, { type: i1.InMemoryEntitiesService }, { type: i2.ValidatorService }, { type: undefined }, { type: undefined }], propDecorators: { canEdit: [{
53
53
  type: Input
54
54
  }], canDelete: [{
55
55
  type: Input
56
56
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL21lbW9yeS10YWJsZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQWdDLHVCQUF1QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQUl2QyxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsZ0JBSWxCLFNBQVEsUUFBa0I7SUFlaEI7SUFDQTtJQUNBO0lBQ0E7SUFoQkgsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRTNCLElBQUksS0FBSyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUNFLFFBQWtCLEVBQ1IsT0FBaUIsRUFDakIsUUFBcUIsRUFDckIsaUJBQW9ELEVBQ3BELGdCQUFrQyxFQUM1QyxPQUE4QyxFQUM5QyxNQUFVO1FBRVYsS0FBSyxDQUFDLFFBQVEsRUFDWixPQUFPLEVBQ1AsSUFBSSx1QkFBdUIsQ0FBVyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQzdGLE1BQU0sQ0FBQyxDQUFDO1FBVkEsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUM7UUFDcEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLDBCQUEwQjtJQUNuRCxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxJQUE4QjtRQUNqRCx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRVMsTUFBTSxDQUFDLEVBQUssRUFBRSxFQUFLO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt3R0FwRG1CLGdCQUFnQjs0RkFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUZyQyxTQUFTO3dQQVFDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VmFsaWRhdG9yU2VydmljZX0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7RW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWcsIEVudGl0aWVzVGFibGVEYXRhU291cmNlfSBmcm9tICcuL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHtBcHBUYWJsZX0gZnJvbSAnLi90YWJsZS5jbGFzcyc7XG5pbXBvcnQge0lFbnRpdHl9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0luTWVtb3J5RW50aXRpZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvbWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwSW5NZW1vcnlUYWJsZTxcbiAgVCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LFxuICBGID0gYW55LFxuICBJRCA9IG51bWJlclxuICA+IGV4dGVuZHMgQXBwVGFibGU8VCwgRiwgSUQ+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjYW5FZGl0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZSA9IGZhbHNlO1xuXG4gIHNldCB2YWx1ZShkYXRhOiBUW10pIHtcbiAgICB0aGlzLnNldFZhbHVlKGRhdGEpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5RGF0YVNlcnZpY2UudmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBjb2x1bW5zOiBzdHJpbmdbXSxcbiAgICBwcm90ZWN0ZWQgZGF0YVR5cGU6IG5ldyAoKSA9PiBULFxuICAgIHByb3RlY3RlZCBtZW1vcnlEYXRhU2VydmljZTogSW5NZW1vcnlFbnRpdGllc1NlcnZpY2U8VCwgRiwgSUQ+LFxuICAgIHByb3RlY3RlZCB2YWxpZGF0b3JTZXJ2aWNlOiBWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIG9wdGlvbnM/OiBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxULCBJRD4sXG4gICAgZmlsdGVyPzogRlxuICApIHtcbiAgICBzdXBlcihpbmplY3RvcixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBuZXcgRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8VCwgRiwgSUQ+KGRhdGFUeXBlLCBtZW1vcnlEYXRhU2VydmljZSwgdmFsaWRhdG9yU2VydmljZSwgb3B0aW9ucyksXG4gICAgICBmaWx0ZXIpO1xuXG4gICAgdGhpcy5hdXRvTG9hZCA9IGZhbHNlOyAvLyB3YWl0aW5nIHZhbHVlIHRvIGJlIHNldFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUW10sIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIC8vIFJlc2V0IHByZXZpb3VzIGVycm9yXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc2V0RXJyb3IobnVsbCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICB0aGlzLm1lbW9yeURhdGFTZXJ2aWNlLnZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5vblJlZnJlc2guZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBlcXVhbHModDE6IFQsIHQyOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5RGF0YVNlcnZpY2UuZXF1YWxzKHQxLCB0Mik7XG4gIH1cbn1cblxuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL21lbW9yeS10YWJsZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQWdDLHVCQUF1QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQUl2QyxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsZ0JBSWxCLFNBQVEsUUFBa0I7SUFlaEI7SUFDQTtJQUNBO0lBQ0E7SUFoQkgsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRTNCLElBQUksS0FBSyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUNFLFFBQWtCLEVBQ1IsT0FBaUIsRUFDakIsUUFBcUIsRUFDckIsaUJBQW9ELEVBQ3BELGdCQUFrQyxFQUM1QyxPQUE4QyxFQUM5QyxNQUFVO1FBRVYsS0FBSyxDQUFDLFFBQVEsRUFDWixPQUFPLEVBQ1AsSUFBSSx1QkFBdUIsQ0FBVyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQzdGLE1BQU0sQ0FBQyxDQUFDO1FBVkEsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUM7UUFDcEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLDBCQUEwQjtJQUNuRCxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxJQUE4QjtRQUNqRCx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRVMsTUFBTSxDQUFDLEVBQUssRUFBRSxFQUFLO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzt1R0FwRG1CLGdCQUFnQjsyRkFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUZyQyxTQUFTO3NPQVFDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VmFsaWRhdG9yU2VydmljZX0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7RW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWcsIEVudGl0aWVzVGFibGVEYXRhU291cmNlfSBmcm9tICcuL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHtBcHBUYWJsZX0gZnJvbSAnLi90YWJsZS5jbGFzcyc7XG5pbXBvcnQge0lFbnRpdHl9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0luTWVtb3J5RW50aXRpZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvbWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwSW5NZW1vcnlUYWJsZTxcbiAgVCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+LFxuICBGID0gYW55LFxuICBJRCA9IG51bWJlclxuICA+IGV4dGVuZHMgQXBwVGFibGU8VCwgRiwgSUQ+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjYW5FZGl0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZSA9IGZhbHNlO1xuXG4gIHNldCB2YWx1ZShkYXRhOiBUW10pIHtcbiAgICB0aGlzLnNldFZhbHVlKGRhdGEpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5RGF0YVNlcnZpY2UudmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBjb2x1bW5zOiBzdHJpbmdbXSxcbiAgICBwcm90ZWN0ZWQgZGF0YVR5cGU6IG5ldyAoKSA9PiBULFxuICAgIHByb3RlY3RlZCBtZW1vcnlEYXRhU2VydmljZTogSW5NZW1vcnlFbnRpdGllc1NlcnZpY2U8VCwgRiwgSUQ+LFxuICAgIHByb3RlY3RlZCB2YWxpZGF0b3JTZXJ2aWNlOiBWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIG9wdGlvbnM/OiBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZzxULCBJRD4sXG4gICAgZmlsdGVyPzogRlxuICApIHtcbiAgICBzdXBlcihpbmplY3RvcixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBuZXcgRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8VCwgRiwgSUQ+KGRhdGFUeXBlLCBtZW1vcnlEYXRhU2VydmljZSwgdmFsaWRhdG9yU2VydmljZSwgb3B0aW9ucyksXG4gICAgICBmaWx0ZXIpO1xuXG4gICAgdGhpcy5hdXRvTG9hZCA9IGZhbHNlOyAvLyB3YWl0aW5nIHZhbHVlIHRvIGJlIHNldFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUW10sIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIC8vIFJlc2V0IHByZXZpb3VzIGVycm9yXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc2V0RXJyb3IobnVsbCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICB0aGlzLm1lbW9yeURhdGFTZXJ2aWNlLnZhbHVlID0gdmFsdWU7XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5vblJlZnJlc2guZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBlcXVhbHModDE6IFQsIHQyOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5RGF0YVNlcnZpY2UuZXF1YWxzKHQxLCB0Mik7XG4gIH1cbn1cblxuIl19
@@ -32,15 +32,15 @@ export class TableSelectColumnsComponent {
32
32
  cancel() {
33
33
  this.viewCtrl.dismiss();
34
34
  }
35
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableSelectColumnsComponent, deps: [{ token: i1.NavParams }, { token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
36
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableSelectColumnsComponent, selector: "table-select-columns", inputs: { columns: "columns", canHideColumns: "canHideColumns" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\" aria-label=\"\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i1.IonReorderGroup, selector: "ion-reorder-group", inputs: ["disabled"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TableSelectColumnsComponent, deps: [{ token: i1.NavParams }, { token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
36
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: TableSelectColumnsComponent, selector: "table-select-columns", inputs: { columns: "columns", canHideColumns: "canHideColumns" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\" aria-label=\"\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i1.IonReorderGroup, selector: "ion-reorder-group", inputs: ["disabled"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableSelectColumnsComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: TableSelectColumnsComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'table-select-columns', template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\" aria-label=\"\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n" }]
41
- }], ctorParameters: function () { return [{ type: i1.NavParams }, { type: i1.ModalController }]; }, propDecorators: { columns: [{
41
+ }], ctorParameters: () => [{ type: i1.NavParams }, { type: i1.ModalController }], propDecorators: { columns: [{
42
42
  type: Input
43
43
  }], canHideColumns: [{
44
44
  type: Input
45
45
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0LWNvbHVtbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL3RhYmxlLXNlbGVjdC1jb2x1bW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS1zZWxlY3QtY29sdW1ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBYWpELE1BQU0sT0FBTywyQkFBMkI7SUFPNUI7SUFDQTtJQU5ELE9BQU8sQ0FBZTtJQUV0QixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBRS9CLFlBQ1UsU0FBb0IsRUFDcEIsUUFBeUI7UUFEekIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBRXhGLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLG1FQUFtRTtZQUNuRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFBLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuRixDQUFDLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQzt3R0FqQ1UsMkJBQTJCOzRGQUEzQiwyQkFBMkIsOEhDZnhDLDR4REEwREE7OzRGRDNDYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0Usc0JBQXNCOzhIQUt2QixPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TW9kYWxDb250cm9sbGVyLCBOYXZQYXJhbXN9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7dG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbHVtbkl0ZW0ge1xuICBuYW1lPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBjYW5IaWRlPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFibGUtc2VsZWN0LWNvbHVtbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtc2VsZWN0LWNvbHVtbnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VsZWN0Q29sdW1uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgY29sdW1uczogQ29sdW1uSXRlbVtdO1xuXG4gIEBJbnB1dCgpIGNhbkhpZGVDb2x1bW5zID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdlBhcmFtczogTmF2UGFyYW1zLFxuICAgIHByaXZhdGUgdmlld0N0cmw6IE1vZGFsQ29udHJvbGxlcikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zIHx8IHRoaXMubmF2UGFyYW1zLmRhdGEgJiYgdGhpcy5uYXZQYXJhbXMuZGF0YS5jb2x1bW5zIHx8IFtdO1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAvLyBJZiBjYW5ub3QgaGlkZSBjb2x1bW5zLCBtYWtlIHN1cmUgYWxsIGNvbHVtbnMgYXJlIHNldCB0byB2aXNpYmxlXG4gICAgICBjLnZpc2libGUgPSAodGhpcy5jYW5IaWRlQ29sdW1ucyA9PT0gZmFsc2UgJiYgdHJ1ZS8qYWx3YXlzIHZpc2libGUqLykgfHwgYy52aXNpYmxlO1xuICAgICAgYy5jYW5IaWRlID0gdG9Cb29sZWFuKGMuY2FuSGlkZSwgdGhpcy5jYW5IaWRlQ29sdW1ucyk7XG4gICAgfSk7XG4gIH1cblxuICBvblJlbmRlckl0ZW1zKGV2ZW50KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY29sdW1ucy5zcGxpY2UoZXZlbnQuZGV0YWlsLmZyb20sIDEpWzBdO1xuICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoZXZlbnQuZGV0YWlsLnRvLCAwLCBlbGVtZW50KTtcbiAgICBldmVudC5kZXRhaWwuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMudmlld0N0cmwuZGlzbWlzcyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMudmlld0N0cmwuZGlzbWlzcygpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwibGlnaHRcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgdmlzaWJsZS14cyB2aXNpYmxlLXNtIHZpc2libGUtbW9iaWxlPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7J0NPTU1PTi5ESVNQTEFZRURfQ09MVU1OUyd8dHJhbnNsYXRlfX1cbiAgICA8L2lvbi10aXRsZT5cblxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZWNrbWFya1wiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuXG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tbGlzdD5cbiAgICA8IS0tIFNlZSBkb2M6IGh0dHBzOi8vYmV0YS5pb25pY2ZyYW1ld29yay5jb20vZG9jcy9hcGkvcmVvcmRlci8gLS0+XG5cbiAgICA8aW9uLXJlb3JkZXItZ3JvdXAgZGlzYWJsZWQ9XCJmYWxzZVwiIChpb25JdGVtUmVvcmRlcik9XCJvblJlbmRlckl0ZW1zKCRldmVudClcIj5cbiAgICAgIDxpb24taXRlbSAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgPGlvbi1sYWJlbD57e2NvbHVtbi5sYWJlbHx0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLXRvZ2dsZSBzbG90PVwiZW5kXCIgYXJpYS1sYWJlbD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmNhbkhpZGVcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb2x1bW4udmlzaWJsZVwiIChpb25DaGFuZ2UpPVwiY29sdW1uLnZpc2libGU9IWNvbHVtbi52aXNpYmxlXCI+PC9pb24tdG9nZ2xlPlxuICAgICAgICA8aW9uLXJlb3JkZXIgc2xvdD1cImVuZFwiPjwvaW9uLXJlb3JkZXI+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLXJlb3JkZXItZ3JvdXA+XG4gIDwvaW9uLWxpc3Q+XG48L2lvbi1jb250ZW50PlxuXG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93PlxuICAgICAgPGlvbi1jb2w+PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9DQU5DRUw8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIChjbGljayk9XCJjbG9zZSgpXCIgY29sb3I9XCJ0ZXJ0aWFyeVwiPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQVBQTFk8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuXG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0LWNvbHVtbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL3RhYmxlLXNlbGVjdC1jb2x1bW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS1zZWxlY3QtY29sdW1ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBYWpELE1BQU0sT0FBTywyQkFBMkI7SUFPNUI7SUFDQTtJQU5ELE9BQU8sQ0FBZTtJQUV0QixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBRS9CLFlBQ1UsU0FBb0IsRUFDcEIsUUFBeUI7UUFEekIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBRXhGLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLG1FQUFtRTtZQUNuRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFBLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuRixDQUFDLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQzt1R0FqQ1UsMkJBQTJCOzJGQUEzQiwyQkFBMkIsOEhDZnhDLDR4REEwREE7OzJGRDNDYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0Usc0JBQXNCOzRHQUt2QixPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TW9kYWxDb250cm9sbGVyLCBOYXZQYXJhbXN9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7dG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbHVtbkl0ZW0ge1xuICBuYW1lPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBjYW5IaWRlPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFibGUtc2VsZWN0LWNvbHVtbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtc2VsZWN0LWNvbHVtbnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VsZWN0Q29sdW1uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgY29sdW1uczogQ29sdW1uSXRlbVtdO1xuXG4gIEBJbnB1dCgpIGNhbkhpZGVDb2x1bW5zID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5hdlBhcmFtczogTmF2UGFyYW1zLFxuICAgIHByaXZhdGUgdmlld0N0cmw6IE1vZGFsQ29udHJvbGxlcikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zIHx8IHRoaXMubmF2UGFyYW1zLmRhdGEgJiYgdGhpcy5uYXZQYXJhbXMuZGF0YS5jb2x1bW5zIHx8IFtdO1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XG4gICAgICAvLyBJZiBjYW5ub3QgaGlkZSBjb2x1bW5zLCBtYWtlIHN1cmUgYWxsIGNvbHVtbnMgYXJlIHNldCB0byB2aXNpYmxlXG4gICAgICBjLnZpc2libGUgPSAodGhpcy5jYW5IaWRlQ29sdW1ucyA9PT0gZmFsc2UgJiYgdHJ1ZS8qYWx3YXlzIHZpc2libGUqLykgfHwgYy52aXNpYmxlO1xuICAgICAgYy5jYW5IaWRlID0gdG9Cb29sZWFuKGMuY2FuSGlkZSwgdGhpcy5jYW5IaWRlQ29sdW1ucyk7XG4gICAgfSk7XG4gIH1cblxuICBvblJlbmRlckl0ZW1zKGV2ZW50KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY29sdW1ucy5zcGxpY2UoZXZlbnQuZGV0YWlsLmZyb20sIDEpWzBdO1xuICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoZXZlbnQuZGV0YWlsLnRvLCAwLCBlbGVtZW50KTtcbiAgICBldmVudC5kZXRhaWwuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMudmlld0N0cmwuZGlzbWlzcyh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMudmlld0N0cmwuZGlzbWlzcygpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwibGlnaHRcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgdmlzaWJsZS14cyB2aXNpYmxlLXNtIHZpc2libGUtbW9iaWxlPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7J0NPTU1PTi5ESVNQTEFZRURfQ09MVU1OUyd8dHJhbnNsYXRlfX1cbiAgICA8L2lvbi10aXRsZT5cblxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZWNrbWFya1wiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuXG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tbGlzdD5cbiAgICA8IS0tIFNlZSBkb2M6IGh0dHBzOi8vYmV0YS5pb25pY2ZyYW1ld29yay5jb20vZG9jcy9hcGkvcmVvcmRlci8gLS0+XG5cbiAgICA8aW9uLXJlb3JkZXItZ3JvdXAgZGlzYWJsZWQ9XCJmYWxzZVwiIChpb25JdGVtUmVvcmRlcik9XCJvblJlbmRlckl0ZW1zKCRldmVudClcIj5cbiAgICAgIDxpb24taXRlbSAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgPGlvbi1sYWJlbD57e2NvbHVtbi5sYWJlbHx0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLXRvZ2dsZSBzbG90PVwiZW5kXCIgYXJpYS1sYWJlbD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmNhbkhpZGVcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb2x1bW4udmlzaWJsZVwiIChpb25DaGFuZ2UpPVwiY29sdW1uLnZpc2libGU9IWNvbHVtbi52aXNpYmxlXCI+PC9pb24tdG9nZ2xlPlxuICAgICAgICA8aW9uLXJlb3JkZXIgc2xvdD1cImVuZFwiPjwvaW9uLXJlb3JkZXI+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLXJlb3JkZXItZ3JvdXA+XG4gIDwvaW9uLWxpc3Q+XG48L2lvbi1jb250ZW50PlxuXG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93PlxuICAgICAgPGlvbi1jb2w+PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9DQU5DRUw8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIChjbGljayk9XCJjbG9zZSgpXCIgY29sb3I9XCJ0ZXJ0aWFyeVwiPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQVBQTFk8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuXG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=