@sumaris-net/ngx-components 4.0.0-rc9 → 18.0.0-rc1

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 (555) hide show
  1. package/README.md +5 -3
  2. package/doc/changelog.md +522 -280
  3. package/esm2022/public_api.mjs +38 -19
  4. package/esm2022/src/app/admin/admin-routing.module.mjs +10 -17
  5. package/esm2022/src/app/admin/admin.module.mjs +7 -9
  6. package/esm2022/src/app/admin/services/filter/person.filter.mjs +3 -3
  7. package/esm2022/src/app/admin/services/person.service.mjs +31 -31
  8. package/esm2022/src/app/admin/services/validator/person.validator.mjs +10 -10
  9. package/esm2022/src/app/admin/users/users.mjs +22 -19
  10. package/esm2022/src/app/admin/users/users.module.mjs +8 -10
  11. package/esm2022/src/app/core/about/about.modal.mjs +7 -7
  12. package/esm2022/src/app/core/about/about.module.mjs +8 -21
  13. package/esm2022/src/app/core/account/account.module.mjs +28 -18
  14. package/esm2022/src/app/core/account/account.page.mjs +19 -5
  15. package/esm2022/src/app/core/account/new-token.form.mjs +106 -0
  16. package/esm2022/src/app/core/account/new-token.modal.mjs +27 -86
  17. package/esm2022/src/app/core/account/password/change-password.form.mjs +60 -0
  18. package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
  19. package/esm2022/src/app/core/account/password/change-password.page.mjs +144 -0
  20. package/esm2022/src/app/core/account/token.table.mjs +47 -35
  21. package/esm2022/src/app/core/auth/auth.form.mjs +47 -28
  22. package/esm2022/src/app/core/auth/auth.modal.mjs +6 -6
  23. package/esm2022/src/app/core/auth/auth.module.mjs +22 -13
  24. package/esm2022/src/app/core/auth/reset-password.modal.mjs +77 -0
  25. package/esm2022/src/app/core/core.module.mjs +28 -61
  26. package/esm2022/src/app/core/core.testing.module.mjs +34 -20
  27. package/esm2022/src/app/core/form/array/form-array.mjs +325 -0
  28. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
  29. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +94 -0
  30. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +24 -25
  31. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +9 -13
  32. package/esm2022/src/app/core/form/entity/editor.class.mjs +64 -517
  33. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +26 -42
  34. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +42 -41
  35. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +5 -5
  36. package/esm2022/src/app/core/form/entity/entity.module.mjs +8 -14
  37. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +194 -0
  38. package/esm2022/src/app/core/form/form-container.class.mjs +327 -0
  39. package/esm2022/src/app/core/form/form.class.mjs +39 -56
  40. package/esm2022/src/app/core/form/form.module.mjs +14 -10
  41. package/esm2022/src/app/core/form/form.utils.mjs +23 -306
  42. package/esm2022/src/app/core/form/list/list.form.mjs +16 -14
  43. package/esm2022/src/app/core/form/list/list.module.mjs +8 -12
  44. package/esm2022/src/app/core/form/properties/properties.form.mjs +139 -57
  45. package/esm2022/src/app/core/form/properties/properties.module.mjs +9 -15
  46. package/esm2022/src/app/core/form/properties/properties.table.mjs +27 -28
  47. package/esm2022/src/app/core/form/properties/properties.utils.mjs +60 -0
  48. package/esm2022/src/app/core/form/properties/property.validator.mjs +23 -9
  49. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +18 -18
  50. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +8 -24
  51. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +15 -15
  52. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +10 -25
  53. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +7 -7
  54. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +9 -13
  55. package/esm2022/src/app/core/form/username/username.form.mjs +52 -0
  56. package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
  57. package/esm2022/src/app/core/graphql/graphql.module.mjs +8 -16
  58. package/esm2022/src/app/core/graphql/graphql.service.mjs +101 -109
  59. package/esm2022/src/app/core/graphql/graphql.utils.mjs +12 -11
  60. package/esm2022/src/app/core/home/home.mjs +81 -52
  61. package/esm2022/src/app/core/home/home.module.mjs +10 -19
  62. package/esm2022/src/app/core/icon/icon.component.mjs +5 -5
  63. package/esm2022/src/app/core/icon/icon.module.mjs +8 -17
  64. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +33 -37
  65. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +9 -13
  66. package/esm2022/src/app/core/menu/menu.component.mjs +5 -6
  67. package/esm2022/src/app/core/menu/menu.model.mjs +21 -18
  68. package/esm2022/src/app/core/menu/menu.module.mjs +7 -12
  69. package/esm2022/src/app/core/menu/menu.service.mjs +44 -60
  70. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +4 -4
  71. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +7 -6
  72. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +43 -8
  73. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +8 -27
  74. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +6 -7
  75. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +9 -13
  76. package/esm2022/src/app/core/peer/select-peer.modal.mjs +31 -21
  77. package/esm2022/src/app/core/peer/select-peer.module.mjs +11 -23
  78. package/esm2022/src/app/core/register/register-confirm.page.mjs +18 -16
  79. package/esm2022/src/app/core/register/register.form.mjs +7 -7
  80. package/esm2022/src/app/core/register/register.modal.mjs +6 -6
  81. package/esm2022/src/app/core/register/register.module.mjs +8 -29
  82. package/esm2022/src/app/core/services/account.service.mjs +272 -170
  83. package/esm2022/src/app/core/services/auth-guard.service.mjs +13 -15
  84. package/esm2022/src/app/core/services/base-entity-service.class.mjs +55 -64
  85. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +39 -33
  86. package/esm2022/src/app/core/services/base58.mjs +8 -4
  87. package/esm2022/src/app/core/services/config/core.config.mjs +88 -37
  88. package/esm2022/src/app/core/services/config.service.mjs +81 -62
  89. package/esm2022/src/app/core/services/crypto.service.mjs +11 -11
  90. package/esm2022/src/app/core/services/errors.mjs +6 -5
  91. package/esm2022/src/app/core/services/local-settings.service.mjs +58 -44
  92. package/esm2022/src/app/core/services/model/account.model.mjs +12 -17
  93. package/esm2022/src/app/core/services/model/config.model.mjs +7 -7
  94. package/esm2022/src/app/core/services/model/department.model.mjs +3 -2
  95. package/esm2022/src/app/core/services/model/entity.decorators.mjs +6 -6
  96. package/esm2022/src/app/core/services/model/entity.model.mjs +27 -31
  97. package/esm2022/src/app/core/services/model/filter.model.mjs +12 -15
  98. package/esm2022/src/app/core/services/model/history.model.mjs +1 -1
  99. package/esm2022/src/app/core/services/model/model.enum.mjs +2 -2
  100. package/esm2022/src/app/core/services/model/peer.model.mjs +19 -9
  101. package/esm2022/src/app/core/services/model/person.model.mjs +26 -22
  102. package/esm2022/src/app/core/services/model/referential.model.mjs +36 -23
  103. package/esm2022/src/app/core/services/model/settings.model.mjs +2 -1
  104. package/esm2022/src/app/core/services/model/token.model.mjs +7 -3
  105. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +3 -7
  106. package/esm2022/src/app/core/services/network.service.mjs +99 -76
  107. package/esm2022/src/app/core/services/network.types.mjs +1 -1
  108. package/esm2022/src/app/core/services/network.utils.mjs +3 -3
  109. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +11 -11
  110. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +6 -6
  111. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +9 -9
  112. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +54 -0
  113. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +21 -0
  114. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +11 -11
  115. package/esm2022/src/app/core/services/platform.service.mjs +102 -69
  116. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +32 -39
  117. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +36 -45
  118. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +1 -1
  119. package/esm2022/src/app/core/services/testing/referential.validator.mjs +14 -14
  120. package/esm2022/src/app/core/services/validator/account.validator.mjs +5 -5
  121. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +5 -5
  122. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +34 -20
  123. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +5 -5
  124. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +12 -9
  125. package/esm2022/src/app/core/settings/settings.module.mjs +9 -21
  126. package/esm2022/src/app/core/settings/settings.page.mjs +76 -63
  127. package/esm2022/src/app/core/table/async-table.class.mjs +219 -201
  128. package/esm2022/src/app/core/table/column/actions-column.component.mjs +127 -0
  129. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +117 -0
  130. package/esm2022/src/app/core/table/column/row-field.component.mjs +116 -0
  131. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +31 -33
  132. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +36 -36
  133. package/esm2022/src/app/core/table/memory-table.class.mjs +5 -5
  134. package/esm2022/src/app/core/table/table-select-columns.component.mjs +8 -8
  135. package/esm2022/src/app/core/table/table.class.mjs +193 -152
  136. package/esm2022/src/app/core/table/table.model.mjs +1 -1
  137. package/esm2022/src/app/core/table/table.module.mjs +35 -24
  138. package/esm2022/src/app/core/table/table.pipes.mjs +77 -0
  139. package/esm2022/src/app/core/table/table.utils.mjs +2 -4
  140. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +9 -5
  141. package/esm2022/src/app/core/table/testing/table.testing.mjs +116 -78
  142. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +8 -33
  143. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +4 -4
  144. package/esm2022/src/app/core/table/testing/table2.testing.mjs +68 -45
  145. package/esm2022/src/app/shared/alerts.mjs +49 -45
  146. package/esm2022/src/app/shared/audio/audio.mjs +25 -27
  147. package/esm2022/src/app/shared/audio/audio.testing.mjs +5 -5
  148. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +10 -25
  149. package/esm2022/src/app/shared/capacitor/keyboard.mjs +5 -5
  150. package/esm2022/src/app/shared/capacitor/plugins.mjs +1 -1
  151. package/esm2022/src/app/shared/constants.mjs +9 -4
  152. package/esm2022/src/app/shared/dates.mjs +18 -16
  153. package/esm2022/src/app/shared/debug/debug-service.class.mjs +1 -1
  154. package/esm2022/src/app/shared/debug/debug.component.mjs +5 -5
  155. package/esm2022/src/app/shared/debug/debug.module.mjs +8 -29
  156. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +8 -15
  157. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +4 -4
  158. package/esm2022/src/app/shared/directives/directives.module.mjs +8 -29
  159. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
  160. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +4 -4
  161. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
  162. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
  163. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  164. package/esm2022/src/app/shared/events.mjs +6 -8
  165. package/esm2022/src/app/shared/file/csv.utils.mjs +38 -18
  166. package/esm2022/src/app/shared/file/file.service.mjs +11 -15
  167. package/esm2022/src/app/shared/file/file.utils.mjs +13 -11
  168. package/esm2022/src/app/shared/file/images.utils.mjs +29 -4
  169. package/esm2022/src/app/shared/file/json.utils.mjs +11 -4
  170. package/esm2022/src/app/shared/file/uri.utils.mjs +1 -1
  171. package/esm2022/src/app/shared/focusable.mjs +1 -1
  172. package/esm2022/src/app/shared/form/field.component.mjs +69 -43
  173. package/esm2022/src/app/shared/form/field.model.mjs +4 -4
  174. package/esm2022/src/app/shared/form/loading-spinner.mjs +5 -5
  175. package/esm2022/src/app/shared/forms.mjs +116 -43
  176. package/esm2022/src/app/shared/functions.mjs +139 -71
  177. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +14 -14
  178. package/esm2022/src/app/shared/gesture/gesture-config.mjs +10 -10
  179. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +1 -1
  180. package/esm2022/src/app/shared/graph/colors.utils.mjs +14 -18
  181. package/esm2022/src/app/shared/graph/graph-colors.mjs +23 -29
  182. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +4 -4
  183. package/esm2022/src/app/shared/help/help.modal.mjs +6 -6
  184. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +5 -5
  185. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +44 -17
  186. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +9 -27
  187. package/esm2022/src/app/shared/http/http.utils.mjs +15 -11
  188. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +27 -27
  189. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +13 -10
  190. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +1 -1
  191. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +14 -17
  192. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +9 -13
  193. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +14 -11
  194. package/esm2022/src/app/shared/image/image.model.mjs +1 -1
  195. package/esm2022/src/app/shared/image/image.module.mjs +8 -13
  196. package/esm2022/src/app/shared/image/image.service.mjs +14 -12
  197. package/esm2022/src/app/shared/inputs.mjs +52 -20
  198. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +2 -3
  199. package/esm2022/src/app/shared/logging/log-level.model.mjs +1 -1
  200. package/esm2022/src/app/shared/logging/logger.model.mjs +2 -2
  201. package/esm2022/src/app/shared/logging/logging-service.class.mjs +17 -20
  202. package/esm2022/src/app/shared/logging/logging-service.module.mjs +6 -6
  203. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +7 -10
  204. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +348 -238
  205. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +13 -16
  206. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +5 -4
  207. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +51 -37
  208. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +99 -57
  209. package/esm2022/src/app/shared/material/badge/badge.module.mjs +8 -20
  210. package/esm2022/src/app/shared/material/badge/badge.test.mjs +5 -5
  211. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +19 -20
  212. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +209 -104
  213. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +15 -8
  214. package/esm2022/src/app/shared/material/chips/chips.module.mjs +12 -13
  215. package/esm2022/src/app/shared/material/chips/material.chips.mjs +228 -168
  216. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +20 -21
  217. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +12 -27
  218. package/esm2022/src/app/shared/material/datetime/material.date.mjs +167 -92
  219. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +128 -77
  220. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +297 -165
  221. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +34 -30
  222. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +31 -27
  223. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +26 -23
  224. package/esm2022/src/app/shared/material/duration/duration.module.mjs +11 -16
  225. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +3 -6
  226. package/esm2022/src/app/shared/material/duration/material.duration.mjs +35 -34
  227. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +23 -22
  228. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +217 -170
  229. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +182 -241
  230. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +10 -15
  231. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +19 -14
  232. package/esm2022/src/app/shared/material/material.animations.mjs +22 -22
  233. package/esm2022/src/app/shared/material/material.config.mjs +3 -0
  234. package/esm2022/src/app/shared/material/material.module.mjs +16 -16
  235. package/esm2022/src/app/shared/material/material.testing.module.mjs +50 -37
  236. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +12 -9
  237. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
  238. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +26 -19
  239. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +7 -11
  240. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +8 -8
  241. package/esm2022/src/app/shared/material/testing/common.test.mjs +30 -24
  242. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +30 -19
  243. package/esm2022/src/app/shared/material/text/text-form.component.mjs +128 -21
  244. package/esm2022/src/app/shared/material/text/text-form.module.mjs +8 -8
  245. package/esm2022/src/app/shared/modules.mjs +1 -1
  246. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +118 -37
  247. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
  248. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
  249. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +8 -8
  250. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +74 -0
  251. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +28 -0
  252. package/esm2022/src/app/shared/observables.mjs +14 -18
  253. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +53 -38
  254. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +24 -0
  255. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +8 -6
  256. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +8 -10
  257. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +15 -15
  258. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +6 -6
  259. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +6 -6
  260. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +6 -13
  261. package/esm2022/src/app/shared/pipes/form.pipes.mjs +72 -47
  262. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +15 -15
  263. package/esm2022/src/app/shared/pipes/html.pipes.mjs +52 -0
  264. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +14 -14
  265. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +17 -17
  266. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +37 -88
  267. package/esm2022/src/app/shared/pipes/math.pipes.mjs +16 -16
  268. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +5 -5
  269. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +6 -6
  270. package/esm2022/src/app/shared/pipes/pipes.module.mjs +117 -137
  271. package/esm2022/src/app/shared/pipes/property.pipes.mjs +86 -47
  272. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +179 -0
  273. package/esm2022/src/app/shared/pipes/string.pipes.mjs +50 -49
  274. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +11 -11
  275. package/esm2022/src/app/shared/pipes/types.pipes.mjs +33 -17
  276. package/esm2022/src/app/shared/platforms.mjs +7 -5
  277. package/esm2022/src/app/shared/rx-state.module.mjs +7 -11
  278. package/esm2022/src/app/shared/services/entity-service.class.mjs +2 -2
  279. package/esm2022/src/app/shared/services/job.utils.mjs +7 -7
  280. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +43 -41
  281. package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
  282. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +11 -14
  283. package/esm2022/src/app/shared/services/startable-service.class.mjs +11 -17
  284. package/esm2022/src/app/shared/services/translate-context.service.mjs +18 -15
  285. package/esm2022/src/app/shared/services/validator-service.class.mjs +1 -1
  286. package/esm2022/src/app/shared/services.mjs +12 -12
  287. package/esm2022/src/app/shared/shared-routing.module.mjs +19 -18
  288. package/esm2022/src/app/shared/shared.module.mjs +29 -28
  289. package/esm2022/src/app/shared/shared.testing.module.mjs +18 -10
  290. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +39 -46
  291. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +8 -12
  292. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +9 -17
  293. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +10 -18
  294. package/esm2022/src/app/shared/storage/storage.service.mjs +4 -4
  295. package/esm2022/src/app/shared/storage/storage.utils.mjs +2 -2
  296. package/esm2022/src/app/shared/testing/maskito.test.mjs +41 -0
  297. package/esm2022/src/app/shared/testing/observable.test.mjs +11 -13
  298. package/esm2022/src/app/shared/testing/tests.page.mjs +6 -6
  299. package/esm2022/src/app/shared/toast/toast.testing.mjs +11 -11
  300. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +10 -25
  301. package/esm2022/src/app/shared/toast/toasts.mjs +9 -9
  302. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +10 -8
  303. package/esm2022/src/app/shared/toolbar/toolbar.mjs +31 -32
  304. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +8 -39
  305. package/esm2022/src/app/shared/types.mjs +1 -1
  306. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +12 -12
  307. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +10 -25
  308. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +7 -8
  309. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +21 -19
  310. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +2 -3
  311. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +64 -56
  312. package/esm2022/src/app/shared/validator/validators.mjs +60 -39
  313. package/esm2022/src/app/shared/version/versions.mjs +2 -2
  314. package/esm2022/src/app/social/job/job.module.mjs +8 -27
  315. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +9 -9
  316. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +49 -46
  317. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +10 -13
  318. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +1 -1
  319. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +39 -21
  320. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +6 -11
  321. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +11 -30
  322. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +8 -21
  323. package/esm2022/src/app/social/message/message.form.mjs +5 -5
  324. package/esm2022/src/app/social/message/message.modal.mjs +8 -8
  325. package/esm2022/src/app/social/message/message.model.mjs +8 -8
  326. package/esm2022/src/app/social/message/message.module.mjs +4 -4
  327. package/esm2022/src/app/social/message/message.service.mjs +7 -7
  328. package/esm2022/src/app/social/social.errors.mjs +2 -2
  329. package/esm2022/src/app/social/social.module.mjs +7 -32
  330. package/esm2022/src/app/social/social.testing.module.mjs +9 -20
  331. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +27 -23
  332. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +19 -22
  333. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +47 -23
  334. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +8 -8
  335. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +8 -21
  336. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +27 -15
  337. package/esm2022/src/app/social/user-event/user-event.model.mjs +1 -1
  338. package/esm2022/src/app/social/user-event/user-event.module.mjs +8 -28
  339. package/esm2022/src/app/social/user-event/user-event.service.mjs +61 -64
  340. package/esm2022/src/environments/environment.class.mjs +9 -1
  341. package/esm2022/src/environments/environment.loader.mjs +5 -11
  342. package/esm2022/src/environments/environment.mjs +19 -11
  343. package/fesm2022/sumaris-net.ngx-components.mjs +16117 -14592
  344. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  345. package/package.json +33 -18
  346. package/public_api.d.ts +30 -22
  347. package/src/app/admin/services/filter/person.filter.d.ts +1 -1
  348. package/src/app/admin/users/users.d.ts +5 -6
  349. package/src/app/core/account/account.module.d.ts +10 -8
  350. package/src/app/core/account/account.page.d.ts +25 -15
  351. package/src/app/core/account/new-token.form.d.ts +29 -0
  352. package/src/app/core/account/new-token.modal.d.ts +9 -21
  353. package/src/app/core/account/password/change-password.form.d.ts +19 -0
  354. package/src/app/core/account/password/change-password.module.d.ts +11 -0
  355. package/src/app/core/account/password/change-password.page.d.ts +36 -0
  356. package/src/app/core/account/token.table.d.ts +7 -5
  357. package/src/app/core/auth/auth.form.d.ts +11 -9
  358. package/src/app/core/auth/auth.module.d.ts +6 -4
  359. package/src/app/core/auth/reset-password.modal.d.ts +26 -0
  360. package/src/app/core/core.module.d.ts +21 -24
  361. package/src/app/core/core.testing.module.d.ts +2 -1
  362. package/src/app/core/form/array/form-array.d.ts +136 -0
  363. package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
  364. package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
  365. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +2 -3
  366. package/src/app/core/form/entity/editor.class.d.ts +19 -179
  367. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +10 -13
  368. package/src/app/core/form/entity/entity-editor.class.d.ts +12 -17
  369. package/src/app/core/form/entity/entity-metadata.component.d.ts +1 -1
  370. package/src/app/core/form/entity/tab-editor.class.d.ts +70 -0
  371. package/src/app/core/form/form-container.class.d.ts +126 -0
  372. package/src/app/core/form/form.class.d.ts +13 -26
  373. package/src/app/core/form/form.module.d.ts +2 -1
  374. package/src/app/core/form/form.utils.d.ts +60 -145
  375. package/src/app/core/form/list/list.form.d.ts +2 -2
  376. package/src/app/core/form/properties/properties.form.d.ts +34 -12
  377. package/src/app/core/form/properties/properties.table.d.ts +2 -2
  378. package/src/app/core/form/properties/properties.utils.d.ts +27 -0
  379. package/src/app/core/form/properties/property.validator.d.ts +9 -3
  380. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +3 -1
  381. package/src/app/core/form/username/username.form.d.ts +19 -0
  382. package/src/app/core/form/username/username.module.d.ts +9 -0
  383. package/src/app/core/graphql/graphql.module.d.ts +1 -2
  384. package/src/app/core/graphql/graphql.service.d.ts +2 -4
  385. package/src/app/core/home/home.d.ts +26 -6
  386. package/src/app/core/menu/testing/menu-other.testing.d.ts +1 -1
  387. package/src/app/core/menu/testing/menu.testing.d.ts +11 -3
  388. package/src/app/core/peer/select-peer.modal.d.ts +13 -7
  389. package/src/app/core/peer/select-peer.module.d.ts +3 -4
  390. package/src/app/core/services/account.service.d.ts +9 -0
  391. package/src/app/core/services/base-entity-service.class.d.ts +1 -1
  392. package/src/app/core/services/config/core.config.d.ts +12 -1
  393. package/src/app/core/services/config.service.d.ts +4 -3
  394. package/src/app/core/services/errors.d.ts +11 -0
  395. package/src/app/core/services/local-settings.service.d.ts +8 -4
  396. package/src/app/core/services/model/entity.model.d.ts +6 -5
  397. package/src/app/core/services/model/filter.model.d.ts +1 -1
  398. package/src/app/core/services/model/peer.model.d.ts +1 -0
  399. package/src/app/core/services/model/person.model.d.ts +6 -2
  400. package/src/app/core/services/model/referential.model.d.ts +8 -3
  401. package/src/app/core/services/model/settings.model.d.ts +4 -2
  402. package/src/app/core/services/model/token.model.d.ts +1 -0
  403. package/src/app/core/services/model/tree-item-entity.model.d.ts +1 -1
  404. package/src/app/core/services/network.service.d.ts +11 -7
  405. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +1 -1
  406. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +3 -1
  407. package/src/app/core/services/pipes/pipes.module.d.ts +11 -0
  408. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +13 -0
  409. package/src/app/core/services/platform.service.d.ts +8 -3
  410. package/src/app/core/services/testing/referential-filter.model.d.ts +1 -1
  411. package/src/app/core/services/validator/local-settings.validator.d.ts +6 -2
  412. package/src/app/core/settings/settings.module.d.ts +2 -1
  413. package/src/app/core/settings/settings.page.d.ts +34 -21
  414. package/src/app/core/table/async-table.class.d.ts +22 -17
  415. package/src/app/core/table/column/actions-column.component.d.ts +59 -0
  416. package/src/app/core/table/column/nav-actions-column.component.d.ts +46 -0
  417. package/src/app/core/table/column/row-field.component.d.ts +40 -0
  418. package/src/app/core/table/entities-async-table-datasource.class.d.ts +1 -0
  419. package/src/app/core/table/entities-table-datasource.class.d.ts +1 -0
  420. package/src/app/core/table/table.class.d.ts +14 -11
  421. package/src/app/core/table/table.module.d.ts +8 -4
  422. package/src/app/core/table/table.pipes.d.ts +28 -0
  423. package/src/app/core/table/testing/table.testing.d.ts +12 -13
  424. package/src/app/core/table/testing/table2.testing.d.ts +13 -10
  425. package/src/app/shared/alerts.d.ts +4 -2
  426. package/src/app/shared/constants.d.ts +5 -0
  427. package/src/app/shared/dates.d.ts +12 -5
  428. package/src/app/shared/directives/autofocus.directive.d.ts +0 -1
  429. package/src/app/shared/events.d.ts +1 -1
  430. package/src/app/shared/file/csv.utils.d.ts +5 -0
  431. package/src/app/shared/file/images.utils.d.ts +17 -0
  432. package/src/app/shared/file/json.utils.d.ts +3 -0
  433. package/src/app/shared/form/field.component.d.ts +6 -3
  434. package/src/app/shared/forms.d.ts +32 -0
  435. package/src/app/shared/functions.d.ts +27 -8
  436. package/src/app/shared/graph/graph-colors.d.ts +1 -1
  437. package/src/app/shared/guard/component-dirty.guard.d.ts +1 -6
  438. package/src/app/shared/hotkeys/hotkeys.service.d.ts +17 -3
  439. package/src/app/shared/http/http.utils.d.ts +1 -0
  440. package/src/app/shared/image/gallery/image-gallery.component.d.ts +10 -10
  441. package/src/app/shared/image/gallery/image-gallery.module.d.ts +2 -1
  442. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +2 -2
  443. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +2 -1
  444. package/src/app/shared/inputs.d.ts +8 -6
  445. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +20 -1
  446. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +56 -16
  447. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +1 -1
  448. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +2 -1
  449. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +3 -2
  450. package/src/app/shared/material/badge/badge.directive.d.ts +10 -4
  451. package/src/app/shared/material/boolean/boolean.module.d.ts +15 -14
  452. package/src/app/shared/material/boolean/material.boolean.d.ts +51 -25
  453. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +1 -0
  454. package/src/app/shared/material/chips/chips.module.d.ts +2 -1
  455. package/src/app/shared/material/chips/material.chips.d.ts +46 -21
  456. package/src/app/shared/material/chips/testing/chips.test.d.ts +1 -0
  457. package/src/app/shared/material/datetime/datetime.module.d.ts +1 -1
  458. package/src/app/shared/material/datetime/material.date.d.ts +33 -18
  459. package/src/app/shared/material/datetime/material.dateshort.d.ts +29 -16
  460. package/src/app/shared/material/datetime/material.datetime.d.ts +41 -28
  461. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +3 -3
  462. package/src/app/shared/material/duration/duration.module.d.ts +1 -1
  463. package/src/app/shared/material/duration/material.duration.d.ts +1 -1
  464. package/src/app/shared/material/latlong/latlong.utils.d.ts +9 -1
  465. package/src/app/shared/material/latlong/material.latlong.d.ts +29 -32
  466. package/src/app/shared/material/latlong/material.latlong.module.d.ts +1 -1
  467. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +5 -1
  468. package/src/app/shared/material/material.config.d.ts +3 -0
  469. package/src/app/shared/material/material.module.d.ts +5 -6
  470. package/src/app/shared/material/material.testing.module.d.ts +8 -7
  471. package/src/app/shared/material/swipe/material.swipe.d.ts +4 -3
  472. package/src/app/shared/material/text/testing/text-form.testing.d.ts +10 -4
  473. package/src/app/shared/material/text/text-form.component.d.ts +42 -8
  474. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +30 -14
  475. package/src/app/shared/named-filter/named-filter.service.d.ts +12 -6
  476. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +34 -0
  477. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +10 -0
  478. package/src/app/shared/pipes/arrays.pipe.d.ts +5 -0
  479. package/src/app/shared/pipes/badge.pipes.d.ts +7 -0
  480. package/src/app/shared/pipes/date-format.pipe.d.ts +3 -2
  481. package/src/app/shared/pipes/form.pipes.d.ts +18 -8
  482. package/src/app/shared/pipes/html.pipes.d.ts +15 -0
  483. package/src/app/shared/pipes/maps.pipe.d.ts +4 -4
  484. package/src/app/shared/pipes/maskito.pipe.d.ts +7 -9
  485. package/src/app/shared/pipes/pipes.module.d.ts +7 -4
  486. package/src/app/shared/pipes/property.pipes.d.ts +24 -3
  487. package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
  488. package/src/app/shared/pipes/string.pipes.d.ts +6 -6
  489. package/src/app/shared/pipes/types.pipes.d.ts +6 -1
  490. package/src/app/shared/services/entity-service.class.d.ts +0 -2
  491. package/src/app/shared/services/memory-entity-service.class.d.ts +6 -3
  492. package/src/app/shared/services.d.ts +1 -0
  493. package/src/app/shared/shared.testing.module.d.ts +2 -1
  494. package/src/app/shared/storage/storage-explorer.component.d.ts +4 -3
  495. package/src/app/shared/testing/maskito.test.d.ts +10 -0
  496. package/src/app/shared/toolbar/toolbar.d.ts +7 -2
  497. package/src/app/shared/types.d.ts +5 -0
  498. package/src/app/shared/upload-file/upload-file.component.d.ts +1 -0
  499. package/src/app/shared/validator/form-error-adapter.class.d.ts +17 -11
  500. package/src/app/shared/validator/validators.d.ts +20 -9
  501. package/src/app/social/job/progression/job-progression.icon.d.ts +4 -5
  502. package/src/app/social/job/progression/job-progression.list.d.ts +1 -3
  503. package/src/app/social/job/progression/job-progression.service.d.ts +3 -4
  504. package/src/app/social/job/testing/job-progression.testing.d.ts +0 -1
  505. package/src/app/social/job/testing/job-progression.testing.service.d.ts +3 -11
  506. package/src/app/social/message/message.modal.d.ts +2 -2
  507. package/src/app/social/message/message.model.d.ts +1 -1
  508. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -4
  509. package/src/app/social/user-event/testing/user-event.testing.d.ts +1 -0
  510. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +2 -3
  511. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +1 -0
  512. package/src/assets/i18n/en-US.json +48 -19
  513. package/src/assets/i18n/en.json +48 -20
  514. package/src/assets/i18n/fr.json +50 -20
  515. package/src/assets/manifest.json +1 -1
  516. package/src/environments/environment.class.d.ts +10 -0
  517. package/src/environments/environment.d.ts +0 -1
  518. package/src/environments/environment.loader.d.ts +0 -2
  519. package/src/theme/_functions.scss +15 -0
  520. package/src/theme/_icons.scss +1 -1
  521. package/src/theme/_ionic.globals.scss +8 -2
  522. package/src/theme/_ionic.scss +10 -10
  523. package/src/theme/_material.globals.scss +16 -43
  524. package/src/theme/_material.scss +45 -32
  525. package/src/theme/_mixins.scss +99 -18
  526. package/src/theme/_ngx-components.forms.scss +354 -0
  527. package/src/theme/_ngx-components.globals.scss +20 -10
  528. package/src/theme/_ngx-components.scss +194 -400
  529. package/src/theme/_ngx-components.table.scss +200 -207
  530. package/src/theme/_ngx-components.tabs.scss +54 -0
  531. package/src/theme/_responsive.scss +0 -31
  532. package/src/theme/_theme.scss +2 -0
  533. package/src/theme/_theme.variables.scss +172 -0
  534. package/esm2022/src/app/core/table/actions-column.component.mjs +0 -115
  535. package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +0 -266
  536. package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -104
  537. package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +0 -83
  538. package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +0 -203
  539. package/esm2022/src/app/shared/material/numpad/numpad.content.mjs +0 -19
  540. package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +0 -168
  541. package/esm2022/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -36
  542. package/esm2022/src/app/shared/material/numpad/numpad.model.mjs +0 -16
  543. package/esm2022/src/app/shared/material/numpad/numpad.module.mjs +0 -60
  544. package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -48
  545. package/src/app/core/table/actions-column.component.d.ts +0 -48
  546. package/src/app/shared/material/boolean/material-boolean2.d.ts +0 -66
  547. package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +0 -22
  548. package/src/app/shared/material/numpad/numpad.component.d.ts +0 -26
  549. package/src/app/shared/material/numpad/numpad.container.d.ts +0 -40
  550. package/src/app/shared/material/numpad/numpad.content.d.ts +0 -7
  551. package/src/app/shared/material/numpad/numpad.directive.d.ts +0 -35
  552. package/src/app/shared/material/numpad/numpad.dom-service.d.ts +0 -16
  553. package/src/app/shared/material/numpad/numpad.model.d.ts +0 -30
  554. package/src/app/shared/material/numpad/numpad.module.d.ts +0 -16
  555. package/src/app/shared/material/numpad/testing/numpad.test.d.ts +0 -13
@@ -9,8 +9,7 @@ export class GeolocationUtils {
9
9
  if (!position || isNil(position.latitude) || isNil(position.longitude))
10
10
  return false;
11
11
  // Invalid lat/lon
12
- if (position.latitude < -90 || position.latitude > 90
13
- || position.longitude < -180 || position.longitude > 180) {
12
+ if (position.latitude < -90 || position.latitude > 90 || position.longitude < -180 || position.longitude > 180) {
14
13
  // /!\ Log in console, because should never occur
15
14
  if (opts?.debug)
16
15
  console.warn('Invalid lat/long position: ', position);
@@ -24,16 +23,17 @@ export class GeolocationUtils {
24
23
  }
25
24
  static computeDistanceInMiles(position1, position2) {
26
25
  // Invalid position(s): skip
27
- if (GeolocationUtils.isNilOrInvalid(position1, { debug: true })
28
- || GeolocationUtils.isNilOrInvalid(position2, { debug: true }))
26
+ if (GeolocationUtils.isNilOrInvalid(position1, { debug: true }) || GeolocationUtils.isNilOrInvalid(position2, { debug: true }))
29
27
  return;
30
- const latitude1Rad = Math.PI * position1.latitude / 180;
31
- const longitude1Rad = Math.PI * position1.longitude / 180;
32
- const latitude2Rad = Math.PI * position2.latitude / 180;
33
- const longitude2Rad = Math.PI * position2.longitude / 180;
34
- let distance = 2 * 6371 * Math.asin(Math.sqrt(Math.pow(Math.sin((latitude1Rad - latitude2Rad) / 2), 2)
35
- + Math.cos(latitude1Rad) * Math.cos(latitude2Rad) * Math.pow(Math.sin((longitude2Rad - longitude1Rad) / 2), 2)));
36
- distance = Math.round((((distance / 1.852) + Number.EPSILON) * 100)) / 100;
28
+ const latitude1Rad = (Math.PI * position1.latitude) / 180;
29
+ const longitude1Rad = (Math.PI * position1.longitude) / 180;
30
+ const latitude2Rad = (Math.PI * position2.latitude) / 180;
31
+ const longitude2Rad = (Math.PI * position2.longitude) / 180;
32
+ let distance = 2 *
33
+ 6371 *
34
+ Math.asin(Math.sqrt(Math.pow(Math.sin((latitude1Rad - latitude2Rad) / 2), 2) +
35
+ Math.cos(latitude1Rad) * Math.cos(latitude2Rad) * Math.pow(Math.sin((longitude2Rad - longitude1Rad) / 2), 2)));
36
+ distance = Math.round((distance / 1.852 + Number.EPSILON) * 100) / 100;
37
37
  return distance;
38
38
  }
39
39
  /**
@@ -46,7 +46,7 @@ export class GeolocationUtils {
46
46
  const pos = await Geolocation.getCurrentPosition(options);
47
47
  return {
48
48
  latitude: pos.coords.latitude,
49
- longitude: pos.coords.longitude
49
+ longitude: pos.coords.longitude,
50
50
  };
51
51
  }
52
52
  catch (err) {
@@ -68,7 +68,7 @@ export class GeolocationUtils {
68
68
  navigator.geolocation.getCurrentPosition((res) => {
69
69
  resolve({
70
70
  latitude: res.coords.latitude,
71
- longitude: res.coords.longitude
71
+ longitude: res.coords.longitude,
72
72
  });
73
73
  }, (err) => {
74
74
  let message = err?.message || err;
@@ -79,4 +79,4 @@ export class GeolocationUtils {
79
79
  });
80
80
  }
81
81
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24udXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFHL0QsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUVuQyxNQUFNLE9BQU8sU0FBUztJQUNwQixRQUFRLENBQVM7SUFDakIsU0FBUyxDQUFTO0NBQ25CO0FBRUQsTUFBTSxPQUFnQixnQkFBZ0I7SUFFcEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQW1CLEVBQUUsSUFBd0I7UUFFbkUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFckYsa0JBQWtCO1FBQ2xCLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsUUFBUSxHQUFHLEVBQUU7ZUFDaEQsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUUxRCxpREFBaUQ7WUFDakQsSUFBSSxJQUFJLEVBQUUsS0FBSztnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFtQixFQUFFLElBQXdCO1FBQ2pFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxTQUFvQixFQUFFLFNBQW9CO1FBQ3RFLDRCQUE0QjtRQUM1QixJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUM7ZUFDeEQsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztZQUFFLE9BQU87UUFFdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzFELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUUxRCxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ2pDLElBQUksQ0FBQyxJQUFJLENBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztjQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUMvRyxDQUFDLENBQUM7UUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBa0MsRUFBRSxPQUF5QjtRQUUzRix1QkFBdUI7UUFDdkIsSUFBSTtZQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkVBQTZFLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQy9HLE1BQU0sR0FBRyxHQUFhLE1BQU0sV0FBVyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE9BQWtCO2dCQUNoQixRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUM3QixTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2FBQ2hDLENBQUM7U0FDSDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osOEdBQThHO1lBQzlHLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5RUFBeUUsR0FBRyxFQUFFLE9BQU8sSUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUUzRyx5Q0FBeUM7Z0JBQ3pDLGlHQUFpRztnQkFDakcsTUFBTSxPQUFPLEdBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7b0JBQy9GLE1BQU0sRUFBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsTUFBTSxHQUFHLENBQUM7YUFDWDtTQUNGO1FBRUQsMkJBQTJCO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUksT0FBTyxDQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hELFNBQVMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDN0MsT0FBTyxDQUFZO29CQUNqQixRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRO29CQUM3QixTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2lCQUNoQyxDQUFDLENBQUM7WUFDTCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixJQUFJLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQztnQkFDbEMsT0FBTyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFFQUFxRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDLEVBQ0QsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlb2xvY2F0aW9uLCBQb3NpdGlvbiB9IGZyb20gJ0BjYXBhY2l0b3IvZ2VvbG9jYXRpb24nO1xuaW1wb3J0IHtQbGF0Zm9ybVNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge2lzTmlsfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgSVBvc2l0aW9uIHtcbiAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgbG9uZ2l0dWRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW9sb2NhdGlvblV0aWxzIHtcblxuICBzdGF0aWMgaXNOb3ROaWxBbmRWYWxpZChwb3NpdGlvbjogSVBvc2l0aW9uLCBvcHRzPzoge2RlYnVnPzogYm9vbGVhbn0pIHtcblxuICAgIGlmICghcG9zaXRpb24gfHwgaXNOaWwocG9zaXRpb24ubGF0aXR1ZGUpIHx8IGlzTmlsKHBvc2l0aW9uLmxvbmdpdHVkZSkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIEludmFsaWQgbGF0L2xvblxuICAgIGlmIChwb3NpdGlvbi5sYXRpdHVkZSA8IC05MCB8fCBwb3NpdGlvbi5sYXRpdHVkZSA+IDkwXG4gICAgICB8fCBwb3NpdGlvbi5sb25naXR1ZGUgPCAtMTgwIHx8IHBvc2l0aW9uLmxvbmdpdHVkZSA+IDE4MCkge1xuXG4gICAgICAvLyAvIVxcIExvZyBpbiBjb25zb2xlLCBiZWNhdXNlIHNob3VsZCBuZXZlciBvY2N1clxuICAgICAgaWYgKG9wdHM/LmRlYnVnKSBjb25zb2xlLndhcm4oJ0ludmFsaWQgbGF0L2xvbmcgcG9zaXRpb246ICAnLCBwb3NpdGlvbik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT0s6IHZhbGlkXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGF0aWMgaXNOaWxPckludmFsaWQocG9zaXRpb246IElQb3NpdGlvbiwgb3B0cz86IHtkZWJ1Zz86IGJvb2xlYW59KSB7XG4gICAgcmV0dXJuICFHZW9sb2NhdGlvblV0aWxzLmlzTm90TmlsQW5kVmFsaWQocG9zaXRpb24sIG9wdHMpO1xuICB9XG5cbiAgc3RhdGljIGNvbXB1dGVEaXN0YW5jZUluTWlsZXMocG9zaXRpb24xOiBJUG9zaXRpb24sIHBvc2l0aW9uMjogSVBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBJbnZhbGlkIHBvc2l0aW9uKHMpOiBza2lwXG4gICAgaWYgKEdlb2xvY2F0aW9uVXRpbHMuaXNOaWxPckludmFsaWQocG9zaXRpb24xLCB7ZGVidWc6IHRydWV9KVxuICAgICAgfHwgR2VvbG9jYXRpb25VdGlscy5pc05pbE9ySW52YWxpZChwb3NpdGlvbjIsIHtkZWJ1ZzogdHJ1ZX0pKSByZXR1cm47XG5cbiAgICBjb25zdCBsYXRpdHVkZTFSYWQgPSBNYXRoLlBJICogcG9zaXRpb24xLmxhdGl0dWRlIC8gMTgwO1xuICAgIGNvbnN0IGxvbmdpdHVkZTFSYWQgPSBNYXRoLlBJICogcG9zaXRpb24xLmxvbmdpdHVkZSAvIDE4MDtcbiAgICBjb25zdCBsYXRpdHVkZTJSYWQgPSBNYXRoLlBJICogcG9zaXRpb24yLmxhdGl0dWRlIC8gMTgwO1xuICAgIGNvbnN0IGxvbmdpdHVkZTJSYWQgPSBNYXRoLlBJICogcG9zaXRpb24yLmxvbmdpdHVkZSAvIDE4MDtcblxuICAgIGxldCBkaXN0YW5jZSA9IDIgKiA2MzcxICogTWF0aC5hc2luKFxuICAgICAgTWF0aC5zcXJ0KFxuICAgICAgICBNYXRoLnBvdyhNYXRoLnNpbigobGF0aXR1ZGUxUmFkIC0gbGF0aXR1ZGUyUmFkKSAvIDIpLCAyKVxuICAgICAgICArIE1hdGguY29zKGxhdGl0dWRlMVJhZCkgKiBNYXRoLmNvcyhsYXRpdHVkZTJSYWQpICogTWF0aC5wb3coTWF0aC5zaW4oKGxvbmdpdHVkZTJSYWQgLSBsb25naXR1ZGUxUmFkKSAvIDIpLCAyKVxuICAgICAgKSk7XG4gICAgZGlzdGFuY2UgPSBNYXRoLnJvdW5kKCgoKGRpc3RhbmNlIC8gMS44NTIpICsgTnVtYmVyLkVQU0lMT04pICogMTAwKSkgLyAxMDA7XG4gICAgcmV0dXJuIGRpc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcG9zaXRpb24gYnkgZ2VvIGxvYyBzZW5zb3JcbiAgICovXG4gIHN0YXRpYyBhc3luYyBnZXRDdXJyZW50UG9zaXRpb24ocGxhdGZvcm06IFBsYXRmb3JtU2VydmljZXxQbGF0Zm9ybSwgb3B0aW9ucz86IFBvc2l0aW9uT3B0aW9ucyk6IFByb21pc2U8SVBvc2l0aW9uPiB7XG5cbiAgICAvLyBVc2UgQ2FwYWNpdG9yIHBsdWdpblxuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmluZm8oYFtnZW9sb2NhdGlvbi11dGlsc10gR2V0IGN1cnJlbnQgZ2VvIGxvY2F0aW9uLCB1c2luZyBDYXBhY2l0b3IuLi4odGltZW91dDogJHtvcHRpb25zPy50aW1lb3V0fSlgKTtcbiAgICAgIGNvbnN0IHBvczogUG9zaXRpb24gPSBhd2FpdCBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ob3B0aW9ucyk7XG4gICAgICByZXR1cm4gPElQb3NpdGlvbj57XG4gICAgICAgIGxhdGl0dWRlOiBwb3MuY29vcmRzLmxhdGl0dWRlLFxuICAgICAgICBsb25naXR1ZGU6IHBvcy5jb29yZHMubG9uZ2l0dWRlXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSWYgY2FwYWNpdG9yIDogdGhyb3cgZXJyb3IgKGNhbm5vdCBmYWxsYmFjayB0byBicm93c2VyIGdlb2xvY2F0aW9uLCBiZWNhdXNlIG9mIGJyb3dzZXIgc2VjdXJpdHkgbGltaXRhdGlvbilcbiAgICAgIGlmIChwbGF0Zm9ybS5pcygnY2FwYWNpdG9yJykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW2dlb2xvY2F0aW9uLXV0aWxzXSBDYW5ub3QgZ2V0IGN1cnJlbnQgZ2VvIGxvY2F0aW9uLCB1c2luZyBDYXBhY2l0b3I6ICR7ZXJyPy5tZXNzYWdlfHwnJ31gKTtcblxuICAgICAgICAvLyBEZXRlY3QgYSBwZXJtaXNzaW9uIGVycm9yLCB0byBhZGQgY29kZVxuICAgICAgICAvLyBGSVhNRSAtIENhcGFjaXRvciB1c2UgaGFyZGNvZGVkIHN0cmluZ3MhIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lvbmljLXRlYW0vY2FwYWNpdG9yLXBsdWdpbnMpXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoKGVycj8ubWVzc2FnZSB8fCAnJykgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnbG9jYXRpb24gcGVybWlzc2lvbiB3YXMgZGVuaWVkJykgfHwgbWVzc2FnZS5pbmNsdWRlcygnbG9jYXRpb24gZGlzYWJsZWQnKSkge1xuICAgICAgICAgIHRocm93IHsuLi5lcnIsIGNvZGU6IEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvci5QRVJNSVNTSU9OX0RFTklFRH07XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE9yIGZhbGxiYWNrIHRvIG5hdmlnYXRvclxuICAgIGNvbnNvbGUuaW5mbygnW2dlb2xvY2F0aW9uLXV0aWxzXSBHZXQgY3VycmVudCBnZW8gbG9jYXRpb24sIHVzaW5nIGJyb3dzZXIuLi4nKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBvc2l0aW9uPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKChyZXMpID0+IHtcbiAgICAgICAgICByZXNvbHZlKDxJUG9zaXRpb24+e1xuICAgICAgICAgICAgbGF0aXR1ZGU6IHJlcy5jb29yZHMubGF0aXR1ZGUsXG4gICAgICAgICAgICBsb25naXR1ZGU6IHJlcy5jb29yZHMubG9uZ2l0dWRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IGVycj8ubWVzc2FnZSB8fCBlcnI7XG4gICAgICAgICAgbWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UgOiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbZ2VvbG9jYXRpb24tdXRpbHNdIENhbm5vdCBnZXQgY3VycmVudCBnZW8gbG9jYXRpb24sIHVzaW5nIGJyb3dzZXI6JyArIG1lc3NhZ2UpO1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24udXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFHL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLE9BQU8sU0FBUztJQUNwQixRQUFRLENBQVM7SUFDakIsU0FBUyxDQUFTO0NBQ25CO0FBRUQsTUFBTSxPQUFnQixnQkFBZ0I7SUFDcEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQW1CLEVBQUUsSUFBMEI7UUFDckUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFckYsa0JBQWtCO1FBQ2xCLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDL0csaURBQWlEO1lBQ2pELElBQUksSUFBSSxFQUFFLEtBQUs7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN4RSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFtQixFQUFFLElBQTBCO1FBQ25FLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFB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d0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyRSxDQUFDO2dCQUNELE1BQU0sR0FBRyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sSUFBSSxPQUFPLENBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDaEQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FDdEMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixPQUFPLENBQVk7b0JBQ2pCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVE7b0JBQzdCLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVM7aUJBQ2hDLENBQUMsQ0FBQztZQUNMLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNOLElBQUksT0FBTyxHQUFHLEdBQUcsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDO2dCQUNsQyxPQUFPLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUVBQXFFLEdBQUcsT0FBTyxDQUFDLENBQUM7Z0JBQy9GLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUMsRUFDRCxPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VvbG9jYXRpb24sIFBvc2l0aW9uIH0gZnJvbSAnQGNhcGFjaXRvci9nZW9sb2NhdGlvbic7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBJUG9zaXRpb24ge1xuICBsYXRpdHVkZTogbnVtYmVyO1xuICBsb25naXR1ZGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlb2xvY2F0aW9uVXRpbHMge1xuICBzdGF0aWMgaXNOb3ROaWxBbmRWYWxpZChwb3NpdGlvbjogSVBvc2l0aW9uLCBvcHRzPzogeyBkZWJ1Zz86IGJvb2xlYW4gfSkge1xuICAgIGlmICghcG9zaXRpb24gfHwgaXNOaWwocG9zaXRpb24ubGF0aXR1ZGUpIHx8IGlzTmlsKHBvc2l0aW9uLmxvbmdpdHVkZSkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIEludmFsaWQgbGF0L2xvblxuICAgIGlmIChwb3NpdGlvbi5sYXRpdHVkZSA8IC05MCB8fCBwb3NpdGlvbi5sYXRpdHVkZSA+IDkwIHx8IHBvc2l0aW9uLmxvbmdpdHVkZSA8IC0xODAgfHwgcG9zaXRpb24ubG9uZ2l0dWRlID4gMTgwKSB7XG4gICAgICAvLyAvIVxcIExvZyBpbiBjb25zb2xlLCBiZWNhdXNlIHNob3VsZCBuZXZlciBvY2N1clxuICAgICAgaWYgKG9wdHM/LmRlYnVnKSBjb25zb2xlLndhcm4oJ0ludmFsaWQgbGF0L2xvbmcgcG9zaXRpb246ICAnLCBwb3NpdGlvbik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT0s6IHZhbGlkXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGF0aWMgaXNOaWxPckludmFsaWQocG9zaXRpb246IElQb3NpdGlvbiwgb3B0cz86IHsgZGVidWc/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gIUdlb2xvY2F0aW9uVXRpbHMuaXNOb3ROaWxBbmRWYWxpZChwb3NpdGlvbiwgb3B0cyk7XG4gIH1cblxuICBzdGF0aWMgY29tcHV0ZURpc3RhbmNlSW5NaWxlcyhwb3NpdGlvbjE6IElQb3NpdGlvbiwgcG9zaXRpb24yOiBJUG9zaXRpb24pOiBudW1iZXIge1xuICAgIC8vIEludmFsaWQgcG9zaXRpb24ocyk6IHNraXBcbiAgICBpZiAoR2VvbG9jYXRpb25VdGlscy5pc05pbE9ySW52YWxpZChwb3NpdGlvbjEsIHsgZGVidWc6IHRydWUgfSkgfHwgR2VvbG9jYXRpb25VdGlscy5pc05pbE9ySW52YWxpZChwb3NpdGlvbjIsIHsgZGVidWc6IHRydWUgfSkpIHJldHVybjtcblxuICAgIGNvbnN0IGxhdGl0dWRlMVJhZCA9IChNYXRoLlBJICogcG9zaXRpb24xLmxhdGl0dWRlKSAvIDE4MDtcbiAgICBjb25zdCBsb25naXR1ZGUxUmFkID0gKE1hdGguUEkgKiBwb3NpdGlvbjEubG9uZ2l0dWRlKSAvIDE4MDtcbiAgICBjb25zdCBsYXRpdHVkZTJSYWQgPSAoTWF0aC5QSSAqIHBvc2l0aW9uMi5sYXRpdHVkZSkgLyAxODA7XG4gICAgY29uc3QgbG9uZ2l0dWRlMlJhZCA9IChNYXRoLlBJICogcG9zaXRpb24yLmxvbmdpdHVkZSkgLyAxODA7XG5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgMiAqXG4gICAgICA2MzcxICpcbiAgICAgIE1hdGguYXNpbihcbiAgICAgICAgTWF0aC5zcXJ0KFxuICAgICAgICAgIE1hdGgucG93KE1hdGguc2luKChsYXRpdHVkZTFSYWQgLSBsYXRpdHVkZTJSYWQpIC8gMiksIDIpICtcbiAgICAgICAgICAgIE1hdGguY29zKGxhdGl0dWRlMVJhZCkgKiBNYXRoLmNvcyhsYXRpdHVkZTJSYWQpICogTWF0aC5wb3coTWF0aC5zaW4oKGxvbmdpdHVkZTJSYWQgLSBsb25naXR1ZGUxUmFkKSAvIDIpLCAyKVxuICAgICAgICApXG4gICAgICApO1xuICAgIGRpc3RhbmNlID0gTWF0aC5yb3VuZCgoZGlzdGFuY2UgLyAxLjg1MiArIE51bWJlci5FUFNJTE9OKSAqIDEwMCkgLyAxMDA7XG4gICAgcmV0dXJuIGRpc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcG9zaXRpb24gYnkgZ2VvIGxvYyBzZW5zb3JcbiAgICovXG4gIHN0YXRpYyBhc3luYyBnZXRDdXJyZW50UG9zaXRpb24ocGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSB8IFBsYXRmb3JtLCBvcHRpb25zPzogUG9zaXRpb25PcHRpb25zKTogUHJvbWlzZTxJUG9zaXRpb24+IHtcbiAgICAvLyBVc2UgQ2FwYWNpdG9yIHBsdWdpblxuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmluZm8oYFtnZW9sb2NhdGlvbi11dGlsc10gR2V0IGN1cnJlbnQgZ2VvIGxvY2F0aW9uLCB1c2luZyBDYXBhY2l0b3IuLi4odGltZW91dDogJHtvcHRpb25zPy50aW1lb3V0fSlgKTtcbiAgICAgIGNvbnN0IHBvczogUG9zaXRpb24gPSBhd2FpdCBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ob3B0aW9ucyk7XG4gICAgICByZXR1cm4gPElQb3NpdGlvbj57XG4gICAgICAgIGxhdGl0dWRlOiBwb3MuY29vcmRzLmxhdGl0dWRlLFxuICAgICAgICBsb25naXR1ZGU6IHBvcy5jb29yZHMubG9uZ2l0dWRlLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIElmIGNhcGFjaXRvciA6IHRocm93IGVycm9yIChjYW5ub3QgZmFsbGJhY2sgdG8gYnJvd3NlciBnZW9sb2NhdGlvbiwgYmVjYXVzZSBvZiBicm93c2VyIHNlY3VyaXR5IGxpbWl0YXRpb24pXG4gICAgICBpZiAocGxhdGZvcm0uaXMoJ2NhcGFjaXRvcicpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtnZW9sb2NhdGlvbi11dGlsc10gQ2Fubm90IGdldCBjdXJyZW50IGdlbyBsb2NhdGlvbiwgdXNpbmcgQ2FwYWNpdG9yOiAke2Vycj8ubWVzc2FnZSB8fCAnJ31gKTtcblxuICAgICAgICAvLyBEZXRlY3QgYSBwZXJtaXNzaW9uIGVycm9yLCB0byBhZGQgY29kZVxuICAgICAgICAvLyBGSVhNRSAtIENhcGFjaXRvciB1c2UgaGFyZGNvZGVkIHN0cmluZ3MhIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2lvbmljLXRlYW0vY2FwYWNpdG9yLXBsdWdpbnMpXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoKGVycj8ubWVzc2FnZSB8fCAnJykgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnbG9jYXRpb24gcGVybWlzc2lvbiB3YXMgZGVuaWVkJykgfHwgbWVzc2FnZS5pbmNsdWRlcygnbG9jYXRpb24gZGlzYWJsZWQnKSkge1xuICAgICAgICAgIHRocm93IHsgLi4uZXJyLCBjb2RlOiBHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQgfTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3IgZmFsbGJhY2sgdG8gbmF2aWdhdG9yXG4gICAgY29uc29sZS5pbmZvKCdbZ2VvbG9jYXRpb24tdXRpbHNdIEdldCBjdXJyZW50IGdlbyBsb2NhdGlvbiwgdXNpbmcgYnJvd3Nlci4uLicpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUG9zaXRpb24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oXG4gICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICByZXNvbHZlKDxJUG9zaXRpb24+e1xuICAgICAgICAgICAgbGF0aXR1ZGU6IHJlcy5jb29yZHMubGF0aXR1ZGUsXG4gICAgICAgICAgICBsb25naXR1ZGU6IHJlcy5jb29yZHMubG9uZ2l0dWRlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSBlcnI/Lm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgICAgIG1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgPyBtZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkobWVzc2FnZSk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW2dlb2xvY2F0aW9uLXV0aWxzXSBDYW5ub3QgZ2V0IGN1cnJlbnQgZ2VvIGxvY2F0aW9uLCB1c2luZyBicm93c2VyOicgKyBtZXNzYWdlKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -12,19 +12,19 @@ export class AppGestureConfig extends HammerGestureConfig {
12
12
  // Override HammerJS default settings
13
13
  overrides = {
14
14
  press: {
15
- time: HAMMER_PRESS_TIME
15
+ time: HAMMER_PRESS_TIME,
16
16
  },
17
17
  pinch: {
18
- enable: false
18
+ enable: false,
19
19
  },
20
20
  rotate: {
21
- enable: false
21
+ enable: false,
22
22
  },
23
23
  // see https://hammerjs.github.io/recognizer-swipe/
24
24
  swipe: {
25
- threshold: 30,
26
- velocity: 0.4 //Minimal velocity required before recognizing, unit is in px per ms.
27
- }
25
+ threshold: 30, // Minimal distance required before recognizing.
26
+ velocity: 0.4, //Minimal velocity required before recognizing, unit is in px per ms.
27
+ },
28
28
  };
29
29
  buildHammer(element) {
30
30
  // DEBUG
@@ -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: "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' });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AppGestureConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AppGestureConfig, providedIn: 'root' });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AppGestureConfig, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AppGestureConfig, decorators: [{
43
43
  type: Injectable,
44
44
  args: [{ providedIn: 'root' }]
45
45
  }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9nZXN0dXJlL2dlc3R1cmUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBRTlELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLENBQUMsaURBQWlEO0FBQ3ZGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBRXZELHFDQUFxQztJQUNyQyxTQUFTLEdBQVE7UUFDZixLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsTUFBTSxFQUFFLEtBQUs7U0FDZDtRQUNELE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRCxtREFBbUQ7UUFDbkQsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLEVBQUU7WUFDYixRQUFRLEVBQUUsR0FBRyxDQUFFLHFFQUFxRTtTQUNyRjtLQUNGLENBQUM7SUFFRixXQUFXLENBQUMsT0FBb0I7UUFFOUIsUUFBUTtRQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLE1BQU0sRUFBRSxHQUFHLElBQVUsTUFBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QyxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEMsSUFBSSxTQUFTO2dCQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNqRTtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzt1R0FoQ1UsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FESixNQUFNOzsyRkFDbEIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hhbW1lckdlc3R1cmVDb25maWd9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5leHBvcnQgY29uc3QgSEFNTUVSX1RBUF9USU1FID0gMjUwO1xuZXhwb3J0IGNvbnN0IEhBTU1FUl9QUkVTU19USU1FID0gNDAwOyAvLyBJbmNyZWFzZSBuZWVkIGZvciBkb3VibGUgdGFwIChkZWZhdWx0OiAyNTEgbXMpXG4vKipcbiAqIEBoaWRkZW5cbiAqIFRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IEFuZ3VsYXIgZ2VzdHVyZSBjb25maWcuXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBcHBHZXN0dXJlQ29uZmlnIGV4dGVuZHMgSGFtbWVyR2VzdHVyZUNvbmZpZyB7XG5cbiAgLy8gT3ZlcnJpZGUgSGFtbWVySlMgZGVmYXVsdCBzZXR0aW5nc1xuICBvdmVycmlkZXMgPSA8YW55PntcbiAgICBwcmVzczoge1xuICAgICAgdGltZTogSEFNTUVSX1BSRVNTX1RJTUVcbiAgICB9LFxuICAgIHBpbmNoOiB7XG4gICAgICBlbmFibGU6IGZhbHNlXG4gICAgfSxcbiAgICByb3RhdGU6IHtcbiAgICAgIGVuYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2hhbW1lcmpzLmdpdGh1Yi5pby9yZWNvZ25pemVyLXN3aXBlL1xuICAgIHN3aXBlOiB7XG4gICAgICB0aHJlc2hvbGQ6IDMwLCAgLy8gTWluaW1hbCBkaXN0YW5jZSByZXF1aXJlZCBiZWZvcmUgcmVjb2duaXppbmcuXG4gICAgICB2ZWxvY2l0eTogMC40ICAvL01pbmltYWwgdmVsb2NpdHkgcmVxdWlyZWQgYmVmb3JlIHJlY29nbml6aW5nLCB1bml0IGlzIGluIHB4IHBlciBtcy5cbiAgICB9XG4gIH07XG5cbiAgYnVpbGRIYW1tZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblxuICAgIC8vIERFQlVHXG4gICAgY29uc29sZS5kZWJ1ZygnW2dlc3R1cmVdIEFwcGx5aW5nIEhhbW1lckpTIGNvbmZpZyB0byAnLCBlbGVtZW50LnRhZ05hbWUpO1xuXG4gICAgY29uc3QgbWMgPSBuZXcgKDxhbnk+d2luZG93KS5IYW1tZXIoZWxlbWVudCk7XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBpbiB0aGlzLm92ZXJyaWRlcykge1xuICAgICAgaWYgKGV2ZW50TmFtZSkgbWMuZ2V0KGV2ZW50TmFtZSkuc2V0KHRoaXMub3ZlcnJpZGVzW2V2ZW50TmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYztcbiAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9nZXN0dXJlL2dlc3R1cmUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRWhFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLENBQUMsaURBQWlEO0FBQ3ZGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBQ3ZELHFDQUFxQztJQUNyQyxTQUFTLEdBQVE7UUFDZixLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsTUFBTSxFQUFFLEtBQUs7U0FDZDtRQUNELE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRCxtREFBbUQ7UUFDbkQsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLEVBQUUsRUFBRSxnREFBZ0Q7WUFDL0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxxRUFBcUU7U0FDckY7S0FDRixDQUFDO0lBRUYsV0FBVyxDQUFDLE9BQW9CO1FBQzlCLFFBQVE7UUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RSxNQUFNLEVBQUUsR0FBRyxJQUFVLE1BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0MsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkMsSUFBSSxTQUFTO2dCQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO3VHQTlCVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGFtbWVyR2VzdHVyZUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5leHBvcnQgY29uc3QgSEFNTUVSX1RBUF9USU1FID0gMjUwO1xuZXhwb3J0IGNvbnN0IEhBTU1FUl9QUkVTU19USU1FID0gNDAwOyAvLyBJbmNyZWFzZSBuZWVkIGZvciBkb3VibGUgdGFwIChkZWZhdWx0OiAyNTEgbXMpXG4vKipcbiAqIEBoaWRkZW5cbiAqIFRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IEFuZ3VsYXIgZ2VzdHVyZSBjb25maWcuXG4gKlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFwcEdlc3R1cmVDb25maWcgZXh0ZW5kcyBIYW1tZXJHZXN0dXJlQ29uZmlnIHtcbiAgLy8gT3ZlcnJpZGUgSGFtbWVySlMgZGVmYXVsdCBzZXR0aW5nc1xuICBvdmVycmlkZXMgPSA8YW55PntcbiAgICBwcmVzczoge1xuICAgICAgdGltZTogSEFNTUVSX1BSRVNTX1RJTUUsXG4gICAgfSxcbiAgICBwaW5jaDoge1xuICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICB9LFxuICAgIHJvdGF0ZToge1xuICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2hhbW1lcmpzLmdpdGh1Yi5pby9yZWNvZ25pemVyLXN3aXBlL1xuICAgIHN3aXBlOiB7XG4gICAgICB0aHJlc2hvbGQ6IDMwLCAvLyBNaW5pbWFsIGRpc3RhbmNlIHJlcXVpcmVkIGJlZm9yZSByZWNvZ25pemluZy5cbiAgICAgIHZlbG9jaXR5OiAwLjQsIC8vTWluaW1hbCB2ZWxvY2l0eSByZXF1aXJlZCBiZWZvcmUgcmVjb2duaXppbmcsIHVuaXQgaXMgaW4gcHggcGVyIG1zLlxuICAgIH0sXG4gIH07XG5cbiAgYnVpbGRIYW1tZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBERUJVR1xuICAgIGNvbnNvbGUuZGVidWcoJ1tnZXN0dXJlXSBBcHBseWluZyBIYW1tZXJKUyBjb25maWcgdG8gJywgZWxlbWVudC50YWdOYW1lKTtcblxuICAgIGNvbnN0IG1jID0gbmV3ICg8YW55PndpbmRvdykuSGFtbWVyKGVsZW1lbnQpO1xuXG4gICAgZm9yIChjb25zdCBldmVudE5hbWUgaW4gdGhpcy5vdmVycmlkZXMpIHtcbiAgICAgIGlmIChldmVudE5hbWUpIG1jLmdldChldmVudE5hbWUpLnNldCh0aGlzLm92ZXJyaWRlc1tldmVudE5hbWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWM7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ2VzdHVyZS9oYW1tZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIHR5cGUgSGFtbWVyU3dpcGVBY3Rpb24gPSAnc3dpcGVsZWZ0JyB8ICdzd2lwZXJpZ2h0JztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIYW1tZXJTd2lwZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICB0eXBlOiBIYW1tZXJTd2lwZUFjdGlvbjtcbiAgcG9pbnRlclR5cGU/OiAndG91Y2gnIHwgYW55O1xuICBjZW50ZXI/OiB7eDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgZGlzdGFuY2U/OiBudW1iZXI7XG4gIHZlbG9jaXR5PzogbnVtYmVyO1xuICBzcmNFdmVudD86IEV2ZW50O1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSGFtbWVyVGFwRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIHRhcENvdW50PzogbnVtYmVyO1xuICBzcmNFdmVudD86IEV2ZW50O1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFtbWVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ2VzdHVyZS9oYW1tZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIHR5cGUgSGFtbWVyU3dpcGVBY3Rpb24gPSAnc3dpcGVsZWZ0JyB8ICdzd2lwZXJpZ2h0JztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIYW1tZXJTd2lwZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICB0eXBlOiBIYW1tZXJTd2lwZUFjdGlvbjtcbiAgcG9pbnRlclR5cGU/OiAndG91Y2gnIHwgYW55O1xuICBjZW50ZXI/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG4gIGRpc3RhbmNlPzogbnVtYmVyO1xuICB2ZWxvY2l0eT86IG51bWJlcjtcbiAgc3JjRXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEhhbW1lclRhcEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICB0YXBDb3VudD86IG51bWJlcjtcbiAgc3JjRXZlbnQ/OiBFdmVudDtcbn1cbiJdfQ==
@@ -6,34 +6,32 @@ export function rgbArrayToHex(rgb) {
6
6
  }
7
7
  export function hexToRgbArray(hex) {
8
8
  const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
9
- return result ? [
10
- parseInt(result[1], 16),
11
- parseInt(result[2], 16),
12
- parseInt(result[3], 16)
13
- ] : null;
9
+ return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : null;
14
10
  }
15
11
  export function hexToRgb(hex) {
16
12
  const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
17
- return result ? {
18
- r: parseInt(result[1], 16),
19
- g: parseInt(result[2], 16),
20
- b: parseInt(result[3], 16)
21
- } : null;
13
+ return result
14
+ ? {
15
+ r: parseInt(result[1], 16),
16
+ g: parseInt(result[2], 16),
17
+ b: parseInt(result[3], 16),
18
+ }
19
+ : null;
22
20
  }
23
21
  function componentToHex(c) {
24
22
  const hex = c.toString(16);
25
- return hex.length === 1 ? ('0' + hex) : hex;
23
+ return hex.length === 1 ? '0' + hex : hex;
26
24
  }
27
25
  // See mix in file ionic.functions.color.scss
28
26
  export function mixHex(color1, color2, weight) {
29
- weight = weight ? (weight / 100) : 0.5;
27
+ weight = weight ? weight / 100 : 0.5;
30
28
  const rgb1 = hexToRgbArray(color1);
31
29
  if (!rgb1)
32
30
  throw Error('Invalid hex color:' + color1);
33
31
  const rgb2 = hexToRgbArray(color2);
34
32
  if (!rgb2)
35
33
  throw Error('Invalid hex color:' + color2);
36
- const rgbAverage = rgb1.map((v, index) => Math.round((v * weight + rgb2[index] * (1 - weight))));
34
+ const rgbAverage = rgb1.map((v, index) => Math.round(v * weight + rgb2[index] * (1 - weight)));
37
35
  return rgbArrayToHex(rgbAverage);
38
36
  }
39
37
  // 12% darker version of the base color (mix with black)
@@ -55,10 +53,8 @@ export function getColorContrast(color, bw) {
55
53
  throw Error('Invalid hex color:' + color);
56
54
  if (bw === true) {
57
55
  // http://stackoverflow.com/a/3943023/112731
58
- return (rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114) > 186
59
- ? '#000000'
60
- : '#FFFFFF';
56
+ return rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114 > 186 ? '#000000' : '#FFFFFF';
61
57
  }
62
- return rgbArrayToHex(rgb.map(v => 255 - v));
58
+ return rgbArrayToHex(rgb.map((v) => 255 - v));
63
59
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvY29sb3JzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO0lBQ3RELE9BQU8sR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQWE7SUFDekMsT0FBTyxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVztJQUN2QyxNQUFNLE1BQU0sR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7S0FDeEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBVztJQUNsQyxNQUFNLE1BQU0sR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsT0FBTyxNQUFN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YlRvSGV4KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gJyMnICsgY29tcG9uZW50VG9IZXgocikgKyBjb21wb25lbnRUb0hleChnKSArIGNvbXBvbmVudFRvSGV4KGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiQXJyYXlUb0hleChyZ2I6IG51bWJlcltdKTogc3RyaW5nIHtcbiAgcmV0dXJuICcjJyArIGNvbXBvbmVudFRvSGV4KHJnYlswXSkgKyBjb21wb25lbnRUb0hleChyZ2JbMV0pICsgY29tcG9uZW50VG9IZXgocmdiWzJdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiQXJyYXkoaGV4OiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuICByZXR1cm4gcmVzdWx0ID8gW1xuICAgIHBhcnNlSW50KHJlc3VsdFsxXSwgMTYpLFxuICAgIHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpLFxuICAgIHBhcnNlSW50KHJlc3VsdFszXSwgMTYpXG4gIF0gOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiB7cjogbnVtYmVyOyBnOiBudW1iZXI7IGI6IG51bWJlcn0ge1xuICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcbiAgcmV0dXJuIHJlc3VsdCA/IHtcbiAgICByOiBwYXJzZUludChyZXN1bHRbMV0sIDE2KSxcbiAgICBnOiBwYXJzZUludChyZXN1bHRbMl0sIDE2KSxcbiAgICBiOiBwYXJzZUludChyZXN1bHRbM10sIDE2KVxuICB9IDogbnVsbDtcbn1cblxuZnVuY3Rpb24gY29tcG9uZW50VG9IZXgoYzogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgaGV4ID0gYy50b1N0cmluZygxNik7XG4gIHJldHVybiBoZXgubGVuZ3RoID09PSAxID8gKCcwJyArIGhleCkgOiBoZXg7XG59XG5cbi8vIFNlZSBtaXggaW4gZmlsZSBpb25pYy5mdW5jdGlvbnMuY29sb3Iuc2Nzc1xuZXhwb3J0IGZ1bmN0aW9uIG1peEhleChjb2xvcjE6IHN0cmluZywgY29sb3IyOiBzdHJpbmcsIHdlaWdodD86IG51bWJlcikge1xuXG4gIHdlaWdodCA9IHdlaWdodCA/ICh3ZWlnaHQgLyAxMDApIDogMC41O1xuXG4gIGNvbnN0IHJnYjEgPSBoZXhUb1JnYkFycmF5KGNvbG9yMSk7XG4gIGlmICghcmdiMSkgdGhyb3cgRXJyb3IoJ0ludmFsaWQgaGV4IGNvbG9yOicgKyBjb2xvcjEpO1xuXG4gIGNvbnN0IHJnYjIgPSBoZXhUb1JnYkFycmF5KGNvbG9yMik7XG4gIGlmICghcmdiMikgdGhyb3cgRXJyb3IoJ0ludmFsaWQgaGV4IGNvbG9yOicgKyBjb2xvcjIpO1xuXG4gIGNvbnN0IHJnYkF2ZXJhZ2UgPSByZ2IxLm1hcCgodiwgaW5kZXgpID0+IE1hdGgucm91bmQoKHYgKiB3ZWlnaHQgKyByZ2IyW2luZGV4XSAqICgxIC0gd2VpZ2h0KSkpICk7XG4gIHJldHVybiByZ2JBcnJheVRvSGV4KHJnYkF2ZXJhZ2UpO1xufVxuXG4vLyAxMiUgZGFya2VyIHZlcnNpb24gb2YgdGhlIGJhc2UgY29sb3IgKG1peCB3aXRoIGJsYWNrKVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yU2hhZGUoY29sb3I6IHN0cmluZykge1xuICByZXR1cm4gbWl4SGV4KCcjMDAwMDAwJywgY29sb3IsIDEyKTtcbn1cblxuLy8gMTAlIGxpZ2h0ZXIgdmVyc2lvbiBvZiB0aGUgYmFzZSBjb2xvciAobWl4IHdpdGggd2hpdGUpXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JUaW50KGNvbG9yOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG1peEhleCgnI2ZmZmZmZicsIGNvbG9yLCAxMCk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBjb2xvclxuICogQHBhcmFtIGJ3IGlmIHRydWUsIHdpbGwgdXNlIGJsYWNrIG9yIHdoaXRlIGNvbG9yLCBpbnN0ZWFkIG9mIHRoZSBleGFjdCBpbnZlcnNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvckNvbnRyYXN0KGNvbG9yOiBzdHJpbmcsIGJ3PzogYm9vbGVhbikge1xuICBjb25zdCByZ2IgPSBoZXhUb1JnYkFycmF5KGNvbG9yKTtcbiAgaWYgKCFyZ2IpIHRocm93IEVycm9yKCdJbnZhbGlkIGhleCBjb2xvcjonICsgY29sb3IpO1xuXG4gIGlmIChidyA9PT0gdHJ1ZSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5NDMwMjMvMTEyNzMxXG4gICAgcmV0dXJuIChyZ2JbMF0gKiAwLjI5OSArIHJnYlsxXSAqIDAuNTg3ICsgcmdiWzJdICogMC4xMTQpID4gMTg2XG4gICAgICA/ICcjMDAwMDAwJ1xuICAgICAgOiAnI0ZGRkZGRic7XG4gIH1cblxuICByZXR1cm4gcmdiQXJyYXlUb0hleChyZ2IubWFwKHYgPT4gMjU1IC0gdikpO1xufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvY29sb3JzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO0lBQ3RELE9BQU8sR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQWE7SUFDekMsT0FBTyxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVztJQUN2QyxNQUFNLE1BQU0sR0FBRywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3JHLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDbEMsTUFBTSxNQUFNLEdBQUcsMkNBQTJDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLE9BQU8sTUFBTTtR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ciwgYjogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuICcjJyArIGNvbXBvbmVudFRvSGV4KHIpICsgY29tcG9uZW50VG9IZXgoZykgKyBjb21wb25lbnRUb0hleChiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYkFycmF5VG9IZXgocmdiOiBudW1iZXJbXSk6IHN0cmluZyB7XG4gIHJldHVybiAnIycgKyBjb21wb25lbnRUb0hleChyZ2JbMF0pICsgY29tcG9uZW50VG9IZXgocmdiWzFdKSArIGNvbXBvbmVudFRvSGV4KHJnYlsyXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb1JnYkFycmF5KGhleDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcbiAgcmV0dXJuIHJlc3VsdCA/IFtwYXJzZUludChyZXN1bHRbMV0sIDE2KSwgcGFyc2VJbnQocmVzdWx0WzJdLCAxNiksIHBhcnNlSW50KHJlc3VsdFszXSwgMTYpXSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHsgcjogbnVtYmVyOyBnOiBudW1iZXI7IGI6IG51bWJlciB9IHtcbiAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gIHJldHVybiByZXN1bHRcbiAgICA/IHtcbiAgICAgICAgcjogcGFyc2VJbnQocmVzdWx0WzFdLCAxNiksXG4gICAgICAgIGc6IHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpLFxuICAgICAgICBiOiBwYXJzZUludChyZXN1bHRbM10sIDE2KSxcbiAgICAgIH1cbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGNvbXBvbmVudFRvSGV4KGM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGhleCA9IGMudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/ICcwJyArIGhleCA6IGhleDtcbn1cblxuLy8gU2VlIG1peCBpbiBmaWxlIGlvbmljLmZ1bmN0aW9ucy5jb2xvci5zY3NzXG5leHBvcnQgZnVuY3Rpb24gbWl4SGV4KGNvbG9yMTogc3RyaW5nLCBjb2xvcjI6IHN0cmluZywgd2VpZ2h0PzogbnVtYmVyKSB7XG4gIHdlaWdodCA9IHdlaWdodCA/IHdlaWdodCAvIDEwMCA6IDAuNTtcblxuICBjb25zdCByZ2IxID0gaGV4VG9SZ2JBcnJheShjb2xvcjEpO1xuICBpZiAoIXJnYjEpIHRocm93IEVycm9yKCdJbnZhbGlkIGhleCBjb2xvcjonICsgY29sb3IxKTtcblxuICBjb25zdCByZ2IyID0gaGV4VG9SZ2JBcnJheShjb2xvcjIpO1xuICBpZiAoIXJnYjIpIHRocm93IEVycm9yKCdJbnZhbGlkIGhleCBjb2xvcjonICsgY29sb3IyKTtcblxuICBjb25zdCByZ2JBdmVyYWdlID0gcmdiMS5tYXAoKHYsIGluZGV4KSA9PiBNYXRoLnJvdW5kKHYgKiB3ZWlnaHQgKyByZ2IyW2luZGV4XSAqICgxIC0gd2VpZ2h0KSkpO1xuICByZXR1cm4gcmdiQXJyYXlUb0hleChyZ2JBdmVyYWdlKTtcbn1cblxuLy8gMTIlIGRhcmtlciB2ZXJzaW9uIG9mIHRoZSBiYXNlIGNvbG9yIChtaXggd2l0aCBibGFjaylcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvclNoYWRlKGNvbG9yOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG1peEhleCgnIzAwMDAwMCcsIGNvbG9yLCAxMik7XG59XG5cbi8vIDEwJSBsaWdodGVyIHZlcnNpb24gb2YgdGhlIGJhc2UgY29sb3IgKG1peCB3aXRoIHdoaXRlKVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yVGludChjb2xvcjogc3RyaW5nKSB7XG4gIHJldHVybiBtaXhIZXgoJyNmZmZmZmYnLCBjb2xvciwgMTApO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gY29sb3JcbiAqIEBwYXJhbSBidyBpZiB0cnVlLCB3aWxsIHVzZSBibGFjayBvciB3aGl0ZSBjb2xvciwgaW5zdGVhZCBvZiB0aGUgZXhhY3QgaW52ZXJzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JDb250cmFzdChjb2xvcjogc3RyaW5nLCBidz86IGJvb2xlYW4pIHtcbiAgY29uc3QgcmdiID0gaGV4VG9SZ2JBcnJheShjb2xvcik7XG4gIGlmICghcmdiKSB0aHJvdyBFcnJvcignSW52YWxpZCBoZXggY29sb3I6JyArIGNvbG9yKTtcblxuICBpZiAoYncgPT09IHRydWUpIHtcbiAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTQzMDIzLzExMjczMVxuICAgIHJldHVybiByZ2JbMF0gKiAwLjI5OSArIHJnYlsxXSAqIDAuNTg3ICsgcmdiWzJdICogMC4xMTQgPiAxODYgPyAnIzAwMDAwMCcgOiAnI0ZGRkZGRic7XG4gIH1cblxuICByZXR1cm4gcmdiQXJyYXlUb0hleChyZ2IubWFwKCh2KSA9PiAyNTUgLSB2KSk7XG59XG4iXX0=
@@ -4,16 +4,16 @@ import { isNil, isNotNil } from '../functions';
4
4
  */
5
5
  const rgbArrayMap = {
6
6
  white: [255, 255, 255],
7
- primary: [20, 67, 145],
8
- secondary: [117, 196, 253],
9
- tertiary: [91, 94, 244],
10
- danger: [245, 61, 61],
11
- light: [244, 245, 248],
12
- medium: [152, 154, 162],
13
- dark: [34, 36, 40],
7
+ primary: [20, 67, 145], // ok
8
+ secondary: [117, 196, 253], // ok
9
+ tertiary: [91, 94, 244], // ok
10
+ danger: [245, 61, 61], // ok
11
+ light: [244, 245, 248], // ok
12
+ medium: [152, 154, 162], // ok
13
+ dark: [34, 36, 40], // ok
14
14
  red: [255, 0, 0],
15
15
  green: [0, 255, 0],
16
- blue: [0, 0, 255]
16
+ blue: [0, 0, 255],
17
17
  };
18
18
  // Fill a map of Color objects
19
19
  const colorsMap = {};
@@ -33,14 +33,10 @@ export class Color {
33
33
  if (!rgba || (!rgba.startsWith('rgb(') && !rgba.startsWith('rgba(')))
34
34
  return null;
35
35
  // Parse parts
36
- const parts = rgba
37
- .replace('rgb(', '')
38
- .replace('rgba(', '')
39
- .replace(')', '')
40
- .split(',');
36
+ const parts = rgba.replace('rgb(', '').replace('rgba(', '').replace(')', '').split(',');
41
37
  if (parts.length !== 3 && parts.length !== 4)
42
38
  return null;
43
- return new Color([+parts[0], +parts[1], +parts[2]], parts.length === 4 && +parts[3] || 1, 'custom');
39
+ return new Color([+parts[0], +parts[1], +parts[2]], (parts.length === 4 && +parts[3]) || 1, 'custom');
44
40
  }
45
41
  static transparent = function () {
46
42
  return new Color([0, 0, 0], 0, 'translucent');
@@ -87,18 +83,17 @@ export class ColorScale {
87
83
  startColor: options.startColor || undefined,
88
84
  mainColor: options.mainColor || undefined,
89
85
  mainColorIndex: isNotNil(options.mainColorIndex) ? options.mainColorIndex : undefined,
90
- endColor: options.endColor || undefined
86
+ endColor: options.endColor || undefined,
91
87
  }), options);
92
88
  };
93
89
  static default() {
94
90
  return ColorScale.custom(25);
95
91
  }
96
92
  /**
97
- * Create a array with the given color
93
+ * Create an array with the given color
98
94
  **/
99
95
  static fix(length, colorName) {
100
- return Array.apply(null, Array(length || 25))
101
- .map(String.prototype.valueOf, Color.get(colorName || 'primary').rgba(0.5));
96
+ return new Array(length || 25).fill(null).map(() => Color.get(colorName || 'primary').rgba(0.5));
102
97
  }
103
98
  _min;
104
99
  _max;
@@ -113,7 +108,7 @@ export class ColorScale {
113
108
  constructor(colorArray, options) {
114
109
  options = options || {};
115
110
  // reserved last colors for value > max
116
- const nbIntervalBeforeUpper = !options.upperMax ? colorArray.length : (colorArray.length - 1);
111
+ const nbIntervalBeforeUpper = !options.upperMax ? colorArray.length : colorArray.length - 1;
117
112
  this._min = options.min || 0;
118
113
  this._max = options.max || nbIntervalBeforeUpper;
119
114
  this._rangeSize = Math.round((this._max - this._min) / nbIntervalBeforeUpper);
@@ -121,7 +116,7 @@ export class ColorScale {
121
116
  }
122
117
  get legend() {
123
118
  return {
124
- items: this._legendItems
119
+ items: this._legendItems,
125
120
  };
126
121
  }
127
122
  getValueColor(value) {
@@ -132,7 +127,7 @@ export class ColorScale {
132
127
  return this._legendItems[0];
133
128
  if (value >= this._max)
134
129
  return this._legendItems[this._legendItems.length - 1];
135
- const index = Math.floor(value * (this._legendItems.length - 1) / this._max);
130
+ const index = Math.floor((value * (this._legendItems.length - 1)) / this._max);
136
131
  return this._legendItems[index];
137
132
  }
138
133
  getLegendAtIndex(index) {
@@ -144,14 +139,13 @@ export class ColorScale {
144
139
  const end = start + this._rangeSize;
145
140
  return {
146
141
  color: new Color(color),
147
- label: (end < this._max) ? `${start.toLocaleString()} - ${end.toLocaleString()}` : ` >= ${start}`
142
+ label: end < this._max ? `${start.toLocaleString()} - ${end.toLocaleString()}` : ` >= ${start}`,
148
143
  };
149
144
  });
150
145
  }
151
146
  }
152
147
  // Fill colorsMap
153
- Object.getOwnPropertyNames(rgbArrayMap)
154
- .forEach((key) => {
148
+ Object.getOwnPropertyNames(rgbArrayMap).forEach((key) => {
155
149
  colorsMap[key] = new Color(rgbArrayMap[key], 1, key);
156
150
  });
157
151
  /**
@@ -172,20 +166,20 @@ function linearColorGradientWithIntermediate(count, options) {
172
166
  if (!options.mainColor) {
173
167
  return linearColorGradient(count, {
174
168
  startColor: options.startColor,
175
- endColor: options.endColor
169
+ endColor: options.endColor,
176
170
  });
177
171
  }
178
172
  else {
179
173
  // Step 1: startColor -> mainColor
180
174
  const result = linearColorGradient(options.mainColorIndex + 1, {
181
175
  startColor: options.startColor,
182
- endColor: options.mainColor
176
+ endColor: options.mainColor,
183
177
  });
184
178
  // Step 2: mainColor -> endColor
185
179
  if (options.mainColorIndex < count - 1) {
186
180
  return result.concat(linearColorGradient(count - options.mainColorIndex, {
187
181
  startColor: options.mainColor,
188
- endColor: options.endColor
182
+ endColor: options.endColor,
189
183
  }));
190
184
  }
191
185
  else {
@@ -203,7 +197,7 @@ function linearColorGradient(count, options) {
203
197
  const delta = [
204
198
  Math.round((options.endColor[0] - options.startColor[0]) / count),
205
199
  Math.round((options.endColor[1] - options.startColor[1]) / count),
206
- Math.round((options.endColor[2] - options.startColor[2]) / count)
200
+ Math.round((options.endColor[2] - options.startColor[2]) / count),
207
201
  ];
208
202
  for (let i = 0; i < count - 1; i++) {
209
203
  for (let j = 0; j < 3; j++) {
@@ -216,4 +210,4 @@ function linearColorGradient(count, options) {
216
210
  // Output as array
217
211
  return result;
218
212
  }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvZ3JhcGgtY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBVTdDOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUc7SUFDbEIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDdEIsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDdkIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDckIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdkIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEIsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7Q0FDbEIsQ0FBQztBQUVGLDhCQUE4QjtBQUM5QixNQUFNLFNBQVMsR0FBNkIsRUFBRSxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsV0FBVztBQUNYLE1BQU0sT0FBTyxLQUFLO0lBNkJOO0lBQ0E7SUFD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QUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDbEUsQ0FBQztJQUVGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDNUI7SUFFRCwrQkFBK0I7SUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFdEMsa0JBQWtCO0lBQ2xCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1ByZWRlZmluZWRDb2xvcnN9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7aXNOaWwsIGlzTm90TmlsfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtoZXhUb1JnYiwgaGV4VG9SZ2JBcnJheSwgcmdiQXJyYXlUb0hleH0gZnJvbSAnLi9jb2xvcnMudXRpbHMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIENvbG9yTmFtZSA9IFByZWRlZmluZWRDb2xvcnMgfFxuICAnd2hpdGUnXG4gIHwgJ3JlZCdcbiAgfCAnZ3JlZW4nXG4gIHwgJ2JsdWUnO1xuXG5cbi8qKlxuICogRGVmaW5lIGhlcmUgdGhlbWUgY29sb3JzXG4gKi9cbmNvbnN0IHJnYkFycmF5TWFwID0ge1xuICB3aGl0ZTogWzI1NSwgMjU1LCAyNTVdLFxuICBwcmltYXJ5OiBbMjAsIDY3LCAxNDVdLCAvLyBva1xuICBzZWNvbmRhcnk6IFsxMTcsIDE5NiwgMjUzXSwgLy8gb2tcbiAgdGVydGlhcnk6IFs5MSwgOTQsIDI0NF0sIC8vIG9rXG4gIGRhbmdlcjogWzI0NSwgNjEsIDYxXSwgLy8gb2tcbiAgbGlnaHQ6IFsyNDQsIDI0NSwgMjQ4XSwgLy8gb2tcbiAgbWVkaXVtOiBbMTUyLCAxNTQsIDE2Ml0sIC8vIG9rXG4gIGRhcms6IFszNCwgMzYsIDQwXSwgLy8gb2tcbiAgcmVkOiBbMjU1LCAwLCAwXSxcbiAgZ3JlZW46IFswLCAyNTUsIDBdLFxuICBibHVlOiBbMCwgMCwgMjU1XVxufTtcblxuLy8gRmlsbCBhIG1hcCBvZiBDb2xvciBvYmplY3RzXG5jb25zdCBjb2xvcnNNYXA6IHsgW2tleTogc3RyaW5nXTogQ29sb3IgfSA9IHt9O1xuXG5cbi8qKlxuICogVXNlZnVsIGNsYXNzIGZvciBjb2xvciBjb252ZXJzaW9uXG4gKi9cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQ29sb3Ige1xuXG4gIC8vIEhlbHBlciBtZXRob2QsIHRvIHJldHJpZXZlIGEgY29sb3JcbiAgc3RhdGljIGdldChuYW1lOiBDb2xvck5hbWUpOiBDb2xvciB7XG4gICAgcmV0dXJuIGNvbG9yc01hcFtuYW1lXSBhcyBDb2xvcjtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZVJnYmEocmdiYTogc3RyaW5nKTogQ29sb3J8bnVsbHtcbiAgICAgIGlmICghcmdiYSB8fCAoIXJnYmEuc3RhcnRzV2l0aCgncmdiKCcpICYmICFyZ2JhLnN0YXJ0c1dpdGgoJ3JnYmEoJykpKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gUGFyc2UgcGFydHNcbiAgICAgIGNvbnN0IHBhcnRzID0gcmdiYVxuICAgICAgICAucmVwbGFjZSgncmdiKCcsICcnKVxuICAgICAgICAucmVwbGFjZSgncmdiYSgnLCAnJylcbiAgICAgICAgLnJlcGxhY2UoJyknLCAnJylcbiAgICAgICAgLnNwbGl0KCcsJyk7XG5cbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMgJiYgcGFydHMubGVuZ3RoICE9PSA0KSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIG5ldyBDb2xvcihbK3BhcnRzWzBdLCArcGFydHNbMV0sICtwYXJ0c1syXV0sXG4gICAgICAgIHBhcnRzLmxlbmd0aCA9PT0gNCAmJiArcGFydHNbM10gfHwgMSxcbiAgICAgICAgJ2N1c3RvbScpO1xuICB9XG5cbiAgc3RhdGljIHRyYW5zcGFyZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBDb2xvcihbMCwwLDBdLCAwLCAndHJhbnNsdWNlbnQnKTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZ2JBcnJheTogbnVtYmVyW10sXG4gICAgcHJpdmF0ZSBfb3BhY2l0eT86IG51bWJlcixcbiAgICBwcml2YXRlIF9uYW1lOiBzdHJpbmcgPSAnY3VzdG9tJ1xuICApIHtcbiAgfVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIGdldCBvcGFjaXR5KCk6IG51bWJlcntcbiAgICByZXR1cm4gaXNOb3ROaWwodGhpcy5fb3BhY2l0eSkgPyB0aGlzLl9vcGFjaXR5IDogMTtcbiAgfVxuICBnZXQgcmdiKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fcmdiQXJyYXk7XG4gIH1cblxuICBnZXQgcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZ2JBcnJheVswXTtcbiAgfVxuXG4gIGdldCBnKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JnYkFycmF5WzFdO1xuICB9XG5cbiAgZ2V0IGIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmdiQXJyYXlbMl07XG4gIH1cblxuICByZ2JhKG9wYWNpdHk/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIG9wYWNpdHkgPSBpc05vdE5pbChvcGFjaXR5KSA/IG9wYWNpdHkgOiB0aGlzLl9vcGFjaXR5O1xuICAgIGlmIChpc05pbChvcGFjaXR5KSB8fCBvcGFjaXR5IDwgMCB8fCBvcGFjaXR5ID4gMSkge1xuICAgICAgcmV0dXJuICdyZ2IoJyArIHRoaXMuX3JnYkFycmF5LmpvaW4oJywnKSArICcpJztcbiAgICB9XG4gICAgcmV0dXJuICdyZ2JhKCcgKyB0aGlzLl9yZ2JBcnJheS5qb2luKCcsJykgKyAnLCcgKyBvcGFjaXR5ICsgJyknO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbG9yR3JhZGllbnRPcHRpb25zIHtcbiAgc3RhcnRDb2xvcj86IG51bWJlcltdO1xuICBtYWluQ29sb3I/OiBudW1iZXJbXTtcbiAgbWFpbkNvbG9ySW5kZXg/OiBudW1iZXI7XG4gIGVuZENvbG9yPzogbnVtYmVyW107XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2xvclNjYWxlT3B0aW9ucyBleHRlbmRzIENvbG9yR3JhZGllbnRPcHRpb25zIHtcbiAgb3BhY2l0eT86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHVwcGVyTWF4PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbG9yU2NhbGVMZWdlbmRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZ3xudW1iZXJbXTtcbiAgY29sb3I6IENvbG9yO1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29sb3JTY2FsZUxlZ2VuZCB7XG4gIGl0ZW1zOiBDb2xvclNjYWxlTGVnZW5kSXRlbVtdO1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3IgY29sb3JzIHNjYWxlXG4gKi9cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQ29sb3JTY2FsZSB7XG5cbiAgc3RhdGljIGN1c3RvbSA9IChjb3VudDogbnVtYmVyLCBvcHRpb25zPzogQ29sb3JTY2FsZU9wdGlvbnMpID0+IHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICByZXR1cm4gbmV3IENvbG9yU2NhbGUoXG4gICAgICBsaW5lYXJDb2xvckdyYWRpZW50V2l0aEludGVybWVkaWF0ZShjb3VudCwge1xuICAgICAgICBzdGFydENvbG9yOiBvcHRpb25zLnN0YXJ0Q29sb3IgfHwgdW5kZWZpbmVkLFxuICAgICAgICBtYWluQ29sb3I6IG9wdGlvbnMubWFpbkNvbG9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbWFpbkNvbG9ySW5kZXg6IGlzTm90TmlsKG9wdGlvbnMubWFpbkNvbG9ySW5kZXgpID8gb3B0aW9ucy5tYWluQ29sb3JJbmRleCA6IHVuZGVmaW5lZCxcbiAgICAgICAgZW5kQ29sb3I6IG9wdGlvbnMuZW5kQ29sb3IgfHwgdW5kZWZpbmVkXG4gICAgICB9KSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0KCkge1xuICAgIHJldHVybiBDb2xvclNjYWxlLmN1c3RvbSgyNSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gY29sb3JcbiAgICoqL1xuICBzdGF0aWMgZml4KGxlbmd0aD86IG51bWJlciwgY29sb3JOYW1lPzogQ29sb3JOYW1lKTogYW55W10ge1xuICAgIHJldHVybiBBcnJheS5hcHBseShudWxsLCBBcnJheShsZW5ndGggfHwgMjUpKVxuICAgICAgLm1hcChTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YsIENvbG9yLmdldChjb2xvck5hbWUgfHwgJ3ByaW1hcnknKS5yZ2JhKDAuNSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWluOiBudW1iZXI7XG4gIHByaXZhdGUgX21heDogbnVtYmVyO1xuICBwcml2YXRlIF9yYW5nZVNpemU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbGVnZW5kSXRlbXM6IENvbG9yU2NhbGVMZWdlbmRJdGVtW107XG5cbiAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW47XG4gIH1cbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXg7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb2xvckFycmF5OiBudW1iZXJbXVtdLCBvcHRpb25zPzogQ29sb3JTY2FsZU9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAvLyByZXNlcnZlZCBsYXN0IGNvbG9ycyBmb3IgdmFsdWUgPiBtYXhcbiAgICBjb25zdCBuYkludGVydmFsQmVmb3JlVXBwZXIgPSAhb3B0aW9ucy51cHBlck1heCA/IGNvbG9yQXJyYXkubGVuZ3RoIDogKGNvbG9yQXJyYXkubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5fbWluID0gb3B0aW9ucy5taW4gfHwgMDtcbiAgICB0aGlzLl9tYXggPSBvcHRpb25zLm1heCB8fCBuYkludGVydmFsQmVmb3JlVXBwZXI7XG4gICAgdGhpcy5fcmFuZ2VTaXplID0gTWF0aC5yb3VuZCgodGhpcy5fbWF4IC0gdGhpcy5fbWluKSAvIG5iSW50ZXJ2YWxCZWZvcmVVcHBlcik7XG4gICAgdGhpcy5fbGVnZW5kSXRlbXMgPSB0aGlzLmNvbXB1dGVMZWdlbmRJdGVtcyhjb2xvckFycmF5KTtcbiAgfVxuXG4gIGdldCBsZWdlbmQoKTogQ29sb3JTY2FsZUxlZ2VuZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiB0aGlzLl9sZWdlbmRJdGVtc1xuICAgIH07XG4gIH1cblxuICBnZXRWYWx1ZUNvbG9yKHZhbHVlOiBudW1iZXIpOiBDb2xvciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGVnZW5kRm9yVmFsdWUodmFsdWUpLmNvbG9yO1xuICB9XG5cbiAgZ2V0TGVnZW5kRm9yVmFsdWUodmFsdWU6IG51bWJlcik6IENvbG9yU2NhbGVMZWdlbmRJdGVtIHtcbiAgICBpZiAodmFsdWUgPD0gdGhpcy5fbWluKSByZXR1cm4gdGhpcy5fbGVnZW5kSXRlbXNbMF07XG4gICAgaWYgKHZhbHVlID49IHRoaXMuX21heCkgcmV0dXJuIHRoaXMuX2xlZ2VuZEl0ZW1zW3RoaXMuX2xlZ2VuZEl0ZW1zLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcih2YWx1ZSAqICh0aGlzLl9sZWdlbmRJdGVtcy5sZW5ndGggLSAxKSAvIHRoaXMuX21heCk7XG4gICAgcmV0dXJuIHRoaXMuX2xlZ2VuZEl0ZW1zW2luZGV4XTtcbiAgfVxuXG4gIGdldExlZ2VuZEF0SW5kZXgoaW5kZXg6IG51bWJlcik6IENvbG9yU2NhbGVMZWdlbmRJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5fbGVnZW5kSXRlbXNbaW5kZXhdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVMZWdlbmRJdGVtcyhjb2xvckFycmF5OiBudW1iZXJbXVtdKTogQ29sb3JTY2FsZUxlZ2VuZEl0ZW1bXSB7XG4gICAgcmV0dXJuIGNvbG9yQXJyYXkubWFwKChjb2xvciwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiB0aGlzLl9yYW5nZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMuX3JhbmdlU2l6ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBuZXcgQ29sb3IoY29sb3IpLFxuICAgICAgICBsYWJlbDogKGVuZCA8IHRoaXMuX21heCkgPyBgJHtzdGFydC50b0xvY2FsZVN0cmluZygpfSAtICR7ZW5kLnRvTG9jYWxlU3RyaW5nKCl9YCA6IGAgPj0gJHtzdGFydH1gXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG5cblxuLy8gRmlsbCBjb2xvcnNNYXBcbk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJnYkFycmF5TWFwKVxuICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29sb3JzTWFwW2tleV0gPSBuZXcgQ29sb3IocmdiQXJyYXlNYXBba2V5XSwgMSwga2V5KTtcbiAgfSk7XG5cblxuLyoqXG4gKiBJbnRlcm5hbCBmdW5jdGlvbiwgdGhhdCBjcmVhdGUgYSBjb2xvcnMgc2NhbGUsIHVzaW5nIGl0ZXJhdGlvblxuICpcbiAqIEBwYXJhbSBjb3VudFxuICogQHBhcmFtIG9wYWNpdHlcbiAqIEBwYXJhbSBzdGFydENvbG9yXG4gKiBAcGFyYW0gc3RhcnRTdGF0ZVxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gbGluZWFyQ29sb3JHcmFkaWVudFdpdGhJbnRlcm1lZGlhdGUoY291bnQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBDb2xvckdyYWRpZW50T3B0aW9ucyk6IG51bWJlcltdW10ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBGcm9tIFswLDFdXG4gIG9wdGlvbnMuc3RhcnRDb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvciB8fCBbMjU1LCAyNTUsIDE5MF07IC8vIGRlZmF1bHQgc3RhcnQgPSBjcmVtZVxuICBvcHRpb25zLm1haW5Db2xvckluZGV4ID0gb3B0aW9ucy5tYWluQ29sb3JJbmRleCAmJiBvcHRpb25zLm1haW5Db2xvckluZGV4IDwgY291bnQgLSAxID8gb3B0aW9ucy5tYWluQ29sb3JJbmRleCA6IGNvdW50IC0gMTtcbiAgb3B0aW9ucy5lbmRDb2xvciA9IG9wdGlvbnMuZW5kQ29sb3IgfHwgWzI1NSwgMCwgMF07IC8vIGRlZmF1bHQgbWFpbiA9IHJlZFxuXG4gIGlmICghb3B0aW9ucy5tYWluQ29sb3IpIHtcbiAgICByZXR1cm4gbGluZWFyQ29sb3JHcmFkaWVudChjb3VudCwge1xuICAgICAgc3RhcnRDb2xvcjogb3B0aW9ucy5zdGFydENvbG9yLFxuICAgICAgZW5kQ29sb3I6IG9wdGlvbnMuZW5kQ29sb3JcbiAgICB9KTtcbiAgfVxuXG4gIGVsc2Uge1xuICAgIC8vIFN0ZXAgMTogc3RhcnRDb2xvciAtPiBtYWluQ29sb3JcbiAgICBjb25zdCByZXN1bHQgPSBsaW5lYXJDb2xvckdyYWRpZW50KG9wdGlvbnMubWFpbkNvbG9ySW5kZXggKyAxLCB7XG4gICAgICBzdGFydENvbG9yOiBvcHRpb25zLnN0YXJ0Q29sb3IsXG4gICAgICBlbmRDb2xvcjogb3B0aW9ucy5tYWluQ29sb3JcbiAgICB9KTtcblxuICAgIC8vIFN0ZXAgMjogbWFpbkNvbG9yIC0+IGVuZENvbG9yXG4gICAgaWYgKG9wdGlvbnMubWFpbkNvbG9ySW5kZXggPCBjb3VudCAtIDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KFxuICAgICAgICBsaW5lYXJDb2xvckdyYWRpZW50KGNvdW50IC0gb3B0aW9ucy5tYWluQ29sb3JJbmRleCwge1xuICAgICAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMubWFpbkNvbG9yLFxuICAgICAgICAgIGVuZENvbG9yOiBvcHRpb25zLmVuZENvbG9yXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsaW5lYXJDb2xvckdyYWRpZW50KGNvdW50OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBDb2xvckdyYWRpZW50T3B0aW9ucyk6IGFueVtdIHtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBGcm9tIFswLDFdXG4gIG9wdGlvbnMuc3RhcnRDb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvciB8fCBbMjU1LCAyNTUsIDI1NV07IC8vIGRlZmF1bHQgc3RhcnQgPSB3aGl0ZVxuICBvcHRpb25zLmVuZENvbG9yID0gb3B0aW9ucy5lbmRDb2xvciB8fCBbMjU1LCAwLCAwXTsgLy8gZGVmYXVsdCBlbmQgPSByZWRcblxuICBjb25zdCByZXN1bHQ6IG51bWJlcltdW10gPSBbXTtcbiAgY29uc3QgY29sb3IgPSBvcHRpb25zLnN0YXJ0Q29sb3Iuc2xpY2UoKTsgLy8gY29weSB0aGUgc3RhcnQgY29sb3JcbiAgY29uc3QgZGVsdGEgPSBbXG4gICAgTWF0aC5yb3VuZCgob3B0aW9ucy5lbmRDb2xvclswXSAtIG9wdGlvbnMuc3RhcnRDb2xvclswXSkgLyBjb3VudCksXG4gICAgTWF0aC5yb3VuZCgob3B0aW9ucy5lbmRDb2xvclsxXSAtIG9wdGlvbnMuc3RhcnRDb2xvclsxXSkgLyBjb3VudCksXG4gICAgTWF0aC5yb3VuZCgob3B0aW9ucy5lbmRDb2xvclsyXSAtIG9wdGlvbnMuc3RhcnRDb2xvclsyXSkgLyBjb3VudClcbiAgXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgIGNvbG9yW2pdICs9IGRlbHRhW2pdO1xuICAgIH1cbiAgICByZXN1bHQucHVzaChjb2xvci5zbGljZSgpKTtcbiAgfVxuXG4gIC8vIEZvcmNlIGxhc3QgY29sb3IgPSBlbmQgY29sb3JcbiAgcmVzdWx0LnB1c2gob3B0aW9ucy5lbmRDb2xvci5zbGljZSgpKTtcblxuICAvLyBPdXRwdXQgYXMgYXJyYXlcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvZ3JhcGgtY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSS9DOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUc7SUFDbEIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQzdCLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUNqQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDOUIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLO0lBQzVCLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSztJQUM3QixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDOUIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0NBQ2xCLENBQUM7QUFFRiw4QkFBOEI7QUFDOUIsTUFBTSxTQUFTLEdBQTZCLEVBQUUsQ0FBQztBQUUvQzs7R0FFRztBQUNILFdBQVc7QUFDWCxNQUFNLE9BQU8sS0FBSztJQXNCTjtJQUNBO0lBQ0E7SUF2QlYscUNBQXFDO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBZTtRQUN4QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEYsY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEYsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxRCxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxHQUFHO1FBQ25CLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUM7SUFFRixZQUNVLFNBQW1CLEVBQ25CLFFBQWlCLEVBQ2pCLFFBQWdCLFFBQVE7UUFGeEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQW1CO0lBQy9CLENBQUM7SUFDSixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFnQjtRQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNsRSxDQUFDOztBQTBCSDs7R0FFRztBQUNILFdBQVc7QUFDWCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBYSxFQUFFLE9BQTJCLEVBQUUsRUFBRTtRQUM3RCxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksVUFBVSxDQUNuQixtQ0FBbUMsQ0FBQyxLQUFLLEVBQUU7WUFDekMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksU0FBUztZQUMzQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTO1lBQ3pDLGNBQWMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3JGLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLFNBQVM7U0FDeEMsQ0FBQyxFQUNGLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztRQUVJO0lBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFlLEVBQUUsU0FBcUI7UUFDL0MsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU8sSUFBSSxDQUFTO0lBQ2IsSUFBSSxDQUFTO0lBQ2IsVUFBVSxDQUFTO0lBQ25CLFlBQVksQ0FBeUI7SUFFN0MsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksVUFBc0IsRUFBRSxPQUEyQjtRQUM3RCxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4Qix1Q0FBdUM7UUFDdkMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLHFCQUFxQixDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0MsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9FLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGtCQUFrQixDQUFDLFVBQXNCO1FBQ2pELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN0QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNwQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLEtBQUssRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFO2FBQ2hHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBR0gsaUJBQWlCO0FBQ2pCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxtQ0FBbUMsQ0FBQyxLQUFhLEVBQUUsT0FBOEI7SUFDeEYsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFFeEIsYUFBYTtJQUNiLE9BQU8sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7SUFDcEYsT0FBTyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUMzSCxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO0lBRXpFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkIsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7WUFDaEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1lBQzlCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNOLGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRTtZQUM3RCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxTQUFTO1NBQzVCLENBQUMsQ0FBQztRQUVILGdDQUFnQztRQUNoQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsbUJBQW1CLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUU7Z0JBQ2xELFVBQVUsRUFBRSxPQUFPLENBQUMsU0FBUztnQkFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2FBQzNCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQWEsRUFBRSxPQUE4QjtJQUN4RSxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUV4QixhQUFhO0lBQ2IsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUNwRixPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0lBRXhFLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztJQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsdUJBQXVCO0lBQ2pFLE1BQU0sS0FBSyxHQUFHO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDbEUsQ0FBQztJQUVGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELCtCQUErQjtJQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV0QyxrQkFBa0I7SUFDbEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZWRlZmluZWRDb2xvcnMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIENvbG9yTmFtZSA9IFByZWRlZmluZWRDb2xvcnMgfCAnd2hpdGUnIHwgJ3JlZCcgfCAnZ3JlZW4nIHwgJ2JsdWUnO1xuXG4vKipcbiAqIERlZmluZSBoZXJlIHRoZW1lIGNvbG9yc1xuICovXG5jb25zdCByZ2JBcnJheU1hcCA9IHtcbiAgd2hpdGU6IFsyNTUsIDI1NSwgMjU1XSxcbiAgcHJpbWFyeTogWzIwLCA2NywgMTQ1XSwgLy8gb2tcbiAgc2Vjb25kYXJ5OiBbMTE3LCAxOTYsIDI1M10sIC8vIG9rXG4gIHRlcnRpYXJ5OiBbOTEsIDk0LCAyNDRdLCAvLyBva1xuICBkYW5nZXI6IFsyNDUsIDYxLCA2MV0sIC8vIG9rXG4gIGxpZ2h0OiBbMjQ0LCAyNDUsIDI0OF0sIC8vIG9rXG4gIG1lZGl1bTogWzE1MiwgMTU0LCAxNjJdLCAvLyBva1xuICBkYXJrOiBbMzQsIDM2LCA0MF0sIC8vIG9rXG4gIHJlZDogWzI1NSwgMCwgMF0sXG4gIGdyZWVuOiBbMCwgMjU1LCAwXSxcbiAgYmx1ZTogWzAsIDAsIDI1NV0sXG59O1xuXG4vLyBGaWxsIGEgbWFwIG9mIENvbG9yIG9iamVjdHNcbmNvbnN0IGNvbG9yc01hcDogeyBba2V5OiBzdHJpbmddOiBDb2xvciB9ID0ge307XG5cbi8qKlxuICogVXNlZnVsIGNsYXNzIGZvciBjb2xvciBjb252ZXJzaW9uXG4gKi9cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQ29sb3Ige1xuICAvLyBIZWxwZXIgbWV0aG9kLCB0byByZXRyaWV2ZSBhIGNvbG9yXG4gIHN0YXRpYyBnZXQobmFtZTogQ29sb3JOYW1lKTogQ29sb3Ige1xuICAgIHJldHVybiBjb2xvcnNNYXBbbmFtZV0gYXMgQ29sb3I7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VSZ2JhKHJnYmE6IHN0cmluZyk6IENvbG9yIHwgbnVsbCB7XG4gICAgaWYgKCFyZ2JhIHx8ICghcmdiYS5zdGFydHNXaXRoKCdyZ2IoJykgJiYgIXJnYmEuc3RhcnRzV2l0aCgncmdiYSgnKSkpIHJldHVybiBudWxsO1xuXG4gICAgLy8gUGFyc2UgcGFydHNcbiAgICBjb25zdCBwYXJ0cyA9IHJnYmEucmVwbGFjZSgncmdiKCcsICcnKS5yZXBsYWNlKCdyZ2JhKCcsICcnKS5yZXBsYWNlKCcpJywgJycpLnNwbGl0KCcsJyk7XG5cbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzICYmIHBhcnRzLmxlbmd0aCAhPT0gNCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gbmV3IENvbG9yKFsrcGFydHNbMF0sICtwYXJ0c1sxXSwgK3BhcnRzWzJdXSwgKHBhcnRzLmxlbmd0aCA9PT0gNCAmJiArcGFydHNbM10pIHx8IDEsICdjdXN0b20nKTtcbiAgfVxuXG4gIHN0YXRpYyB0cmFuc3BhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbmV3IENvbG9yKFswLCAwLCAwXSwgMCwgJ3RyYW5zbHVjZW50Jyk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcmdiQXJyYXk6IG51bWJlcltdLFxuICAgIHByaXZhdGUgX29wYWNpdHk/OiBudW1iZXIsXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nID0gJ2N1c3RvbSdcbiAgKSB7fVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIGdldCBvcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGlzTm90TmlsKHRoaXMuX29wYWNpdHkpID8gdGhpcy5fb3BhY2l0eSA6IDE7XG4gIH1cbiAgZ2V0IHJnYigpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JnYkFycmF5O1xuICB9XG5cbiAgZ2V0IHIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmdiQXJyYXlbMF07XG4gIH1cblxuICBnZXQgZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZ2JBcnJheVsxXTtcbiAgfVxuXG4gIGdldCBiKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JnYkFycmF5WzJdO1xuICB9XG5cbiAgcmdiYShvcGFjaXR5PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBvcGFjaXR5ID0gaXNOb3ROaWwob3BhY2l0eSkgPyBvcGFjaXR5IDogdGhpcy5fb3BhY2l0eTtcbiAgICBpZiAoaXNOaWwob3BhY2l0eSkgfHwgb3BhY2l0eSA8IDAgfHwgb3BhY2l0eSA+IDEpIHtcbiAgICAgIHJldHVybiAncmdiKCcgKyB0aGlzLl9yZ2JBcnJheS5qb2luKCcsJykgKyAnKSc7XG4gICAgfVxuICAgIHJldHVybiAncmdiYSgnICsgdGhpcy5fcmdiQXJyYXkuam9pbignLCcpICsgJywnICsgb3BhY2l0eSArICcpJztcbiAgfVxufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29sb3JHcmFkaWVudE9wdGlvbnMge1xuICBzdGFydENvbG9yPzogbnVtYmVyW107XG4gIG1haW5Db2xvcj86IG51bWJlcltdO1xuICBtYWluQ29sb3JJbmRleD86IG51bWJlcjtcbiAgZW5kQ29sb3I/OiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbG9yU2NhbGVPcHRpb25zIGV4dGVuZHMgQ29sb3JHcmFkaWVudE9wdGlvbnMge1xuICBvcGFjaXR5PzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgdXBwZXJNYXg/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29sb3JTY2FsZUxlZ2VuZEl0ZW0ge1xuICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyW107XG4gIGNvbG9yOiBDb2xvcjtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbG9yU2NhbGVMZWdlbmQge1xuICBpdGVtczogQ29sb3JTY2FsZUxlZ2VuZEl0ZW1bXTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIGNvbG9ycyBzY2FsZVxuICovXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIENvbG9yU2NhbGUge1xuICBzdGF0aWMgY3VzdG9tID0gKGNvdW50OiBudW1iZXIsIG9wdGlvbnM/OiBDb2xvclNjYWxlT3B0aW9ucykgPT4ge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgQ29sb3JTY2FsZShcbiAgICAgIGxpbmVhckNvbG9yR3JhZGllbnRXaXRoSW50ZXJtZWRpYXRlKGNvdW50LCB7XG4gICAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMuc3RhcnRDb2xvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIG1haW5Db2xvcjogb3B0aW9ucy5tYWluQ29sb3IgfHwgdW5kZWZpbmVkLFxuICAgICAgICBtYWluQ29sb3JJbmRleDogaXNOb3ROaWwob3B0aW9ucy5tYWluQ29sb3JJbmRleCkgPyBvcHRpb25zLm1haW5Db2xvckluZGV4IDogdW5kZWZpbmVkLFxuICAgICAgICBlbmRDb2xvcjogb3B0aW9ucy5lbmRDb2xvciB8fCB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0KCkge1xuICAgIHJldHVybiBDb2xvclNjYWxlLmN1c3RvbSgyNSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIGNvbG9yXG4gICAqKi9cbiAgc3RhdGljIGZpeChsZW5ndGg/OiBudW1iZXIsIGNvbG9yTmFtZT86IENvbG9yTmFtZSk6IGFueVtdIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGxlbmd0aCB8fCAyNSkuZmlsbChudWxsKS5tYXAoKCkgPT4gQ29sb3IuZ2V0KGNvbG9yTmFtZSB8fCAncHJpbWFyeScpLnJnYmEoMC41KSk7XG4gIH1cblxuICBwcml2YXRlIF9taW46IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXI7XG4gIHByaXZhdGUgX3JhbmdlU2l6ZTogbnVtYmVyO1xuICBwcml2YXRlIF9sZWdlbmRJdGVtczogQ29sb3JTY2FsZUxlZ2VuZEl0ZW1bXTtcblxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNvbG9yQXJyYXk6IG51bWJlcltdW10sIG9wdGlvbnM/OiBDb2xvclNjYWxlT3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIC8vIHJlc2VydmVkIGxhc3QgY29sb3JzIGZvciB2YWx1ZSA+IG1heFxuICAgIGNvbnN0IG5iSW50ZXJ2YWxCZWZvcmVVcHBlciA9ICFvcHRpb25zLnVwcGVyTWF4ID8gY29sb3JBcnJheS5sZW5ndGggOiBjb2xvckFycmF5Lmxlbmd0aCAtIDE7XG4gICAgdGhpcy5fbWluID0gb3B0aW9ucy5taW4gfHwgMDtcbiAgICB0aGlzLl9tYXggPSBvcHRpb25zLm1heCB8fCBuYkludGVydmFsQmVmb3JlVXBwZXI7XG4gICAgdGhpcy5fcmFuZ2VTaXplID0gTWF0aC5yb3VuZCgodGhpcy5fbWF4IC0gdGhpcy5fbWluKSAvIG5iSW50ZXJ2YWxCZWZvcmVVcHBlcik7XG4gICAgdGhpcy5fbGVnZW5kSXRlbXMgPSB0aGlzLmNvbXB1dGVMZWdlbmRJdGVtcyhjb2xvckFycmF5KTtcbiAgfVxuXG4gIGdldCBsZWdlbmQoKTogQ29sb3JTY2FsZUxlZ2VuZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiB0aGlzLl9sZWdlbmRJdGVtcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VmFsdWVDb2xvcih2YWx1ZTogbnVtYmVyKTogQ29sb3Ige1xuICAgIHJldHVybiB0aGlzLmdldExlZ2VuZEZvclZhbHVlKHZhbHVlKS5jb2xvcjtcbiAgfVxuXG4gIGdldExlZ2VuZEZvclZhbHVlKHZhbHVlOiBudW1iZXIpOiBDb2xvclNjYWxlTGVnZW5kSXRlbSB7XG4gICAgaWYgKHZhbHVlIDw9IHRoaXMuX21pbikgcmV0dXJuIHRoaXMuX2xlZ2VuZEl0ZW1zWzBdO1xuICAgIGlmICh2YWx1ZSA+PSB0aGlzLl9tYXgpIHJldHVybiB0aGlzLl9sZWdlbmRJdGVtc1t0aGlzLl9sZWdlbmRJdGVtcy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBpbmRleCA9IE1hdGguZmxvb3IoKHZhbHVlICogKHRoaXMuX2xlZ2VuZEl0ZW1zLmxlbmd0aCAtIDEpKSAvIHRoaXMuX21heCk7XG4gICAgcmV0dXJuIHRoaXMuX2xlZ2VuZEl0ZW1zW2luZGV4XTtcbiAgfVxuXG4gIGdldExlZ2VuZEF0SW5kZXgoaW5kZXg6IG51bWJlcik6IENvbG9yU2NhbGVMZWdlbmRJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5fbGVnZW5kSXRlbXNbaW5kZXhdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVMZWdlbmRJdGVtcyhjb2xvckFycmF5OiBudW1iZXJbXVtdKTogQ29sb3JTY2FsZUxlZ2VuZEl0ZW1bXSB7XG4gICAgcmV0dXJuIGNvbG9yQXJyYXkubWFwKChjb2xvciwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiB0aGlzLl9yYW5nZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMuX3JhbmdlU2l6ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBuZXcgQ29sb3IoY29sb3IpLFxuICAgICAgICBsYWJlbDogZW5kIDwgdGhpcy5fbWF4ID8gYCR7c3RhcnQudG9Mb2NhbGVTdHJpbmcoKX0gLSAke2VuZC50b0xvY2FsZVN0cmluZygpfWAgOiBgID49ICR7c3RhcnR9YCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gRmlsbCBjb2xvcnNNYXBcbk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJnYkFycmF5TWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgY29sb3JzTWFwW2tleV0gPSBuZXcgQ29sb3IocmdiQXJyYXlNYXBba2V5XSwgMSwga2V5KTtcbn0pO1xuXG4vKipcbiAqIEludGVybmFsIGZ1bmN0aW9uLCB0aGF0IGNyZWF0ZSBhIGNvbG9ycyBzY2FsZSwgdXNpbmcgaXRlcmF0aW9uXG4gKlxuICogQHBhcmFtIGNvdW50XG4gKiBAcGFyYW0gb3BhY2l0eVxuICogQHBhcmFtIHN0YXJ0Q29sb3JcbiAqIEBwYXJhbSBzdGFydFN0YXRlXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBsaW5lYXJDb2xvckdyYWRpZW50V2l0aEludGVybWVkaWF0ZShjb3VudDogbnVtYmVyLCBvcHRpb25zPzogQ29sb3JHcmFkaWVudE9wdGlvbnMpOiBudW1iZXJbXVtdIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRnJvbSBbMCwxXVxuICBvcHRpb25zLnN0YXJ0Q29sb3IgPSBvcHRpb25zLnN0YXJ0Q29sb3IgfHwgWzI1NSwgMjU1LCAxOTBdOyAvLyBkZWZhdWx0IHN0YXJ0ID0gY3JlbWVcbiAgb3B0aW9ucy5tYWluQ29sb3JJbmRleCA9IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggJiYgb3B0aW9ucy5tYWluQ29sb3JJbmRleCA8IGNvdW50IC0gMSA/IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggOiBjb3VudCAtIDE7XG4gIG9wdGlvbnMuZW5kQ29sb3IgPSBvcHRpb25zLmVuZENvbG9yIHx8IFsyNTUsIDAsIDBdOyAvLyBkZWZhdWx0IG1haW4gPSByZWRcblxuICBpZiAoIW9wdGlvbnMubWFpbkNvbG9yKSB7XG4gICAgcmV0dXJuIGxpbmVhckNvbG9yR3JhZGllbnQoY291bnQsIHtcbiAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMuc3RhcnRDb2xvcixcbiAgICAgIGVuZENvbG9yOiBvcHRpb25zLmVuZENvbG9yLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIFN0ZXAgMTogc3RhcnRDb2xvciAtPiBtYWluQ29sb3JcbiAgICBjb25zdCByZXN1bHQgPSBsaW5lYXJDb2xvckdyYWRpZW50KG9wdGlvbnMubWFpbkNvbG9ySW5kZXggKyAxLCB7XG4gICAgICBzdGFydENvbG9yOiBvcHRpb25zLnN0YXJ0Q29sb3IsXG4gICAgICBlbmRDb2xvcjogb3B0aW9ucy5tYWluQ29sb3IsXG4gICAgfSk7XG5cbiAgICAvLyBTdGVwIDI6IG1haW5Db2xvciAtPiBlbmRDb2xvclxuICAgIGlmIChvcHRpb25zLm1haW5Db2xvckluZGV4IDwgY291bnQgLSAxKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LmNvbmNhdChcbiAgICAgICAgbGluZWFyQ29sb3JHcmFkaWVudChjb3VudCAtIG9wdGlvbnMubWFpbkNvbG9ySW5kZXgsIHtcbiAgICAgICAgICBzdGFydENvbG9yOiBvcHRpb25zLm1haW5Db2xvcixcbiAgICAgICAgICBlbmRDb2xvcjogb3B0aW9ucy5lbmRDb2xvcixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxpbmVhckNvbG9yR3JhZGllbnQoY291bnQ6IG51bWJlciwgb3B0aW9ucz86IENvbG9yR3JhZGllbnRPcHRpb25zKTogYW55W10ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBGcm9tIFswLDFdXG4gIG9wdGlvbnMuc3RhcnRDb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvciB8fCBbMjU1LCAyNTUsIDI1NV07IC8vIGRlZmF1bHQgc3RhcnQgPSB3aGl0ZVxuICBvcHRpb25zLmVuZENvbG9yID0gb3B0aW9ucy5lbmRDb2xvciB8fCBbMjU1LCAwLCAwXTsgLy8gZGVmYXVsdCBlbmQgPSByZWRcblxuICBjb25zdCByZXN1bHQ6IG51bWJlcltdW10gPSBbXTtcbiAgY29uc3QgY29sb3IgPSBvcHRpb25zLnN0YXJ0Q29sb3Iuc2xpY2UoKTsgLy8gY29weSB0aGUgc3RhcnQgY29sb3JcbiAgY29uc3QgZGVsdGEgPSBbXG4gICAgTWF0aC5yb3VuZCgob3B0aW9ucy5lbmRDb2xvclswXSAtIG9wdGlvbnMuc3RhcnRDb2xvclswXSkgLyBjb3VudCksXG4gICAgTWF0aC5yb3VuZCgob3B0aW9ucy5lbmRDb2xvclsxXSAtIG9wdGlvbnMuc3RhcnRDb2xvclsxXSkgLyBjb3VudCksXG4gICAgTWF0aC5yb3VuZCgob3B0aW9ucy5lbmRDb2xvclsyXSAtIG9wdGlvbnMuc3RhcnRDb2xvclsyXSkgLyBjb3VudCksXG4gIF07XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudCAtIDE7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgMzsgaisrKSB7XG4gICAgICBjb2xvcltqXSArPSBkZWx0YVtqXTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2goY29sb3Iuc2xpY2UoKSk7XG4gIH1cblxuICAvLyBGb3JjZSBsYXN0IGNvbG9yID0gZW5kIGNvbG9yXG4gIHJlc3VsdC5wdXNoKG9wdGlvbnMuZW5kQ29sb3Iuc2xpY2UoKSk7XG5cbiAgLy8gT3V0cHV0IGFzIGFycmF5XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -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: "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 });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", 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: "18.2.8", ngImport: i0, type: ComponentDirtyGuard });
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ComponentDirtyGuard, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ComponentDirtyGuard, decorators: [{
57
57
  type: Injectable
58
58
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.AlertController }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRpcnR5Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7OztBQVVqQyxNQUFNLE9BQU8sbUJBQW1CO0lBS2xCO0lBQ0E7SUFKSixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFlBQ1ksU0FBMkIsRUFDM0IsU0FBMEI7UUFEMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBbUIsRUFBRSxZQUFvQyxFQUFFLFlBQWlDLEVBQUUsU0FBK0I7UUFHL0ksTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDO1FBQy9CLElBQUksR0FBRyxHQUFHO1lBQ1IsU0FBUyxFQUFFLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUVELElBQUksS0FBSyxFQUFFO1lBQ1QsbUJBQW1CO1lBQ25CLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ3ZELE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLElBQUksSUFBSSxDQUFDLEtBQUs7d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUM5RSxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLEtBQUs7b0JBQ1AsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3RCO1lBRUQsbUJBQW1CO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxvQkFBb0I7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO3VHQXBEVSxtQkFBbUI7MkdBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXJ9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi9hbGVydHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbkxlYXZlIHtcbiAgZGlydHk6IGJvb2xlYW47XG4gIHZhbGlkOiBib29sZWFuO1xuICBzYXZlKGV2ZW50PzogRXZlbnQsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBjYW5jZWwoZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21wb25lbnREaXJ0eUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxDYW5MZWF2ZT4ge1xuXG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgKSB7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogQ2FuTGVhdmUsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTpcbiAgICBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG5cbiAgICBjb25zdCBkaXJ0eSA9IGNvbXBvbmVudD8uZGlydHk7XG4gICAgY29uc3QgdmFsaWQgPSBjb21wb25lbnQ/LnZhbGlkO1xuICAgIGxldCBjYW4gPSB7XG4gICAgICBjb25maXJtZWQ6ICFkaXJ0eSxcbiAgICAgIHNhdmU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjYW5EZWFjdGl2YXRlIGNvbXBvbmVudCBkaXJ0eTogJHtkaXJ0eX0sIHZhbGlkOiAke3ZhbGlkfWApO1xuICAgIH1cblxuICAgIGlmIChkaXJ0eSkge1xuICAgICAgLy8gQXNrIGNvbmZpcm1hdGlvblxuICAgICAgY2FuID0gYXdhaXQgQWxlcnRzLmFza1NhdmVCZWZvcmVBY3Rpb24odGhpcy5hbGVydEN0cmwsIHRoaXMudHJhbnNsYXRlLCB7dmFsaWR9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjb25maXJtOiAke2Nhbi5jb25maXJtZWR9YCk7XG5cbiAgICBpZiAoY2FuLmNvbmZpcm1lZCkge1xuICAgICAgaWYgKGNhbi5zYXZlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGlydHktZ3VhcmRdIGRvIHNhdmVgKTtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBjb21wb25lbnQuc2F2ZSgpO1xuICAgICAgICBpZiAoIXNhdmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gc2F2ZSBmYWlsZWQsIGNhbmNlbCBkZWFjdGl2YXRlYCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBkbyBjYW5jZWxgKTtcbiAgICAgICAgaWYgKGRpcnR5KVxuICAgICAgICAgIGNvbXBvbmVudC5jYW5jZWwoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZGVhY3RpdmF0ZVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIGRlYWN0aXZhdGVcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgfVxuXG5cbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRpcnR5Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3VhcmQvY29tcG9uZW50LWRpcnR5Lmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUluQyxNQUFNLE9BQU8sbUJBQW1CO0lBSWxCO0lBQ0E7SUFKSixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFlBQ1ksU0FBMkIsRUFDM0IsU0FBMEI7UUFEMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFDbkMsQ0FBQztJQUVKLEtBQUssQ0FBQyxhQUFhLENBQ2pCLFNBQW1CLEVBQ25CLFlBQW9DLEVBQ3BDLFlBQWlDLEVBQ2pDLFNBQStCO1FBRS9CLE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQztRQUMvQixJQUFJLEdBQUcsR0FBRztZQUNSLFNBQVMsRUFBRSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLG1CQUFtQjtZQUNuQixHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNiLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLElBQUksSUFBSSxDQUFDLEtBQUs7d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUM5RSxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLEtBQUs7b0JBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFRCxtQkFBbUI7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FuRFUsbUJBQW1COzJHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5EZWFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFsZXJ0cyB9IGZyb20gJy4uL2FsZXJ0cyc7XG5pbXBvcnQgeyBDYW5MZWF2ZSB9IGZyb20gJy4uLy4uL2NvcmUvZm9ybS9mb3JtLnV0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudERpcnR5R3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPENhbkxlYXZlPiB7XG4gIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlclxuICApIHt9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShcbiAgICBjb21wb25lbnQ6IENhbkxlYXZlLFxuICAgIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICAgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgY29uc3QgZGlydHkgPSBjb21wb25lbnQ/LmRpcnR5O1xuICAgIGNvbnN0IHZhbGlkID0gY29tcG9uZW50Py52YWxpZDtcbiAgICBsZXQgY2FuID0ge1xuICAgICAgY29uZmlybWVkOiAhZGlydHksXG4gICAgICBzYXZlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gY2FuRGVhY3RpdmF0ZSBjb21wb25lbnQgZGlydHk6ICR7ZGlydHl9LCB2YWxpZDogJHt2YWxpZH1gKTtcbiAgICB9XG5cbiAgICBpZiAoZGlydHkpIHtcbiAgICAgIC8vIEFzayBjb25maXJtYXRpb25cbiAgICAgIGNhbiA9IGF3YWl0IEFsZXJ0cy5hc2tTYXZlQmVmb3JlQWN0aW9uKHRoaXMuYWxlcnRDdHJsLCB0aGlzLnRyYW5zbGF0ZSwgeyB2YWxpZCB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBjb25maXJtOiAke2Nhbi5jb25maXJtZWR9YCk7XG5cbiAgICBpZiAoY2FuLmNvbmZpcm1lZCkge1xuICAgICAgaWYgKGNhbi5zYXZlKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGlydHktZ3VhcmRdIGRvIHNhdmVgKTtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBjb21wb25lbnQuc2F2ZSgpO1xuICAgICAgICBpZiAoIXNhdmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYFtkaXJ0eS1ndWFyZF0gc2F2ZSBmYWlsZWQsIGNhbmNlbCBkZWFjdGl2YXRlYCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RpcnR5LWd1YXJkXSBkbyBjYW5jZWxgKTtcbiAgICAgICAgaWYgKGRpcnR5KSBjb21wb25lbnQuY2FuY2VsKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFsbG93IGRlYWN0aXZhdGVcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIENhbmNlbCBkZWFjdGl2YXRlXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=