@theseam/ui-common 0.4.0-beta.2 → 0.4.0-beta.4

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 (546) hide show
  1. package/breadcrumbs/breadcrumb.d.ts +1 -1
  2. package/breadcrumbs/breadcrumbs-resolver.d.ts +1 -1
  3. package/core/common-behaviors/active.d.ts +1 -1
  4. package/core/common-behaviors/constructor.d.ts +1 -1
  5. package/core/common-behaviors/disabled.d.ts +1 -1
  6. package/core/common-behaviors/initialized.d.ts +1 -1
  7. package/core/common-behaviors/size.d.ts +1 -1
  8. package/core/common-behaviors/tabindex.d.ts +1 -1
  9. package/core/common-behaviors/theme.d.ts +1 -1
  10. package/data-exporter/data-exporter.d.ts +1 -1
  11. package/data-filters/data-filter.d.ts +3 -3
  12. package/data-filters/filters/data-filter-search/search-filter-options.d.ts +1 -1
  13. package/datatable/datatable-column/datatable-column.component.d.ts +1 -1
  14. package/datatable/models/preferences.d.ts +1 -1
  15. package/datatable/models/table-column.d.ts +1 -1
  16. package/datatable/services/columns-manager.service.d.ts +1 -1
  17. package/datatable-dynamic/datatable-dynamic-def.d.ts +3 -3
  18. package/datatable-dynamic/models/dynamic-datatable-action-menu-record.d.ts +1 -1
  19. package/dynamic/models/dynamic-value-base-type.d.ts +1 -1
  20. package/dynamic/models/dynamic-value-evaluatable-type.d.ts +1 -1
  21. package/dynamic/models/dynamic-value-primitive.d.ts +1 -1
  22. package/dynamic/models/dynamic-value.d.ts +1 -1
  23. package/dynamic/tokens/api-config.d.ts +1 -1
  24. package/esm2020/asset-reader/asset-reader-helper.service.mjs +3 -3
  25. package/esm2020/asset-reader/asset-reader.module.mjs +4 -4
  26. package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +12 -12
  27. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +3 -3
  28. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +4 -4
  29. package/esm2020/breadcrumbs/breadcrumbs.service.mjs +3 -3
  30. package/esm2020/buttons/badge-button/badge-button.component.mjs +6 -6
  31. package/esm2020/buttons/button/button.component.mjs +9 -9
  32. package/esm2020/buttons/buttons.module.mjs +4 -4
  33. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +3 -3
  34. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +5 -5
  35. package/esm2020/card/card-action/card-action.component.mjs +3 -3
  36. package/esm2020/card/card-body/card-body.component.mjs +3 -3
  37. package/esm2020/card/card-footer/card-footer.component.mjs +3 -3
  38. package/esm2020/card/card-header/card-header.component.mjs +3 -3
  39. package/esm2020/card/card.component.mjs +3 -3
  40. package/esm2020/card/card.module.mjs +4 -4
  41. package/esm2020/checkbox/checkbox.component.mjs +43 -43
  42. package/esm2020/checkbox/checkbox.module.mjs +4 -4
  43. package/esm2020/checkbox/testing/checkbox.harness.mjs +1 -1
  44. package/esm2020/checkbox/testing/index.mjs +1 -1
  45. package/esm2020/confirm-dialog/confirm-click.directive.mjs +9 -9
  46. package/esm2020/confirm-dialog/confirm-dialog.component.mjs +3 -3
  47. package/esm2020/confirm-dialog/confirm-dialog.module.mjs +4 -4
  48. package/esm2020/confirm-dialog/confirm-dialog.service.mjs +3 -3
  49. package/esm2020/core/common-behaviors/active.mjs +3 -3
  50. package/esm2020/core/common-behaviors/disabled.mjs +3 -3
  51. package/esm2020/core/common-behaviors/size.mjs +6 -6
  52. package/esm2020/core/common-behaviors/tabindex.mjs +5 -5
  53. package/esm2020/core/common-behaviors/theme.mjs +6 -6
  54. package/esm2020/data-exporter/data-exporter.module.mjs +4 -4
  55. package/esm2020/data-exporter/exporters/csv-exporter.mjs +3 -3
  56. package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +3 -3
  57. package/esm2020/data-filters/data-filters.module.mjs +4 -4
  58. package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +10 -10
  59. package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +10 -10
  60. package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +11 -11
  61. package/esm2020/datatable/datatable/datatable.component.mjs +108 -108
  62. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +3 -3
  63. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +3 -3
  64. package/esm2020/datatable/datatable-column/datatable-column.component.mjs +7 -7
  65. package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +3 -3
  66. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +3 -3
  67. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +7 -7
  68. package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +3 -3
  69. package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +3 -3
  70. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +8 -8
  71. package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +3 -3
  72. package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +3 -3
  73. package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +3 -3
  74. package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +3 -3
  75. package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +3 -3
  76. package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +3 -3
  77. package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +3 -3
  78. package/esm2020/datatable/datatable.module.mjs +4 -4
  79. package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +3 -3
  80. package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +11 -11
  81. package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +3 -3
  82. package/esm2020/datatable/directives/datatable-filter.directive.mjs +3 -3
  83. package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +3 -3
  84. package/esm2020/datatable/services/columns-alterations-manager.service.mjs +3 -3
  85. package/esm2020/datatable/services/columns-manager.service.mjs +3 -3
  86. package/esm2020/datatable/services/datatable-column-changes.service.mjs +3 -3
  87. package/esm2020/datatable/services/datatable-preferences.service.mjs +6 -6
  88. package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +3 -3
  89. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +12 -12
  90. package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +8 -8
  91. package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +6 -6
  92. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +8 -8
  93. package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +4 -4
  94. package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +7 -7
  95. package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +3 -3
  96. package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +3 -3
  97. package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +3 -3
  98. package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +3 -3
  99. package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +3 -3
  100. package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +3 -3
  101. package/esm2020/dynamic/dynamic-value-helper.service.mjs +3 -3
  102. package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +3 -3
  103. package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +3 -3
  104. package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +4 -4
  105. package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +3 -3
  106. package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +3 -3
  107. package/esm2020/footer-bar/footer-bar.module.mjs +4 -4
  108. package/esm2020/form-field/form-field-error.directive.mjs +6 -6
  109. package/esm2020/form-field/form-field-help-text.directive.mjs +3 -3
  110. package/esm2020/form-field/form-field-label-tpl.directive.mjs +3 -3
  111. package/esm2020/form-field/form-field-required-indicator.component.mjs +3 -3
  112. package/esm2020/form-field/form-field-tokens.mjs +1 -1
  113. package/esm2020/form-field/form-field.component.mjs +48 -48
  114. package/esm2020/form-field/form-field.module.mjs +4 -4
  115. package/esm2020/form-field/input.directive.mjs +43 -43
  116. package/esm2020/form-field/testing/form-field-required-indicator.harness.mjs +1 -1
  117. package/esm2020/form-field/testing/index.mjs +1 -1
  118. package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +3 -3
  119. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +3 -3
  120. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +3 -3
  121. package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +92 -92
  122. package/esm2020/form-field-error/form-field-error.module.mjs +4 -4
  123. package/esm2020/framework/base-layout/base-layout.component.mjs +6 -6
  124. package/esm2020/framework/base-layout/base-layout.module.mjs +4 -4
  125. package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +3 -3
  126. package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +3 -3
  127. package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +3 -3
  128. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +10 -10
  129. package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +3 -3
  130. package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +3 -3
  131. package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +3 -3
  132. package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +3 -3
  133. package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +3 -3
  134. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +3 -3
  135. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +3 -3
  136. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +18 -18
  137. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +12 -12
  138. package/esm2020/framework/dashboard/dashboard-widgets-tokens.mjs +1 -1
  139. package/esm2020/framework/dashboard/dashboard.component.mjs +3 -3
  140. package/esm2020/framework/dashboard/dashboard.module.mjs +4 -4
  141. package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +4 -4
  142. package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +3 -3
  143. package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +3 -3
  144. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +3 -3
  145. package/esm2020/framework/schema-form/schema-form-framework.mjs +3 -3
  146. package/esm2020/framework/schema-form/schema-form.module.mjs +4 -4
  147. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +3 -3
  148. package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +4 -4
  149. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +3 -3
  150. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +3 -3
  151. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +3 -3
  152. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +3 -3
  153. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +3 -3
  154. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +24 -24
  155. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +3 -3
  156. package/esm2020/framework/side-nav/side-nav-tokens.mjs +1 -1
  157. package/esm2020/framework/side-nav/side-nav.component.mjs +17 -17
  158. package/esm2020/framework/side-nav/side-nav.module.mjs +4 -4
  159. package/esm2020/framework/side-nav/side-nav.service.mjs +3 -3
  160. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +3 -3
  161. package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +3 -3
  162. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +3 -3
  163. package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +3 -3
  164. package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +3 -3
  165. package/esm2020/framework/top-bar/top-bar.component.mjs +3 -3
  166. package/esm2020/framework/top-bar/top-bar.module.mjs +4 -4
  167. package/esm2020/google-maps/google-maps/google-maps.component.mjs +17 -17
  168. package/esm2020/google-maps/google-maps-controls.service.mjs +3 -3
  169. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +20 -20
  170. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +7 -7
  171. package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +7 -7
  172. package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +7 -7
  173. package/esm2020/google-maps/google-maps.module.mjs +4 -4
  174. package/esm2020/google-maps/google-maps.service.mjs +5 -5
  175. package/esm2020/google-maps/map-control.component.mjs +9 -9
  176. package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +3 -3
  177. package/esm2020/google-maps/map-value-manager.service.mjs +3 -3
  178. package/esm2020/graphql/datatable/datatable-graphql-query-ref.mjs +5 -5
  179. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +3 -3
  180. package/esm2020/icon/icon/icon.component.mjs +3 -3
  181. package/esm2020/icon/icon-btn/icon-btn.component.mjs +24 -24
  182. package/esm2020/icon/icon-notification/icon-notification.component.mjs +3 -3
  183. package/esm2020/icon/icon.module.mjs +4 -4
  184. package/esm2020/layout/layout.module.mjs +4 -4
  185. package/esm2020/layout/layout.service.mjs +3 -3
  186. package/esm2020/loading/loading/loading.component.mjs +7 -7
  187. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  188. package/esm2020/loading/loading.module.mjs +4 -4
  189. package/esm2020/menu/menu-divider.component.mjs +3 -3
  190. package/esm2020/menu/menu-footer/menu-footer.component.mjs +3 -3
  191. package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +7 -7
  192. package/esm2020/menu/menu-header/menu-header.component.mjs +3 -3
  193. package/esm2020/menu/menu-item.component.mjs +3 -3
  194. package/esm2020/menu/menu-toggle.directive.mjs +42 -42
  195. package/esm2020/menu/menu.component.mjs +15 -15
  196. package/esm2020/menu/menu.module.mjs +4 -4
  197. package/esm2020/modal/directives/modal-close.directive.mjs +11 -11
  198. package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +3 -3
  199. package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +3 -3
  200. package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +3 -3
  201. package/esm2020/modal/directives/modal-title.directive.mjs +3 -3
  202. package/esm2020/modal/directives/modal.directive.mjs +3 -3
  203. package/esm2020/modal/modal/modal.component.mjs +19 -19
  204. package/esm2020/modal/modal-body/modal-body.component.mjs +3 -3
  205. package/esm2020/modal/modal-container/modal-container.component.mjs +12 -12
  206. package/esm2020/modal/modal-footer/modal-footer.component.mjs +3 -3
  207. package/esm2020/modal/modal-header/modal-header.component.mjs +3 -3
  208. package/esm2020/modal/modal.module.mjs +4 -4
  209. package/esm2020/modal/modal.service.mjs +16 -16
  210. package/esm2020/modal/route-modal/route-modal.component.mjs +3 -3
  211. package/esm2020/popover/popover/popover.component.mjs +18 -18
  212. package/esm2020/popover/popover.directive.mjs +32 -32
  213. package/esm2020/popover/popover.module.mjs +4 -4
  214. package/esm2020/progress/progress-circle/progress-circle.component.mjs +9 -9
  215. package/esm2020/progress/progress.module.mjs +4 -4
  216. package/esm2020/public_api.mjs +1 -42
  217. package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +10 -10
  218. package/esm2020/scrollbar/overlay-scrollbars.service.mjs +3 -3
  219. package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
  220. package/esm2020/services/asset-loader.service.mjs +3 -3
  221. package/esm2020/services/font-loader.service.mjs +3 -3
  222. package/esm2020/services/router-helpers.service.mjs +3 -3
  223. package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +3 -3
  224. package/esm2020/shared/directives/auto-focus.directive.mjs +3 -3
  225. package/esm2020/shared/directives/click-outside.directive.mjs +9 -9
  226. package/esm2020/shared/directives/disable-control.directive.mjs +7 -7
  227. package/esm2020/shared/directives/elem-resized.directive.mjs +3 -3
  228. package/esm2020/shared/directives/hover-class-toggle.directive.mjs +10 -10
  229. package/esm2020/shared/directives/hover-class.directive.mjs +9 -9
  230. package/esm2020/shared/directives/ng-select-extra.directive.mjs +26 -26
  231. package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +10 -10
  232. package/esm2020/shared/pipes/mask-chars.pipe.mjs +3 -3
  233. package/esm2020/shared/pipes/truncate.pipe.mjs +3 -3
  234. package/esm2020/shared/shared.module.mjs +4 -4
  235. package/esm2020/storage/local-storage.service.mjs +3 -3
  236. package/esm2020/story-helpers/initial-route.service.mjs +3 -3
  237. package/esm2020/story-helpers/story-empty-with-route.component.mjs +3 -3
  238. package/esm2020/story-helpers/story-empty.component.mjs +3 -3
  239. package/esm2020/story-helpers/story-helper-components.module.mjs +4 -4
  240. package/esm2020/story-helpers/story-initial-route.mjs +4 -4
  241. package/esm2020/story-helpers/story-modal-container.component.mjs +6 -6
  242. package/esm2020/story-helpers/story-toastr.service.mjs +3 -3
  243. package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +3 -3
  244. package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +3 -3
  245. package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +3 -3
  246. package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +3 -3
  247. package/esm2020/tabbed/tabbed-models.mjs +1 -1
  248. package/esm2020/tabbed/tabbed.component.mjs +13 -13
  249. package/esm2020/tabbed/tabbed.module.mjs +4 -4
  250. package/esm2020/tabbed/tabbed.service.mjs +3 -3
  251. package/esm2020/table/table/table.component.mjs +11 -11
  252. package/esm2020/table/table.module.mjs +4 -4
  253. package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +3 -3
  254. package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +3 -3
  255. package/esm2020/table-cell-type/table-cell-type.module.mjs +4 -4
  256. package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +3 -3
  257. package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +3 -3
  258. package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +3 -3
  259. package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +31 -31
  260. package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +3 -3
  261. package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +6 -6
  262. package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +3 -3
  263. package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +3 -3
  264. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +23 -23
  265. package/esm2020/table-cell-types/table-cell-types.module.mjs +4 -4
  266. package/esm2020/tel-input/phone-number.pipe.mjs +3 -3
  267. package/esm2020/tel-input/tel-input/tel-input.component.mjs +34 -34
  268. package/esm2020/tel-input/tel-input.directive.mjs +18 -18
  269. package/esm2020/tel-input/tel-input.module.mjs +4 -4
  270. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +20 -20
  271. package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +6 -6
  272. package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +10 -10
  273. package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +3 -3
  274. package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +3 -3
  275. package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +3 -3
  276. package/esm2020/tiled-select/tiled-select.module.mjs +4 -4
  277. package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +3 -3
  278. package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +3 -3
  279. package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +3 -3
  280. package/esm2020/toggle-edit/toggle-edit.component.mjs +16 -16
  281. package/esm2020/toggle-edit/toggle-edit.module.mjs +4 -4
  282. package/esm2020/toggle-group/toggle-group-option.directive.mjs +12 -12
  283. package/esm2020/toggle-group/toggle-group.directive.mjs +3 -3
  284. package/esm2020/toggle-group/toggle-group.module.mjs +4 -4
  285. package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +3 -3
  286. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +3 -3
  287. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +3 -3
  288. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +4 -4
  289. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  290. package/esm2020/utils/geo-json/geo-json-to-area.mjs +1 -1
  291. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  292. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  293. package/esm2020/utils/geo-json/is-only-geometry-types.validator.mjs +1 -1
  294. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  295. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  296. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  297. package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +37 -37
  298. package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +4 -4
  299. package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +10 -10
  300. package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +3 -3
  301. package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +38 -38
  302. package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +4 -4
  303. package/esm2020/widget/directives/widget-drag-handle.directive.mjs +12 -12
  304. package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +3 -3
  305. package/esm2020/widget/directives/widget-title-tpl.directive.mjs +3 -3
  306. package/esm2020/widget/widget/widget.component.mjs +23 -23
  307. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +3 -3
  308. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +4 -4
  309. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +3 -3
  310. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +4 -4
  311. package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +3 -3
  312. package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +4 -4
  313. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +7 -7
  314. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +4 -4
  315. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +3 -3
  316. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +4 -4
  317. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +3 -3
  318. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +4 -4
  319. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +3 -3
  320. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +4 -4
  321. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +3 -3
  322. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +15 -15
  323. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +3 -3
  324. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +4 -4
  325. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +3 -3
  326. package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +4 -4
  327. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +3 -3
  328. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +8 -8
  329. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +3 -3
  330. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +3 -3
  331. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +16 -16
  332. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +4 -4
  333. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +3 -3
  334. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +4 -4
  335. package/esm2020/widget/widget-footer/widget-footer.component.mjs +3 -3
  336. package/esm2020/widget/widget-registry.service.mjs +3 -3
  337. package/esm2020/widget/widget.module.mjs +4 -4
  338. package/fesm2015/theseam-ui-common-asset-reader.mjs +18 -18
  339. package/fesm2015/theseam-ui-common-asset-reader.mjs.map +1 -1
  340. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +10 -10
  341. package/fesm2015/theseam-ui-common-buttons.mjs +26 -26
  342. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  343. package/fesm2015/theseam-ui-common-card.mjs +19 -19
  344. package/fesm2015/theseam-ui-common-checkbox.mjs +46 -46
  345. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  346. package/fesm2015/theseam-ui-common-confirm-dialog.mjs +18 -18
  347. package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  348. package/fesm2015/theseam-ui-common-core.mjs +18 -18
  349. package/fesm2015/theseam-ui-common-core.mjs.map +1 -1
  350. package/fesm2015/theseam-ui-common-data-exporter.mjs +10 -10
  351. package/fesm2015/theseam-ui-common-data-filters.mjs +32 -32
  352. package/fesm2015/theseam-ui-common-data-filters.mjs.map +1 -1
  353. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +46 -46
  354. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  355. package/fesm2015/theseam-ui-common-datatable.mjs +208 -208
  356. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  357. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  358. package/fesm2015/theseam-ui-common-dynamic.mjs +21 -21
  359. package/fesm2015/theseam-ui-common-footer-bar.mjs +7 -7
  360. package/fesm2015/theseam-ui-common-form-field-error.mjs +104 -104
  361. package/fesm2015/theseam-ui-common-form-field-error.mjs.map +1 -1
  362. package/fesm2015/theseam-ui-common-form-field.mjs +107 -107
  363. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  364. package/fesm2015/theseam-ui-common-framework.mjs +196 -196
  365. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  366. package/fesm2015/theseam-ui-common-google-maps.mjs +78 -78
  367. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  368. package/fesm2015/theseam-ui-common-graphql.mjs +7 -7
  369. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  370. package/fesm2015/theseam-ui-common-icon.mjs +33 -33
  371. package/fesm2015/theseam-ui-common-icon.mjs.map +1 -1
  372. package/fesm2015/theseam-ui-common-layout.mjs +7 -7
  373. package/fesm2015/theseam-ui-common-loading.mjs +13 -13
  374. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  375. package/fesm2015/theseam-ui-common-menu.mjs +79 -79
  376. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  377. package/fesm2015/theseam-ui-common-modal.mjs +85 -85
  378. package/fesm2015/theseam-ui-common-modal.mjs.map +1 -1
  379. package/fesm2015/theseam-ui-common-popover.mjs +52 -52
  380. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  381. package/fesm2015/theseam-ui-common-progress.mjs +12 -12
  382. package/fesm2015/theseam-ui-common-progress.mjs.map +1 -1
  383. package/fesm2015/theseam-ui-common-scrollbar.mjs +16 -16
  384. package/fesm2015/theseam-ui-common-scrollbar.mjs.map +1 -1
  385. package/fesm2015/theseam-ui-common-services.mjs +9 -9
  386. package/fesm2015/theseam-ui-common-shared.mjs +84 -84
  387. package/fesm2015/theseam-ui-common-shared.mjs.map +1 -1
  388. package/fesm2015/theseam-ui-common-storage.mjs +3 -3
  389. package/fesm2015/theseam-ui-common-story-helpers.mjs +25 -25
  390. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  391. package/fesm2015/theseam-ui-common-tabbed.mjs +31 -31
  392. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  393. package/fesm2015/theseam-ui-common-table-cell-type.mjs +10 -10
  394. package/fesm2015/theseam-ui-common-table-cell-types.mjs +80 -80
  395. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  396. package/fesm2015/theseam-ui-common-table.mjs +14 -14
  397. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  398. package/fesm2015/theseam-ui-common-tel-input.mjs +59 -59
  399. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  400. package/fesm2015/theseam-ui-common-tiled-select.mjs +46 -46
  401. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  402. package/fesm2015/theseam-ui-common-toggle-edit.mjs +28 -28
  403. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  404. package/fesm2015/theseam-ui-common-toggle-group.mjs +18 -18
  405. package/fesm2015/theseam-ui-common-toggle-group.mjs.map +1 -1
  406. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  407. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  408. package/fesm2015/theseam-ui-common-viewers.mjs +93 -93
  409. package/fesm2015/theseam-ui-common-viewers.mjs.map +1 -1
  410. package/fesm2015/theseam-ui-common-widget.mjs +175 -175
  411. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  412. package/fesm2015/theseam-ui-common.mjs +0 -41
  413. package/fesm2015/theseam-ui-common.mjs.map +1 -1
  414. package/fesm2020/theseam-ui-common-asset-reader.mjs +18 -18
  415. package/fesm2020/theseam-ui-common-asset-reader.mjs.map +1 -1
  416. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +10 -10
  417. package/fesm2020/theseam-ui-common-buttons.mjs +26 -26
  418. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  419. package/fesm2020/theseam-ui-common-card.mjs +19 -19
  420. package/fesm2020/theseam-ui-common-checkbox.mjs +46 -46
  421. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  422. package/fesm2020/theseam-ui-common-confirm-dialog.mjs +18 -18
  423. package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  424. package/fesm2020/theseam-ui-common-core.mjs +18 -18
  425. package/fesm2020/theseam-ui-common-core.mjs.map +1 -1
  426. package/fesm2020/theseam-ui-common-data-exporter.mjs +10 -10
  427. package/fesm2020/theseam-ui-common-data-filters.mjs +32 -32
  428. package/fesm2020/theseam-ui-common-data-filters.mjs.map +1 -1
  429. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +46 -46
  430. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  431. package/fesm2020/theseam-ui-common-datatable.mjs +208 -208
  432. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  433. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  434. package/fesm2020/theseam-ui-common-dynamic.mjs +21 -21
  435. package/fesm2020/theseam-ui-common-footer-bar.mjs +7 -7
  436. package/fesm2020/theseam-ui-common-form-field-error.mjs +104 -104
  437. package/fesm2020/theseam-ui-common-form-field-error.mjs.map +1 -1
  438. package/fesm2020/theseam-ui-common-form-field.mjs +107 -107
  439. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  440. package/fesm2020/theseam-ui-common-framework.mjs +196 -196
  441. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  442. package/fesm2020/theseam-ui-common-google-maps.mjs +78 -78
  443. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  444. package/fesm2020/theseam-ui-common-graphql.mjs +7 -7
  445. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  446. package/fesm2020/theseam-ui-common-icon.mjs +33 -33
  447. package/fesm2020/theseam-ui-common-icon.mjs.map +1 -1
  448. package/fesm2020/theseam-ui-common-layout.mjs +7 -7
  449. package/fesm2020/theseam-ui-common-loading.mjs +13 -13
  450. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  451. package/fesm2020/theseam-ui-common-menu.mjs +77 -77
  452. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  453. package/fesm2020/theseam-ui-common-modal.mjs +85 -85
  454. package/fesm2020/theseam-ui-common-modal.mjs.map +1 -1
  455. package/fesm2020/theseam-ui-common-popover.mjs +52 -52
  456. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  457. package/fesm2020/theseam-ui-common-progress.mjs +12 -12
  458. package/fesm2020/theseam-ui-common-progress.mjs.map +1 -1
  459. package/fesm2020/theseam-ui-common-scrollbar.mjs +16 -16
  460. package/fesm2020/theseam-ui-common-scrollbar.mjs.map +1 -1
  461. package/fesm2020/theseam-ui-common-services.mjs +9 -9
  462. package/fesm2020/theseam-ui-common-shared.mjs +84 -84
  463. package/fesm2020/theseam-ui-common-shared.mjs.map +1 -1
  464. package/fesm2020/theseam-ui-common-storage.mjs +3 -3
  465. package/fesm2020/theseam-ui-common-story-helpers.mjs +25 -25
  466. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  467. package/fesm2020/theseam-ui-common-tabbed.mjs +31 -31
  468. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  469. package/fesm2020/theseam-ui-common-table-cell-type.mjs +10 -10
  470. package/fesm2020/theseam-ui-common-table-cell-types.mjs +80 -80
  471. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  472. package/fesm2020/theseam-ui-common-table.mjs +14 -14
  473. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  474. package/fesm2020/theseam-ui-common-tel-input.mjs +57 -57
  475. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  476. package/fesm2020/theseam-ui-common-tiled-select.mjs +46 -46
  477. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  478. package/fesm2020/theseam-ui-common-toggle-edit.mjs +28 -28
  479. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  480. package/fesm2020/theseam-ui-common-toggle-group.mjs +18 -18
  481. package/fesm2020/theseam-ui-common-toggle-group.mjs.map +1 -1
  482. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  483. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  484. package/fesm2020/theseam-ui-common-viewers.mjs +93 -93
  485. package/fesm2020/theseam-ui-common-viewers.mjs.map +1 -1
  486. package/fesm2020/theseam-ui-common-widget.mjs +175 -175
  487. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  488. package/fesm2020/theseam-ui-common.mjs +0 -41
  489. package/fesm2020/theseam-ui-common.mjs.map +1 -1
  490. package/framework/base-layout/base-layout-action.d.ts +1 -1
  491. package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +1 -1
  492. package/framework/side-nav/side-nav.models.d.ts +1 -1
  493. package/google-maps/google-maps/google-maps.component.d.ts +0 -1
  494. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.d.ts +0 -4
  495. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.d.ts +0 -4
  496. package/google-maps/google-maps.service.d.ts +0 -2
  497. package/google-maps/map-controls-service.d.ts +0 -1
  498. package/google-maps/map-value-manager.service.d.ts +1 -1
  499. package/graphql/datatable/datatable-graphql-query-ref.d.ts +2 -2
  500. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  501. package/graphql/datatable/datatable-helpers.d.ts +2 -2
  502. package/graphql/datatable/map-filter-states.d.ts +2 -2
  503. package/graphql/datatable/map-page-info.d.ts +1 -1
  504. package/graphql/datatable/mapper-context.d.ts +1 -1
  505. package/graphql/models/gql-datatable-accessor.d.ts +1 -1
  506. package/graphql/models/hint-transformer.d.ts +1 -1
  507. package/icon/icon/icon.component.d.ts +1 -1
  508. package/icon/icon.d.ts +1 -1
  509. package/layout/breakpoint-aliases.d.ts +1 -1
  510. package/loading/loading.models.d.ts +1 -1
  511. package/modal/modal-config.d.ts +1 -1
  512. package/models/component-type.d.ts +1 -1
  513. package/models/size-prefixes.d.ts +1 -1
  514. package/models/size-types.d.ts +1 -1
  515. package/models/theme-prefixes.d.ts +1 -1
  516. package/models/theme-types.d.ts +2 -2
  517. package/package.json +2 -2
  518. package/scrollbar/overlay-scrollbars-config-model.d.ts +1 -1
  519. package/services/font-loader.service.d.ts +1 -1
  520. package/styles/bootstrap/_bootstrap.scss +34 -34
  521. package/styles/bootstrap/_bs-utilities.scss +3 -3
  522. package/styles/theme.scss +3 -3
  523. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +1 -1
  524. package/styles/vendor/quill/_quill.scss +3 -3
  525. package/table/table/table.component.d.ts +1 -1
  526. package/table-cell-type/table-cell-type-models.d.ts +3 -3
  527. package/table-cell-type/table-cell-type-name.d.ts +1 -1
  528. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +1 -1
  529. package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +1 -1
  530. package/table-cell-types/table-cell-type-date/table-cell-type-date.d.ts +1 -1
  531. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +1 -1
  532. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +1 -1
  533. package/table-cell-types/table-cell-type-icon/table-cell-type-icon-config.d.ts +1 -1
  534. package/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.d.ts +1 -1
  535. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +1 -1
  536. package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +1 -1
  537. package/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle-config.d.ts +1 -1
  538. package/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config.d.ts +1 -1
  539. package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +1 -1
  540. package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +1 -1
  541. package/tel-input/utils/coerce-phone-number-format.d.ts +1 -1
  542. package/tiled-select/components/tiled-select/tiled-select.component.d.ts +1 -1
  543. package/tiled-select/tiled-select.models.d.ts +2 -2
  544. package/utils/polling-ticker.d.ts +1 -1
  545. package/utils/subscriber-count.d.ts +1 -1
  546. package/widget/directives/widget-drag-handle.directive.d.ts +1 -1
@@ -21,12 +21,12 @@ export class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {
21
21
  ngOnInit() { }
22
22
  ngOnDestroy() { }
23
23
  }
24
- TopBarMenuButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
25
- TopBarMenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", compact: "compact", profileIcon: "profileIcon" }, host: { attributes: { "attr.type": "button" }, properties: { "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.top-bar-menu-button--compact": "this._hasCompactClass", "class.p-0": "this._hasPadding0Class", "class.rounded": "this._hasRoundedClass", "class.btn-link": "this._hasBtnLinkClass" }, classAttribute: "btn border text-decoration-none py-0" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
24
+ TopBarMenuButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
25
+ TopBarMenuButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", compact: "compact", profileIcon: "profileIcon" }, host: { attributes: { "attr.type": "button" }, properties: { "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.top-bar-menu-button--compact": "this._hasCompactClass", "class.p-0": "this._hasPadding0Class", "class.rounded": "this._hasRoundedClass", "class.btn-link": "this._hasBtnLinkClass" }, classAttribute: "btn border text-decoration-none py-0" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
26
26
  __decorate([
27
27
  InputBoolean()
28
28
  ], TopBarMenuButtonComponent.prototype, "compact", void 0);
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TopBarMenuButtonComponent, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TopBarMenuButtonComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'button[seamTopBarMenuButton]', encapsulation: ViewEncapsulation.None, exportAs: 'seamButton', inputs: ['disabled'], host: {
32
32
  'attr.type': 'button',
@@ -6,9 +6,9 @@ export class TopBarMenuDirective {
6
6
  this.menu = menu;
7
7
  }
8
8
  }
9
- TopBarMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TopBarMenuDirective, deps: [{ token: i1.MenuComponent, self: true }], target: i0.ɵɵFactoryTarget.Directive });
10
- TopBarMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: TopBarMenuDirective, selector: "seam-menu[seamTopBarMenu]", ngImport: i0 });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TopBarMenuDirective, decorators: [{
9
+ TopBarMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TopBarMenuDirective, deps: [{ token: i1.MenuComponent, self: true }], target: i0.ɵɵFactoryTarget.Directive });
10
+ TopBarMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: TopBarMenuDirective, selector: "seam-menu[seamTopBarMenu]", ngImport: i0 });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TopBarMenuDirective, decorators: [{
12
12
  type: Directive,
13
13
  args: [{
14
14
  selector: 'seam-menu[seamTopBarMenu]'
@@ -6,9 +6,9 @@ export class TopBarTitleComponent {
6
6
  constructor() { }
7
7
  ngOnInit() { }
8
8
  }
9
- TopBarTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TopBarTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- TopBarTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TopBarTitleComponent, selector: "seam-top-bar-title", inputs: { titleText: "titleText", subTitleText: "subTitleText" }, ngImport: i0, template: "<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i2.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TopBarTitleComponent, decorators: [{
9
+ TopBarTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TopBarTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ TopBarTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TopBarTitleComponent, selector: "seam-top-bar-title", inputs: { titleText: "titleText", subTitleText: "subTitleText" }, ngImport: i0, template: "<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i2.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TopBarTitleComponent, decorators: [{
12
12
  type: Component,
13
13
  args: [{ selector: 'seam-top-bar-title', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"] }]
14
14
  }], ctorParameters: function () { return []; }, propDecorators: { titleText: [{
@@ -60,12 +60,12 @@ export class TheSeamTopBarComponent {
60
60
  }
61
61
  }
62
62
  }
63
- TheSeamTopBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
64
- TheSeamTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TheSeamTopBarComponent, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", profileIcon: "profileIcon" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar-icon-container{margin:auto 0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultImgSrcDirective, selector: " img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl], img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl], img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]", inputs: ["src.xs", "src.sm", "src.md", "src.lg", "src.xl", "src.lt-sm", "src.lt-md", "src.lt-lg", "src.lt-xl", "src.gt-xs", "src.gt-sm", "src.gt-md", "src.gt-lg"] }, { kind: "component", type: i4.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions"], exportAs: ["seamMenuToggle"] }, { kind: "directive", type: i6.BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.TopBarTitleComponent, selector: "seam-top-bar-title", inputs: ["titleText", "subTitleText"] }, { kind: "component", type: i9.TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: ["disabled", "detailTpl", "compact", "profileIcon"], exportAs: ["seamButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
63
+ TheSeamTopBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
64
+ TheSeamTopBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TheSeamTopBarComponent, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", profileIcon: "profileIcon" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar-icon-container{margin:auto 0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultImgSrcDirective, selector: " img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl], img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl], img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]", inputs: ["src.xs", "src.sm", "src.md", "src.lg", "src.xl", "src.lt-sm", "src.lt-md", "src.lt-lg", "src.lt-xl", "src.gt-xs", "src.gt-sm", "src.gt-md", "src.gt-lg"] }, { kind: "component", type: i4.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "directive", type: i5.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions"], exportAs: ["seamMenuToggle"] }, { kind: "directive", type: i6.BaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i8.TopBarTitleComponent, selector: "seam-top-bar-title", inputs: ["titleText", "subTitleText"] }, { kind: "component", type: i9.TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: ["disabled", "detailTpl", "compact", "profileIcon"], exportAs: ["seamButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
65
65
  __decorate([
66
66
  InputBoolean()
67
67
  ], TheSeamTopBarComponent.prototype, "hasTitle", void 0);
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
69
69
  type: Component,
70
70
  args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Nav Toggle -->\n<div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"faBars\" iconType=\"borderless-styled-square\"></button>\n</div>\n\n<!-- Logo -->\n<div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </a>\n</div>\n\n<ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"hasTitle ? logoSm : logo\" alt=\"Logo\">\n </div>\n </div>\n</ng-template>\n\n<!-- Title -->\n<div class=\"d-flex flex-column flex-grow-1\">\n <seam-top-bar-title *ngIf=\"hasTitle\"\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n</div>\n\n<!-- Items -->\n<div class=\"top-bar-icon-container mr-2\">\n <ng-container *ngFor=\"let item of _items$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n</div>\n\n<!-- Menu -->\n<button seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n</button>\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:white;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar-icon-container{margin:auto 0}\n"] }]
71
71
  }], ctorParameters: function () { return [{ type: i1.TheSeamLayoutService }]; }, propDecorators: { _topBarMenu: [{
@@ -15,8 +15,8 @@ import { TheSeamTopBarComponent } from './top-bar.component';
15
15
  import * as i0 from "@angular/core";
16
16
  export class TheSeamTopBarModule {
17
17
  }
18
- TheSeamTopBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamTopBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
- TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: TheSeamTopBarModule, declarations: [TheSeamTopBarComponent,
18
+ TheSeamTopBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamTopBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
+ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: TheSeamTopBarModule, declarations: [TheSeamTopBarComponent,
20
20
  TopBarTitleComponent,
21
21
  TopBarMenuButtonComponent,
22
22
  TopBarMenuDirective,
@@ -33,14 +33,14 @@ TheSeamTopBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
33
33
  TheSeamMenuModule,
34
34
  TopBarItemDirective,
35
35
  TopBarMenuBtnDetailDirective] });
36
- TheSeamTopBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamTopBarModule, imports: [CommonModule,
36
+ TheSeamTopBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamTopBarModule, imports: [CommonModule,
37
37
  TheSeamLayoutModule,
38
38
  TheSeamButtonsModule,
39
39
  TheSeamIconModule,
40
40
  TheSeamMenuModule,
41
41
  TheSeamBaseLayoutModule,
42
42
  RouterModule, TheSeamMenuModule] });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamTopBarModule, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamTopBarModule, decorators: [{
44
44
  type: NgModule,
45
45
  args: [{
46
46
  declarations: [
@@ -33,6 +33,19 @@ const _TheSeamGoogleMapsMixinBase = mixinDisabled(TheSeamGoogleMapsComponentBase
33
33
  * A wrapper for googlemap.
34
34
  */
35
35
  export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
36
+ set value(value) {
37
+ this._mapValueManager.setValue(value, MapValueSource.Input);
38
+ }
39
+ get value() {
40
+ return this._mapValueManager.value;
41
+ }
42
+ set tabIndex(value) { this._tabIndex = coerceNumberProperty(value); }
43
+ get tabIndex() { return this._tabIndex; }
44
+ set fileImportHandler(value) {
45
+ this._googleMaps.setFileInputHandler(value);
46
+ }
47
+ get _attrDisabled() { return this.disabled || null; }
48
+ get _attrTabIndex() { return this.disabled ? -1 : (this.tabIndex || 0); }
36
49
  constructor(elementRef, _focusMonitor, _googleMaps, _mapValueManager, _googleMapsApiLoader) {
37
50
  super(elementRef);
38
51
  this._focusMonitor = _focusMonitor;
@@ -90,19 +103,6 @@ export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
90
103
  this._googleMaps.setBaseLatLng(this.latitude, this.longitude);
91
104
  this._gmApiLoaded = this._googleMapsApiLoader.load().pipe(map(() => true), catchError(() => of(false)));
92
105
  }
93
- set value(value) {
94
- this._mapValueManager.setValue(value, MapValueSource.Input);
95
- }
96
- get value() {
97
- return this._mapValueManager.value;
98
- }
99
- set tabIndex(value) { this._tabIndex = coerceNumberProperty(value); }
100
- get tabIndex() { return this._tabIndex; }
101
- set fileImportHandler(value) {
102
- this._googleMaps.setFileInputHandler(value);
103
- }
104
- get _attrDisabled() { return this.disabled || null; }
105
- get _attrTabIndex() { return this.disabled ? -1 : (this.tabIndex || 0); }
106
106
  /** @ignore */
107
107
  ngOnInit() {
108
108
  this._googleMaps.setFeatureContextMenu(this.featureContextMenu);
@@ -203,8 +203,8 @@ export class TheSeamGoogleMapsComponent extends _TheSeamGoogleMapsMixinBase {
203
203
  this._googleMaps.deleteSelection();
204
204
  }
205
205
  }
206
- TheSeamGoogleMapsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamGoogleMapsComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i2.GoogleMapsService }, { token: i3.MapValueManagerService }, { token: i4.TheSeamGoogleMapsApiLoader }], target: i0.ɵɵFactoryTarget.Component });
207
- TheSeamGoogleMapsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TheSeamGoogleMapsComponent, selector: "seam-google-maps", inputs: { disabled: "disabled", value: "value", tabIndex: "tabIndex", fileDropEnabled: "fileDropEnabled", fileUploadControlEnabled: "fileUploadControlEnabled", fullscreenControlEnabled: "fullscreenControlEnabled", reCenterControlEnabled: "reCenterControlEnabled", mapTypeControlEnabled: "mapTypeControlEnabled", streetViewControlEnabled: "streetViewControlEnabled", allowDrawingHoleInPolygon: "allowDrawingHoleInPolygon", fileImportHandler: "fileImportHandler", zoom: "zoom", longitude: "longitude", latitude: "latitude" }, outputs: { mapReady: "mapReady" }, host: { properties: { "attr.disabled": "this._attrDisabled", "attr.tabindex": "this._attrTabIndex" } }, providers: [
206
+ TheSeamGoogleMapsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamGoogleMapsComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i2.GoogleMapsService }, { token: i3.MapValueManagerService }, { token: i4.TheSeamGoogleMapsApiLoader }], target: i0.ɵɵFactoryTarget.Component });
207
+ TheSeamGoogleMapsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TheSeamGoogleMapsComponent, selector: "seam-google-maps", inputs: { disabled: "disabled", value: "value", tabIndex: "tabIndex", fileDropEnabled: "fileDropEnabled", fileUploadControlEnabled: "fileUploadControlEnabled", fullscreenControlEnabled: "fullscreenControlEnabled", reCenterControlEnabled: "reCenterControlEnabled", mapTypeControlEnabled: "mapTypeControlEnabled", streetViewControlEnabled: "streetViewControlEnabled", allowDrawingHoleInPolygon: "allowDrawingHoleInPolygon", fileImportHandler: "fileImportHandler", zoom: "zoom", longitude: "longitude", latitude: "latitude" }, outputs: { mapReady: "mapReady" }, host: { properties: { "attr.disabled": "this._attrDisabled", "attr.tabindex": "this._attrTabIndex" } }, providers: [
208
208
  MapValueManagerService,
209
209
  GoogleMapsService,
210
210
  { provide: MAP_CONTROLS_SERVICE, useClass: GoogleMapsControlsService },
@@ -245,7 +245,7 @@ __decorate([
245
245
  __decorate([
246
246
  InputNumber()
247
247
  ], TheSeamGoogleMapsComponent.prototype, "latitude", void 0);
248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamGoogleMapsComponent, decorators: [{
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamGoogleMapsComponent, decorators: [{
249
249
  type: Component,
250
250
  args: [{ selector: 'seam-google-maps', inputs: [
251
251
  'disabled'
@@ -298,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
298
298
  type: ViewChild,
299
299
  args: ['featureContextMenu', { static: true, read: MenuComponent }]
300
300
  }] } });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlHLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDOUUsT0FBTyxFQUE4QixZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzlHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUd2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQTtBQUN0SixPQUFPLEVBQUUsNkNBQTZDLEVBQUUs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T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFDcm9zc2hhaXJzLCBmYUZpbGVJbXBvcnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQgeyBDYW5EaXNhYmxlLCBDYW5EaXNhYmxlQ3RvciwgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciwgbWl4aW5EaXNhYmxlZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tZW51J1xuXG5pbXBvcnQgeyBUaGVTZWFtR29vZ2xlTWFwc0FwaUxvYWRlciB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLWFwaS1sb2FkZXIvZ29vZ2xlLW1hcHMtYXBpLWxvYWRlcidcbmltcG9ydCB7IEdvb2dsZU1hcHNDb250cm9sc1NlcnZpY2UgfSBmcm9tICcuLi9nb29nbGUtbWFwcy1jb250cm9scy5zZXJ2aWNlJ1xuaW1wb3J0IHsgVGhlU2VhbUdvb2dsZU1hcHNSZWNlbnRlckJ1dHRvbkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuLi9nb29nbGUtbWFwcy1yZWNlbnRlci1idXR0b24tY29udHJvbC9nb29nbGUtbWFwcy1yZWNlbnRlci1idXR0b24tY29udHJvbC5jb21wb25lbnQnXG5pbXBvcnQgeyBUaGVTZWFtR29vZ2xlTWFwc1VwbG9hZEJ1dHRvbkNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuLi9nb29nbGUtbWFwcy11cGxvYWQtYnV0dG9uLWNvbnRyb2wvZ29vZ2xlLW1hcHMtdXBsb2FkLWJ1dHRvbi1jb250cm9sLmNvbXBvbmVudCdcbmltcG9ydCB7IEdvb2dsZU1hcHNTZXJ2aWNlIH0gZnJvbSAnLi4vZ29vZ2xlLW1hcHMuc2VydmljZSdcbmltcG9ydCB7IE1hcENvbnRyb2wsIE1BUF9DT05UUk9MU19TRVJWSUNFIH0gZnJvbSAnLi4vbWFwLWNvbnRyb2xzLXNlcnZpY2UnXG5pbXBvcnQgeyBNYXBWYWx1ZSwgTWFwVmFsdWVNYW5hZ2VyU2VydmljZSwgTWFwVmFsdWVTb3VyY2UgfSBmcm9tICcuLi9tYXAtdmFsdWUtbWFuYWdlci5zZXJ2aWNlJ1xuXG5jbGFzcyBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudEJhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbmNvbnN0IF9UaGVTZWFtR29vZ2xlTWFwc01peGluQmFzZTogQ2FuRGlzYWJsZUN0b3IgJlxuICB0eXBlb2YgVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnRCYXNlID1cbiAgICBtaXhpbkRpc2FibGVkKFRoZVNlYW1Hb29nbGVNYXBzQ29tcG9uZW50QmFzZSlcblxuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIGdvb2dsZW1hcC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1nb29nbGUtbWFwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nb29nbGUtbWFwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dvb2dsZS1tYXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogW1xuICAgICdkaXNhYmxlZCdcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTWFwVmFsdWVNYW5hZ2VyU2VydmljZSxcbiAgICBHb29nbGVNYXBzU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IE1BUF9DT05UUk9MU19TRVJWSUNFLCB1c2VDbGFzczogR29vZ2xlTWFwc0NvbnRyb2xzU2VydmljZSB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoZVNlYW1Hb29nbGVNYXBzQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZXhwb3J0QXM6ICdzZWFtR29vZ2xlTWFwcydcbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnQgZXh0ZW5kcyBfVGhlU2VhbUdvb2dsZU1hcHNNaXhpbkJhc2VcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDYW5EaXNhYmxlLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV96b29tOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbG9uZ2l0dWRlOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGF0aXR1ZGU6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9maWxlRHJvcEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Z1bGxzY3JlZW5Db250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZUNlbnRlckNvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX21hcFR5cGVDb250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zdHJlZXRWaWV3Q29udHJvbEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbjogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICByZWFkb25seSBfZ21BcGlMb2FkZWQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICByZWFkb25seSBfZmlsZVVwbG9hZENvbnRyb2xEZWY6IE1hcENvbnRyb2wgPSB7XG4gICAgY29tcG9uZW50OiBUaGVTZWFtR29vZ2xlTWFwc1VwbG9hZEJ1dHRvbkNvbnRyb2xDb21wb25lbnQsXG4gICAgZGF0YTogeyBsYWJlbDogJ0ltcG9ydCBHZW8gRmlsZScsIGljb246IGZhRmlsZUltcG9ydCB9LFxuICAgIHBvc2l0aW9uOiA2IC8qIGdvb2dsZS5tYXBzLkNvbnRyb2xQb3NpdGlvbi5MRUZUX0JPVFRPTSAqLyxcbiAgfVxuXG4gIHJlYWRvbmx5IF9yZUNlbnRlckNvbnRyb2xEZWY6IE1hcENvbnRyb2wgPSB7XG4gICAgY29tcG9uZW50OiBUaGVTZWFtR29vZ2xlTWFwc1JlY2VudGVyQnV0dG9uQ29udHJvbENvbXBvbmVudCxcbiAgICBkYXRhOiB7IGxhYmVsOiAnQ2VudGVyIG9uIEZpZWxkJywgaWNvbjogZmFDcm9zc2hhaXJzIH0sXG4gICAgcG9zaXRpb246IDkgLyogZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uLlJJR0hUX0JPVFRPTSAqLyxcbiAgfVxuXG4gIHByaXZhdGUgX2ZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbiA9IG51bGxcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IE1hcFZhbHVlKSB7XG4gICAgdGhpcy5fbWFwVmFsdWVNYW5hZ2VyLnNldFZhbHVlKHZhbHVlLCBNYXBWYWx1ZVNvdXJjZS5JbnB1dClcbiAgfVxuICBnZXQgdmFsdWUoKTogTWFwVmFsdWUge1xuICAgIHJldHVybiB0aGlzLl9tYXBWYWx1ZU1hbmFnZXIudmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7IHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIH1cbiAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7IHJldHVybiB0aGlzLl90YWJJbmRleCB9XG4gIC8qKlxuICAgKiBTZXQgdGhlIHRhYiBpbmRleCB0byBgLTFgIHRvIGFsbG93IHRoZSByb290IGVsZW1lbnQgb2YgdGhlXG4gICAqIGNvbXBvbmVudCB0byByZWNlaXZlIGBmb2N1c2AgZXZlbnQgZnJvbSBqYXZhc2NyaXB0LCBidXQgbm90IGdldCBmb2N1c2VkIGJ5XG4gICAqIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIF90YWJJbmRleCA9IC0xXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGZpbGVEcm9wRW5hYmxlZDogYm9vbGVhbiA9IHRydWVcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkOiBib29sZWFuID0gZmFsc2VcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGZ1bGxzY3JlZW5Db250cm9sRW5hYmxlZDogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHJlQ2VudGVyQ29udHJvbEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBtYXBUeXBlQ29udHJvbEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzdHJlZXRWaWV3Q29udHJvbEVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBzZXQgZmlsZUltcG9ydEhhbmRsZXIodmFsdWU6ICgoZmlsZTogRmlsZSkgPT4gdm9pZCkgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRGaWxlSW5wdXRIYW5kbGVyKHZhbHVlKVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IF9hdHRyRGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkIHx8IG51bGwgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfYXR0clRhYkluZGV4KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogKHRoaXMudGFiSW5kZXggfHwgMCkgfVxuXG4gIG9uQ2hhbmdlOiBhbnlcbiAgb25Ub3VjaGVkOiBhbnlcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSB6b29tOiBudW1iZXIgPSAxNFxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBsb25naXR1ZGU6IG51bWJlciA9IC05OC41NzAyMDlcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbGF0aXR1ZGU6IG51bWJlciA9IDM3LjYzMzgxNFxuXG4gIEBPdXRwdXQoKSBtYXBSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIEBWaWV3Q2hpbGQoJ2ZlYXR1cmVDb250ZXh0TWVudScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBNZW51Q29tcG9uZW50IH0pIHB1YmxpYyBmZWF0dXJlQ29udGV4dE1lbnUhOiBNZW51Q29tcG9uZW50XG5cbiAgX29wdGlvbnMgPSB7XG4gICAgbWFwVHlwZUNvbnRyb2w6IHRydWUsXG4gICAgbWFwVHlwZUlkOiAnaHlicmlkJyxcbiAgICBzdHJlZXRWaWV3Q29udHJvbDogZmFsc2UsXG4gICAgZnVsbHNjcmVlbkNvbnRyb2w6IHRoaXMuZnVsbHNjcmVlbkNvbnRyb2xFbmFibGVkXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2dvb2dsZU1hcHM6IEdvb2dsZU1hcHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21hcFZhbHVlTWFuYWdlcjogTWFwVmFsdWVNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9nb29nbGVNYXBzQXBpTG9hZGVyOiBUaGVTZWFtR29vZ2xlTWFwc0FwaUxvYWRlcixcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZilcblxuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpLnBpcGUoXG4gICAgICB0YXAob3JpZ2luID0+IHRoaXMuX2ZvY3VzT3JpZ2luID0gb3JpZ2luKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSxcbiAgICApLnN1YnNjcmliZSgpXG5cbiAgICB0aGlzLl9tYXBWYWx1ZU1hbmFnZXIudmFsdWVDaGFuZ2VkLnBpcGUoXG4gICAgICB0YXAoY2hhbmdlID0+IHtcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2UpIHsgdGhpcy5vbkNoYW5nZShjaGFuZ2UudmFsdWUpIH1cbiAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7IHRoaXMub25Ub3VjaGVkKCkgfVxuICAgICAgfSksXG4gICAgICB0YXAoY2hhbmdlZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9nb29nbGVNYXBzLm1hcFJlYWR5ICYmIGNoYW5nZWQuc291cmNlICE9PSBNYXBWYWx1ZVNvdXJjZS5GZWF0dXJlQ2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXREYXRhKGNoYW5nZWQudmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0QmFzZUxhdExuZyh0aGlzLmxhdGl0dWRlLCB0aGlzLmxvbmdpdHVkZSlcblxuICAgIHRoaXMuX2dtQXBpTG9hZGVkID0gdGhpcy5fZ29vZ2xlTWFwc0FwaUxvYWRlci5sb2FkKCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKSxcbiAgICApXG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9nb29nbGVNYXBzLnNldEZlYXR1cmVDb250ZXh0TWVudSh0aGlzLmZlYXR1cmVDb250ZXh0TWVudSlcblxuICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih3aW5kb3csICdrZXlkb3duJykucGlwZShcbiAgICAgIHRhcCgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICAgICAgY2FzZSAnRGVsZXRlJzogdGhpcy5fZ29vZ2xlTWFwcy5kZWxldGVTZWxlY3Rpb24oKTsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGJyZWFrXG4gICAgICAgICAgY2FzZSAnRXNjYXBlJzogdGhpcy5fZ29vZ2xlTWFwcy5zdG9wRHJhd2luZygpOyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgIGJyZWFrXG4gICAgICAgICAgY2FzZSAnQ29udGV4dE1lbnUnOiB0aGlzLl9nb29nbGVNYXBzLm9wZW5Db250ZXh0TWVudSgpOyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpXG4gICAgKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpXG5cbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGxldCB1cGRhdGVCYXNlID0gZmFsc2VcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnbGF0aXR1ZGUnKSkge1xuICAgICAgdGhpcy5sYXRpdHVkZSA9IGNoYW5nZXNbJ2xhdGl0dWRlJ10uY3VycmVudFZhbHVlXG4gICAgICB1cGRhdGVCYXNlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnbG9uZ2l0dWRlJykpIHtcbiAgICAgIHRoaXMubG9uZ2l0dWRlID0gY2hhbmdlc1snbG9uZ2l0dWRlJ10uY3VycmVudFZhbHVlXG4gICAgICB1cGRhdGVCYXNlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodXBkYXRlQmFzZSkge1xuICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRCYXNlTGF0TG5nKHRoaXMubGF0aXR1ZGUsIHRoaXMubG9uZ2l0dWRlKVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdhbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uJykpIHtcbiAgICAgIHRoaXMuX2dvb2dsZU1hcHMuYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbih0aGlzLmFsbG93RHJhd2luZ0hvbGVJblBvbHlnb24pXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Z1bGxzY3JlZW5Db250cm9sRW5hYmxlZCcpKSB7XG4gICAgICBjb25zdCBmdWxsc2NyZWVuQ29udHJvbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShjaGFuZ2VzWydmdWxsc2NyZWVuQ29udHJvbEVuYWJsZWQnXS5jdXJyZW50VmFsdWUpXG4gICAgICBpZiAoZnVsbHNjcmVlbkNvbnRyb2wgIT09IHRoaXMuX29wdGlvbnMuZnVsbHNjcmVlbkNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi50aGlzLl9vcHRpb25zLFxuICAgICAgICAgIGZ1bGxzY3JlZW5Db250cm9sLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogTWFwVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWVcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmblxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm5cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZFxuICB9XG5cbiAgcHVibGljIGZpdEJvdW5kcyhib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcyB8IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc0xpdGVyYWwsIHBhZGRpbmc/OiBudW1iZXIgfCBnb29nbGUubWFwcy5QYWRkaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5maXRCb3VuZHMoYm91bmRzLCBwYWRkaW5nKVxuICB9XG5cbiAgcHVibGljIGdldEdlb0pzb24oKTogUHJvbWlzZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fZ29vZ2xlTWFwcy5nZXRHZW9Kc29uKClcbiAgfVxuXG4gIHB1YmxpYyBoYXNGb2N1cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNPcmlnaW4gIT09IG51bGwgJiYgdGhpcy5fZm9jdXNPcmlnaW4gIT09IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGJ1dHRvbi4gKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoKVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SG9zdEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICB9XG5cbiAgX29uTWFwUmVhZHkodGhlTWFwOiBnb29nbGUubWFwcy5NYXApIHtcbiAgICB0aGlzLl9nb29nbGVNYXBzLnNldE1hcCh0aGVNYXApXG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXREYXRhKHRoaXMuX21hcFZhbHVlTWFuYWdlci52YWx1ZSlcbiAgICAvLyBOT1RFOiBBZ21NYXAgaGFzIGEgcmFjZSBjb25kaXRpb24gcHJvYmxlbSB0aGF0IGNhdXNlcyB0aGUgaW5wdXQgbGF0aXR1ZGUsXG4gICAgLy8gbG9uZ2l0dWRlLCBhbmQgem9vbSB0byBnZXQgaWdub3JlZCwgYmVmb3JlIGdvb2dsZW1hcHMgZW1pdHNcbiAgICAvLyAnY2VudGVyX2NoYW5nZWQnLiBUaGlzIHNob3VsZCBhdm9pZCB0aGUgaXNzdWUsIHVudGlsIHdlIHN0b3AgdXNpbmcgQWdtTWFwXG4gICAgLy8gb3IgdXBncmFkZSB0byBhIG1vcmUgcmVjZW50IHZlcnNpb24gdGhhdCBtYXkgbm90IGhhdmUgdGhlIGlzc3VlIGFueW1vcmUuXG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgdGhlIHN3aXRjaCB0byAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnIGZpeGVkIHRoaXMgcHJvYmxlbS5cbiAgICB0aGlzLl9nb29nbGVNYXBzLnJlQ2VudGVyT25GZWF0dXJlcygpXG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5nb29nbGVNYXA/LnNldFpvb20odGhpcy56b29tKVxuICB9XG5cbiAgX29uQ2xpY2tEZWxldGVGZWF0dXJlKCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuZGVsZXRlU2VsZWN0aW9uKClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9nbUFwaUxvYWRlZCB8IGFzeW5jXCI+XG4gIDxnb29nbGUtbWFwXG4gICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgd2lkdGg9XCIxMDAlXCJcbiAgICBbY2VudGVyXT1cInsgbGF0OiBsYXRpdHVkZSwgbG5nOiBsb25naXR1ZGUgfVwiXG4gICAgW3pvb21dPVwiem9vbVwiXG4gICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgIChtYXBJbml0aWFsaXplZCk9XCJfb25NYXBSZWFkeSgkYW55KCRldmVudCkpXCJcbiAgICA+XG4gIDwvZ29vZ2xlLW1hcD5cbjwvbmctY29udGFpbmVyPlxuPHNlYW0tbWVudSAjZmVhdHVyZUNvbnRleHRNZW51PlxuICA8YnV0dG9uIHNlYW1NZW51SXRlbSAoY2xpY2spPVwiX29uQ2xpY2tEZWxldGVGZWF0dXJlKClcIj5EZWxldGU8L2J1dHRvbj5cbjwvc2VhbS1tZW51PlxuPHNlYW0tbWFwLWZpbGUtZHJvcCAqbmdJZj1cImZpbGVEcm9wRW5hYmxlZFwiPjwvc2VhbS1tYXAtZmlsZS1kcm9wPlxuXG48c2VhbS1tYXAtY29udHJvbCAqbmdJZj1cImZpbGVVcGxvYWRDb250cm9sRW5hYmxlZFwiIFtkZWZdPVwiX2ZpbGVVcGxvYWRDb250cm9sRGVmXCI+PC9zZWFtLW1hcC1jb250cm9sPlxuPHNlYW0tbWFwLWNvbnRyb2wgKm5nSWY9XCJyZUNlbnRlckNvbnRyb2xFbmFibGVkXCIgW2RlZl09XCJfcmVDZW50ZXJDb250cm9sRGVmXCI+PC9zZWFtLW1hcC1jb250cm9sPlxuIl19
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzL2dvb2dsZS1tYXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQzlHLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDOUUsT0FBTyxFQUE4QixZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzlHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUd2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQTtBQUN0SixPQUFPLEVBQUUsNkNBQTZDLEVBQUUs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cmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYUNyb3NzaGFpcnMsIGZhRmlsZUltcG9ydCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcbmltcG9ydCB7IENhbkRpc2FibGUsIENhbkRpc2FibGVDdG9yLCBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyLCBtaXhpbkRpc2FibGVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21lbnUnXG5cbmltcG9ydCB7IFRoZVNlYW1Hb29nbGVNYXBzQXBpTG9hZGVyIH0gZnJvbSAnLi4vZ29vZ2xlLW1hcHMtYXBpLWxvYWRlci9nb29nbGUtbWFwcy1hcGktbG9hZGVyJ1xuaW1wb3J0IHsgR29vZ2xlTWFwc0NvbnRyb2xzU2VydmljZSB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLWNvbnRyb2xzLnNlcnZpY2UnXG5pbXBvcnQgeyBUaGVTZWFtR29vZ2xlTWFwc1JlY2VudGVyQnV0dG9uQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLXJlY2VudGVyLWJ1dHRvbi1jb250cm9sL2dvb2dsZS1tYXBzLXJlY2VudGVyLWJ1dHRvbi1jb250cm9sLmNvbXBvbmVudCdcbmltcG9ydCB7IFRoZVNlYW1Hb29nbGVNYXBzVXBsb2FkQnV0dG9uQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4uL2dvb2dsZS1tYXBzLXVwbG9hZC1idXR0b24tY29udHJvbC9nb29nbGUtbWFwcy11cGxvYWQtYnV0dG9uLWNvbnRyb2wuY29tcG9uZW50J1xuaW1wb3J0IHsgR29vZ2xlTWFwc1NlcnZpY2UgfSBmcm9tICcuLi9nb29nbGUtbWFwcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWFwQ29udHJvbCwgTUFQX0NPTlRST0xTX1NFUlZJQ0UgfSBmcm9tICcuLi9tYXAtY29udHJvbHMtc2VydmljZSdcbmltcG9ydCB7IE1hcFZhbHVlLCBNYXBWYWx1ZU1hbmFnZXJTZXJ2aWNlLCBNYXBWYWx1ZVNvdXJjZSB9IGZyb20gJy4uL21hcC12YWx1ZS1tYW5hZ2VyLnNlcnZpY2UnXG5cbmNsYXNzIFRoZVNlYW1Hb29nbGVNYXBzQ29tcG9uZW50QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn1cblxuY29uc3QgX1RoZVNlYW1Hb29nbGVNYXBzTWl4aW5CYXNlOiBDYW5EaXNhYmxlQ3RvciAmXG4gIHR5cGVvZiBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudEJhc2UgPVxuICAgIG1peGluRGlzYWJsZWQoVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnRCYXNlKVxuXG4vKipcbiAqIEEgd3JhcHBlciBmb3IgZ29vZ2xlbWFwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWdvb2dsZS1tYXBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dvb2dsZS1tYXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ29vZ2xlLW1hcHMuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbXG4gICAgJ2Rpc2FibGVkJ1xuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBNYXBWYWx1ZU1hbmFnZXJTZXJ2aWNlLFxuICAgIEdvb2dsZU1hcHNTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogTUFQX0NPTlRST0xTX1NFUlZJQ0UsIHVzZUNsYXNzOiBHb29nbGVNYXBzQ29udHJvbHNTZXJ2aWNlIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGhlU2VhbUdvb2dsZU1hcHNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBleHBvcnRBczogJ3NlYW1Hb29nbGVNYXBzJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtR29vZ2xlTWFwc0NvbXBvbmVudCBleHRlbmRzIF9UaGVTZWFtR29vZ2xlTWFwc01peGluQmFzZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENhbkRpc2FibGUsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3pvb206IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sb25naXR1ZGU6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sYXRpdHVkZTogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2ZpbGVEcm9wRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9maWxlVXBsb2FkQ29udHJvbEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZnVsbHNjcmVlbkNvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlQ2VudGVyQ29udHJvbEVuYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbWFwVHlwZUNvbnRyb2xFbmFibGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3N0cmVldFZpZXdDb250cm9sRW5hYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9hbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHJlYWRvbmx5IF9nbUFwaUxvYWRlZDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIHJlYWRvbmx5IF9maWxlVXBsb2FkQ29udHJvbERlZjogTWFwQ29udHJvbCA9IHtcbiAgICBjb21wb25lbnQ6IFRoZVNlYW1Hb29nbGVNYXBzVXBsb2FkQnV0dG9uQ29udHJvbENvbXBvbmVudCxcbiAgICBkYXRhOiB7IGxhYmVsOiAnSW1wb3J0IEdlbyBGaWxlJywgaWNvbjogZmFGaWxlSW1wb3J0IH0sXG4gICAgcG9zaXRpb246IDYgLyogZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uLkxFRlRfQk9UVE9NICovLFxuICB9XG5cbiAgcmVhZG9ubHkgX3JlQ2VudGVyQ29udHJvbERlZjogTWFwQ29udHJvbCA9IHtcbiAgICBjb21wb25lbnQ6IFRoZVNlYW1Hb29nbGVNYXBzUmVjZW50ZXJCdXR0b25Db250cm9sQ29tcG9uZW50LFxuICAgIGRhdGE6IHsgbGFiZWw6ICdDZW50ZXIgb24gRmllbGQnLCBpY29uOiBmYUNyb3NzaGFpcnMgfSxcbiAgICBwb3NpdGlvbjogOSAvKiBnb29nbGUubWFwcy5Db250cm9sUG9zaXRpb24uUklHSFRfQk9UVE9NICovLFxuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXNPcmlnaW46IEZvY3VzT3JpZ2luID0gbnVsbFxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogTWFwVmFsdWUpIHtcbiAgICB0aGlzLl9tYXBWYWx1ZU1hbmFnZXIuc2V0VmFsdWUodmFsdWUsIE1hcFZhbHVlU291cmNlLklucHV0KVxuICB9XG4gIGdldCB2YWx1ZSgpOiBNYXBWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21hcFZhbHVlTWFuYWdlci52YWx1ZVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHRhYkluZGV4KHZhbHVlOiBudW1iZXIpIHsgdGhpcy5fdGFiSW5kZXggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSkgfVxuICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3RhYkluZGV4IH1cbiAgLyoqXG4gICAqIFNldCB0aGUgdGFiIGluZGV4IHRvIGAtMWAgdG8gYWxsb3cgdGhlIHJvb3QgZWxlbWVudCBvZiB0aGVcbiAgICogY29tcG9uZW50IHRvIHJlY2VpdmUgYGZvY3VzYCBldmVudCBmcm9tIGphdmFzY3JpcHQsIGJ1dCBub3QgZ2V0IGZvY3VzZWQgYnlcbiAgICoga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgX3RhYkluZGV4ID0gLTFcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZmlsZURyb3BFbmFibGVkOiBib29sZWFuID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBmaWxlVXBsb2FkQ29udHJvbEVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZnVsbHNjcmVlbkNvbnRyb2xFbmFibGVkOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVDZW50ZXJDb250cm9sRW5hYmxlZDogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG1hcFR5cGVDb250cm9sRW5hYmxlZDogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHN0cmVldFZpZXdDb250cm9sRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGFsbG93RHJhd2luZ0hvbGVJblBvbHlnb246IGJvb2xlYW4gPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBmaWxlSW1wb3J0SGFuZGxlcih2YWx1ZTogKChmaWxlOiBGaWxlKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl9nb29nbGVNYXBzLnNldEZpbGVJbnB1dEhhbmRsZXIodmFsdWUpXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgX2F0dHJEaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgbnVsbCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgZ2V0IF9hdHRyVGFiSW5kZXgoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiAodGhpcy50YWJJbmRleCB8fCAwKSB9XG5cbiAgb25DaGFuZ2U6IGFueVxuICBvblRvdWNoZWQ6IGFueVxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHpvb206IG51bWJlciA9IDE0XG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIGxvbmdpdHVkZTogbnVtYmVyID0gLTk4LjU3MDIwOVxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBsYXRpdHVkZTogbnVtYmVyID0gMzcuNjMzODE0XG5cbiAgQE91dHB1dCgpIG1hcFJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgQFZpZXdDaGlsZCgnZmVhdHVyZUNvbnRleHRNZW51JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IE1lbnVDb21wb25lbnQgfSkgcHVibGljIGZlYXR1cmVDb250ZXh0TWVudSE6IE1lbnVDb21wb25lbnRcblxuICBfb3B0aW9ucyA9IHtcbiAgICBtYXBUeXBlQ29udHJvbDogdHJ1ZSxcbiAgICBtYXBUeXBlSWQ6ICdoeWJyaWQnLFxuICAgIHN0cmVldFZpZXdDb250cm9sOiBmYWxzZSxcbiAgICBmdWxsc2NyZWVuQ29udHJvbDogdGhpcy5mdWxsc2NyZWVuQ29udHJvbEVuYWJsZWRcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZ29vZ2xlTWFwczogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWFwVmFsdWVNYW5hZ2VyOiBNYXBWYWx1ZU1hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2dvb2dsZU1hcHNBcGlMb2FkZXI6IFRoZVNlYW1Hb29nbGVNYXBzQXBpTG9hZGVyLFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKVxuXG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSkucGlwZShcbiAgICAgIHRhcChvcmlnaW4gPT4gdGhpcy5fZm9jdXNPcmlnaW4gPSBvcmlnaW4pLFxuICAgICAgdGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpLFxuICAgICkuc3Vic2NyaWJlKClcblxuICAgIHRoaXMuX21hcFZhbHVlTWFuYWdlci52YWx1ZUNoYW5nZWQucGlwZShcbiAgICAgIHRhcChjaGFuZ2UgPT4ge1xuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSkgeyB0aGlzLm9uQ2hhbmdlKGNoYW5nZS52YWx1ZSkgfVxuICAgICAgICBpZiAodGhpcy5vblRvdWNoZWQpIHsgdGhpcy5vblRvdWNoZWQoKSB9XG4gICAgICB9KSxcbiAgICAgIHRhcChjaGFuZ2VkID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2dvb2dsZU1hcHMubWFwUmVhZHkgJiYgY2hhbmdlZC5zb3VyY2UgIT09IE1hcFZhbHVlU291cmNlLkZlYXR1cmVDaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLl9nb29nbGVNYXBzLnNldERhdGEoY2hhbmdlZC52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSksXG4gICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5zZXRCYXNlTGF0TG5nKHRoaXMubGF0aXR1ZGUsIHRoaXMubG9uZ2l0dWRlKVxuXG4gICAgdGhpcy5fZ21BcGlMb2FkZWQgPSB0aGlzLl9nb29nbGVNYXBzQXBpTG9hZGVyLmxvYWQoKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpLFxuICAgIClcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0RmVhdHVyZUNvbnRleHRNZW51KHRoaXMuZmVhdHVyZUNvbnRleHRNZW51KVxuXG4gICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHdpbmRvdywgJ2tleWRvd24nKS5waXBlKFxuICAgICAgdGFwKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICBjYXNlICdEZWxldGUnOiB0aGlzLl9nb29nbGVNYXBzLmRlbGV0ZVNlbGVjdGlvbigpOyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgYnJlYWtcbiAgICAgICAgICBjYXNlICdFc2NhcGUnOiB0aGlzLl9nb29nbGVNYXBzLnN0b3BEcmF3aW5nKCk7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAgYnJlYWtcbiAgICAgICAgICBjYXNlICdDb250ZXh0TWVudSc6IHRoaXMuX2dvb2dsZU1hcHMub3BlbkNvbnRleHRNZW51KCk7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZilcblxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBuZ0FmdGVyVmlld0luaXQoKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgbGV0IHVwZGF0ZUJhc2UgPSBmYWxzZVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdsYXRpdHVkZScpKSB7XG4gICAgICB0aGlzLmxhdGl0dWRlID0gY2hhbmdlc1snbGF0aXR1ZGUnXS5jdXJyZW50VmFsdWVcbiAgICAgIHVwZGF0ZUJhc2UgPSB0cnVlXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdsb25naXR1ZGUnKSkge1xuICAgICAgdGhpcy5sb25naXR1ZGUgPSBjaGFuZ2VzWydsb25naXR1ZGUnXS5jdXJyZW50VmFsdWVcbiAgICAgIHVwZGF0ZUJhc2UgPSB0cnVlXG4gICAgfVxuICAgIGlmICh1cGRhdGVCYXNlKSB7XG4gICAgICB0aGlzLl9nb29nbGVNYXBzLnNldEJhc2VMYXRMbmcodGhpcy5sYXRpdHVkZSwgdGhpcy5sb25naXR1ZGUpXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2FsbG93RHJhd2luZ0hvbGVJblBvbHlnb24nKSkge1xuICAgICAgdGhpcy5fZ29vZ2xlTWFwcy5hbGxvd0RyYXdpbmdIb2xlSW5Qb2x5Z29uKHRoaXMuYWxsb3dEcmF3aW5nSG9sZUluUG9seWdvbilcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZnVsbHNjcmVlbkNvbnRyb2xFbmFibGVkJykpIHtcbiAgICAgIGNvbnN0IGZ1bGxzY3JlZW5Db250cm9sID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXNbJ2Z1bGxzY3JlZW5Db250cm9sRW5hYmxlZCddLmN1cnJlbnRWYWx1ZSlcbiAgICAgIGlmIChmdWxsc2NyZWVuQ29udHJvbCAhPT0gdGhpcy5fb3B0aW9ucy5mdWxsc2NyZWVuQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0ge1xuICAgICAgICAgIC4uLnRoaXMuX29wdGlvbnMsXG4gICAgICAgICAgZnVsbHNjcmVlbkNvbnRyb2wsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBNYXBWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuXG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmblxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG4gIH1cblxuICBwdWJsaWMgZml0Qm91bmRzKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzIHwgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzTGl0ZXJhbCwgcGFkZGluZz86IG51bWJlciB8IGdvb2dsZS5tYXBzLlBhZGRpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9nb29nbGVNYXBzLmZpdEJvdW5kcyhib3VuZHMsIHBhZGRpbmcpXG4gIH1cblxuICBwdWJsaWMgZ2V0R2VvSnNvbigpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLl9nb29nbGVNYXBzLmdldEdlb0pzb24oKVxuICB9XG5cbiAgcHVibGljIGhhc0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c09yaWdpbiAhPT0gbnVsbCAmJiB0aGlzLl9mb2N1c09yaWdpbiAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgYnV0dG9uLiAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cygpXG4gIH1cblxuICBwcml2YXRlIF9nZXRIb3N0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gIH1cblxuICBfb25NYXBSZWFkeSh0aGVNYXA6IGdvb2dsZS5tYXBzLk1hcCkge1xuICAgIHRoaXMuX2dvb2dsZU1hcHMuc2V0TWFwKHRoZU1hcClcbiAgICB0aGlzLl9nb29nbGVNYXBzLnNldERhdGEodGhpcy5fbWFwVmFsdWVNYW5hZ2VyLnZhbHVlKVxuICAgIC8vIE5PVEU6IEFnbU1hcCBoYXMgYSByYWNlIGNvbmRpdGlvbiBwcm9ibGVtIHRoYXQgY2F1c2VzIHRoZSBpbnB1dCBsYXRpdHVkZSxcbiAgICAvLyBsb25naXR1ZGUsIGFuZCB6b29tIHRvIGdldCBpZ25vcmVkLCBiZWZvcmUgZ29vZ2xlbWFwcyBlbWl0c1xuICAgIC8vICdjZW50ZXJfY2hhbmdlZCcuIFRoaXMgc2hvdWxkIGF2b2lkIHRoZSBpc3N1ZSwgdW50aWwgd2Ugc3RvcCB1c2luZyBBZ21NYXBcbiAgICAvLyBvciB1cGdyYWRlIHRvIGEgbW9yZSByZWNlbnQgdmVyc2lvbiB0aGF0IG1heSBub3QgaGF2ZSB0aGUgaXNzdWUgYW55bW9yZS5cbiAgICAvLyBUT0RPOiBDaGVjayBpZiB0aGUgc3dpdGNoIHRvICdAYW5ndWxhci9nb29nbGUtbWFwcycgZml4ZWQgdGhpcyBwcm9ibGVtLlxuICAgIHRoaXMuX2dvb2dsZU1hcHMucmVDZW50ZXJPbkZlYXR1cmVzKClcbiAgICB0aGlzLl9nb29nbGVNYXBzLmdvb2dsZU1hcD8uc2V0Wm9vbSh0aGlzLnpvb20pXG4gIH1cblxuICBfb25DbGlja0RlbGV0ZUZlYXR1cmUoKSB7XG4gICAgdGhpcy5fZ29vZ2xlTWFwcy5kZWxldGVTZWxlY3Rpb24oKVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiX2dtQXBpTG9hZGVkIHwgYXN5bmNcIj5cbiAgPGdvb2dsZS1tYXBcbiAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICB3aWR0aD1cIjEwMCVcIlxuICAgIFtjZW50ZXJdPVwieyBsYXQ6IGxhdGl0dWRlLCBsbmc6IGxvbmdpdHVkZSB9XCJcbiAgICBbem9vbV09XCJ6b29tXCJcbiAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgKG1hcEluaXRpYWxpemVkKT1cIl9vbk1hcFJlYWR5KCRhbnkoJGV2ZW50KSlcIlxuICAgID5cbiAgPC9nb29nbGUtbWFwPlxuPC9uZy1jb250YWluZXI+XG48c2VhbS1tZW51ICNmZWF0dXJlQ29udGV4dE1lbnU+XG4gIDxidXR0b24gc2VhbU1lbnVJdGVtIChjbGljayk9XCJfb25DbGlja0RlbGV0ZUZlYXR1cmUoKVwiPkRlbGV0ZTwvYnV0dG9uPlxuPC9zZWFtLW1lbnU+XG48c2VhbS1tYXAtZmlsZS1kcm9wICpuZ0lmPVwiZmlsZURyb3BFbmFibGVkXCI+PC9zZWFtLW1hcC1maWxlLWRyb3A+XG5cbjxzZWFtLW1hcC1jb250cm9sICpuZ0lmPVwiZmlsZVVwbG9hZENvbnRyb2xFbmFibGVkXCIgW2RlZl09XCJfZmlsZVVwbG9hZENvbnRyb2xEZWZcIj48L3NlYW0tbWFwLWNvbnRyb2w+XG48c2VhbS1tYXAtY29udHJvbCAqbmdJZj1cInJlQ2VudGVyQ29udHJvbEVuYWJsZWRcIiBbZGVmXT1cIl9yZUNlbnRlckNvbnRyb2xEZWZcIj48L3NlYW0tbWFwLWNvbnRyb2w+XG4iXX0=
@@ -59,9 +59,9 @@ export class GoogleMapsControlsService {
59
59
  return new MapControlRef(this._googleMaps, this._componentFactoryResolver, this._injector, control);
60
60
  }
61
61
  }
62
- GoogleMapsControlsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: GoogleMapsControlsService, deps: [{ token: i1.GoogleMapsService }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
63
- GoogleMapsControlsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: GoogleMapsControlsService });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: GoogleMapsControlsService, decorators: [{
62
+ GoogleMapsControlsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GoogleMapsControlsService, deps: [{ token: i1.GoogleMapsService }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ GoogleMapsControlsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GoogleMapsControlsService });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GoogleMapsControlsService, decorators: [{
65
65
  type: Injectable
66
66
  }], ctorParameters: function () { return [{ type: i1.GoogleMapsService }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }]; } });
67
67
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMtY29udHJvbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy1jb250cm9scy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEMsVUFBVSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUE7QUFDNUcsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUcxQyxPQUFPLEVBQWtDLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7OztBQUV6RixNQUFNLE9BQU8sYUFBYTtJQVN4QixZQUNtQixXQUE4QixFQUM5Qix5QkFBbUQsRUFDbkQsU0FBbUIsRUFDbkIsV0FBdUI7UUFIdkIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMEI7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQVh6QixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBYXRELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRXRELE1BQU0sU0FBUyxHQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFBO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVqRixNQUFNLFNBQVMsR0FBcUIsRUFBRSxDQUFBO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2FBQ2hDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMvQixTQUFTO1lBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3ZCLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFBO1FBRXBELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQTtRQUVyRixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUN6QyxRQUFRLENBQ1QsQ0FBQTtRQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUE7SUFDbEMsQ0FBQztJQUVNLE9BQU87UUFDWixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQTtRQUM3QyxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDWixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDakUsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO29CQUN0RCxHQUFHLEdBQUcsS0FBSyxDQUFBO2lCQUNaO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDZCxNQUFNLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFBO2FBQzdEO1lBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDekQ7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbkMsQ0FBQztDQUVGO0FBR0QsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxZQUNtQixXQUE4QixFQUM5Qix5QkFBbUQsRUFDbkQsU0FBbUI7UUFGbkIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMEI7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBVTtJQUNsQyxDQUFDO0lBRUUsR0FBRyxDQUFDLE9BQW1CO1FBQzVCLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNyRyxDQUFDOztzSEFWVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBTdGF0aWNQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgR29vZ2xlTWFwc1NlcnZpY2UgfSBmcm9tICcuL2dvb2dsZS1tYXBzLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXBDb250cm9sLCBNYXBDb250cm9sc1NlcnZpY2UsIE1BUF9DT05UUk9MX0RBVEEgfSBmcm9tICcuL21hcC1jb250cm9scy1zZXJ2aWNlJ1xuXG5leHBvcnQgY2xhc3MgTWFwQ29udHJvbFJlZiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveWVkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBwcml2YXRlIF9jb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+XG4gIHByaXZhdGUgX2FkZGVkQXRQb3NpdGlvbjogZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uXG5cbiAgcHVibGljIGRlc3Ryb3llZDogT2JzZXJ2YWJsZTx2b2lkPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2dvb2dsZU1hcHM6IEdvb2dsZU1hcHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250cm9sRGVmOiBNYXBDb250cm9sXG4gICkge1xuICAgIHRoaXMuZGVzdHJveWVkID0gdGhpcy5fZGVzdHJveWVkU3ViamVjdC5hc09ic2VydmFibGUoKVxuXG4gICAgY29uc3QgY29tcG9uZW50OiBhbnkgPSB0aGlzLl9jb250cm9sRGVmLmNvbXBvbmVudFxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KVxuXG4gICAgY29uc3QgcHJvdmlkZXJzOiBTdGF0aWNQcm92aWRlcltdID0gW11cbiAgICBpZiAodGhpcy5fY29udHJvbERlZi5kYXRhKSB7XG4gICAgICBwcm92aWRlcnMucHVzaCh7XG4gICAgICAgIHByb3ZpZGU6IE1BUF9DT05UUk9MX0RBVEEsXG4gICAgICAgIHVzZVZhbHVlOiB0aGlzLl9jb250cm9sRGVmLmRhdGFcbiAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgfSlcblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IGZhY3RvcnkuY3JlYXRlKGluamVjdG9yKVxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcblxuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fY29udHJvbERlZi5wb3NpdGlvbiA/PyBnb29nbGUubWFwcy5Db250cm9sUG9zaXRpb24uTEVGVF9CT1RUT01cblxuICAgIHRoaXMuX2dvb2dsZU1hcHMuYWRkQ29udHJvbChcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LFxuICAgICAgcG9zaXRpb25cbiAgICApXG5cbiAgICB0aGlzLl9hZGRlZEF0UG9zaXRpb24gPSBwb3NpdGlvblxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgZ29vZ2xlTWFwcyA9IHRoaXMuX2dvb2dsZU1hcHMuZ29vZ2xlTWFwXG4gICAgaWYgKGdvb2dsZU1hcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGlkeCA9IC0xXG4gICAgICBnb29nbGVNYXBzLmNvbnRyb2xzW3RoaXMuX2FkZGVkQXRQb3NpdGlvbl0uZm9yRWFjaCgoZWxlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGVsZW0gPT09IHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgaWR4ID0gaW5kZXhcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBVbmFibGUgdG8gZGVzdHJveSBjb250cm9sLiBDb250cm9sIG5vdCBmb3VuZC5gKVxuICAgICAgfVxuICAgICAgZ29vZ2xlTWFwcy5jb250cm9sc1t0aGlzLl9hZGRlZEF0UG9zaXRpb25dLnJlbW92ZUF0KGlkeClcbiAgICB9XG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmRlc3Ryb3koKVxuXG4gICAgdGhpcy5fZGVzdHJveWVkU3ViamVjdC5uZXh0KClcbiAgICB0aGlzLl9kZXN0cm95ZWRTdWJqZWN0LmNvbXBsZXRlKClcbiAgfVxuXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHb29nbGVNYXBzQ29udHJvbHNTZXJ2aWNlIGltcGxlbWVudHMgTWFwQ29udHJvbHNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9nb29nbGVNYXBzOiBHb29nbGVNYXBzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICkgeyB9XG5cbiAgcHVibGljIGFkZChjb250cm9sOiBNYXBDb250cm9sKTogTWFwQ29udHJvbFJlZiB7XG4gICAgcmV0dXJuIG5ldyBNYXBDb250cm9sUmVmKHRoaXMuX2dvb2dsZU1hcHMsIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgdGhpcy5faW5qZWN0b3IsIGNvbnRyb2wpXG4gIH1cbn1cbiJdfQ==
@@ -16,21 +16,6 @@ import * as i4 from "./google-maps-places-autocomplete.directive";
16
16
  *
17
17
  */
18
18
  export class TheSeamGoogleMapsPlacesAutoCompleteComponent {
19
- constructor(_elementRef) {
20
- this._elementRef = _elementRef;
21
- this._ngUnsubscribe = new Subject();
22
- this._autoCompleteReadySubject = new Subject();
23
- this._placeChangedPending = [];
24
- this.label = 'Search by address, place or name';
25
- this.icon = faSearchLocation;
26
- this.disabled = false;
27
- this.placeholder = 'Enter address, place or name';
28
- this.autocorrect = 'off';
29
- this.autocapitalize = 'off';
30
- this._tabIndex = -1;
31
- this._options = SEAM_GOOGLE_PLACES_AUTOCOMPLETE_DEFAULT_OPTIONS;
32
- this.placeChanged = this._autoCompleteReadySubject.pipe(startWith(undefined), switchMap(() => this._createPlaceChangedObservable()));
33
- }
34
19
  /**
35
20
  * Set the tab index to `-1` to allow the root element of the
36
21
  * component to receive `focus` event from javascript, but not get focused by
@@ -56,6 +41,21 @@ export class TheSeamGoogleMapsPlacesAutoCompleteComponent {
56
41
  _onFocus() {
57
42
  this._inputDirective?.focus();
58
43
  }
44
+ constructor(_elementRef) {
45
+ this._elementRef = _elementRef;
46
+ this._ngUnsubscribe = new Subject();
47
+ this._autoCompleteReadySubject = new Subject();
48
+ this._placeChangedPending = [];
49
+ this.label = 'Search by address, place or name';
50
+ this.icon = faSearchLocation;
51
+ this.disabled = false;
52
+ this.placeholder = 'Enter address, place or name';
53
+ this.autocorrect = 'off';
54
+ this.autocapitalize = 'off';
55
+ this._tabIndex = -1;
56
+ this._options = SEAM_GOOGLE_PLACES_AUTOCOMPLETE_DEFAULT_OPTIONS;
57
+ this.placeChanged = this._autoCompleteReadySubject.pipe(startWith(undefined), switchMap(() => this._createPlaceChangedObservable()));
58
+ }
59
59
  ngOnInit() { }
60
60
  /** @ignore */
61
61
  ngOnDestroy() {
@@ -165,14 +165,14 @@ export class TheSeamGoogleMapsPlacesAutoCompleteComponent {
165
165
  }
166
166
  }
167
167
  }
168
- TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
169
- TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TheSeamGoogleMapsPlacesAutoCompleteComponent, selector: "seam-google-maps-places-autocomplete", inputs: { label: "label", icon: "icon", disabled: "disabled", placeholder: "placeholder", autocorrect: "autocorrect", autocapitalize: "autocapitalize", tabIndex: "tabIndex", options: "options" }, outputs: { placeChanged: "placeChanged" }, host: { listeners: { "click": "_onClick(event)", "focus": "_onFocus($event)" }, properties: { "attr.tabindex": "this._attrTabIndex" } }, viewQueries: [{ propertyName: "_inputDirective", first: true, predicate: ["inp"], descendants: true, read: InputDirective, static: true }, { propertyName: "__autocompleteDirective", first: true, predicate: TheSeamGoogleMapsPlacesAutocompleteDirective, descendants: true, static: true }], exportAs: ["seamGoogleMapsPlacesAutoComplete"], ngImport: i0, template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\r\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\r\n</div>\r\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\r\n<input #inp=\"seamInput\"\r\n seamInput\r\n seamGoogleMapsPlacesAutocomplete\r\n [disabled]=\"disabled\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.autocorrect]=\"autocorrect\"\r\n [attr.autocapitalize]=\"autocapitalize\"\r\n [options]=\"_options\"\r\n/>\r\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4.TheSeamGoogleMapsPlacesAutocompleteDirective, selector: "input[seamGoogleMapsPlacesAutocomplete]", inputs: ["options"], outputs: ["placeChanged"], exportAs: ["seamGoogleMapsPlacesAutocomplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
+ TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
169
+ TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TheSeamGoogleMapsPlacesAutoCompleteComponent, selector: "seam-google-maps-places-autocomplete", inputs: { label: "label", icon: "icon", disabled: "disabled", placeholder: "placeholder", autocorrect: "autocorrect", autocapitalize: "autocapitalize", tabIndex: "tabIndex", options: "options" }, outputs: { placeChanged: "placeChanged" }, host: { listeners: { "click": "_onClick(event)", "focus": "_onFocus($event)" }, properties: { "attr.tabindex": "this._attrTabIndex" } }, viewQueries: [{ propertyName: "_inputDirective", first: true, predicate: ["inp"], descendants: true, read: InputDirective, static: true }, { propertyName: "__autocompleteDirective", first: true, predicate: TheSeamGoogleMapsPlacesAutocompleteDirective, descendants: true, static: true }], exportAs: ["seamGoogleMapsPlacesAutoComplete"], ngImport: i0, template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\n</div>\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\n<input #inp=\"seamInput\"\n seamInput\n seamGoogleMapsPlacesAutocomplete\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocorrect]=\"autocorrect\"\n [attr.autocapitalize]=\"autocapitalize\"\n [options]=\"_options\"\n/>\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4.TheSeamGoogleMapsPlacesAutocompleteDirective, selector: "input[seamGoogleMapsPlacesAutocomplete]", inputs: ["options"], outputs: ["placeChanged"], exportAs: ["seamGoogleMapsPlacesAutocomplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
170
170
  __decorate([
171
171
  InputBoolean()
172
172
  ], TheSeamGoogleMapsPlacesAutoCompleteComponent.prototype, "disabled", void 0);
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, decorators: [{
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, decorators: [{
174
174
  type: Component,
175
- args: [{ selector: 'seam-google-maps-places-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'seamGoogleMapsPlacesAutoComplete', template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\r\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\r\n</div>\r\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\r\n<input #inp=\"seamInput\"\r\n seamInput\r\n seamGoogleMapsPlacesAutocomplete\r\n [disabled]=\"disabled\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.autocorrect]=\"autocorrect\"\r\n [attr.autocapitalize]=\"autocapitalize\"\r\n [options]=\"_options\"\r\n/>\r\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
175
+ args: [{ selector: 'seam-google-maps-places-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'seamGoogleMapsPlacesAutoComplete', template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\n</div>\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\n<input #inp=\"seamInput\"\n seamInput\n seamGoogleMapsPlacesAutocomplete\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocorrect]=\"autocorrect\"\n [attr.autocapitalize]=\"autocapitalize\"\n [options]=\"_options\"\n/>\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
176
176
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { label: [{
177
177
  type: Input
178
178
  }], icon: [{
@@ -207,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
207
207
  type: HostListener,
208
208
  args: ['focus', ['$event']]
209
209
  }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ29vZ2xlLW1hcHMvZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlL2dvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFNLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRzlELE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLDZDQUE2QyxDQUFBOzs7Ozs7QUFLM0o7O0dBRUc7QUFRSCxNQUFNLE9BQU8sNENBQTRD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Q1QsbUZBQW1GO2dCQUNqRixvRUFBb0UsQ0FDdkUsQ0FBQTtTQUNGO0lBQ0gsQ0FBQzs7eUlBdE5VLDRDQUE0Qzs2SEFBNUMsNENBQTRDLHVoQkFpRDdCLGNBQWMscUZBRTdCLDRDQUE0Qyw4R0N2RnpELDhoQkFhQTtBRHFDMkI7SUFBZixZQUFZLEVBQUU7OEVBQStCOzJGQWQ1Qyw0Q0FBNEM7a0JBUHhELFNBQVM7K0JBQ0Usc0NBQXNDLG1CQUcvQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGtDQUFrQztpR0FZbkMsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFbUIsUUFBUTtzQkFBaEMsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRCxRQUFRO3NCQURYLEtBQUs7Z0JBTUgsT0FBTztzQkFEVixLQUFLO2dCQWVhLFlBQVk7c0JBQTlCLE1BQU07Z0JBRW1ELGVBQWU7c0JBQXhFLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwRCx1QkFBdUI7c0JBRDFCLFNBQVM7dUJBQUMsNENBQTRDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVlyRSxhQUFhO3NCQURoQixXQUFXO3VCQUFDLGVBQWU7Z0JBSTVCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxPQUFPLENBQUU7Z0JBTWxDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgaW50ZXJ2YWwsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXBUbywgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuaW1wb3J0IHsgZmFTZWFyY2hMb2NhdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcclxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXHJcbmltcG9ydCB7IElucHV0RGlyZWN0aXZlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2Zvcm0tZmllbGQnXHJcbmltcG9ydCB7IFNlYW1JY29uIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXHJcblxyXG5pbXBvcnQgeyBTRUFNX0dPT0dMRV9QTEFDRVNfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUywgVGhlU2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuL2dvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUuZGlyZWN0aXZlJ1xyXG5cclxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW4gfCB1bmRlZmluZWRcclxudHlwZSBXaXRoUmVxdWlyZWQ8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gVCAmIHsgW1AgaW4gS10tPzogVFtQXSB9XHJcblxyXG4vKipcclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2VhbS1nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGV4cG9ydEFzOiAnc2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvQ29tcGxldGUnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dFxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdCA9IG5ldyBTdWJqZWN0KClcclxuXHJcbiAgcHJpdmF0ZSBfcGxhY2VDaGFuZ2VkUGVuZGluZzogeyBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4sIHN1YnNjcmliZXI6IFN1YnNjcmliZXI8YW55PiB9W10gPSBbXVxyXG5cclxuICBwdWJsaWMgYXV0b0NvbXBsZXRlPzogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVxyXG5cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdTZWFyY2ggYnkgYWRkcmVzcywgcGxhY2Ugb3IgbmFtZSdcclxuXHJcbiAgQElucHV0KCkgaWNvbjogU2VhbUljb24gfCB1bmRlZmluZWQgfCBudWxsID0gZmFTZWFyY2hMb2NhdGlvblxyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dCA9IGZhbHNlXHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ0VudGVyIGFkZHJlc3MsIHBsYWNlIG9yIG5hbWUnXHJcblxyXG4gIEBJbnB1dCgpIGF1dG9jb3JyZWN0OiAnb2ZmJyB8ICdvbicgfCB1bmRlZmluZWQgfCBudWxsID0gJ29mZidcclxuXHJcbiAgQElucHV0KCkgYXV0b2NhcGl0YWxpemU6ICdvZmYnIHwgJ29uJyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnb2ZmJ1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHRhYiBpbmRleCB0byBgLTFgIHRvIGFsbG93IHRoZSByb290IGVsZW1lbnQgb2YgdGhlXHJcbiAgICogY29tcG9uZW50IHRvIHJlY2VpdmUgYGZvY3VzYCBldmVudCBmcm9tIGphdmFzY3JpcHQsIGJ1dCBub3QgZ2V0IGZvY3VzZWQgYnlcclxuICAgKiBrZXlib2FyZCBuYXZpZ2F0aW9uLlxyXG4gICAqL1xyXG4gICBASW5wdXQoKVxyXG4gICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikgeyB0aGlzLl90YWJJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSB9XHJcbiAgIGdldCB0YWJJbmRleCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fdGFiSW5kZXggfVxyXG4gICBwcml2YXRlIF90YWJJbmRleCA9IC0xXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG9wdGlvbnModmFsdWU6IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVPcHRpb25zIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlIHx8IFNFQU1fR09PR0xFX1BMQUNFU19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TXHJcbiAgfVxyXG4gIF9vcHRpb25zOiBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlT3B0aW9ucyA9IFNFQU1fR09PR0xFX1BMQUNFU19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiBhIFBsYWNlUmVzdWx0IGlzIG1hZGUgYXZhaWxhYmxlIGZvciBhIFBsYWNlIHRoZVxyXG4gICAqIHVzZXIgaGFzIHNlbGVjdGVkLiBJZiB0aGUgdXNlciBlbnRlcnMgdGhlIG5hbWUgb2YgYSBQbGFjZSB0aGF0IHdhcyBub3RcclxuICAgKiBzdWdnZXN0ZWQgYnkgdGhlIGNvbnRyb2wgYW5kIHByZXNzZXMgdGhlIEVudGVyIGtleSwgb3IgaWYgYSBQbGFjZSBEZXRhaWxzXHJcbiAgICogcmVxdWVzdCBmYWlscywgdGhlIFBsYWNlUmVzdWx0IGNvbnRhaW5zIHRoZSB1c2VyIGlucHV0IGluIHRoZSBuYW1lXHJcbiAgICogcHJvcGVydHksIHdpdGggbm8gb3RoZXIgcHJvcGVydGllcyBkZWZpbmVkLlxyXG4gICAqXHJcbiAgICogU2VlOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvcGxhY2VzLXdpZGdldCNBdXRvY29tcGxldGUucGxhY2VfY2hhbmdlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBwbGFjZUNoYW5nZWQ6IE9ic2VydmFibGU8dm9pZD5cclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBJbnB1dERpcmVjdGl2ZSwgc3RhdGljOiB0cnVlIH0pIF9pbnB1dERpcmVjdGl2ZSE6IElucHV0RGlyZWN0aXZlXHJcblxyXG4gIEBWaWV3Q2hpbGQoVGhlU2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvY29tcGxldGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgc2V0IF9fYXV0b2NvbXBsZXRlRGlyZWN0aXZlKHZhbHVlOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSkge1xyXG4gICAgdGhpcy5fYXV0b0NvbXBsZXRlRGlyZWN0aXZlID0gdmFsdWVcclxuICAgIHRoaXMuX3VudGlsQXV0b0NvbXBsZXRlUmVhZHkoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9hdXRvQ29tcGxldGVEaXJlY3RpdmUuYXV0b0NvbXBsZXRlXHJcbiAgICAgIHRoaXMuX3BsYWNlQ2hhbmdlZFBlbmRpbmcuZm9yRWFjaChwZW5kaW5nID0+IHBlbmRpbmcub2JzZXJ2YWJsZS5zdWJzY3JpYmUocGVuZGluZy5zdWJzY3JpYmVyKSlcclxuICAgICAgdGhpcy5fcGxhY2VDaGFuZ2VkUGVuZGluZyA9IFtdXHJcbiAgICB9KVxyXG4gIH1cclxuICBfYXV0b0NvbXBsZXRlRGlyZWN0aXZlITogVGhlU2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvY29tcGxldGVEaXJlY3RpdmVcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcclxuICBnZXQgX2F0dHJUYWJJbmRleCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6ICh0aGlzLnRhYkluZGV4IHx8IDApIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbICdldmVudCcgXSlcclxuICBfb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5faW5wdXREaXJlY3RpdmUuZm9jdXMoKVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbICckZXZlbnQnIF0pXHJcbiAgX29uRm9jdXMoKSB7XHJcbiAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZT8uZm9jdXMoKVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICkge1xyXG4gICAgdGhpcy5wbGFjZUNoYW5nZWQgPSB0aGlzLl9hdXRvQ29tcGxldGVSZWFkeVN1YmplY3QucGlwZShcclxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9jcmVhdGVQbGFjZUNoYW5nZWRPYnNlcnZhYmxlPGFueT4oKSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxyXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91bnRpbEF1dG9Db21wbGV0ZVJlYWR5KCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGludGVydmFsKDUwMCkucGlwZShcclxuICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5fYXV0b0NvbXBsZXRlRGlyZWN0aXZlLmF1dG9Db21wbGV0ZSksXHJcbiAgICAgIHRha2UoMSksXHJcbiAgICAgIG1hcFRvKHVuZGVmaW5lZCksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBib3VuZHMgdG8gd2hpY2ggcHJlZGljdGlvbnMgYXJlIGJpYXNlZC5cclxuICAgKi9cclxuICAgcHVibGljIGdldEJvdW5kcygpOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMgfCB1bmRlZmluZWQge1xyXG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLmdldEJvdW5kcygpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBmaWVsZHMgdG8gYmUgaW5jbHVkZWQgZm9yIHRoZSBQbGFjZSBpbiB0aGUgZGV0YWlscyByZXNwb25zZVxyXG4gICAqIHdoZW4gdGhlIGRldGFpbHMgYXJlIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQuIEZvciBhIGxpc3Qgb2YgZmllbGRzIHNlZVxyXG4gICAqIFtQbGFjZVJlc3VsdF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL3BsYWNlcy1zZXJ2aWNlI1BsYWNlUmVzdWx0KS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RmllbGRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcclxuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcclxuICAgIHJldHVybiAodGhpcy5hdXRvQ29tcGxldGUgYXMgYW55KS5nZXRGaWVsZHMoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZGV0YWlscyBvZiB0aGUgUGxhY2Ugc2VsZWN0ZWQgYnkgdXNlciBpZiB0aGUgZGV0YWlscyB3ZXJlXHJcbiAgICogc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZC4gT3RoZXJ3aXNlIHJldHVybnMgYSBzdHViIFBsYWNlIG9iamVjdCwgd2l0aCB0aGVcclxuICAgKiBuYW1lIHByb3BlcnR5IHNldCB0byB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQuXHJcbiAgICovXHJcbiAgIHB1YmxpYyBnZXRQbGFjZSgpOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQge1xyXG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLmdldFBsYWNlKClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHByZWZlcnJlZCBhcmVhIHdpdGhpbiB3aGljaCB0byByZXR1cm4gUGxhY2UgcmVzdWx0cy4gUmVzdWx0cyBhcmVcclxuICAgKiBiaWFzZWQgdG93YXJkcywgYnV0IG5vdCByZXN0cmljdGVkIHRvLCB0aGlzIGFyZWEuXHJcbiAgICovXHJcbiAgcHVibGljIHNldEJvdW5kcyhib3VuZHM/OiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMgfCBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHNMaXRlcmFsKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldEJvdW5kcyhib3VuZHMhKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgY29tcG9uZW50IHJlc3RyaWN0aW9ucy4gQ29tcG9uZW50IHJlc3RyaWN0aW9ucyBhcmUgdXNlZCB0b1xyXG4gICAqIHJlc3RyaWN0IHByZWRpY3Rpb25zIHRvIG9ubHkgdGhvc2Ugd2l0aGluIHRoZSBwYXJlbnQgY29tcG9uZW50LiBGb3JcclxuICAgKiBleGFtcGxlLCB0aGUgY291bnRyeS5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0Q29tcG9uZW50UmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9ucz86IGdvb2dsZS5tYXBzLnBsYWNlcy5Db21wb25lbnRSZXN0cmljdGlvbnMpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuc2V0Q29tcG9uZW50UmVzdHJpY3Rpb25zKHJlc3RyaWN0aW9ucyEpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBmaWVsZHMgdG8gYmUgaW5jbHVkZWQgZm9yIHRoZSBQbGFjZSBpbiB0aGUgZGV0YWlscyByZXNwb25zZSB3aGVuXHJcbiAgICogdGhlIGRldGFpbHMgYXJlIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQuIEZvciBhIGxpc3Qgb2YgZmllbGRzIHNlZVxyXG4gICAqIFtQbGFjZVJlc3VsdF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcmVmZXJlbmNlL3BsYWNlcy1zZXJ2aWNlI1BsYWNlUmVzdWx0KS5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0RmllbGRzKGZpZWxkcz86IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldEZpZWxkcyhmaWVsZHMhKVxyXG4gIH1cclxuXHJcbiAgLyoqICovXHJcbiAgcHVibGljIHNldE9wdGlvbnMob3B0aW9ucz86IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVPcHRpb25zKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldE9wdGlvbnMob3B0aW9ucyEpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0eXBlcyBvZiBwcmVkaWN0aW9ucyB0byBiZSByZXR1cm5lZC4gRm9yIHN1cHBvcnRlZCB0eXBlcywgc2VlIHRoZVxyXG4gICAqIFtkZXZlbG9wZXIncyBndWlkZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcGxhY2VzLWF1dG9jb21wbGV0ZSNjb25zdHJhaW4tcGxhY2UtdHlwZXMpLlxyXG4gICAqIElmIG5vIHR5cGVzIGFyZSBzcGVjaWZpZWQsIGFsbCB0eXBlcyB3aWxsIGJlIHJldHVybmVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRUeXBlcyh0eXBlcz86IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldFR5cGVzKHR5cGVzISlcclxuICB9XHJcblxyXG4gIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cclxuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxyXG4gIH1cclxuXHJcbiAgLyoqIFVuZm9jdXNlcyB0aGUgaW5wdXQuICovXHJcbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SG9zdEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVQbGFjZUNoYW5nZWRPYnNlcnZhYmxlPFQ+KCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPFQ+KHN1YnNjcmliZXIgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgdGhpcy5fcGxhY2VDaGFuZ2VkUGVuZGluZy5wdXNoKHsgb2JzZXJ2YWJsZSwgc3Vic2NyaWJlciB9KVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ViID0gdGhpcy5fYXV0b0NvbXBsZXRlRGlyZWN0aXZlLnBsYWNlQ2hhbmdlZC5zdWJzY3JpYmUoc3Vic2NyaWJlcilcclxuXHJcbiAgICAgIHJldHVybiAoKSA9PiBzdWIudW5zdWJzY3JpYmUoKVxyXG4gICAgfSlcclxuICAgIHJldHVybiBvYnNlcnZhYmxlXHJcbiAgfVxyXG5cclxuICAvKiogQXNzZXJ0cyB0aGF0IHRoZSBtYXAgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuICovXHJcbiAgcHJpdmF0ZSBfYXNzZXJ0SW5pdGlhbGl6ZWQoKTogYXNzZXJ0cyB0aGlzIGlzIFdpdGhSZXF1aXJlZDxUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9Db21wbGV0ZUNvbXBvbmVudCwgJ2F1dG9Db21wbGV0ZSc+IHtcclxuICAgIGlmICghdGhpcy5hdXRvQ29tcGxldGUgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgJ0Nhbm5vdCBhY2Nlc3MgR29vZ2xlIE1hcCBQbGFjZXMgaW5mb3JtYXRpb24gYmVmb3JlIHRoZSBBUEkgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuICcgK1xyXG4gICAgICAgICAgJ1BsZWFzZSB3YWl0IGZvciB0aGUgQVBJIHRvIGxvYWQgYmVmb3JlIHRyeWluZyB0byBpbnRlcmFjdCB3aXRoIGl0LicsXHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyLS1pY29uLXdyYXBwZXJcIj5cclxuICA8c2VhbS1pY29uIFtpY29uXT1cImljb25cIiBjbGFzcz1cInRleHQtbXV0ZWRcIiBzaXplPVwibGdcIj48L3NlYW0taWNvbj5cclxuPC9kaXY+XHJcbjxsYWJlbCAqbmdJZj1cImxhYmVsIHx8IHBsYWNlaG9sZGVyXCIgW2F0dHIuZm9yXT1cImlucC5pZFwiIGNsYXNzPVwic3Itb25seVwiPnt7IGxhYmVsIHx8IHBsYWNlaG9sZGVyIH19PC9sYWJlbD5cclxuPGlucHV0ICNpbnA9XCJzZWFtSW5wdXRcIlxyXG4gIHNlYW1JbnB1dFxyXG4gIHNlYW1Hb29nbGVNYXBzUGxhY2VzQXV0b2NvbXBsZXRlXHJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgW2F0dHIuYXV0b2NvcnJlY3RdPVwiYXV0b2NvcnJlY3RcIlxyXG4gIFthdHRyLmF1dG9jYXBpdGFsaXplXT1cImF1dG9jYXBpdGFsaXplXCJcclxuICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXHJcbi8+XHJcbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ29vZ2xlLW1hcHMvZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9nb29nbGUtbWFwcy9nb29nbGUtbWFwcy1wbGFjZXMtYXV0b2NvbXBsZXRlL2dvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMxRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFNLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRzlELE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLDZDQUE2QyxDQUFBOzs7Ozs7QUFLM0o7O0dBRUc7QUFRSCxNQUFNLE9BQU8sNENBQTRD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VCxtRkFBbUY7Z0JBQ2pGLG9FQUFvRSxDQUN2RSxDQUFBO1NBQ0Y7SUFDSCxDQUFDOzt5SUF0TlUsNENBQTRDOzZIQUE1Qyw0Q0FBNEMsdWhCQWlEN0IsY0FBYyxxRkFFN0IsNENBQTRDLDhHQ3ZGekQsb2dCQWFBO0FEcUMyQjtJQUFmLFlBQVksRUFBRTs4RUFBK0I7MkZBZDVDLDRDQUE0QztrQkFQeEQsU0FBUzsrQkFDRSxzQ0FBc0MsbUJBRy9CLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsa0NBQWtDO2lHQVluQyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVtQixRQUFRO3NCQUFoQyxLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQVFELFFBQVE7c0JBRFgsS0FBSztnQkFNSCxPQUFPO3NCQURWLEtBQUs7Z0JBZWEsWUFBWTtzQkFBOUIsTUFBTTtnQkFFbUQsZUFBZTtzQkFBeEUsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3BELHVCQUF1QjtzQkFEMUIsU0FBUzt1QkFBQyw0Q0FBNEMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBWXJFLGFBQWE7c0JBRGhCLFdBQVc7dUJBQUMsZUFBZTtnQkFJNUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFFLE9BQU8sQ0FBRTtnQkFNbEMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFFLFFBQVEsQ0FBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgaW50ZXJ2YWwsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGZpbHRlciwgbWFwVG8sIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgZmFTZWFyY2hMb2NhdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgSW5wdXREaXJlY3RpdmUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZm9ybS1maWVsZCdcbmltcG9ydCB7IFNlYW1JY29uIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXG5cbmltcG9ydCB7IFNFQU1fR09PR0xFX1BMQUNFU19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLCBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5kaXJlY3RpdmUnXG5cbmRlY2xhcmUgY29uc3QgbmdEZXZNb2RlOiBib29sZWFuIHwgdW5kZWZpbmVkXG50eXBlIFdpdGhSZXF1aXJlZDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBUICYgeyBbUCBpbiBLXS0/OiBUW1BdIH1cblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWdvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ29vZ2xlLW1hcHMtcGxhY2VzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dvb2dsZS1tYXBzLXBsYWNlcy1hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnc2VhbUdvb2dsZU1hcHNQbGFjZXNBdXRvQ29tcGxldGUnXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1Hb29nbGVNYXBzUGxhY2VzQXV0b0NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdCA9IG5ldyBTdWJqZWN0KClcblxuICBwcml2YXRlIF9wbGFjZUNoYW5nZWRQZW5kaW5nOiB7IG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55Piwgc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+IH1bXSA9IFtdXG5cbiAgcHVibGljIGF1dG9Db21wbGV0ZT86IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdTZWFyY2ggYnkgYWRkcmVzcywgcGxhY2Ugb3IgbmFtZSdcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGwgPSBmYVNlYXJjaExvY2F0aW9uXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGRpc2FibGVkOiBCb29sZWFuSW5wdXQgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ0VudGVyIGFkZHJlc3MsIHBsYWNlIG9yIG5hbWUnXG5cbiAgQElucHV0KCkgYXV0b2NvcnJlY3Q6ICdvZmYnIHwgJ29uJyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnb2ZmJ1xuXG4gIEBJbnB1dCgpIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyB8ICdvbicgfCB1bmRlZmluZWQgfCBudWxsID0gJ29mZidcblxuICAvKipcbiAgICogU2V0IHRoZSB0YWIgaW5kZXggdG8gYC0xYCB0byBhbGxvdyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoZVxuICAgKiBjb21wb25lbnQgdG8gcmVjZWl2ZSBgZm9jdXNgIGV2ZW50IGZyb20gamF2YXNjcmlwdCwgYnV0IG5vdCBnZXQgZm9jdXNlZCBieVxuICAgKiBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgIEBJbnB1dCgpXG4gICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikgeyB0aGlzLl90YWJJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSB9XG4gICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3RhYkluZGV4IH1cbiAgIHByaXZhdGUgX3RhYkluZGV4ID0gLTFcblxuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZU9wdGlvbnMgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlIHx8IFNFQU1fR09PR0xFX1BMQUNFU19BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TXG4gIH1cbiAgX29wdGlvbnM6IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVPcHRpb25zID0gU0VBTV9HT09HTEVfUExBQ0VTX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlNcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIGEgUGxhY2VSZXN1bHQgaXMgbWFkZSBhdmFpbGFibGUgZm9yIGEgUGxhY2UgdGhlXG4gICAqIHVzZXIgaGFzIHNlbGVjdGVkLiBJZiB0aGUgdXNlciBlbnRlcnMgdGhlIG5hbWUgb2YgYSBQbGFjZSB0aGF0IHdhcyBub3RcbiAgICogc3VnZ2VzdGVkIGJ5IHRoZSBjb250cm9sIGFuZCBwcmVzc2VzIHRoZSBFbnRlciBrZXksIG9yIGlmIGEgUGxhY2UgRGV0YWlsc1xuICAgKiByZXF1ZXN0IGZhaWxzLCB0aGUgUGxhY2VSZXN1bHQgY29udGFpbnMgdGhlIHVzZXIgaW5wdXQgaW4gdGhlIG5hbWVcbiAgICogcHJvcGVydHksIHdpdGggbm8gb3RoZXIgcHJvcGVydGllcyBkZWZpbmVkLlxuICAgKlxuICAgKiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9wbGFjZXMtd2lkZ2V0I0F1dG9jb21wbGV0ZS5wbGFjZV9jaGFuZ2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGxhY2VDaGFuZ2VkOiBPYnNlcnZhYmxlPHZvaWQ+XG5cbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBJbnB1dERpcmVjdGl2ZSwgc3RhdGljOiB0cnVlIH0pIF9pbnB1dERpcmVjdGl2ZSE6IElucHV0RGlyZWN0aXZlXG5cbiAgQFZpZXdDaGlsZChUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2V0IF9fYXV0b2NvbXBsZXRlRGlyZWN0aXZlKHZhbHVlOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZSkge1xuICAgIHRoaXMuX2F1dG9Db21wbGV0ZURpcmVjdGl2ZSA9IHZhbHVlXG4gICAgdGhpcy5fdW50aWxBdXRvQ29tcGxldGVSZWFkeSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9hdXRvQ29tcGxldGVEaXJlY3RpdmUuYXV0b0NvbXBsZXRlXG4gICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nLmZvckVhY2gocGVuZGluZyA9PiBwZW5kaW5nLm9ic2VydmFibGUuc3Vic2NyaWJlKHBlbmRpbmcuc3Vic2NyaWJlcikpXG4gICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nID0gW11cbiAgICB9KVxuICB9XG4gIF9hdXRvQ29tcGxldGVEaXJlY3RpdmUhOiBUaGVTZWFtR29vZ2xlTWFwc1BsYWNlc0F1dG9jb21wbGV0ZURpcmVjdGl2ZVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfYXR0clRhYkluZGV4KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogKHRoaXMudGFiSW5kZXggfHwgMCkgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyAnZXZlbnQnIF0pXG4gIF9vbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5faW5wdXREaXJlY3RpdmUuZm9jdXMoKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbICckZXZlbnQnIF0pXG4gIF9vbkZvY3VzKCkge1xuICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlPy5mb2N1cygpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApIHtcbiAgICB0aGlzLnBsYWNlQ2hhbmdlZCA9IHRoaXMuX2F1dG9Db21wbGV0ZVJlYWR5U3ViamVjdC5waXBlKFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY3JlYXRlUGxhY2VDaGFuZ2VkT2JzZXJ2YWJsZTxhbnk+KCkpXG4gICAgKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgcHJpdmF0ZSBfdW50aWxBdXRvQ29tcGxldGVSZWFkeSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gaW50ZXJ2YWwoNTAwKS5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5fYXV0b0NvbXBsZXRlRGlyZWN0aXZlLmF1dG9Db21wbGV0ZSksXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwVG8odW5kZWZpbmVkKSxcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYm91bmRzIHRvIHdoaWNoIHByZWRpY3Rpb25zIGFyZSBiaWFzZWQuXG4gICAqL1xuICAgcHVibGljIGdldEJvdW5kcygpOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuZ2V0Qm91bmRzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaWVsZHMgdG8gYmUgaW5jbHVkZWQgZm9yIHRoZSBQbGFjZSBpbiB0aGUgZGV0YWlscyByZXNwb25zZVxuICAgKiB3aGVuIHRoZSBkZXRhaWxzIGFyZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkLiBGb3IgYSBsaXN0IG9mIGZpZWxkcyBzZWVcbiAgICogW1BsYWNlUmVzdWx0XShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9yZWZlcmVuY2UvcGxhY2VzLXNlcnZpY2UjUGxhY2VSZXN1bHQpLlxuICAgKi9cbiAgcHVibGljIGdldEZpZWxkcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIHJldHVybiAodGhpcy5hdXRvQ29tcGxldGUgYXMgYW55KS5nZXRGaWVsZHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRldGFpbHMgb2YgdGhlIFBsYWNlIHNlbGVjdGVkIGJ5IHVzZXIgaWYgdGhlIGRldGFpbHMgd2VyZVxuICAgKiBzdWNjZXNzZnVsbHkgcmV0cmlldmVkLiBPdGhlcndpc2UgcmV0dXJucyBhIHN0dWIgUGxhY2Ugb2JqZWN0LCB3aXRoIHRoZVxuICAgKiBuYW1lIHByb3BlcnR5IHNldCB0byB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICAgcHVibGljIGdldFBsYWNlKCk6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5nZXRQbGFjZSgpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcHJlZmVycmVkIGFyZWEgd2l0aGluIHdoaWNoIHRvIHJldHVybiBQbGFjZSByZXN1bHRzLiBSZXN1bHRzIGFyZVxuICAgKiBiaWFzZWQgdG93YXJkcywgYnV0IG5vdCByZXN0cmljdGVkIHRvLCB0aGlzIGFyZWEuXG4gICAqL1xuICBwdWJsaWMgc2V0Qm91bmRzKGJvdW5kcz86IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcyB8IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kc0xpdGVyYWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgpXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGUuc2V0Qm91bmRzKGJvdW5kcyEpXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29tcG9uZW50IHJlc3RyaWN0aW9ucy4gQ29tcG9uZW50IHJlc3RyaWN0aW9ucyBhcmUgdXNlZCB0b1xuICAgKiByZXN0cmljdCBwcmVkaWN0aW9ucyB0byBvbmx5IHRob3NlIHdpdGhpbiB0aGUgcGFyZW50IGNvbXBvbmVudC4gRm9yXG4gICAqIGV4YW1wbGUsIHRoZSBjb3VudHJ5LlxuICAgKi9cbiAgcHVibGljIHNldENvbXBvbmVudFJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnM/OiBnb29nbGUubWFwcy5wbGFjZXMuQ29tcG9uZW50UmVzdHJpY3Rpb25zKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldENvbXBvbmVudFJlc3RyaWN0aW9ucyhyZXN0cmljdGlvbnMhKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpZWxkcyB0byBiZSBpbmNsdWRlZCBmb3IgdGhlIFBsYWNlIGluIHRoZSBkZXRhaWxzIHJlc3BvbnNlIHdoZW5cbiAgICogdGhlIGRldGFpbHMgYXJlIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQuIEZvciBhIGxpc3Qgb2YgZmllbGRzIHNlZVxuICAgKiBbUGxhY2VSZXN1bHRdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L3JlZmVyZW5jZS9wbGFjZXMtc2VydmljZSNQbGFjZVJlc3VsdCkuXG4gICAqL1xuICBwdWJsaWMgc2V0RmllbGRzKGZpZWxkcz86IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldEZpZWxkcyhmaWVsZHMhKVxuICB9XG5cbiAgLyoqICovXG4gIHB1YmxpYyBzZXRPcHRpb25zKG9wdGlvbnM/OiBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKClcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLmF1dG9Db21wbGV0ZS5zZXRPcHRpb25zKG9wdGlvbnMhKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHR5cGVzIG9mIHByZWRpY3Rpb25zIHRvIGJlIHJldHVybmVkLiBGb3Igc3VwcG9ydGVkIHR5cGVzLCBzZWUgdGhlXG4gICAqIFtkZXZlbG9wZXIncyBndWlkZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvcGxhY2VzLWF1dG9jb21wbGV0ZSNjb25zdHJhaW4tcGxhY2UtdHlwZXMpLlxuICAgKiBJZiBubyB0eXBlcyBhcmUgc3BlY2lmaWVkLCBhbGwgdHlwZXMgd2lsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBzZXRUeXBlcyh0eXBlcz86IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoKVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgcmV0dXJuIHRoaXMuYXV0b0NvbXBsZXRlLnNldFR5cGVzKHR5cGVzISlcbiAgfVxuXG4gIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICAvKiogVW5mb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKVxuICB9XG5cbiAgcHVibGljIGdldEhvc3RFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVBsYWNlQ2hhbmdlZE9ic2VydmFibGU8VD4oKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlPFQ+KHN1YnNjcmliZXIgPT4ge1xuICAgICAgaWYgKCF0aGlzLmF1dG9Db21wbGV0ZSkge1xuICAgICAgICB0aGlzLl9wbGFjZUNoYW5nZWRQZW5kaW5nLnB1c2goeyBvYnNlcnZhYmxlLCBzdWJzY3JpYmVyIH0pXG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3ViID0gdGhpcy5fYXV0b0NvbXBsZXRlRGlyZWN0aXZlLnBsYWNlQ2hhbmdlZC5zdWJzY3JpYmUoc3Vic2NyaWJlcilcblxuICAgICAgcmV0dXJuICgpID0+IHN1Yi51bnN1YnNjcmliZSgpXG4gICAgfSlcbiAgICByZXR1cm4gb2JzZXJ2YWJsZVxuICB9XG5cbiAgLyoqIEFzc2VydHMgdGhhdCB0aGUgbWFwIGhhcyBiZWVuIGluaXRpYWxpemVkLiAqL1xuICBwcml2YXRlIF9hc3NlcnRJbml0aWFsaXplZCgpOiBhc3NlcnRzIHRoaXMgaXMgV2l0aFJlcXVpcmVkPFRoZVNlYW1Hb29nbGVNYXBzUGxhY2VzQXV0b0NvbXBsZXRlQ29tcG9uZW50LCAnYXV0b0NvbXBsZXRlJz4ge1xuICAgIGlmICghdGhpcy5hdXRvQ29tcGxldGUgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGFjY2VzcyBHb29nbGUgTWFwIFBsYWNlcyBpbmZvcm1hdGlvbiBiZWZvcmUgdGhlIEFQSSBoYXMgYmVlbiBpbml0aWFsaXplZC4gJyArXG4gICAgICAgICAgJ1BsZWFzZSB3YWl0IGZvciB0aGUgQVBJIHRvIGxvYWQgYmVmb3JlIHRyeWluZyB0byBpbnRlcmFjdCB3aXRoIGl0LicsXG4gICAgICApXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyLS1pY29uLXdyYXBwZXJcIj5cbiAgPHNlYW0taWNvbiBbaWNvbl09XCJpY29uXCIgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgc2l6ZT1cImxnXCI+PC9zZWFtLWljb24+XG48L2Rpdj5cbjxsYWJlbCAqbmdJZj1cImxhYmVsIHx8IHBsYWNlaG9sZGVyXCIgW2F0dHIuZm9yXT1cImlucC5pZFwiIGNsYXNzPVwic3Itb25seVwiPnt7IGxhYmVsIHx8IHBsYWNlaG9sZGVyIH19PC9sYWJlbD5cbjxpbnB1dCAjaW5wPVwic2VhbUlucHV0XCJcbiAgc2VhbUlucHV0XG4gIHNlYW1Hb29nbGVNYXBzUGxhY2VzQXV0b2NvbXBsZXRlXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2F0dHIuYXV0b2NvcnJlY3RdPVwiYXV0b2NvcnJlY3RcIlxuICBbYXR0ci5hdXRvY2FwaXRhbGl6ZV09XCJhdXRvY2FwaXRhbGl6ZVwiXG4gIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbi8+XG4iXX0=