@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
@@ -289,16 +289,16 @@ export class AppFormField {
289
289
  }, timeout || 0);
290
290
  }
291
291
  }
292
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppFormField, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i2.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
293
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppFormField, selector: "app-form-field", inputs: { definition: "definition", required: "required", readonly: "readonly", disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", compact: "compact", floatLabel: "floatLabel", tabindex: "tabindex", autofocus: "autofocus", clearable: "clearable", chipColor: "chipColor", debug: "debug", classList: ["class", "classList"] }, outputs: { onKeyupEnter: "keyup.enter" }, providers: [
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppFormField, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i2.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
293
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AppFormField, selector: "app-form-field", inputs: { definition: "definition", required: "required", readonly: "readonly", disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", compact: "compact", floatLabel: "floatLabel", tabindex: "tabindex", autofocus: "autofocus", clearable: "clearable", chipColor: "chipColor", debug: "debug", classList: ["class", "classList"] }, outputs: { onKeyupEnter: "keyup.enter" }, providers: [
294
294
  {
295
295
  provide: NG_VALUE_ACCESSOR,
296
296
  useExisting: forwardRef(() => AppFormField),
297
297
  multi: true
298
298
  }
299
- ], viewQueries: [{ propertyName: "matInput", first: true, predicate: ["matInput"], descendants: true }, { propertyName: "autocompleteField", first: true, predicate: ["autocompleteField"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('decimal')\" translate>ERROR.FIELD_NOT_VALID_DECIMAL</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{maxDecimals:\n definition.maximumNumberDecimals} }}</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of _values\" [value]=\"item.key\">{{ item.value | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- multi enum -->\n <mat-chips-field *ngSwitchCase=\"'enums'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [clearable]=\"clearable\"\n [items]=\"_values\"\n [displayAttributes]=\"definition.autocomplete?.attributes || ['key', 'value']\"\n [config]=\"definition.autocomplete\"\n [showAllOnFocus]=\"true\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n #autocompleteField\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [clearable]=\"clearable\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n [clearable]=\"clearable\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n", styles: [":host{display:inline-block;position:relative}button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i12.MatAutocompleteField, selector: "mat-autocomplete-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "placeholder", "suggestFn", "required", "mobile", "clearable", "debounceTime", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "class", "panelWidth", "matAutocompletePosition", "multiple", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "debug", "showSearchBar", "stickySearchBar", "applyImplicitValue", "filter", "readonly", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "component", type: i13.MatDate, selector: "mat-date-field", inputs: ["mobile", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "required", "compact", "placeholderChar", "autofocus", "startDate", "clearable", "timezone", "datePickerFilter", "readonly", "tabindex"] }, { kind: "component", type: i14.MatDateTime, selector: "mat-date-time-field", inputs: ["formControl", "formControlName", "required", "placeholder", "floatLabel", "appearance", "mobile", "compact", "placeholderChar", "autofocus", "startDate", "clearable", "datePickerFilter", "readonly", "tabindex"] }, { kind: "component", type: i15.MatBooleanField, selector: "mat-boolean-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "readonly", "required", "compact", "style", "buttonsColCount", "class", "yesLabel", "noLabel", "showButtonIcons", "yesIcon", "noIcon", "tabindex", "value"], outputs: ["keyup.enter", "onBlur"] }, { kind: "component", type: i16.MatChipsField, selector: "mat-chips-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "placeholder", "suggestFn", "required", "mobile", "readonly", "clearable", "debounceTime", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "class", "panelWidth", "matAutocompletePosition", "itemSize", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "chipColor", "debug", "filter", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "directive", type: i17.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i18.IsNilOrBlankPipe, name: "isNilOrBlank" }, { kind: "pipe", type: i19.FormGetValuePipe, name: "formGetValue" }, { kind: "pipe", type: i20.MatColorPipe, name: "matColor" }, { kind: "pipe", type: i21.AsFloatLabelTypePipe, name: "asFloatLabelType" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
299
+ ], viewQueries: [{ propertyName: "matInput", first: true, predicate: ["matInput"], descendants: true }, { propertyName: "autocompleteField", first: true, predicate: ["autocompleteField"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('decimal')\" translate>ERROR.FIELD_NOT_VALID_DECIMAL</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{maxDecimals:\n definition.maximumNumberDecimals} }}</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of _values\" [value]=\"item.key\">{{ item.value | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- multi enum -->\n <mat-chips-field *ngSwitchCase=\"'enums'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [clearable]=\"clearable\"\n [items]=\"_values\"\n [displayAttributes]=\"definition.autocomplete?.attributes || ['key', 'value']\"\n [config]=\"definition.autocomplete\"\n [showAllOnFocus]=\"true\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n #autocompleteField\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [clearable]=\"clearable\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n [clearable]=\"clearable\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n", styles: [":host{display:inline-block;position:relative}button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "aria-describedby", "panelClass", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i12.MatAutocompleteField, selector: "mat-autocomplete-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "placeholder", "suggestFn", "required", "mobile", "clearable", "debounceTime", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "class", "panelWidth", "matAutocompletePosition", "multiple", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "debug", "showSearchBar", "stickySearchBar", "applyImplicitValue", "filter", "readonly", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "component", type: i13.MatDate, selector: "mat-date-field", inputs: ["mobile", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "required", "compact", "placeholderChar", "autofocus", "startDate", "clearable", "timezone", "datePickerFilter", "readonly", "tabindex"] }, { kind: "component", type: i14.MatDateTime, selector: "mat-date-time-field", inputs: ["subscriptSizing", "formControl", "formControlName", "required", "placeholder", "floatLabel", "appearance", "mobile", "compact", "placeholderChar", "autofocus", "startDate", "clearable", "datePickerFilter", "readonly", "tabindex"] }, { kind: "component", type: i15.MatBooleanField, selector: "mat-boolean-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "readonly", "required", "compact", "style", "buttonsColCount", "class", "yesLabel", "noLabel", "showButtonIcons", "yesIcon", "noIcon", "tabindex", "value"], outputs: ["keyup.enter", "onBlur"] }, { kind: "component", type: i16.MatChipsField, selector: "mat-chips-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "placeholder", "suggestFn", "required", "mobile", "readonly", "clearable", "debounceTime", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "class", "panelWidth", "matAutocompletePosition", "itemSize", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "chipColor", "debug", "filter", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "directive", type: i17.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i18.IsNilOrBlankPipe, name: "isNilOrBlank" }, { kind: "pipe", type: i19.FormGetValuePipe, name: "formGetValue" }, { kind: "pipe", type: i20.MatColorPipe, name: "matColor" }, { kind: "pipe", type: i21.AsFloatLabelTypePipe, name: "asFloatLabelType" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
300
300
  }
301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppFormField, decorators: [{
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppFormField, decorators: [{
302
302
  type: Component,
303
303
  args: [{ selector: 'app-form-field', providers: [
304
304
  {
@@ -307,9 +307,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
307
307
  multi: true
308
308
  }
309
309
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('decimal')\" translate>ERROR.FIELD_NOT_VALID_DECIMAL</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{maxDecimals:\n definition.maximumNumberDecimals} }}</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of _values\" [value]=\"item.key\">{{ item.value | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- multi enum -->\n <mat-chips-field *ngSwitchCase=\"'enums'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [clearable]=\"clearable\"\n [items]=\"_values\"\n [displayAttributes]=\"definition.autocomplete?.attributes || ['key', 'value']\"\n [config]=\"definition.autocomplete\"\n [showAllOnFocus]=\"true\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel | asFloatLabelType\" [class]=\"classList\">\n <mat-label *ngIf=\"floatLabel !== 'never' && !!placeholder\">{{placeholder}}</mat-label>\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : undefined\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <button matSuffix *ngIf=\"clearable\"\n mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl|formGetValue|isNilOrBlank)\">\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n #autocompleteField\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [clearable]=\"clearable\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n [clearable]=\"clearable\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n", styles: [":host{display:inline-block;position:relative}button[hidden]{display:none}\n"] }]
310
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i2.FormGroupDirective, decorators: [{
310
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i2.FormGroupDirective, decorators: [{
311
311
  type: Optional
312
- }] }]; }, propDecorators: { definition: [{
312
+ }] }], propDecorators: { definition: [{
313
313
  type: Input
314
314
  }], required: [{
315
315
  type: Input
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
350
350
  type: ViewChild,
351
351
  args: ['autocompleteField']
352
352
  }] } });
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFZLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoTSxPQUFPLEVBQTJDLGlCQUFpQixFQUFzQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHcEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU16QyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBZUYsTUFBTSxPQUFPLFlBQVk7SUFrRFg7SUFDQTtJQUNBO0lBQ1U7SUFuRGQsaUJBQWlCLEdBQXFCLElBQUksQ0FBQztJQUMzQyxrQkFBa0IsR0FBZSxJQUFJLENBQUM7SUFDdEMsV0FBVyxDQUFzQjtJQUUvQixPQUFPLENBQWE7SUFFcEIsSUFBSSxDQUFnQjtJQUNwQixlQUFlLENBQVM7SUFFbEMsSUFDSSxVQUFVLENBQUMs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QjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpc0JsYW5rU3RyaW5nLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbEJvb2xlYW4sIGlzTm90TmlsT3JCbGFuaywgam9pblByb3BlcnRpZXNQYXRoLCB0b0Jvb2xlYW59IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0Rpc3BsYXlGbiwgRm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkVHlwZSwgQXBwRmxvYXRMYWJlbFR5cGV9IGZyb20gJy4vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Z2V0Q29sb3JDb250cmFzdH0gZnJvbSAnLi4vZ3JhcGgvY29sb3JzLnV0aWxzJztcbmltcG9ydCB7YXNJbnB1dEVsZW1lbnQsIGZpbHRlck51bWJlcklucHV0LCBzZWxlY3RJbnB1dENvbnRlbnR9IGZyb20gJy4uL2lucHV0cyc7XG5pbXBvcnQge3RvRGF0ZUlTT1N0cmluZ30gZnJvbSAnLi4vZGF0ZXMnO1xuaW1wb3J0IHtQcm9wZXJ0eX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtQcmVkZWZpbmVkQ29sb3JzfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZUZpZWxkfSBmcm9tICcuLi9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mb3JtLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcHBGb3JtRmllbGQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZvcm1GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2RlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb247XG5cbiAgcHJvdGVjdGVkIF92YWx1ZXM6IFByb3BlcnR5W107XG5cbiAgcHJvdGVjdGVkIHR5cGU6IEZvcm1GaWVsZFR5cGU7XG4gIHByb3RlY3RlZCBudW1iZXJJbnB1dFN0ZXA6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgZGVmaW5pdGlvbih2YWx1ZTogRm9ybUZpZWxkRGVmaW5pdGlvbikge1xuICAgIGlmICghdmFsdWUgfHwgdGhpcy5fZGVmaW5pdGlvbiA9PT0gdmFsdWUpIHJldHVybjsgLy8gU2tpcCBpcyBzYW1lIG9yIG5pbFxuICAgIHRoaXMuX2RlZmluaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLl9vbkRlZmluaXRpb25DaGFuZ2VkKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkZWZpbml0aW9uKCk6IEZvcm1GaWVsZERlZmluaXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uO1xuICB9XG5cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2hpcENvbG9yOiBUaGVtZVBhbGV0dGUgfCBQcmVkZWZpbmVkQ29sb3JzID0gbnVsbDtcbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgna2V5dXAuZW50ZXInKVxuICBvbktleXVwRW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21hdElucHV0JykgbWF0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZUZpZWxkJykgYXV0b2NvbXBsZXRlRmllbGQ6IE1hdEF1dG9jb21wbGV0ZUZpZWxkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5jaGVja0FuZFJlc29sdmVGb3JtQ29udHJvbCgpO1xuXG4gICAgaWYgKCF0aGlzLl9kZWZpbml0aW9uKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uXFwnIGluIDxhcHAtZm9ybS1maWVsZD4uJyk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9kZWZpbml0aW9uICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uXFwnIGluIDxhcHAtZm9ybS1maWVsZD4uIFNob3VsZCBiZSBhbiBvYmplY3QuJyk7XG4gICAgdGhpcy5fb25EZWZpbml0aW9uQ2hhbmdlZCh0aGlzLl9kZWZpbml0aW9uLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCB0aGlzLnR5cGUgPT09ICdkb3VibGUnKSAmJiBOdW1iZXIuaXNOYU4ob2JqKSkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoXCJXQVJOOiB0cnlpbmcgdG8gc2V0IE5hTiB2YWx1ZSwgaW4gYW4gPGFwcC1mb3JtLWZpZWxkPiEgUmVzZXQgdG8gbnVsbFwiKTtcblxuICAgICAgb2JqID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iaiA9IChvYmogIT09ICdmYWxzZScpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgb2JqID0gdG9EYXRlSVNPU3RyaW5nKG9iaik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudW1zJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9iaiA9IG9iai50cmltKCkuc3BsaXQoL1t8LF0rLyk7XG4gICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdXBkYXRlZEFycmF5ID0gKG9iaiB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5maW5kKHYgPT4gdi5rZXkgPT09IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbCk7XG4gICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICBvYmogPSB1cGRhdGVkQXJyYXk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0eScgJiYgaXNOaWxPckJsYW5rKG9iaikpIHtcbiAgICAgIG9iaiA9IG51bGw7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0aWVzJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9iaiA9IG9iai50cmltKCk7XG4gICAgICAgIGlmIChvYmouc3RhcnRzV2l0aCgnWycpICYmIG9iai5lbmRzV2l0aCgnXScpKSB7XG4gICAgICAgICAgb2JqID0gSlNPTi5wYXJzZShvYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIG9iaiA9IG9iai5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgfVxuICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWRBcnJheSA9IChvYmogfHwgW10pLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiBpdGVtLnN0YXJ0c1dpdGgoJ3snKSAmJiBpdGVtLmVuZHNXaXRoKCd9JykpIHtcbiAgICAgICAgICBpdGVtID0gSlNPTi5wYXJzZShpdGVtKTtcbiAgICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbE9yQmxhbmspO1xuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgb2JqID0gdXBkYXRlZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2JqICE9PSB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIlNldCA8YXBwLWZvcm0tZmllbGQ+IHZhbHVlOiBcIiwgb2JqKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9iaiwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sob2JqKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCA9PT0gaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckFscGhhbnVtZXJpY2FsSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMgLyo9RW50ZXIqLyAmJiB0aGlzLm9uS2V5dXBFbnRlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbktleXVwRW50ZXIuZW1pdChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEFkZCBmZWF0dXJlcyAoZS5nLiBjaGVjayBhZ2FpbnN0IGEgcGF0dGVybilcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGlmICh0aGlzLm1hdElucHV0KSB0aGlzLm1hdElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICBlbHNlIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkLmZvY3VzKCk7XG4gIH1cblxuICBmaWx0ZXJOdW1iZXJJbnB1dCA9IGZpbHRlck51bWJlcklucHV0O1xuICBzZWxlY3RJbnB1dENvbnRlbnQgPSBzZWxlY3RJbnB1dENvbnRlbnQ7XG5cbiAgZ2V0RGlzcGxheVZhbHVlRm4oZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IERpc3BsYXlGbiB7XG4gICAgaWYgKGRlZmluaXRpb24uYXV0b2NvbXBsZXRlICYmIGRlZmluaXRpb24uYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKSB7XG4gICAgICByZXR1cm4gKG9iajogYW55KSA9PiBkZWZpbml0aW9uLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aChvYmopO1xuICAgIH1cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGVmaW5pdGlvbi5hdXRvY29tcGxldGUgJiYgZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuYXR0cmlidXRlcyB8fCBbJ2xhYmVsJywgJ25hbWUnXTtcbiAgICByZXR1cm4gKG9iajogYW55KSA9PiBvYmogJiYgam9pblByb3BlcnRpZXNQYXRoKG9iaiwgYXR0cmlidXRlcyk7XG4gIH1cblxuICBnZXRDb2xvckNvbnRyYXN0KGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBpc05vdE5pbE9yQmxhbmsoY29sb3IpID8gZ2V0Q29sb3JDb250cmFzdChjb2xvciwgdHJ1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdG8gcmVsb2FkIHZhbHVlcywgaWYgbm90IGRldGVjdGVkXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcmVsb2FkSXRlbXModmFsdWU/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuX2RlZmluaXRpb24pIHJldHVybjtcblxuICAgIHRoaXMuX29uRGVmaW5pdGlvbkNoYW5nZWQodGhpcy5fZGVmaW5pdGlvbik7XG5cbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkPy5yZWxvYWRJdGVtcyh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcm90ZWN0ZWQgY29tcHV0ZU51bWJlcklucHV0U3RlcChkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHtcblxuICAgIGlmIChkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyA+IDApIHtcbiAgICAgIGxldCBzdGVwID0gJzAuJztcbiAgICAgIGlmIChkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyA+IDEpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyAtIDE7IGkrKykge1xuICAgICAgICAgIHN0ZXAgKz0gJzAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGVwICs9ICcxJztcbiAgICAgIHJldHVybiBzdGVwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzEnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlVmFsdWVzRnJvbVRva2VuKHRva2VuOiBJbmplY3Rpb25Ub2tlbjwoc3RyaW5nfFByb3BlcnR5KVtdPik6IGFueVtdIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmluamVjdG9yLmdldCh0b2tlbik7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHRoaXMuY29tcHV0ZVZhbHVlcyh2YWx1ZXMpIDogW107XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZVZhbHVlcyh2YWx1ZXM6IChzdHJpbmd8UHJvcGVydHkpW10pOiBQcm9wZXJ0eVtdIHtcbiAgICBpZiAoIXZhbHVlcykgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZXMubWFwKHYgPT4gICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpXG4gICAgICA/IDxQcm9wZXJ0eT57a2V5OiB2LCB2YWx1ZTogdn1cbiAgICAgIDogPFByb3BlcnR5PntrZXk6IHYua2V5LCB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh2LnZhbHVlKX1cbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrQW5kUmVzb2x2ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSByZXR1cm47IC8vIE9LLCB0aGVyZSBpcyBhIGNvbnRyb2xcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cERpcikge1xuICAgICAgLy8gVHJ5IHRvIGZpbmQgdXNpbmcgZGVmaW5pdGlvbi5rZXksIGFzIGZvcm1Db250cm9sTmFtZVxuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLl9kZWZpbml0aW9uLmtleSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sTmFtZSA9IHRoaXMuX2RlZmluaXRpb24ua2V5O1xuICAgICAgfVxuICAgICAgY29uc3QgZm9ybUNvbnRyb2xOYW1lID0gKHRoaXMuZm9ybUdyb3VwRGlyLmRpcmVjdGl2ZXMgfHwgW10pLmZpbmQoZCA9PiB0aGlzLmZvcm1Db250cm9sTmFtZSAmJiBkLm5hbWUgPT09IHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUNvbnRyb2xOYW1lLmNvbnRyb2w7XG4gICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXR0cmlidXRlIFxcJ2Zvcm1Db250cm9sXFwnIG9yIFxcJ2Zvcm1Db250cm9sTmFtZVxcJyBpbiA8YXBwLWZvcm0tZmllbGQ+IGNvbXBvbmVudC4nKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uRGVmaW5pdGlvbkNoYW5nZWQoZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbiwgb3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSkge1xuXG4gICAgdGhpcy50eXBlID0gZGVmaW5pdGlvbi50eXBlO1xuICAgIGlmICghdGhpcy50eXBlKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIFxcJ2RlZmluaXRpb25cXCcgaW4gPGFwcC1mb3JtLWZpZWxkPi4gTWlzc2luZyB0eXBlICEnKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyIHx8ICh0aGlzLl9kZWZpbml0aW9uLmxhYmVsICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5fZGVmaW5pdGlvbi5sYWJlbCkpO1xuICAgIHRoaXMucmVxdWlyZWQgPSBpc05vdE5pbEJvb2xlYW4odGhpcy5yZXF1aXJlZCkgPyB0aGlzLnJlcXVpcmVkIDogKHRoaXMuX2RlZmluaXRpb24ucmVxdWlyZWQgfHwgdGhpcy5mb3JtQ29udHJvbD8udmFsaWRhdG9yID09PSBWYWxpZGF0b3JzLnJlcXVpcmVkIHx8IGlzQmxhbmtTdHJpbmcodGhpcy5yZXF1aXJlZCkpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0b0Jvb2xlYW4odGhpcy5kaXNhYmxlZCwgdG9Cb29sZWFuKHRoaXMuX2RlZmluaXRpb24uZGlzYWJsZWQsIGZhbHNlKSk7XG5cbiAgICAvLyBkb3VibGVcbiAgICBpZiAodGhpcy50eXBlID09PSAnZG91YmxlJykge1xuICAgICAgdGhpcy5udW1iZXJJbnB1dFN0ZXAgPSB0aGlzLmNvbXB1dGVOdW1iZXJJbnB1dFN0ZXAoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgLy8gZW51bSAob3IgZW51bXMpXG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnZW51bScgfHwgdGhpcy50eXBlID09PSAnZW51bXMnKSB7XG4gICAgICAvLyBSZXNvbHZlIGVudW0gdmFsdWVzXG4gICAgICBpZiAoZGVmaW5pdGlvbi52YWx1ZXMgaW5zdGFuY2VvZiBJbmplY3Rpb25Ub2tlbikge1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLmNvbXB1dGVWYWx1ZXNGcm9tVG9rZW4oZGVmaW5pdGlvbi52YWx1ZXMpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuY29tcHV0ZVZhbHVlcyhkZWZpbml0aW9uLnZhbHVlcyBhcyAoc3RyaW5nW118UHJvcGVydHlbXSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlcGFpbnRcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIFJlY29tcHV0ZSB0YWIgaW5kZXgsIGJlY2F1c2UgaWYgdHlwZSBjaGFuZ2VkLCB0aGVuIG1hdElucHV0IGNhbiBoYXZlIGNoYW5nZWRcbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KDEwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVGFiSW5kZXgodGltZW91dD86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRhYmluZGV4ICYmIHRoaXMudGFiaW5kZXggIT09IC0xKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGFzSW5wdXRFbGVtZW50KHRoaXMubWF0SW5wdXQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQudGFiaW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICB9XG4gICAgICB9LCB0aW1lb3V0IHx8IDApO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuXG4gIDwhLS0gaW50ZWdlciAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInaW50ZWdlcidcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgW21pbl09XCJkZWZpbml0aW9uLm1pblZhbHVlXCJcbiAgICAgICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgICAgICAgcGF0dGVybj1cIi0/WzAtOV0qXCJcbiAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlwcmVzcyk9XCJmaWx0ZXJOdW1iZXJJbnB1dCgkZXZlbnQsIGZhbHNlKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbnB1dENvbnRlbnQoJGV2ZW50KVwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7KGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUlOX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01JTicpIHwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWluJ10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgIHt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9JTlRFR0VSJ3wgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnRlZ2VyJylcIj5cbiAgICAgIHt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9JTlRFR0VSJ3wgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG5cbiAgICA8YnV0dG9uIG1hdFN1ZmZpeCAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3JtQ29udHJvbC5yZXNldCgpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiZm9ybUNvbnRyb2wuZGlzYWJsZWQgfHwgKGZvcm1Db250cm9sfGZvcm1HZXRWYWx1ZXxpc05pbE9yQmxhbmspXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIGRvdWJsZSAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZG91YmxlJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cblxuICAgIDxpbnB1dCBtYXRJbnB1dCAjbWF0SW5wdXRcbiAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgIGRlY2ltYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW21pbl09XCJkZWZpbml0aW9uLm1pblZhbHVlXCJcbiAgICAgICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgW3N0ZXBdPVwibnVtYmVySW5wdXRTdGVwXCJcbiAgICAgICAgICAgKGtleXByZXNzKT1cImZpbHRlck51bWJlcklucHV0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50KCRldmVudClcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ2RlY2ltYWwnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfREVDSU1BTDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7IChjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01JTl9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NSU4nKXwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWluJ10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtYXhEZWNpbWFscycpXCI+XG4gICAgICB7eyAoY29tcGFjdCA/ICdFUlJPUi5GSUVMRF9NQVhJTVVNX0RFQ0lNQUxTX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWElNVU1fREVDSU1BTFMnKXwgdHJhbnNsYXRlOnttYXhEZWNpbWFsczpcbiAgICAgIGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzfSB9fTwvbWF0LWVycm9yPlxuXG4gICAgPGJ1dHRvbiBtYXRTdWZmaXggKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9ybUNvbnRyb2wucmVzZXQoKVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImZvcm1Db250cm9sLmRpc2FibGVkIHx8IChmb3JtQ29udHJvbHxmb3JtR2V0VmFsdWV8aXNOaWxPckJsYW5rKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gYm9vbGVhbiAtLT5cbiAgPG1hdC1ib29sZWFuLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1ib29sZWFuLWZpZWxkPlxuXG4gIDwhLS0gZGF0ZSAtLT5cbiAgPG1hdC1kYXRlLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb21wYWN0ID8gKCdDT01NT04uREFURV9QTEFDRUhPTERFUid8dHJhbnNsYXRlKTogcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZGF0ZS1maWVsZD5cblxuICA8IS0tIGRhdGUgdGltZSAtLT5cbiAgPG1hdC1kYXRlLXRpbWUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb21wYWN0ID8gKCdDT01NT04uREFURV9USU1FX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGUpOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRhdGUtdGltZS1maWVsZD5cblxuICA8IS0tIGVudW0gLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2VudW0nXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIiBbY2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZsb2F0TGFiZWwgPT09ICduZXZlcicgPyBwbGFjZWhvbGRlciA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfdmFsdWVzXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS52YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBtdWx0aSBlbnVtIC0tPlxuICA8bWF0LWNoaXBzLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW51bXMnXCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJfdmFsdWVzXCJcbiAgICAgICAgICAgICAgICAgICBbZGlzcGxheUF0dHJpYnV0ZXNdPVwiZGVmaW5pdGlvbi5hdXRvY29tcGxldGU/LmF0dHJpYnV0ZXMgfHwgWydrZXknLCAndmFsdWUnXVwiXG4gICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkZWZpbml0aW9uLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgW3Nob3dBbGxPbkZvY3VzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgW2NoaXBDb2xvcl09XCJjaGlwQ29sb3IgfCBtYXRDb2xvclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWNoaXBzLWZpZWxkPlxuXG4gIDwhLS0gY29sb3IgLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuXG4gICAgPGlvbi1pY29uIG1hcmdpbi1yaWdodCBuYW1lPVwiY29sb3ItZmlsbFwiIG1hdFByZWZpeD48L2lvbi1pY29uPlxuXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldENvbG9yQ29udHJhc3QoZm9ybUNvbnRyb2wudmFsdWUpXCJcbiAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICBbY29sb3JQaWNrZXJdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAoY29sb3JQaWNrZXJDaGFuZ2UpPVwid3JpdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgW2NwU2F2ZUNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgY3BQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgIGNwT3V0cHV0Rm9ybWF0PVwiaGV4XCJcbiAgICAgICAgICAgW2NwT0tCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIi8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBzdHJpbmcgLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50KCRldmVudClcIlxuICAgICAgICAgICAoa2V5cHJlc3MpPVwiZmlsdGVyQWxwaGFudW1lcmljYWxJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlci5lbWl0KCRldmVudClcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxidXR0b24gbWF0U3VmZml4ICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sLnJlc2V0KClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCAoZm9ybUNvbnRyb2x8Zm9ybUdldFZhbHVlfGlzTmlsT3JCbGFuaylcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gYXV0by1jb21wbGV0ZSAtLT5cbiAgPG1hdC1hdXRvY29tcGxldGUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidlbnRpdHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJnZXREaXNwbGF5VmFsdWVGbihkZWZpbml0aW9uKVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICA8L21hdC1hdXRvY29tcGxldGUtZmllbGQ+XG5cbiAgPCEtLSBtdWx0aSBhdXRvLWNvbXBsZXRlIC0tPlxuICA8bWF0LWNoaXBzLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoaXBDb2xvcl09XCJjaGlwQ29sb3IgfCBtYXRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImdldERpc3BsYXlWYWx1ZUZuKGRlZmluaXRpb24pXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2hpcHMtZmllbGQ+XG5cbiAgPCEtLSBvdGhlciAtLT5cbiAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJ0eXBlXCI+VW5rbm93biB0eXBlIHt7dHlwZX19IGZvciBvcHRpb24ge3tkZWZpbml0aW9uLmtleX19LiBQbGVhc2UgcmVwb3J0IHRoaXMgZXJyb3IuPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIiF0eXBlXCI+RXJyb3Igb24gb3B0aW9uIGZpZWxkLiBQbGVhc2UgY2hlY2sgY29uc29sZSBsb2cgZm9yIGRldGFpbHMuPC9tYXQtZXJyb3I+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuIl19
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFZLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoTSxPQUFPLEVBQTJDLGlCQUFpQixFQUFzQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHcEksT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU16QyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFDO0FBZUYsTUFBTSxPQUFPLFlBQVk7SUFrRFg7SUFDQTtJQUNBO0lBQ1U7SUFuRGQsaUJBQWlCLEdBQXFCLElBQUksQ0FBQztJQUMzQyxrQkFBa0IsR0FBZSxJQUFJLENBQUM7SUFDdEMsV0FBVyxDQUFzQjtJQUUvQixPQUFPLENBQWE7SUFFcEIsSUFBSSxDQUFnQjtJQUNwQixlQUFlLENBQVM7SUFFbEMsSUFDSSxVQUFVLENBQUMs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QjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtpc0JsYW5rU3RyaW5nLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbEJvb2xlYW4sIGlzTm90TmlsT3JCbGFuaywgam9pblByb3BlcnRpZXNQYXRoLCB0b0Jvb2xlYW59IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0Rpc3BsYXlGbiwgRm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkVHlwZSwgQXBwRmxvYXRMYWJlbFR5cGV9IGZyb20gJy4vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Z2V0Q29sb3JDb250cmFzdH0gZnJvbSAnLi4vZ3JhcGgvY29sb3JzLnV0aWxzJztcbmltcG9ydCB7YXNJbnB1dEVsZW1lbnQsIGZpbHRlck51bWJlcklucHV0LCBzZWxlY3RJbnB1dENvbnRlbnR9IGZyb20gJy4uL2lucHV0cyc7XG5pbXBvcnQge3RvRGF0ZUlTT1N0cmluZ30gZnJvbSAnLi4vZGF0ZXMnO1xuaW1wb3J0IHtQcm9wZXJ0eX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtQcmVkZWZpbmVkQ29sb3JzfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZUZpZWxkfSBmcm9tICcuLi9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mb3JtLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcHBGb3JtRmllbGQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZvcm1GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2RlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb247XG5cbiAgcHJvdGVjdGVkIF92YWx1ZXM6IFByb3BlcnR5W107XG5cbiAgcHJvdGVjdGVkIHR5cGU6IEZvcm1GaWVsZFR5cGU7XG4gIHByb3RlY3RlZCBudW1iZXJJbnB1dFN0ZXA6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgZGVmaW5pdGlvbih2YWx1ZTogRm9ybUZpZWxkRGVmaW5pdGlvbikge1xuICAgIGlmICghdmFsdWUgfHwgdGhpcy5fZGVmaW5pdGlvbiA9PT0gdmFsdWUpIHJldHVybjsgLy8gU2tpcCBpcyBzYW1lIG9yIG5pbFxuICAgIHRoaXMuX2RlZmluaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLl9vbkRlZmluaXRpb25DaGFuZ2VkKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkZWZpbml0aW9uKCk6IEZvcm1GaWVsZERlZmluaXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9kZWZpbml0aW9uO1xuICB9XG5cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2hpcENvbG9yOiBUaGVtZVBhbGV0dGUgfCBQcmVkZWZpbmVkQ29sb3JzID0gbnVsbDtcbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgna2V5dXAuZW50ZXInKVxuICBvbktleXVwRW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21hdElucHV0JykgbWF0SW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZUZpZWxkJykgYXV0b2NvbXBsZXRlRmllbGQ6IE1hdEF1dG9jb21wbGV0ZUZpZWxkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5jaGVja0FuZFJlc29sdmVGb3JtQ29udHJvbCgpO1xuXG4gICAgaWYgKCF0aGlzLl9kZWZpbml0aW9uKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uXFwnIGluIDxhcHAtZm9ybS1maWVsZD4uJyk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9kZWZpbml0aW9uICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBcXCdkZWZpbml0aW9uXFwnIGluIDxhcHAtZm9ybS1maWVsZD4uIFNob3VsZCBiZSBhbiBvYmplY3QuJyk7XG4gICAgdGhpcy5fb25EZWZpbml0aW9uQ2hhbmdlZCh0aGlzLl9kZWZpbml0aW9uLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCB0aGlzLnR5cGUgPT09ICdkb3VibGUnKSAmJiBOdW1iZXIuaXNOYU4ob2JqKSkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoXCJXQVJOOiB0cnlpbmcgdG8gc2V0IE5hTiB2YWx1ZSwgaW4gYW4gPGFwcC1mb3JtLWZpZWxkPiEgUmVzZXQgdG8gbnVsbFwiKTtcblxuICAgICAgb2JqID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iaiA9IChvYmogIT09ICdmYWxzZScpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgb2JqID0gdG9EYXRlSVNPU3RyaW5nKG9iaik7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudW1zJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9iaiA9IG9iai50cmltKCkuc3BsaXQoL1t8LF0rLyk7XG4gICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdXBkYXRlZEFycmF5ID0gKG9iaiB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5maW5kKHYgPT4gdi5rZXkgPT09IGl0ZW0udHJpbSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbCk7XG4gICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICBvYmogPSB1cGRhdGVkQXJyYXk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0eScgJiYgaXNOaWxPckJsYW5rKG9iaikpIHtcbiAgICAgIG9iaiA9IG51bGw7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0aWVzJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9iaiA9IG9iai50cmltKCk7XG4gICAgICAgIGlmIChvYmouc3RhcnRzV2l0aCgnWycpICYmIG9iai5lbmRzV2l0aCgnXScpKSB7XG4gICAgICAgICAgb2JqID0gSlNPTi5wYXJzZShvYmopO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIG9iaiA9IG9iai5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgfVxuICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWRBcnJheSA9IChvYmogfHwgW10pLm1hcChpdGVtID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiBpdGVtLnN0YXJ0c1dpdGgoJ3snKSAmJiBpdGVtLmVuZHNXaXRoKCd9JykpIHtcbiAgICAgICAgICBpdGVtID0gSlNPTi5wYXJzZShpdGVtKTtcbiAgICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pLmZpbHRlcihpc05vdE5pbE9yQmxhbmspO1xuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgb2JqID0gdXBkYXRlZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2JqICE9PSB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIlNldCA8YXBwLWZvcm0tZmllbGQ+IHZhbHVlOiBcIiwgb2JqKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9iaiwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sob2JqKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCA9PT0gaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckFscGhhbnVtZXJpY2FsSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMgLyo9RW50ZXIqLyAmJiB0aGlzLm9uS2V5dXBFbnRlci5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbktleXVwRW50ZXIuZW1pdChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEFkZCBmZWF0dXJlcyAoZS5nLiBjaGVjayBhZ2FpbnN0IGEgcGF0dGVybilcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGlmICh0aGlzLm1hdElucHV0KSB0aGlzLm1hdElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICBlbHNlIGlmICh0aGlzLmF1dG9jb21wbGV0ZUZpZWxkKSB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkLmZvY3VzKCk7XG4gIH1cblxuICBmaWx0ZXJOdW1iZXJJbnB1dCA9IGZpbHRlck51bWJlcklucHV0O1xuICBzZWxlY3RJbnB1dENvbnRlbnQgPSBzZWxlY3RJbnB1dENvbnRlbnQ7XG5cbiAgZ2V0RGlzcGxheVZhbHVlRm4oZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IERpc3BsYXlGbiB7XG4gICAgaWYgKGRlZmluaXRpb24uYXV0b2NvbXBsZXRlICYmIGRlZmluaXRpb24uYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKSB7XG4gICAgICByZXR1cm4gKG9iajogYW55KSA9PiBkZWZpbml0aW9uLmF1dG9jb21wbGV0ZS5kaXNwbGF5V2l0aChvYmopO1xuICAgIH1cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGVmaW5pdGlvbi5hdXRvY29tcGxldGUgJiYgZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuYXR0cmlidXRlcyB8fCBbJ2xhYmVsJywgJ25hbWUnXTtcbiAgICByZXR1cm4gKG9iajogYW55KSA9PiBvYmogJiYgam9pblByb3BlcnRpZXNQYXRoKG9iaiwgYXR0cmlidXRlcyk7XG4gIH1cblxuICBnZXRDb2xvckNvbnRyYXN0KGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBpc05vdE5pbE9yQmxhbmsoY29sb3IpID8gZ2V0Q29sb3JDb250cmFzdChjb2xvciwgdHJ1ZSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdG8gcmVsb2FkIHZhbHVlcywgaWYgbm90IGRldGVjdGVkXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgcmVsb2FkSXRlbXModmFsdWU/OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuX2RlZmluaXRpb24pIHJldHVybjtcblxuICAgIHRoaXMuX29uRGVmaW5pdGlvbkNoYW5nZWQodGhpcy5fZGVmaW5pdGlvbik7XG5cbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkPy5yZWxvYWRJdGVtcyh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcm90ZWN0ZWQgY29tcHV0ZU51bWJlcklucHV0U3RlcChkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogc3RyaW5nIHtcblxuICAgIGlmIChkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyA+IDApIHtcbiAgICAgIGxldCBzdGVwID0gJzAuJztcbiAgICAgIGlmIChkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyA+IDEpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyAtIDE7IGkrKykge1xuICAgICAgICAgIHN0ZXAgKz0gJzAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGVwICs9ICcxJztcbiAgICAgIHJldHVybiBzdGVwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzEnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlVmFsdWVzRnJvbVRva2VuKHRva2VuOiBJbmplY3Rpb25Ub2tlbjwoc3RyaW5nfFByb3BlcnR5KVtdPik6IGFueVtdIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmluamVjdG9yLmdldCh0b2tlbik7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHRoaXMuY29tcHV0ZVZhbHVlcyh2YWx1ZXMpIDogW107XG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZVZhbHVlcyh2YWx1ZXM6IChzdHJpbmd8UHJvcGVydHkpW10pOiBQcm9wZXJ0eVtdIHtcbiAgICBpZiAoIXZhbHVlcykgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZXMubWFwKHYgPT4gICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpXG4gICAgICA/IDxQcm9wZXJ0eT57a2V5OiB2LCB2YWx1ZTogdn1cbiAgICAgIDogPFByb3BlcnR5PntrZXk6IHYua2V5LCB2YWx1ZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh2LnZhbHVlKX1cbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrQW5kUmVzb2x2ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSByZXR1cm47IC8vIE9LLCB0aGVyZSBpcyBhIGNvbnRyb2xcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cERpcikge1xuICAgICAgLy8gVHJ5IHRvIGZpbmQgdXNpbmcgZGVmaW5pdGlvbi5rZXksIGFzIGZvcm1Db250cm9sTmFtZVxuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLl9kZWZpbml0aW9uLmtleSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sTmFtZSA9IHRoaXMuX2RlZmluaXRpb24ua2V5O1xuICAgICAgfVxuICAgICAgY29uc3QgZm9ybUNvbnRyb2xOYW1lID0gKHRoaXMuZm9ybUdyb3VwRGlyLmRpcmVjdGl2ZXMgfHwgW10pLmZpbmQoZCA9PiB0aGlzLmZvcm1Db250cm9sTmFtZSAmJiBkLm5hbWUgPT09IHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUNvbnRyb2xOYW1lLmNvbnRyb2w7XG4gICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXR0cmlidXRlIFxcJ2Zvcm1Db250cm9sXFwnIG9yIFxcJ2Zvcm1Db250cm9sTmFtZVxcJyBpbiA8YXBwLWZvcm0tZmllbGQ+IGNvbXBvbmVudC4nKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uRGVmaW5pdGlvbkNoYW5nZWQoZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbiwgb3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSkge1xuXG4gICAgdGhpcy50eXBlID0gZGVmaW5pdGlvbi50eXBlO1xuICAgIGlmICghdGhpcy50eXBlKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIFxcJ2RlZmluaXRpb25cXCcgaW4gPGFwcC1mb3JtLWZpZWxkPi4gTWlzc2luZyB0eXBlICEnKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyIHx8ICh0aGlzLl9kZWZpbml0aW9uLmxhYmVsICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5fZGVmaW5pdGlvbi5sYWJlbCkpO1xuICAgIHRoaXMucmVxdWlyZWQgPSBpc05vdE5pbEJvb2xlYW4odGhpcy5yZXF1aXJlZCkgPyB0aGlzLnJlcXVpcmVkIDogKHRoaXMuX2RlZmluaXRpb24ucmVxdWlyZWQgfHwgdGhpcy5mb3JtQ29udHJvbD8udmFsaWRhdG9yID09PSBWYWxpZGF0b3JzLnJlcXVpcmVkIHx8IGlzQmxhbmtTdHJpbmcodGhpcy5yZXF1aXJlZCkpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0b0Jvb2xlYW4odGhpcy5kaXNhYmxlZCwgdG9Cb29sZWFuKHRoaXMuX2RlZmluaXRpb24uZGlzYWJsZWQsIGZhbHNlKSk7XG5cbiAgICAvLyBkb3VibGVcbiAgICBpZiAodGhpcy50eXBlID09PSAnZG91YmxlJykge1xuICAgICAgdGhpcy5udW1iZXJJbnB1dFN0ZXAgPSB0aGlzLmNvbXB1dGVOdW1iZXJJbnB1dFN0ZXAoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgLy8gZW51bSAob3IgZW51bXMpXG4gICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnZW51bScgfHwgdGhpcy50eXBlID09PSAnZW51bXMnKSB7XG4gICAgICAvLyBSZXNvbHZlIGVudW0gdmFsdWVzXG4gICAgICBpZiAoZGVmaW5pdGlvbi52YWx1ZXMgaW5zdGFuY2VvZiBJbmplY3Rpb25Ub2tlbikge1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLmNvbXB1dGVWYWx1ZXNGcm9tVG9rZW4oZGVmaW5pdGlvbi52YWx1ZXMpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuY29tcHV0ZVZhbHVlcyhkZWZpbml0aW9uLnZhbHVlcyBhcyAoc3RyaW5nW118UHJvcGVydHlbXSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlcGFpbnRcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIFJlY29tcHV0ZSB0YWIgaW5kZXgsIGJlY2F1c2UgaWYgdHlwZSBjaGFuZ2VkLCB0aGVuIG1hdElucHV0IGNhbiBoYXZlIGNoYW5nZWRcbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KDEwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVGFiSW5kZXgodGltZW91dD86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRhYmluZGV4ICYmIHRoaXMudGFiaW5kZXggIT09IC0xKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGFzSW5wdXRFbGVtZW50KHRoaXMubWF0SW5wdXQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQudGFiaW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICB9XG4gICAgICB9LCB0aW1lb3V0IHx8IDApO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuXG4gIDwhLS0gaW50ZWdlciAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInaW50ZWdlcidcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgW21pbl09XCJkZWZpbml0aW9uLm1pblZhbHVlXCJcbiAgICAgICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgICAgICAgcGF0dGVybj1cIi0/WzAtOV0qXCJcbiAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlwcmVzcyk9XCJmaWx0ZXJOdW1iZXJJbnB1dCgkZXZlbnQsIGZhbHNlKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbnB1dENvbnRlbnQoJGV2ZW50KVwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7KGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUlOX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01JTicpIHwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWluJ10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgIHt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9JTlRFR0VSJ3wgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnRlZ2VyJylcIj5cbiAgICAgIHt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9JTlRFR0VSJ3wgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG5cbiAgICA8YnV0dG9uIG1hdFN1ZmZpeCAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3JtQ29udHJvbC5yZXNldCgpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiZm9ybUNvbnRyb2wuZGlzYWJsZWQgfHwgKGZvcm1Db250cm9sfGZvcm1HZXRWYWx1ZXxpc05pbE9yQmxhbmspXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIGRvdWJsZSAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZG91YmxlJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cblxuICAgIDxpbnB1dCBtYXRJbnB1dCAjbWF0SW5wdXRcbiAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgIGRlY2ltYWw9XCJ0cnVlXCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgW21pbl09XCJkZWZpbml0aW9uLm1pblZhbHVlXCJcbiAgICAgICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgW3N0ZXBdPVwibnVtYmVySW5wdXRTdGVwXCJcbiAgICAgICAgICAgKGtleXByZXNzKT1cImZpbHRlck51bWJlcklucHV0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50KCRldmVudClcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ2RlY2ltYWwnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9OT1RfVkFMSURfREVDSU1BTDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7IChjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01JTl9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NSU4nKXwgdHJhbnNsYXRlOmZvcm1Db250cm9sLmVycm9yc1snbWluJ10gfX08L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ21heCcpXCI+XG4gICAgICB7eyhjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTpmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19PC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtYXhEZWNpbWFscycpXCI+XG4gICAgICB7eyAoY29tcGFjdCA/ICdFUlJPUi5GSUVMRF9NQVhJTVVNX0RFQ0lNQUxTX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWElNVU1fREVDSU1BTFMnKXwgdHJhbnNsYXRlOnttYXhEZWNpbWFsczpcbiAgICAgIGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzfSB9fTwvbWF0LWVycm9yPlxuXG4gICAgPGJ1dHRvbiBtYXRTdWZmaXggKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9ybUNvbnRyb2wucmVzZXQoKVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImZvcm1Db250cm9sLmRpc2FibGVkIHx8IChmb3JtQ29udHJvbHxmb3JtR2V0VmFsdWV8aXNOaWxPckJsYW5rKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gYm9vbGVhbiAtLT5cbiAgPG1hdC1ib29sZWFuLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1ib29sZWFuLWZpZWxkPlxuXG4gIDwhLS0gZGF0ZSAtLT5cbiAgPG1hdC1kYXRlLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb21wYWN0ID8gKCdDT01NT04uREFURV9QTEFDRUhPTERFUid8dHJhbnNsYXRlKTogcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZGF0ZS1maWVsZD5cblxuICA8IS0tIGRhdGUgdGltZSAtLT5cbiAgPG1hdC1kYXRlLXRpbWUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIiAjbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb21wYWN0ID8gKCdDT01NT04uREFURV9USU1FX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGUpOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRhdGUtdGltZS1maWVsZD5cblxuICA8IS0tIGVudW0gLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2VudW0nXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIiBbY2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlclwiPnt7cGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZsb2F0TGFiZWwgPT09ICduZXZlcicgPyBwbGFjZWhvbGRlciA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfdmFsdWVzXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+e3sgaXRlbS52YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBtdWx0aSBlbnVtIC0tPlxuICA8bWF0LWNoaXBzLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW51bXMnXCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJfdmFsdWVzXCJcbiAgICAgICAgICAgICAgICAgICBbZGlzcGxheUF0dHJpYnV0ZXNdPVwiZGVmaW5pdGlvbi5hdXRvY29tcGxldGU/LmF0dHJpYnV0ZXMgfHwgWydrZXknLCAndmFsdWUnXVwiXG4gICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkZWZpbml0aW9uLmF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgW3Nob3dBbGxPbkZvY3VzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgW2NoaXBDb2xvcl09XCJjaGlwQ29sb3IgfCBtYXRDb2xvclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWNoaXBzLWZpZWxkPlxuXG4gIDwhLS0gY29sb3IgLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yJ1wiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCIgW2NsYXNzXT1cImNsYXNzTGlzdFwiPlxuXG4gICAgPGlvbi1pY29uIG1hcmdpbi1yaWdodCBuYW1lPVwiY29sb3ItZmlsbFwiIG1hdFByZWZpeD48L2lvbi1pY29uPlxuXG4gICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldENvbG9yQ29udHJhc3QoZm9ybUNvbnRyb2wudmFsdWUpXCJcbiAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICBbY29sb3JQaWNrZXJdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAoY29sb3JQaWNrZXJDaGFuZ2UpPVwid3JpdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgW2NwU2F2ZUNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgY3BQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgIGNwT3V0cHV0Rm9ybWF0PVwiaGV4XCJcbiAgICAgICAgICAgW2NwT0tCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIi8+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPCEtLSBzdHJpbmcgLS0+XG4gIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0IG1hdElucHV0ICNtYXRJbnB1dFxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmbG9hdExhYmVsID09PSAnbmV2ZXInID8gcGxhY2Vob2xkZXIgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50KCRldmVudClcIlxuICAgICAgICAgICAoa2V5cHJlc3MpPVwiZmlsdGVyQWxwaGFudW1lcmljYWxJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlci5lbWl0KCRldmVudClcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxidXR0b24gbWF0U3VmZml4ICpuZ0lmPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sLnJlc2V0KClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCAoZm9ybUNvbnRyb2x8Zm9ybUdldFZhbHVlfGlzTmlsT3JCbGFuaylcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gYXV0by1jb21wbGV0ZSAtLT5cbiAgPG1hdC1hdXRvY29tcGxldGUtZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidlbnRpdHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5V2l0aF09XCJnZXREaXNwbGF5VmFsdWVGbihkZWZpbml0aW9uKVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICA8L21hdC1hdXRvY29tcGxldGUtZmllbGQ+XG5cbiAgPCEtLSBtdWx0aSBhdXRvLWNvbXBsZXRlIC0tPlxuICA8bWF0LWNoaXBzLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoaXBDb2xvcl09XCJjaGlwQ29sb3IgfCBtYXRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImdldERpc3BsYXlWYWx1ZUZuKGRlZmluaXRpb24pXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2hpcHMtZmllbGQ+XG5cbiAgPCEtLSBvdGhlciAtLT5cbiAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJ0eXBlXCI+VW5rbm93biB0eXBlIHt7dHlwZX19IGZvciBvcHRpb24ge3tkZWZpbml0aW9uLmtleX19LiBQbGVhc2UgcmVwb3J0IHRoaXMgZXJyb3IuPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cIiF0eXBlXCI+RXJyb3Igb24gb3B0aW9uIGZpZWxkLiBQbGVhc2UgY2hlY2sgY29uc29sZSBsb2cgZm9yIGRldGFpbHMuPC9tYXQtZXJyb3I+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -6,15 +6,15 @@ export class AppLoadingSpinner {
6
6
  loading = false;
7
7
  color = 'secondary';
8
8
  name;
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppLoadingSpinner, selector: "app-loading-spinner", inputs: { loading: "loading", color: "color", name: "name" }, ngImport: i0, template: `
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AppLoadingSpinner, selector: "app-loading-spinner", inputs: { loading: "loading", color: "color", name: "name" }, ngImport: i0, template: `
11
11
  <ion-spinner *ngIf="loading; else content" [color]="color" [name]="name"></ion-spinner>
12
12
  <ng-template #content>
13
13
  <ng-content></ng-content>
14
14
  </ng-template>
15
15
  `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }] });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppLoadingSpinner, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppLoadingSpinner, decorators: [{
18
18
  type: Component,
19
19
  args: [{
20
20
  selector: 'app-loading-spinner',
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
32
32
  }], name: [{
33
33
  type: Input
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9sb2FkaW5nLXNwaW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFXL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLEtBQUssR0FBdUIsV0FBVyxDQUFDO0lBQ3hDLElBQUksQ0FBaUc7d0dBSG5HLGlCQUFpQjs0RkFBakIsaUJBQWlCLHlIQVBsQjs7Ozs7R0FLVDs7NEZBRVUsaUJBQWlCO2tCQVQ3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRTs7Ozs7R0FLVDtpQkFDRjs4QkFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2FkaW5nLXNwaW5uZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cImxvYWRpbmc7IGVsc2UgY29udGVudFwiIFtjb2xvcl09XCJjb2xvclwiIFtuYW1lXT1cIm5hbWVcIj48L2lvbi1zcGlubmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFwcExvYWRpbmdTcGlubmVyICB7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgY29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdzZWNvbmRhcnknO1xuICBASW5wdXQoKSBuYW1lOiAnYnViYmxlcycgfCAnY2lyY2xlcycgfCAnY2lyY3VsYXInIHwgJ2NyZXNjZW50JyB8ICdkb3RzJyB8ICdsaW5lcycgfCAnbGluZXMtc21hbGwnIHwgdW5kZWZpbmVkO1xufVxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9sb2FkaW5nLXNwaW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFXL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLEtBQUssR0FBdUIsV0FBVyxDQUFDO0lBQ3hDLElBQUksQ0FBaUc7dUdBSG5HLGlCQUFpQjsyRkFBakIsaUJBQWlCLHlIQVBsQjs7Ozs7R0FLVDs7MkZBRVUsaUJBQWlCO2tCQVQ3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRTs7Ozs7R0FLVDtpQkFDRjs4QkFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2FkaW5nLXNwaW5uZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cImxvYWRpbmc7IGVsc2UgY29udGVudFwiIFtjb2xvcl09XCJjb2xvclwiIFtuYW1lXT1cIm5hbWVcIj48L2lvbi1zcGlubmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFwcExvYWRpbmdTcGlubmVyICB7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgY29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdzZWNvbmRhcnknO1xuICBASW5wdXQoKSBuYW1lOiAnYnViYmxlcycgfCAnY2lyY2xlcycgfCAnY2lyY3VsYXInIHwgJ2NyZXNjZW50JyB8ICdkb3RzJyB8ICdsaW5lcycgfCAnbGluZXMtc21hbGwnIHwgdW5kZWZpbmVkO1xufVxuIl19
@@ -36,11 +36,11 @@ export class AppGestureConfig extends HammerGestureConfig {
36
36
  }
37
37
  return mc;
38
38
  }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppGestureConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
40
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppGestureConfig, providedIn: 'root' });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppGestureConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppGestureConfig, providedIn: 'root' });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppGestureConfig, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppGestureConfig, decorators: [{
43
43
  type: Injectable,
44
44
  args: [{ providedIn: 'root' }]
45
45
  }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9nZXN0dXJlL2dlc3R1cmUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBRTlELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLENBQUMsaURBQWlEO0FBQ3ZGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBRXZELHFDQUFxQztJQUNyQyxTQUFTLEdBQVE7UUFDZixLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsTUFBTSxFQUFFLEtBQUs7U0FDZDtRQUNELE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRCxtREFBbUQ7UUFDbkQsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLEVBQUUsR0FBRyxDQUFFLHFFQUFxRTtTQUNyRjtLQUNGLENBQUM7SUFFRixXQUFXLENBQUMsT0FBb0I7UUFFOUIsUUFBUTtRQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLE1BQU0sRUFBRSxHQUFHLElBQVUsTUFBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QyxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxTQUFTO2dCQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNqRTtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt3R0FoQ1UsZ0JBQWdCOzRHQUFoQixnQkFBZ0IsY0FESixNQUFNOzs0RkFDbEIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hhbW1lckdlc3R1cmVDb25maWd9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5leHBvcnQgY29uc3QgSEFNTUVSX1RBUF9USU1FID0gMjUwO1xuZXhwb3J0IGNvbnN0IEhBTU1FUl9QUkVTU19USU1FID0gNDAwOyAvLyBJbmNyZWFzZSBuZWVkIGZvciBkb3VibGUgdGFwIChkZWZhdWx0OiAyNTEgbXMpXG4vKipcbiAqIEBoaWRkZW5cbiAqIFRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IEFuZ3VsYXIgZ2VzdHVyZSBjb25maWcuXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBcHBHZXN0dXJlQ29uZmlnIGV4dGVuZHMgSGFtbWVyR2VzdHVyZUNvbmZpZyB7XG5cbiAgLy8gT3ZlcnJpZGUgSGFtbWVySlMgZGVmYXVsdCBzZXR0aW5nc1xuICBvdmVycmlkZXMgPSA8YW55PntcbiAgICBwcmVzczoge1xuICAgICAgdGltZTogSEFNTUVSX1BSRVNTX1RJTUVcbiAgICB9LFxuICAgIHBpbmNoOiB7XG4gICAgICBlbmFibGU6IGZhbHNlXG4gICAgfSxcbiAgICByb3RhdGU6IHtcbiAgICAgIGVuYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2hhbW1lcmpzLmdpdGh1Yi5pby9yZWNvZ25pemVyLXN3aXBlL1xuICAgIHN3aXBlOiB7XG4gICAgICB0aHJlc2hvbGQ6IDMwLCAgLy8gTWluaW1hbCBkaXN0YW5jZSByZXF1aXJlZCBiZWZvcmUgcmVjb2duaXppbmcuXG4gICAgICB2ZWxvY2l0eTogMC40ICAvL01pbmltYWwgdmVsb2NpdHkgcmVxdWlyZWQgYmVmb3JlIHJlY29nbml6aW5nLCB1bml0IGlzIGluIHB4IHBlciBtcy5cbiAgICB9XG4gIH07XG5cbiAgYnVpbGRIYW1tZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblxuICAgIC8vIERFQlVHXG4gICAgY29uc29sZS5kZWJ1ZygnW2dlc3R1cmVdIEFwcGx5aW5nIEhhbW1lckpTIGNvbmZpZyB0byAnLCBlbGVtZW50LnRhZ05hbWUpO1xuXG4gICAgY29uc3QgbWMgPSBuZXcgKDxhbnk+d2luZG93KS5IYW1tZXIoZWxlbWVudCk7XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBpbiB0aGlzLm92ZXJyaWRlcykge1xuICAgICAgaWYgKGV2ZW50TmFtZSkgbWMuZ2V0KGV2ZW50TmFtZSkuc2V0KHRoaXMub3ZlcnJpZGVzW2V2ZW50TmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYztcbiAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9nZXN0dXJlL2dlc3R1cmUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBRTlELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLENBQUMsaURBQWlEO0FBQ3ZGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBRXZELHFDQUFxQztJQUNyQyxTQUFTLEdBQVE7UUFDZixLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsTUFBTSxFQUFFLEtBQUs7U0FDZDtRQUNELE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRCxtREFBbUQ7UUFDbkQsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLEVBQUUsR0FBRyxDQUFFLHFFQUFxRTtTQUNyRjtLQUNGLENBQUM7SUFFRixXQUFXLENBQUMsT0FBb0I7UUFFOUIsUUFBUTtRQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLE1BQU0sRUFBRSxHQUFHLElBQVUsTUFBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QyxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxTQUFTO2dCQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNqRTtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt1R0FoQ1UsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FESixNQUFNOzsyRkFDbEIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hhbW1lckdlc3R1cmVDb25maWd9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5leHBvcnQgY29uc3QgSEFNTUVSX1RBUF9USU1FID0gMjUwO1xuZXhwb3J0IGNvbnN0IEhBTU1FUl9QUkVTU19USU1FID0gNDAwOyAvLyBJbmNyZWFzZSBuZWVkIGZvciBkb3VibGUgdGFwIChkZWZhdWx0OiAyNTEgbXMpXG4vKipcbiAqIEBoaWRkZW5cbiAqIFRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IEFuZ3VsYXIgZ2VzdHVyZSBjb25maWcuXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBcHBHZXN0dXJlQ29uZmlnIGV4dGVuZHMgSGFtbWVyR2VzdHVyZUNvbmZpZyB7XG5cbiAgLy8gT3ZlcnJpZGUgSGFtbWVySlMgZGVmYXVsdCBzZXR0aW5nc1xuICBvdmVycmlkZXMgPSA8YW55PntcbiAgICBwcmVzczoge1xuICAgICAgdGltZTogSEFNTUVSX1BSRVNTX1RJTUVcbiAgICB9LFxuICAgIHBpbmNoOiB7XG4gICAgICBlbmFibGU6IGZhbHNlXG4gICAgfSxcbiAgICByb3RhdGU6IHtcbiAgICAgIGVuYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2hhbW1lcmpzLmdpdGh1Yi5pby9yZWNvZ25pemVyLXN3aXBlL1xuICAgIHN3aXBlOiB7XG4gICAgICB0aHJlc2hvbGQ6IDMwLCAgLy8gTWluaW1hbCBkaXN0YW5jZSByZXF1aXJlZCBiZWZvcmUgcmVjb2duaXppbmcuXG4gICAgICB2ZWxvY2l0eTogMC40ICAvL01pbmltYWwgdmVsb2NpdHkgcmVxdWlyZWQgYmVmb3JlIHJlY29nbml6aW5nLCB1bml0IGlzIGluIHB4IHBlciBtcy5cbiAgICB9XG4gIH07XG5cbiAgYnVpbGRIYW1tZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblxuICAgIC8vIERFQlVHXG4gICAgY29uc29sZS5kZWJ1ZygnW2dlc3R1cmVdIEFwcGx5aW5nIEhhbW1lckpTIGNvbmZpZyB0byAnLCBlbGVtZW50LnRhZ05hbWUpO1xuXG4gICAgY29uc3QgbWMgPSBuZXcgKDxhbnk+d2luZG93KS5IYW1tZXIoZWxlbWVudCk7XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBpbiB0aGlzLm92ZXJyaWRlcykge1xuICAgICAgaWYgKGV2ZW50TmFtZSkgbWMuZ2V0KGV2ZW50TmFtZSkuc2V0KHRoaXMub3ZlcnJpZGVzW2V2ZW50TmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYztcbiAgfVxufVxuIl19
@@ -50,10 +50,10 @@ export class ComponentDirtyGuard {
50
50
  // Cancel deactivate
51
51
  return false;
52
52
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentDirtyGuard, deps: [{ token: i1.TranslateService }, { token: i2.AlertController }], target: i0.ɵɵFactoryTarget.Injectable });
54
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentDirtyGuard });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ComponentDirtyGuard, deps: [{ token: i1.TranslateService }, { token: i2.AlertController }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ComponentDirtyGuard });
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentDirtyGuard, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ComponentDirtyGuard, decorators: [{
57
57
  type: Injectable
58
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.AlertController }]; } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRpcnR5Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7OztBQVVqQyxNQUFNLE9BQU8sbUJBQW1CO0lBS2xCO0lBQ0E7SUFKSixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFlBQ1ksU0FBMkIsRUFDM0IsU0FBMEI7UUFEMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBbUIsRUFBRSxZQUFvQyxFQUFFLFlBQWlDLEVBQUUsU0FBK0I7UUFHL0ksTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDO1FBQy9CLElBQUksR0FBRyxHQUFHO1lBQ1IsU0FBUyxFQUFFLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUVELElBQUksS0FBSyxFQUFFO1lBQ1QsbUJBQW1CO1lBQ25CLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3ZELE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLElBQUksSUFBSSxDQUFDLEtBQUs7d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUM5RSxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLEtBQUs7b0JBQ1AsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3RCO1lBRUQsbUJBQW1CO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxvQkFBb0I7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO3dHQXBEVSxtQkFBbUI7NEdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi9hbGVydHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbkxlYXZlIHtcbiAgZGlydHk6IGJvb2xlYW47XG4gIHZhbGlkOiBib29sZWFuO1xuICBzYXZlKGV2ZW50PzogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBjYW5jZWwoZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21wb25lbnREaXJ0eUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxDYW5MZWF2ZT4ge1xuXG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgKSB7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogQ2FuTGVhdmUsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTpcbiAgICBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG5cbiAgICBjb25zdCBkaXJ0eSA9IGNvbXBvbmVudD8uZGlydHk7XG4gICAgY29uc3QgdmFsaWQgPSBjb21wb25lbnQ/LnZhbGlkO1xuICAgIGxldCBjYW4gPSB7XG4gICAgICBjb25maXJtZWQ6ICFkaXJ0eSxcbiAgICAgIHNhdmU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjYW5EZWFjdGl2YXRlIGNvbXBvbmVudCBkaXJ0eTogJHtkaXJ0eX0sIHZhbGlkOiAke3ZhbGlkfWApO1xuICAgIH1cblxuICAgIGlmIChkaXJ0eSkge1xuICAgICAgLy8gQXNrIGNvbmZpcm1hdGlvblxuICAgICAgY2FuID0gYXdhaXQgQWxlcnRzLmFza1NhdmVCZWZvcmVBY3Rpb24odGhpcy5hbGVydEN0cmwsIHRoaXMudHJhbnNsYXRlLCB7dmFsaWR9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjb25maXJtOiAke2Nhbi5jb25maXJtZWR9YCk7XG5cbiAgICBpZiAoY2FuLmNvbmZpcm1lZCkge1xuICAgICAgaWYgKGNhbi5zYXZlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGlydHktZ3VhcmRdIGRvIHNhdmVgKTtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBjb21wb25lbnQuc2F2ZSgpO1xuICAgICAgICBpZiAoIXNhdmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gc2F2ZSBmYWlsZWQsIGNhbmNlbCBkZWFjdGl2YXRlYCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBkbyBjYW5jZWxgKTtcbiAgICAgICAgaWYgKGRpcnR5KVxuICAgICAgICAgIGNvbXBvbmVudC5jYW5jZWwoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZGVhY3RpdmF0ZVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIGRlYWN0aXZhdGVcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgfVxuXG5cbn1cbiJdfQ==
58
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.AlertController }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRpcnR5Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7OztBQVVqQyxNQUFNLE9BQU8sbUJBQW1CO0lBS2xCO0lBQ0E7SUFKSixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFlBQ1ksU0FBMkIsRUFDM0IsU0FBMEI7UUFEMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBbUIsRUFBRSxZQUFvQyxFQUFFLFlBQWlDLEVBQUUsU0FBK0I7UUFHL0ksTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDO1FBQy9CLElBQUksR0FBRyxHQUFHO1lBQ1IsU0FBUyxFQUFFLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUVELElBQUksS0FBSyxFQUFFO1lBQ1QsbUJBQW1CO1lBQ25CLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3ZELE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLElBQUksSUFBSSxDQUFDLEtBQUs7d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUM5RSxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLEtBQUs7b0JBQ1AsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3RCO1lBRUQsbUJBQW1CO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxvQkFBb0I7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO3VHQXBEVSxtQkFBbUI7MkdBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi9hbGVydHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbkxlYXZlIHtcbiAgZGlydHk6IGJvb2xlYW47XG4gIHZhbGlkOiBib29sZWFuO1xuICBzYXZlKGV2ZW50PzogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBjYW5jZWwoZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21wb25lbnREaXJ0eUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxDYW5MZWF2ZT4ge1xuXG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgKSB7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogQ2FuTGVhdmUsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTpcbiAgICBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG5cbiAgICBjb25zdCBkaXJ0eSA9IGNvbXBvbmVudD8uZGlydHk7XG4gICAgY29uc3QgdmFsaWQgPSBjb21wb25lbnQ/LnZhbGlkO1xuICAgIGxldCBjYW4gPSB7XG4gICAgICBjb25maXJtZWQ6ICFkaXJ0eSxcbiAgICAgIHNhdmU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjYW5EZWFjdGl2YXRlIGNvbXBvbmVudCBkaXJ0eTogJHtkaXJ0eX0sIHZhbGlkOiAke3ZhbGlkfWApO1xuICAgIH1cblxuICAgIGlmIChkaXJ0eSkge1xuICAgICAgLy8gQXNrIGNvbmZpcm1hdGlvblxuICAgICAgY2FuID0gYXdhaXQgQWxlcnRzLmFza1NhdmVCZWZvcmVBY3Rpb24odGhpcy5hbGVydEN0cmwsIHRoaXMudHJhbnNsYXRlLCB7dmFsaWR9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjb25maXJtOiAke2Nhbi5jb25maXJtZWR9YCk7XG5cbiAgICBpZiAoY2FuLmNvbmZpcm1lZCkge1xuICAgICAgaWYgKGNhbi5zYXZlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGlydHktZ3VhcmRdIGRvIHNhdmVgKTtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBjb21wb25lbnQuc2F2ZSgpO1xuICAgICAgICBpZiAoIXNhdmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gc2F2ZSBmYWlsZWQsIGNhbmNlbCBkZWFjdGl2YXRlYCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBkbyBjYW5jZWxgKTtcbiAgICAgICAgaWYgKGRpcnR5KVxuICAgICAgICAgIGNvbXBvbmVudC5jYW5jZWwoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZGVhY3RpdmF0ZVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIGRlYWN0aXZhdGVcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgfVxuXG5cbn1cbiJdfQ==
@@ -45,13 +45,13 @@ export class AppHelpModal {
45
45
  this.loading = false;
46
46
  this.cd.markForCheck();
47
47
  }
48
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppHelpModal, deps: [{ token: i0.Injector }, { token: i1.ModalController }, { token: i2.PlatformService }, { token: i3.LocalSettingsService }, { token: i4.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
49
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppHelpModal, selector: "app-help-modal", inputs: { title: "title", showError: "showError", markdownContent: "markdownContent", markdownUrl: "markdownUrl" }, ngImport: i0, template: "<app-modal-toolbar color=\"light\"\n [title]=\"title|translate\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\">\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent; else useDocUrl\"\n [data]=\"markdownContent\"\n (ready)=\"markAsLoaded()\"\n emoji>\n </markdown>\n\n <ng-template #useDocUrl>\n <markdown *ngIf=\"markdownUrl\"\n [src]=\"markdownUrl\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji></markdown>\n </ng-template>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n\n\n", dependencies: [{ kind: "directive", type: i5.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.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.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.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "srcRelativeLink", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i7.ModalToolbarComponent, selector: "app-modal-toolbar", inputs: ["modalName", "title", "color", "showSpinner", "canValidate", "validateIcon"], outputs: ["cancel", "validate"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppHelpModal, deps: [{ token: i0.Injector }, { token: i1.ModalController }, { token: i2.PlatformService }, { token: i3.LocalSettingsService }, { token: i4.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
49
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AppHelpModal, selector: "app-help-modal", inputs: { title: "title", showError: "showError", markdownContent: "markdownContent", markdownUrl: "markdownUrl" }, ngImport: i0, template: "<app-modal-toolbar color=\"light\"\n [title]=\"title|translate\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\">\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent; else useDocUrl\"\n [data]=\"markdownContent\"\n (ready)=\"markAsLoaded()\"\n emoji>\n </markdown>\n\n <ng-template #useDocUrl>\n <markdown *ngIf=\"markdownUrl\"\n [src]=\"markdownUrl\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji></markdown>\n </ng-template>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n\n\n", dependencies: [{ kind: "directive", type: i5.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.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.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.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i7.ModalToolbarComponent, selector: "app-modal-toolbar", inputs: ["modalName", "title", "color", "showSpinner", "canValidate", "validateIcon"], outputs: ["cancel", "validate"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppHelpModal, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppHelpModal, decorators: [{
52
52
  type: Component,
53
53
  args: [{ selector: 'app-help-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-modal-toolbar color=\"light\"\n [title]=\"title|translate\"\n (cancel)=\"close($event)\"\n [showSpinner]=\"loading\">\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <!-- error -->\n <ion-item *ngIf=\"error && showError\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <markdown *ngIf=\"markdownContent; else useDocUrl\"\n [data]=\"markdownContent\"\n (ready)=\"markAsLoaded()\"\n emoji>\n </markdown>\n\n <ng-template #useDocUrl>\n <markdown *ngIf=\"markdownUrl\"\n [src]=\"markdownUrl\"\n (load)=\"markAsLoaded()\"\n (error)=\"onLoadError($event)\"\n emoji></markdown>\n </ng-template>\n\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{'COMMON.BTN_CLOSE'|translate}}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n\n\n" }]
54
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.ModalController }, { type: i2.PlatformService }, { type: i3.LocalSettingsService }, { type: i4.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { title: [{
54
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ModalController }, { type: i2.PlatformService }, { type: i3.LocalSettingsService }, { type: i4.TranslateService }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
55
55
  type: Input
56
56
  }], showError: [{
57
57
  type: Input
@@ -60,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
60
60
  }], markdownUrl: [{
61
61
  type: Input
62
62
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2hlbHAvaGVscC5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2hlbHAvaGVscC5tb2RhbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFZLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBa0JyRyxNQUFNLE9BQU8sWUFBWTtJQVlUO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWZMLEtBQUssQ0FBVTtJQUN4QixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ2YsS0FBSyxHQUFXLFNBQVMsQ0FBQztJQUVqQixLQUFLLENBQVM7SUFDZCxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQVM7SUFFN0IsWUFDYyxRQUFrQixFQUNsQixRQUF5QixFQUN6QixRQUF5QixFQUN6QixRQUE4QixFQUM5QixTQUEyQixFQUMzQixFQUFxQjtRQUxyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRWpDLHFCQUFxQjtRQUNyQix1Q0FBdUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0F2Q1UsWUFBWTs0RkFBWixZQUFZLDBLQ2xCekIsMHhDQTBDQTs7NEZEeEJhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU07NlBBUXRDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01vZGFsQ29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtQbGF0Zm9ybVNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBIZWxwTW9kYWxPcHRpb25zIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1hcmtkb3duQ29udGVudD86IHN0cmluZztcbiAgbWFya2Rvd25Vcmw/OiBzdHJpbmc7XG4gIHNob3dFcnJvcj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oZWxwLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAubW9kYWwuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcEhlbHBNb2RhbCBpbXBsZW1lbnRzIEFwcEhlbHBNb2RhbE9wdGlvbnMge1xuXG4gIHJlYWRvbmx5IGRlYnVnOiBib29sZWFuO1xuICBsb2FkaW5nID0gdHJ1ZTtcbiAgZXJyb3I6IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93RXJyb3IgPSB0cnVlO1xuICBASW5wdXQoKSBtYXJrZG93bkNvbnRlbnQ6IHN0cmluZztcbiAgQElucHV0KCkgbWFya2Rvd25Vcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICBwcm90ZWN0ZWQgdmlld0N0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgICAgcHJvdGVjdGVkIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIC8vIFRPRE86IGZvciBERVYgb25seVxuICAgIC8vdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgY2xvc2UoXz86IEV2ZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3Q3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICBtYXJrQXNMb2FkZWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uTG9hZEVycm9yKGVycm9yPzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcblxuICAgIHRoaXMuZXJyb3IgPSAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG5cbn1cbiIsIjxhcHAtbW9kYWwtdG9vbGJhciBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGl0bGV8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAoY2FuY2VsKT1cImNsb3NlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIFtzaG93U3Bpbm5lcl09XCJsb2FkaW5nXCI+XG48L2FwcC1tb2RhbC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gIDwhLS0gZXJyb3IgLS0+XG4gIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmIHNob3dFcnJvclwiIGxpbmVzPVwibm9uZVwiPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8bWFya2Rvd24gKm5nSWY9XCJtYXJrZG93bkNvbnRlbnQ7IGVsc2UgdXNlRG9jVXJsXCJcbiAgICAgICAgICAgIFtkYXRhXT1cIm1hcmtkb3duQ29udGVudFwiXG4gICAgICAgICAgICAocmVhZHkpPVwibWFya0FzTG9hZGVkKClcIlxuICAgICAgICAgICAgZW1vamk+XG4gIDwvbWFya2Rvd24+XG5cbiAgPG5nLXRlbXBsYXRlICN1c2VEb2NVcmw+XG4gICAgPG1hcmtkb3duICpuZ0lmPVwibWFya2Rvd25VcmxcIlxuICAgICAgICAgICAgICBbc3JjXT1cIm1hcmtkb3duVXJsXCJcbiAgICAgICAgICAgICAgKGxvYWQpPVwibWFya0FzTG9hZGVkKClcIlxuICAgICAgICAgICAgICAoZXJyb3IpPVwib25Mb2FkRXJyb3IoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGVtb2ppPjwvbWFya2Rvd24+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBub3dyYXA+XG4gICAgICA8aW9uLWNvbD48L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIj57eydDT01NT04uQlROX0NMT1NFJ3x0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG5cblxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2hlbHAvaGVscC5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2hlbHAvaGVscC5tb2RhbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFZLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBa0JyRyxNQUFNLE9BQU8sWUFBWTtJQVlUO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWZMLEtBQUssQ0FBVTtJQUN4QixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ2YsS0FBSyxHQUFXLFNBQVMsQ0FBQztJQUVqQixLQUFLLENBQVM7SUFDZCxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQVM7SUFFN0IsWUFDYyxRQUFrQixFQUNsQixRQUF5QixFQUN6QixRQUF5QixFQUN6QixRQUE4QixFQUM5QixTQUEyQixFQUMzQixFQUFxQjtRQUxyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRWpDLHFCQUFxQjtRQUNyQix1Q0FBdUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXNCO1FBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzt1R0F2Q1UsWUFBWTsyRkFBWixZQUFZLDBLQ2xCekIsMHhDQTBDQTs7MkZEeEJhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU07Mk9BUXRDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01vZGFsQ29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtQbGF0Zm9ybVNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBIZWxwTW9kYWxPcHRpb25zIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1hcmtkb3duQ29udGVudD86IHN0cmluZztcbiAgbWFya2Rvd25Vcmw/OiBzdHJpbmc7XG4gIHNob3dFcnJvcj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1oZWxwLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAubW9kYWwuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcEhlbHBNb2RhbCBpbXBsZW1lbnRzIEFwcEhlbHBNb2RhbE9wdGlvbnMge1xuXG4gIHJlYWRvbmx5IGRlYnVnOiBib29sZWFuO1xuICBsb2FkaW5nID0gdHJ1ZTtcbiAgZXJyb3I6IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93RXJyb3IgPSB0cnVlO1xuICBASW5wdXQoKSBtYXJrZG93bkNvbnRlbnQ6IHN0cmluZztcbiAgQElucHV0KCkgbWFya2Rvd25Vcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICBwcm90ZWN0ZWQgdmlld0N0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgICAgcHJvdGVjdGVkIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIC8vIFRPRE86IGZvciBERVYgb25seVxuICAgIC8vdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgY2xvc2UoXz86IEV2ZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3Q3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICBtYXJrQXNMb2FkZWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uTG9hZEVycm9yKGVycm9yPzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcblxuICAgIHRoaXMuZXJyb3IgPSAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG5cbn1cbiIsIjxhcHAtbW9kYWwtdG9vbGJhciBjb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGl0bGV8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAoY2FuY2VsKT1cImNsb3NlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIFtzaG93U3Bpbm5lcl09XCJsb2FkaW5nXCI+XG48L2FwcC1tb2RhbC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gIDwhLS0gZXJyb3IgLS0+XG4gIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmIHNob3dFcnJvclwiIGxpbmVzPVwibm9uZVwiPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8bWFya2Rvd24gKm5nSWY9XCJtYXJrZG93bkNvbnRlbnQ7IGVsc2UgdXNlRG9jVXJsXCJcbiAgICAgICAgICAgIFtkYXRhXT1cIm1hcmtkb3duQ29udGVudFwiXG4gICAgICAgICAgICAocmVhZHkpPVwibWFya0FzTG9hZGVkKClcIlxuICAgICAgICAgICAgZW1vamk+XG4gIDwvbWFya2Rvd24+XG5cbiAgPG5nLXRlbXBsYXRlICN1c2VEb2NVcmw+XG4gICAgPG1hcmtkb3duICpuZ0lmPVwibWFya2Rvd25VcmxcIlxuICAgICAgICAgICAgICBbc3JjXT1cIm1hcmtkb3duVXJsXCJcbiAgICAgICAgICAgICAgKGxvYWQpPVwibWFya0FzTG9hZGVkKClcIlxuICAgICAgICAgICAgICAoZXJyb3IpPVwib25Mb2FkRXJyb3IoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGVtb2ppPjwvbWFya2Rvd24+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBub3dyYXA+XG4gICAgICA8aW9uLWNvbD48L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cInRlcnRpYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIj57eydDT01NT04uQlROX0NMT1NFJ3x0cmFuc2xhdGV9fTwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG5cblxuIl19