geonetwork-ui 2.5.0-dev.a16ba6619 → 2.5.0-dev.a89d8b5db

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 (260) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +11 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +20 -17
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +25 -9
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -4
  8. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +8 -8
  9. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +7 -4
  10. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +3 -3
  12. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
  13. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -5
  14. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -3
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -11
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +2 -2
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +2 -2
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +2 -2
  20. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  21. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +7 -23
  22. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  23. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +3 -4
  24. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  25. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +25 -5
  26. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +10 -7
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +4 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -2
  29. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +9 -1
  30. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +19 -1
  31. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +6 -1
  32. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +15 -3
  33. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +1 -1
  34. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +3 -3
  35. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +32 -31
  36. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  37. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +23 -3
  38. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  39. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +88 -7
  40. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +2 -2
  41. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +1 -6
  42. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +6 -4
  43. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +3 -3
  44. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +14 -4
  45. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +10 -3
  46. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  47. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +10 -3
  48. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -6
  49. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -4
  50. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-cache.mjs +12 -0
  51. package/esm2022/libs/util/data-fetcher/src/lib/readers/base-file.mjs +3 -3
  52. package/esm2022/libs/util/data-fetcher/src/lib/readers/base.mjs +1 -1
  53. package/esm2022/libs/util/data-fetcher/src/lib/readers/csv.mjs +2 -2
  54. package/esm2022/libs/util/data-fetcher/src/lib/readers/excel.mjs +2 -2
  55. package/esm2022/libs/util/data-fetcher/src/lib/readers/geojson.mjs +2 -2
  56. package/esm2022/libs/util/data-fetcher/src/lib/readers/gml.mjs +5 -3
  57. package/esm2022/libs/util/data-fetcher/src/lib/readers/json.mjs +2 -2
  58. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +19 -11
  59. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +13 -9
  60. package/esm2022/translations/de.json +5 -77
  61. package/esm2022/translations/en.json +5 -77
  62. package/esm2022/translations/es.json +3 -75
  63. package/esm2022/translations/fr.json +17 -89
  64. package/esm2022/translations/it.json +22 -93
  65. package/esm2022/translations/nl.json +3 -75
  66. package/esm2022/translations/pt.json +3 -75
  67. package/fesm2022/geonetwork-ui.mjs +545 -928
  68. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  69. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  70. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +3 -0
  71. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  72. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -0
  73. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  74. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -1
  75. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  76. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -0
  77. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  78. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -1
  79. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  80. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -1
  81. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  82. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -2
  83. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  84. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +2 -1
  85. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  86. package/libs/feature/editor/src/index.d.ts +1 -0
  87. package/libs/feature/editor/src/index.d.ts.map +1 -1
  88. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +1 -0
  89. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  90. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -0
  91. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  92. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  93. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
  94. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  95. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +1 -3
  96. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +1 -1
  97. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +2 -3
  98. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +1 -1
  99. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
  100. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  101. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
  102. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  103. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +16 -1
  104. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  105. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +5 -0
  106. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  107. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
  108. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  109. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -1
  110. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  111. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  112. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  113. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +5 -1
  114. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  115. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts +5 -6
  116. package/libs/ui/elements/src/lib/image-input/image-input.component.d.ts.map +1 -1
  117. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  118. package/libs/ui/inputs/src/index.d.ts +0 -1
  119. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  120. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +23 -1
  121. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  122. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -28
  123. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  124. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -1
  125. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  126. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -2
  127. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  128. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -1
  129. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  130. package/libs/ui/widgets/src/index.d.ts +0 -1
  131. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  132. package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts +1 -1
  133. package/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.d.ts.map +1 -1
  134. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +8 -9
  135. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  136. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +2 -2
  137. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  138. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts +8 -0
  139. package/libs/util/data-fetcher/src/lib/readers/base-cache.d.ts.map +1 -0
  140. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts +2 -2
  141. package/libs/util/data-fetcher/src/lib/readers/base-file.d.ts.map +1 -1
  142. package/libs/util/data-fetcher/src/lib/readers/base.d.ts +2 -2
  143. package/libs/util/data-fetcher/src/lib/readers/base.d.ts.map +1 -1
  144. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts +5 -3
  145. package/libs/util/data-fetcher/src/lib/readers/gml.d.ts.map +1 -1
  146. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +7 -4
  147. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  148. package/libs/util/data-fetcher/src/lib/utils.d.ts +2 -2
  149. package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
  150. package/package.json +1 -1
  151. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +25 -0
  152. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -0
  153. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +22 -16
  154. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +44 -13
  155. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -1
  156. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -1
  157. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +165 -0
  158. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +4 -1
  159. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +22 -9
  160. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -1
  161. package/src/libs/feature/editor/src/index.ts +1 -0
  162. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.html +1 -1
  163. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +3 -3
  164. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +1 -0
  165. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -0
  166. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -0
  167. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +10 -10
  168. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +1 -1
  169. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  170. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -13
  171. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -20
  172. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  173. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -1
  174. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -11
  175. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +26 -4
  176. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
  177. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +6 -3
  178. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +16 -0
  179. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +21 -2
  180. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -0
  181. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +30 -1
  182. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +12 -0
  183. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +3 -0
  184. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +7 -0
  185. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +2 -2
  186. package/src/libs/ui/elements/src/lib/image-input/image-input.component.html +20 -14
  187. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +29 -32
  188. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +2 -2
  189. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +21 -9
  190. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +13 -0
  191. package/src/libs/ui/inputs/src/index.ts +0 -1
  192. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +36 -19
  193. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +85 -2
  194. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  195. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +3 -2
  196. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +1 -1
  197. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +37 -1
  198. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +8 -2
  199. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +2 -0
  200. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +6 -0
  201. package/src/libs/ui/widgets/src/index.ts +0 -1
  202. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +36 -11
  203. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.ts +9 -1
  204. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +2 -3
  205. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +13 -4
  206. package/src/libs/util/data-fetcher/src/lib/readers/base-cache.ts +14 -0
  207. package/src/libs/util/data-fetcher/src/lib/readers/base-file.ts +2 -1
  208. package/src/libs/util/data-fetcher/src/lib/readers/base.ts +2 -2
  209. package/src/libs/util/data-fetcher/src/lib/readers/csv.ts +1 -1
  210. package/src/libs/util/data-fetcher/src/lib/readers/excel.ts +1 -1
  211. package/src/libs/util/data-fetcher/src/lib/readers/geojson.ts +1 -1
  212. package/src/libs/util/data-fetcher/src/lib/readers/gml.ts +7 -7
  213. package/src/libs/util/data-fetcher/src/lib/readers/json.ts +1 -1
  214. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +34 -11
  215. package/src/libs/util/data-fetcher/src/lib/utils.ts +38 -32
  216. package/translations/de.json +5 -77
  217. package/translations/en.json +5 -77
  218. package/translations/es.json +3 -75
  219. package/translations/fr.json +17 -89
  220. package/translations/it.json +22 -93
  221. package/translations/nl.json +3 -75
  222. package/translations/pt.json +3 -75
  223. package/translations/sk.json +3 -75
  224. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +0 -78
  225. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +0 -55
  226. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts +0 -33
  227. package/libs/ui/inputs/src/lib/chips-input/chips-input.component.d.ts.map +0 -1
  228. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts +0 -21
  229. package/libs/ui/widgets/src/lib/step-bar/step-bar.component.d.ts.map +0 -1
  230. package/src/libs/data-access/datafeeder/src/index.ts +0 -1
  231. package/src/libs/data-access/datafeeder/src/openapi/api/api.ts +0 -11
  232. package/src/libs/data-access/datafeeder/src/openapi/api/config.api.service.ts +0 -168
  233. package/src/libs/data-access/datafeeder/src/openapi/api/dataPublishing.api.service.ts +0 -270
  234. package/src/libs/data-access/datafeeder/src/openapi/api/fileUpload.api.service.ts +0 -734
  235. package/src/libs/data-access/datafeeder/src/openapi/api.module.ts +0 -46
  236. package/src/libs/data-access/datafeeder/src/openapi/configuration.ts +0 -125
  237. package/src/libs/data-access/datafeeder/src/openapi/encoder.ts +0 -20
  238. package/src/libs/data-access/datafeeder/src/openapi/index.ts +0 -5
  239. package/src/libs/data-access/datafeeder/src/openapi/model/analysisStatusEnum.api.model.ts +0 -24
  240. package/src/libs/data-access/datafeeder/src/openapi/model/boundingBox.api.model.ts +0 -20
  241. package/src/libs/data-access/datafeeder/src/openapi/model/cRS.api.model.ts +0 -25
  242. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +0 -45
  243. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishRequest.api.model.ts +0 -39
  244. package/src/libs/data-access/datafeeder/src/openapi/model/datasetPublishingStatus.api.model.ts +0 -50
  245. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +0 -39
  246. package/src/libs/data-access/datafeeder/src/openapi/model/models.ts +0 -13
  247. package/src/libs/data-access/datafeeder/src/openapi/model/property.api.model.ts +0 -17
  248. package/src/libs/data-access/datafeeder/src/openapi/model/publishJobStatus.api.model.ts +0 -33
  249. package/src/libs/data-access/datafeeder/src/openapi/model/publishRequest.api.model.ts +0 -16
  250. package/src/libs/data-access/datafeeder/src/openapi/model/publishStatusEnum.api.model.ts +0 -20
  251. package/src/libs/data-access/datafeeder/src/openapi/model/publishStepEnum.api.model.ts +0 -42
  252. package/src/libs/data-access/datafeeder/src/openapi/model/uploadJobStatus.api.model.ts +0 -33
  253. package/src/libs/data-access/datafeeder/src/openapi/variables.ts +0 -9
  254. package/src/libs/data-access/datafeeder/src/spec.yaml +0 -537
  255. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.css +0 -36
  256. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.html +0 -23
  257. package/src/libs/ui/inputs/src/lib/chips-input/chips-input.component.ts +0 -81
  258. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.css +0 -3
  259. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.html +0 -13
  260. package/src/libs/ui/widgets/src/lib/step-bar/step-bar.component.ts +0 -55
@@ -1,9 +1,9 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import { marked } from 'marked';
3
3
  import * as i0 from "@angular/core";
4
4
  export class MarkdownParserComponent {
5
5
  get parsedMarkdown() {
6
- return marked.parse(this.textContent);
6
+ return marked.parse(this.textContent ?? '');
7
7
  }
8
8
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
9
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent", whitoutStyles: "whitoutStyles" }, ngImport: i0, template: "<div\n [class]=\"whitoutStyles ? '' : 'markdown-body'\"\n [innerHTML]=\"parsedMarkdown\"\n></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;line-height:1.5;word-wrap:break-word;height:100%}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body :first-child{margin-top:0}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
16
16
  }], whitoutStyles: [{
17
17
  type: Input
18
18
  }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tYXJrZG93bi1wYXJzZXIvbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tYXJrZG93bi1wYXJzZXIvbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDdkMsQ0FBQzsrR0FOVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix5SkNWcEMsdUdBSUE7OzRGRE1hLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSTs4QkFHUCxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tICdtYXJrZWQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW1hcmtkb3duLXBhcnNlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXJrZG93bi1wYXJzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrZG93bi1wYXJzZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QYXJzZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB0ZXh0Q29udGVudDogc3RyaW5nXG4gIEBJbnB1dCgpIHdoaXRvdXRTdHlsZXM/OiBib29sZWFuXG5cbiAgZ2V0IHBhcnNlZE1hcmtkb3duKCkge1xuICAgIHJldHVybiBtYXJrZWQucGFyc2UodGhpcy50ZXh0Q29udGVudClcbiAgfVxufVxuIiwiPGRpdlxuICBbY2xhc3NdPVwid2hpdG91dFN0eWxlcyA/ICcnIDogJ21hcmtkb3duLWJvZHknXCJcbiAgW2lubmVySFRNTF09XCJwYXJzZWRNYXJrZG93blwiXG4+PC9kaXY+XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tYXJrZG93bi1wYXJzZXIvbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tYXJrZG93bi1wYXJzZXIvbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLENBQUM7K0dBTlUsdUJBQXVCO21HQUF2Qix1QkFBdUIseUpDVnBDLHVHQUlBOzs0RkRNYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUk7OEJBR1AsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tYXJrZG93bi1wYXJzZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFya2Rvd24tcGFyc2VyLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE1hcmtkb3duUGFyc2VyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGV4dENvbnRlbnQ6IHN0cmluZ1xuICBASW5wdXQoKSB3aGl0b3V0U3R5bGVzPzogYm9vbGVhblxuXG4gIGdldCBwYXJzZWRNYXJrZG93bigpIHtcbiAgICByZXR1cm4gbWFya2VkLnBhcnNlKHRoaXMudGV4dENvbnRlbnQgPz8gJycpXG4gIH1cbn1cbiIsIjxkaXZcbiAgW2NsYXNzXT1cIndoaXRvdXRTdHlsZXMgPyAnJyA6ICdtYXJrZG93bi1ib2R5J1wiXG4gIFtpbm5lckhUTUxdPVwicGFyc2VkTWFya2Rvd25cIlxuPjwvZGl2PlxuIl19
@@ -3,6 +3,9 @@ import { MetadataQualityItemComponent, } from '../metadata-quality-item/metadata
3
3
  import { PopoverComponent, ProgressBarComponent, } from '../../../../../../libs/ui/widgets/src';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { TranslateModule } from '@ngx-translate/core';
6
+ import { NgIcon } from '@ng-icons/core';
7
+ import { matInfoOutline } from '@ng-icons/material-icons/outline';
8
+ import { provideIcons, provideNgIconsConfig } from '@ng-icons/core';
6
9
  import * as i0 from "@angular/core";
7
10
  import * as i1 from "@angular/common";
8
11
  import * as i2 from "@ngx-translate/core";
@@ -43,7 +46,15 @@ export class MetadataQualityComponent {
43
46
  }
44
47
  }
45
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityComponent, isStandalone: true, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <gn-ui-popover [content]=\"popoverItems\" theme=\"light-border\">\n <div class=\"min-w-[200px]\" [class]=\"smaller ? 'leading-[8px]' : ''\">\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n type=\"primary\"\n ></gn-ui-progress-bar>\n </div>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityComponent, isStandalone: true, selector: "gn-ui-metadata-quality", inputs: { metadata: "metadata", smaller: "smaller", metadataQualityDisplay: "metadataQualityDisplay" }, providers: [
50
+ provideIcons({
51
+ matInfoOutline,
52
+ }),
53
+ provideNgIconsConfig({
54
+ size: '1.2em',
55
+ strokeWidth: '1.5px',
56
+ }),
57
+ ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"smaller ? 'leading-[8px] min-w-[120px]' : 'min-w-[200px]'\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
58
  }
48
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
49
60
  type: Component,
@@ -53,7 +64,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
53
64
  ProgressBarComponent,
54
65
  MetadataQualityItemComponent,
55
66
  TranslateModule,
56
- ], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <gn-ui-popover [content]=\"popoverItems\" theme=\"light-border\">\n <div class=\"min-w-[200px]\" [class]=\"smaller ? 'leading-[8px]' : ''\">\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n type=\"primary\"\n ></gn-ui-progress-bar>\n </div>\n </gn-ui-popover>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
67
+ NgIcon,
68
+ ], providers: [
69
+ provideIcons({
70
+ matInfoOutline,
71
+ }),
72
+ provideNgIconsConfig({
73
+ size: '1.2em',
74
+ strokeWidth: '1.5px',
75
+ }),
76
+ ], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"mb-6 metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"smaller ? 'leading-[8px] min-w-[120px]' : 'min-w-[200px]'\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
57
77
  }], propDecorators: { metadata: [{
58
78
  type: Input
59
79
  }], smaller: [{
@@ -61,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
61
81
  }], metadataQualityDisplay: [{
62
82
  type: Input
63
83
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtcXVhbGl0eS9tZXRhZGF0YS1xdWFsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5L21ldGFkYXRhLXF1YWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQTtBQUVqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixHQUNyQixNQUFNLHVDQUF1QyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7Ozs7QUFnQnJELE1BQU0sT0FBTyx3QkFBd0I7SUFkckM7UUFnQlcsWUFBTyxHQUFHLEtBQUssQ0FBQTtRQUd4QixVQUFLLEdBQTBCLEVBQUUsQ0FBQTtLQXVDbEM7SUFyQ0MsSUFBSSxZQUFZO1FBQ2QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFBO1FBQ3hELE9BQU8sT0FBTyxZQUFZLEtBQUssUUFBUTtZQUNyQyxDQUFDLENBQUMsWUFBWTtZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUE7SUFDakMsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMzRSxDQUFBO0lBQ0gsQ0FBQztJQUVPLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBYztRQUN0QyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ25CLENBQUM7SUFDSCxDQUFDOytHQTNDVSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrTUNqQ3JDLG90QkFxQkEsMkhES0ksWUFBWSxnUUFDWixnQkFBZ0Isd0ZBQ2hCLG9CQUFvQiwwRkFDcEIsNEJBQTRCLGtHQUM1QixlQUFlOzs0RkFHTix3QkFBd0I7a0JBZHBDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLGVBQWU7cUJBQ2hCOzhCQUdRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBNZXRhZGF0YVF1YWxpdHlJdGVtLFxuICBNZXRhZGF0YVF1YWxpdHlJdGVtQ29tcG9uZW50LFxufSBmcm9tICcuLi9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0vbWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudCdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBQb3BvdmVyQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW1ldGFkYXRhLXF1YWxpdHknLFxuICB0ZW1wbGF0ZVVybDogJy4vbWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21ldGFkYXRhLXF1YWxpdHkuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50LFxuICAgIE1ldGFkYXRhUXVhbGl0eUl0ZW1Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YVF1YWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBtZXRhZGF0YTogUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuICBASW5wdXQoKSBzbWFsbGVyID0gZmFsc2VcbiAgQElucHV0KCkgbWV0YWRhdGFRdWFsaXR5RGlzcGxheTogYm9vbGVhblxuXG4gIGl0ZW1zOiBNZXRhZGF0YVF1YWxpdHlJdGVtW10gPSBbXVxuXG4gIGdldCBxdWFsaXR5U2NvcmUoKSB7XG4gICAgY29uc3QgcXVhbGl0eVNjb3JlID0gdGhpcy5tZXRhZGF0YT8uZXh0cmFzPy5xdWFsaXR5U2NvcmVcbiAgICByZXR1cm4gdHlwZW9mIHF1YWxpdHlTY29yZSA9PT0gJ251bWJlcidcbiAgICAgID8gcXVhbGl0eVNjb3JlXG4gICAgICA6IHRoaXMuY2FsY3VsYXRlZFF1YWxpdHlTY29yZVxuICB9XG5cbiAgZ2V0IGNhbGN1bGF0ZWRRdWFsaXR5U2NvcmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLml0ZW1zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB2YWx1ZSkubGVuZ3RoICogMTAwKSAvIHRoaXMuaXRlbXMubGVuZ3RoXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBhZGQobmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm1ldGFkYXRhUXVhbGl0eURpc3BsYXk/LltuYW1lXSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuaXRlbXMucHVzaCh7IG5hbWUsIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCBjb250YWN0ID0gdGhpcy5tZXRhZGF0YT8uY29udGFjdHM/LlswXVxuICAgIHRoaXMuaXRlbXMgPSBbXVxuICAgIHRoaXMuYWRkKCd0aXRsZScsICEhdGhpcy5tZXRhZGF0YT8udGl0bGUpXG4gICAgdGhpcy5hZGQoJ2Rlc2NyaXB0aW9uJywgISF0aGlzLm1ldGFkYXRhPy5hYnN0cmFjdClcbiAgICB0aGlzLmFkZCgndG9waWMnLCB0aGlzLm1ldGFkYXRhPy50b3BpY3M/Lmxlbmd0aCA+IDApXG4gICAgdGhpcy5hZGQoJ2tleXdvcmRzJywgdGhpcy5tZXRhZGF0YT8ua2V5d29yZHM/Lmxlbmd0aCA+IDApXG4gICAgdGhpcy5hZGQoJ2xlZ2FsQ29uc3RyYWludHMnLCB0aGlzLm1ldGFkYXRhPy5sZWdhbENvbnN0cmFpbnRzPy5sZW5ndGggPiAwKVxuICAgIHRoaXMuYWRkKCdvcmdhbmlzYXRpb24nLCAhIWNvbnRhY3Q/Lm9yZ2FuaXphdGlvbilcbiAgICB0aGlzLmFkZCgnY29udGFjdCcsICEhY29udGFjdD8uZW1haWwpXG4gICAgdGhpcy5hZGQoJ3VwZGF0ZUZyZXF1ZW5jeScsICEhdGhpcy5tZXRhZGF0YT8udXBkYXRlRnJlcXVlbmN5KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydtZXRhZGF0YSddIHx8IGNoYW5nZXNbJ21ldGFkYXRhUXVhbGl0eURpc3BsYXknXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplKClcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtZXRhZGF0YVF1YWxpdHlEaXNwbGF5XCIgY2xhc3M9XCJtYi02IG1ldGFkYXRhLXF1YWxpdHlcIj5cbiAgPGduLXVpLXBvcG92ZXIgW2NvbnRlbnRdPVwicG9wb3Zlckl0ZW1zXCIgdGhlbWU9XCJsaWdodC1ib3JkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWluLXctWzIwMHB4XVwiIFtjbGFzc109XCJzbWFsbGVyID8gJ2xlYWRpbmctWzhweF0nIDogJydcIj5cbiAgICAgIDxnbi11aS1wcm9ncmVzcy1iYXJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW3ZhbHVlXT1cInF1YWxpdHlTY29yZVwiXG4gICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgID48L2duLXVpLXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9nbi11aS1wb3BvdmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3BvcG92ZXJJdGVtcz5cbiAgPGRpdiBjbGFzcz1cInAtMiBweS00XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTQgZm9udC1ib2xkXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmRldGFpbHM8L2Rpdj5cbiAgICA8Z24tdWktbWV0YWRhdGEtcXVhbGl0eS1pdGVtXG4gICAgICAqbmdGb3I9XCJsZXQgZSBvZiBpdGVtc1wiXG4gICAgICBbbmFtZV09XCJlLm5hbWVcIlxuICAgICAgW3ZhbHVlXT1cImUudmFsdWVcIlxuICAgID48L2duLXVpLW1ldGFkYXRhLXF1YWxpdHktaXRlbT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtcXVhbGl0eS9tZXRhZGF0YS1xdWFsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5L21ldGFkYXRhLXF1YWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQTtBQUVqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixHQUNyQixNQUFNLHVDQUF1QyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7Ozs7QUEwQm5FLE1BQU0sT0FBTyx3QkFBd0I7SUF4QnJDO1FBMEJXLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFHeEIsVUFBSyxHQUEwQixFQUFFLENBQUE7S0F1Q2xDO0lBckNDLElBQUksWUFBWTtRQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQTtRQUN4RCxPQUFPLE9BQU8sWUFBWSxLQUFLLFFBQVE7WUFD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WUFBWSxDQUFDOzRCQUNYLGNBQWM7eUJBQ2YsQ0FBQzt3QkFDRixvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLE9BQU87NEJBQ2IsV0FBVyxFQUFFLE9BQU87eUJBQ3JCLENBQUM7cUJBQ0g7OEJBR1EsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIE1ldGFkYXRhUXVhbGl0eUl0ZW0sXG4gIE1ldGFkYXRhUXVhbGl0eUl0ZW1Db21wb25lbnQsXG59IGZyb20gJy4uL21ldGFkYXRhLXF1YWxpdHktaXRlbS9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIFBvcG92ZXJDb21wb25lbnQsXG4gIFByb2dyZXNzQmFyQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IE5nSWNvbiB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgbWF0SW5mb091dGxpbmUgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvb3V0bGluZSdcbmltcG9ydCB7IHByb3ZpZGVJY29ucywgcHJvdmlkZU5nSWNvbnNDb25maWcgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWV0YWRhdGEtcXVhbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXRhZGF0YS1xdWFsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gICAgTWV0YWRhdGFRdWFsaXR5SXRlbUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTmdJY29uLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgbWF0SW5mb091dGxpbmUsXG4gICAgfSksXG4gICAgcHJvdmlkZU5nSWNvbnNDb25maWcoe1xuICAgICAgc2l6ZTogJzEuMmVtJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAnMS41cHgnLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YVF1YWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBtZXRhZGF0YTogUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuICBASW5wdXQoKSBzbWFsbGVyID0gZmFsc2VcbiAgQElucHV0KCkgbWV0YWRhdGFRdWFsaXR5RGlzcGxheTogYm9vbGVhblxuXG4gIGl0ZW1zOiBNZXRhZGF0YVF1YWxpdHlJdGVtW10gPSBbXVxuXG4gIGdldCBxdWFsaXR5U2NvcmUoKSB7XG4gICAgY29uc3QgcXVhbGl0eVNjb3JlID0gdGhpcy5tZXRhZGF0YT8uZXh0cmFzPy5xdWFsaXR5U2NvcmVcbiAgICByZXR1cm4gdHlwZW9mIHF1YWxpdHlTY29yZSA9PT0gJ251bWJlcidcbiAgICAgID8gcXVhbGl0eVNjb3JlXG4gICAgICA6IHRoaXMuY2FsY3VsYXRlZFF1YWxpdHlTY29yZVxuICB9XG5cbiAgZ2V0IGNhbGN1bGF0ZWRRdWFsaXR5U2NvcmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLml0ZW1zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB2YWx1ZSkubGVuZ3RoICogMTAwKSAvIHRoaXMuaXRlbXMubGVuZ3RoXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBhZGQobmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm1ldGFkYXRhUXVhbGl0eURpc3BsYXk/LltuYW1lXSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuaXRlbXMucHVzaCh7IG5hbWUsIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCBjb250YWN0ID0gdGhpcy5tZXRhZGF0YT8uY29udGFjdHM/LlswXVxuICAgIHRoaXMuaXRlbXMgPSBbXVxuICAgIHRoaXMuYWRkKCd0aXRsZScsICEhdGhpcy5tZXRhZGF0YT8udGl0bGUpXG4gICAgdGhpcy5hZGQoJ2Rlc2NyaXB0aW9uJywgISF0aGlzLm1ldGFkYXRhPy5hYnN0cmFjdClcbiAgICB0aGlzLmFkZCgndG9waWMnLCB0aGlzLm1ldGFkYXRhPy50b3BpY3M/Lmxlbmd0aCA+IDApXG4gICAgdGhpcy5hZGQoJ2tleXdvcmRzJywgdGhpcy5tZXRhZGF0YT8ua2V5d29yZHM/Lmxlbmd0aCA+IDApXG4gICAgdGhpcy5hZGQoJ2xlZ2FsQ29uc3RyYWludHMnLCB0aGlzLm1ldGFkYXRhPy5sZWdhbENvbnN0cmFpbnRzPy5sZW5ndGggPiAwKVxuICAgIHRoaXMuYWRkKCdvcmdhbmlzYXRpb24nLCAhIWNvbnRhY3Q/Lm9yZ2FuaXphdGlvbilcbiAgICB0aGlzLmFkZCgnY29udGFjdCcsICEhY29udGFjdD8uZW1haWwpXG4gICAgdGhpcy5hZGQoJ3VwZGF0ZUZyZXF1ZW5jeScsICEhdGhpcy5tZXRhZGF0YT8udXBkYXRlRnJlcXVlbmN5KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydtZXRhZGF0YSddIHx8IGNoYW5nZXNbJ21ldGFkYXRhUXVhbGl0eURpc3BsYXknXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplKClcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtZXRhZGF0YVF1YWxpdHlEaXNwbGF5XCIgY2xhc3M9XCJtYi02IG1ldGFkYXRhLXF1YWxpdHlcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgIFtjbGFzc109XCJzbWFsbGVyID8gJ2xlYWRpbmctWzhweF0gbWluLXctWzEyMHB4XScgOiAnbWluLXctWzIwMHB4XSdcIlxuICA+XG4gICAgPGduLXVpLXByb2dyZXNzLWJhclxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIFt2YWx1ZV09XCJxdWFsaXR5U2NvcmVcIlxuICAgICAgW3R5cGVdPVwiJ2xpZ2h0J1wiXG4gICAgICBjbGFzcz1cImZsZXgtZ3Jvd1wiXG4gICAgPjwvZ24tdWktcHJvZ3Jlc3MtYmFyPlxuICAgIDxnbi11aS1wb3BvdmVyXG4gICAgICBbY29udGVudF09XCJwb3BvdmVySXRlbXNcIlxuICAgICAgdGhlbWU9XCJsaWdodC1ib3JkZXJcIlxuICAgICAgW2NsYXNzXT1cInNtYWxsZXIgPyAnbWwtMicgOiAnbWwtMiBtdC0xJ1wiXG4gICAgPlxuICAgICAgPG5nLWljb25cbiAgICAgICAgbmFtZT1cIm1hdEluZm9PdXRsaW5lXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4LXNocmluay0wIHRleHQtZ3JheS02MDBcIlxuICAgICAgPjwvbmctaWNvbj5cbiAgICA8L2duLXVpLXBvcG92ZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3BvcG92ZXJJdGVtcz5cbiAgPGRpdiBjbGFzcz1cInAtMiBweS00XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTQgZm9udC1ib2xkXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmRldGFpbHM8L2Rpdj5cbiAgICA8Z24tdWktbWV0YWRhdGEtcXVhbGl0eS1pdGVtXG4gICAgICAqbmdGb3I9XCJsZXQgZSBvZiBpdGVtc1wiXG4gICAgICBbbmFtZV09XCJlLm5hbWVcIlxuICAgICAgW3ZhbHVlXT1cImUudmFsdWVcIlxuICAgID48L2duLXVpLW1ldGFkYXRhLXF1YWxpdHktaXRlbT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -3,7 +3,6 @@ export * from './lib/badge/badge.component';
3
3
  export * from './lib/button/button.component';
4
4
  export * from './lib/check-toggle/check-toggle.component';
5
5
  export * from './lib/checkbox/checkbox.component';
6
- export * from './lib/chips-input/chips-input.component';
7
6
  export * from './lib/copy-text-button/copy-text-button.component';
8
7
  export * from './lib/date-picker/date-picker.component';
9
8
  export * from './lib/date-range-dropdown/date-range-dropdown.component';
@@ -25,4 +24,4 @@ export * from './lib/text-input/text-input.component';
25
24
  export * from './lib/ui-inputs.module';
26
25
  export * from './lib/url-input/url-input.component';
27
26
  export * from './lib/viewport-intersector/viewport-intersector.component';
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMseUNBQXlDLENBQUE7QUFDdkQsY0FBYyxtREFBbUQsQ0FBQTtBQUNqRSxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMseURBQXlELENBQUE7QUFDdkUsY0FBYyxxREFBcUQsQ0FBQTtBQUNuRSxjQUFjLG1FQUFtRSxDQUFBO0FBQ2pGLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYyx1REFBdUQsQ0FBQTtBQUNyRSxjQUFjLHFEQUFxRCxDQUFBO0FBQ25FLGNBQWMsaURBQWlELENBQUE7QUFDL0QsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdUNBQXVDLENBQUE7QUFDckQsY0FBYyxxREFBcUQsQ0FBQTtBQUNuRSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMseUNBQXlDLENBQUE7QUFDdkQsY0FBYyw2Q0FBNkMsQ0FBQTtBQUMzRCxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsdUNBQXVDLENBQUE7QUFDckQsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMsMkRBQTJELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlL2JhZGdlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2stdG9nZ2xlL2NoZWNrLXRvZ2dsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGlwcy1pbnB1dC9jaGlwcy1pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3B5LXRleHQtYnV0dG9uL2NvcHktdGV4dC1idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1yYW5nZS1kcm9wZG93bi9kYXRlLXJhbmdlLWRyb3Bkb3duLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RyYWctYW5kLWRyb3AtZmlsZS1pbnB1dC9kcmFnLWFuZC1kcm9wLWZpbGUtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbXVsdGlzZWxlY3QvZHJvcGRvd24tbXVsdGlzZWxlY3QuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbXVsdGlzZWxlY3QvZHJvcGRvd24tbXVsdGlzZWxlY3QubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1zZWxlY3Rvci9kcm9wZG93bi1zZWxlY3Rvci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1zZWxlY3Rvci9kcm9wZG93bi1zZWxlY3Rvci5tb2RlbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRhYmxlLWxhYmVsL2VkaXRhYmxlLWxhYmVsLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlcy1kcm9wL2ZpbGVzLWRyb3AuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmF2aWdhdGlvbi1idXR0b24vbmF2aWdhdGlvbi1idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFyLXRvZ2dsZS9zdGFyLXRvZ2dsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zd2l0Y2gtdG9nZ2xlL3N3aXRjaC10b2dnbGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktaW5wdXRzLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VybC1pbnB1dC91cmwtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlld3BvcnQtaW50ZXJzZWN0b3Ivdmlld3BvcnQtaW50ZXJzZWN0b3IuY29tcG9uZW50J1xuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsbURBQW1ELENBQUE7QUFDakUsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYyxtRUFBbUUsQ0FBQTtBQUNqRixjQUFjLDJEQUEyRCxDQUFBO0FBQ3pFLGNBQWMsdURBQXVELENBQUE7QUFDckUsY0FBYyxxREFBcUQsQ0FBQTtBQUNuRSxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsK0NBQStDLENBQUE7QUFDN0QsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsNkNBQTZDLENBQUE7QUFDM0QsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLDJEQUEyRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZS9iYWRnZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoZWNrLXRvZ2dsZS9jaGVjay10b2dnbGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29weS10ZXh0LWJ1dHRvbi9jb3B5LXRleHQtYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcmFuZ2UtZHJvcGRvd24vZGF0ZS1yYW5nZS1kcm9wZG93bi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcmFnLWFuZC1kcm9wLWZpbGUtaW5wdXQvZHJhZy1hbmQtZHJvcC1maWxlLWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLW11bHRpc2VsZWN0L2Ryb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLW11bHRpc2VsZWN0L2Ryb3Bkb3duLW11bHRpc2VsZWN0Lm1vZGVsJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tc2VsZWN0b3IvZHJvcGRvd24tc2VsZWN0b3IuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tc2VsZWN0b3IvZHJvcGRvd24tc2VsZWN0b3IubW9kZWwnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZGl0YWJsZS1sYWJlbC9lZGl0YWJsZS1sYWJlbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZXMtZHJvcC9maWxlcy1kcm9wLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL25hdmlnYXRpb24tYnV0dG9uL25hdmlnYXRpb24tYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Rhci10b2dnbGUvc3Rhci10b2dnbGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3dpdGNoLXRvZ2dsZS9zd2l0Y2gtdG9nZ2xlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VpLWlucHV0cy5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91cmwtaW5wdXQvdXJsLWlucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZpZXdwb3J0LWludGVyc2VjdG9yL3ZpZXdwb3J0LWludGVyc2VjdG9yLmNvbXBvbmVudCdcbiJdfQ==
@@ -8,7 +8,7 @@ import { CommonModule } from '@angular/common';
8
8
  import { TranslateModule } from '@ngx-translate/core';
9
9
  import { ButtonComponent } from '../button/button.component';
10
10
  import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
11
- import { iconoirSearch } from '@ng-icons/iconoir';
11
+ import { iconoirLongArrowDownLeft, iconoirSearch } from '@ng-icons/iconoir';
12
12
  import { matClose } from '@ng-icons/material-icons/baseline';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/material/autocomplete";
@@ -17,29 +17,71 @@ import * as i3 from "@angular/common";
17
17
  import * as i4 from "@ngx-translate/core";
18
18
  import * as i5 from "@angular/forms";
19
19
  export class AutocompleteComponent {
20
+ get displayEnterBtn() {
21
+ return this.enterButton && this.allowSubmit && !this.searchActive;
22
+ }
23
+ getExtraClass() {
24
+ if (this.allowSubmit) {
25
+ if (this.enterButton) {
26
+ return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+var(--icon-padding))] inset-y-[--icon-padding]';
27
+ }
28
+ else {
29
+ return 'border rounded-lg absolute w-8 h-8 right-[calc(var(--icon-width)+0.25*var(--icon-width))] inset-y-[calc(0.25*var(--icon-width))]';
30
+ }
31
+ }
32
+ else {
33
+ if (!this.enterButton) {
34
+ return 'border rounded-lg absolute w-8 h-8 right-2 inset-y-2';
35
+ }
36
+ }
37
+ return 'border rounded-lg absolute w-8 h-8';
38
+ }
20
39
  constructor(cdRef) {
21
40
  this.cdRef = cdRef;
41
+ this.enterButton = false;
22
42
  this.clearOnSelection = false;
23
43
  this.preventCompleteOnSelection = false;
24
44
  this.autoFocus = false;
25
45
  this.minCharacterCount = 3;
26
46
  // this will show a submit button next to the input; if false, a search icon will appear on the left
27
47
  this.allowSubmit = false;
48
+ this.forceTrackPosition = false;
28
49
  this.itemSelected = new EventEmitter();
29
50
  this.inputSubmitted = new EventEmitter();
30
51
  this.inputCleared = new EventEmitter();
52
+ this.isSearchActive = new EventEmitter();
31
53
  this.control = new UntypedFormControl();
32
54
  this.cancelEnter = true;
33
55
  this.selectionSubject = new ReplaySubject(1);
34
56
  this.lastInputValue$ = new ReplaySubject(1);
35
57
  this.error = null;
36
58
  this.subscription = new Subscription();
59
+ this.lastPosition = null;
60
+ this.enterBtnPosition = 0;
61
+ this.searchActive = false;
37
62
  this.displayWithFn = (item) => item.toString();
38
63
  this.displayWithFnInternal = (item) => {
39
64
  if (item === null || item === undefined)
40
65
  return null;
41
66
  return this.displayWithFn(item);
42
67
  };
68
+ /**
69
+ * !!! This function is used only for web component mode,
70
+ * the autocomplete dropdown may not update its position
71
+ * if the page or container is disabling wind scroll.
72
+ */
73
+ this.trackPosition = () => {
74
+ const dropdownOpened = this.triggerRef && this.triggerRef.panelOpen;
75
+ const rect = this.inputRef.nativeElement.getBoundingClientRect();
76
+ if (dropdownOpened &&
77
+ (!this.lastPosition ||
78
+ rect.top !== this.lastPosition.top ||
79
+ rect.left !== this.lastPosition.left)) {
80
+ this.triggerRef.updatePosition();
81
+ }
82
+ this.lastPosition = rect;
83
+ requestAnimationFrame(this.trackPosition);
84
+ };
43
85
  }
44
86
  ngOnChanges(changes) {
45
87
  const { value } = changes;
@@ -47,6 +89,14 @@ export class AutocompleteComponent {
47
89
  const previousTextValue = this.displayWithFnInternal(value.previousValue);
48
90
  const currentTextValue = this.displayWithFnInternal(value.currentValue);
49
91
  if (previousTextValue !== currentTextValue) {
92
+ if (currentTextValue) {
93
+ this.searchActive = true;
94
+ this.isSearchActive.emit(true);
95
+ }
96
+ else {
97
+ this.searchActive = false;
98
+ this.isSearchActive.emit(false);
99
+ }
50
100
  this.updateInputValue(value.currentValue);
51
101
  }
52
102
  }
@@ -91,9 +141,23 @@ export class AutocompleteComponent {
91
141
  this.inputRef.nativeElement.focus();
92
142
  this.cdRef.detectChanges();
93
143
  }
144
+ this.startTrackingPosition();
145
+ }
146
+ /**
147
+ * !!! This function is used only for web component mode,
148
+ * the autocomplete dropdown may not update its position
149
+ * if the page or container is disabling wind scroll.
150
+ */
151
+ startTrackingPosition() {
152
+ if (this.forceTrackPosition) {
153
+ requestAnimationFrame(this.trackPosition);
154
+ }
94
155
  }
95
156
  ngOnDestroy() {
96
157
  this.subscription?.unsubscribe();
158
+ if (this.intervalIdPosition) {
159
+ clearInterval(this.intervalIdPosition);
160
+ }
97
161
  }
98
162
  updateInputValue(value) {
99
163
  if (value) {
@@ -105,6 +169,8 @@ export class AutocompleteComponent {
105
169
  }
106
170
  clear() {
107
171
  this.inputRef.nativeElement.value = '';
172
+ this.searchActive = false;
173
+ this.isSearchActive.emit(false);
108
174
  this.inputCleared.emit();
109
175
  this.selectionSubject
110
176
  .pipe(take(1))
@@ -113,6 +179,8 @@ export class AutocompleteComponent {
113
179
  }
114
180
  handleEnter(any) {
115
181
  if (!this.cancelEnter && this.allowSubmit) {
182
+ this.isSearchActive.emit(true);
183
+ this.searchActive = true;
116
184
  this.inputSubmitted.emit(any);
117
185
  }
118
186
  }
@@ -140,16 +208,22 @@ export class AutocompleteComponent {
140
208
  this.control.setValue('');
141
209
  }
142
210
  }
211
+ handleInput(event) {
212
+ this.searchActive = false;
213
+ this.isSearchActive.emit(false);
214
+ this.enterBtnPosition = event.target['value'].length * 8 + 80;
215
+ }
143
216
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", preventCompleteOnSelection: "preventCompleteOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, providers: [
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", enterButton: "enterButton", action: "action", value: "value", clearOnSelection: "clearOnSelection", preventCompleteOnSelection: "preventCompleteOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", forceTrackPosition: "forceTrackPosition", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared", isSearchActive: "isSearchActive" }, providers: [
145
218
  provideIcons({
146
219
  iconoirSearch,
147
220
  matClose,
221
+ iconoirLongArrowDownLeft,
148
222
  }),
149
223
  provideNgIconsConfig({
150
- size: '1.5rem',
224
+ size: '1.75rem',
151
225
  }),
152
- ], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n [ngClass]=\"{\n 'px-[--icon-width]': !allowSubmit,\n }\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 text-primary-lightest hover:text-primary focus:text-primary absolute inset-y-[--icon-padding] {{\n allowSubmit\n ? 'right-[calc(var(--icon-width)+var(--icon-padding))]'\n : 'right-[--icon-padding]'\n }}\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
226
+ ], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
227
  }
154
228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
155
229
  type: Component,
@@ -165,13 +239,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
165
239
  provideIcons({
166
240
  iconoirSearch,
167
241
  matClose,
242
+ iconoirLongArrowDownLeft,
168
243
  }),
169
244
  provideNgIconsConfig({
170
- size: '1.5rem',
245
+ size: '1.75rem',
171
246
  }),
172
- ], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n [ngClass]=\"{\n 'px-[--icon-width]': !allowSubmit,\n }\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 text-primary-lightest hover:text-primary focus:text-primary absolute inset-y-[--icon-padding] {{\n allowSubmit\n ? 'right-[calc(var(--icon-width)+var(--icon-padding))]'\n : 'right-[--icon-padding]'\n }}\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
247
+ ], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
173
248
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
174
249
  type: Input
250
+ }], enterButton: [{
251
+ type: Input
175
252
  }], action: [{
176
253
  type: Input
177
254
  }], value: [{
@@ -186,12 +263,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
186
263
  type: Input
187
264
  }], allowSubmit: [{
188
265
  type: Input
266
+ }], forceTrackPosition: [{
267
+ type: Input
189
268
  }], itemSelected: [{
190
269
  type: Output
191
270
  }], inputSubmitted: [{
192
271
  type: Output
193
272
  }], inputCleared: [{
194
273
  type: Output
274
+ }], isSearchActive: [{
275
+ type: Output
195
276
  }], triggerRef: [{
196
277
  type: ViewChild,
197
278
  args: [MatAutocompleteTrigger]
@@ -204,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
204
285
  }], displayWithFn: [{
205
286
  type: Input
206
287
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYy9saWIvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFFckIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEYsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7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QkFDbkIscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7cUJBQ2hCLGFBQ1U7d0JBQ1QsWUFBWSxDQUFDOzRCQUNYLGFBQWE7NEJBQ2IsUUFBUTt5QkFDVCxDQUFDO3dCQUNGLG9CQUFvQixDQUFDOzRCQUNuQixJQUFJLEVBQUUsUUFBUTt5QkFDZixDQUFDO3FCQUNIO3NGQUtRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQzRCLFVBQVU7c0JBQTVDLFNBQVM7dUJBQUMsc0JBQXNCO2dCQUNMLFlBQVk7c0JBQXZDLFNBQVM7dUJBQUMsZUFBZTtnQkFDQSxRQUFRO3NCQUFqQyxTQUFTO3VCQUFDLGFBQWE7Z0JBV2YsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSdcbmltcG9ydCB7IGZpcnN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFBvcHVwQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJTZWFyY2ggfSBmcm9tICdAbmctaWNvbnMvaWNvbm9pcidcbmltcG9ydCB7IG1hdENsb3NlIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuXG5leHBvcnQgdHlwZSBBdXRvY29tcGxldGVJdGVtID0gdW5rbm93blxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBQb3B1cEFsZXJ0Q29tcG9uZW50LFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIE5nSWNvbkNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHtcbiAgICAgIGljb25vaXJTZWFyY2gsXG4gICAgICBtYXRDbG9zZSxcbiAgICB9KSxcbiAgICBwcm92aWRlTmdJY29uc0NvbmZpZyh7XG4gICAgICBzaXplOiAnMS41cmVtJyxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIEBJbnB1dCgpIGFjdGlvbjogKHZhbHVlOiBzdHJpbmcpID0+IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlSXRlbVtdPlxuICBASW5wdXQoKSB2YWx1ZT86IEF1dG9jb21wbGV0ZUl0ZW1cbiAgQElucHV0KCkgY2xlYXJPblNlbGVjdGlvbiA9IGZhbHNlXG4gIEBJbnB1dCgpIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uID0gZmFsc2VcbiAgQElucHV0KCkgYXV0b0ZvY3VzID0gZmFsc2VcbiAgQElucHV0KCkgbWluQ2hhcmFjdGVyQ291bnQ/ID0gM1xuICAvLyB0aGlzIHdpbGwgc2hvdyBhIHN1Ym1pdCBidXR0b24gbmV4dCB0byB0aGUgaW5wdXQ7IGlmIGZhbHNlLCBhIHNlYXJjaCBpY29uIHdpbGwgYXBwZWFyIG9uIHRoZSBsZWZ0XG4gIEBJbnB1dCgpIGFsbG93U3VibWl0ID0gZmFsc2VcbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b2NvbXBsZXRlSXRlbT4oKVxuICBAT3V0cHV0KCkgaW5wdXRTdWJtaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKVxuICBAT3V0cHV0KCkgaW5wdXRDbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgdHJpZ2dlclJlZjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBpbnB1dFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuXG4gIHNlYXJjaGluZzogYm9vbGVhblxuICBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpXG4gIGNhbmNlbEVudGVyID0gdHJ1ZVxuICBzZWxlY3Rpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oMSlcbiAgbGFzdElucHV0VmFsdWUkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKVxuICBlcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgc3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZUl0ZW1bXT5cbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG5cbiAgQElucHV0KCkgZGlzcGxheVdpdGhGbjogKGl0ZW06IEF1dG9jb21wbGV0ZUl0ZW0pID0+IHN0cmluZyA9IChpdGVtKSA9PlxuICAgIGl0ZW0udG9TdHJpbmcoKVxuXG4gIGRpc3BsYXlXaXRoRm5JbnRlcm5hbCA9IChpdGVtPzogQXV0b2NvbXBsZXRlSXRlbSkgPT4ge1xuICAgIGlmIChpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5V2l0aEZuKGl0ZW0pXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IGNoYW5nZXNcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzVGV4dFZhbHVlID0gdGhpcy5kaXNwbGF5V2l0aEZuSW50ZXJuYWwodmFsdWUucHJldmlvdXNWYWx1ZSlcbiAgICAgIGNvbnN0IGN1cnJlbnRUZXh0VmFsdWUgPSB0aGlzLmRpc3BsYXlXaXRoRm5JbnRlcm5hbCh2YWx1ZS5jdXJyZW50VmFsdWUpXG4gICAgICBpZiAocHJldmlvdXNUZXh0VmFsdWUgIT09IGN1cnJlbnRUZXh0VmFsdWUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdWYWx1ZSQgPSBtZXJnZShcbiAgICAgIG9mKCcnKSxcbiAgICAgIHRoaXMuaW5wdXRDbGVhcmVkLnBpcGUobWFwKCgpID0+ICcnKSksXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNDAwKVxuICAgICAgKVxuICAgIClcblxuICAgIGNvbnN0IGV4dGVybmFsVmFsdWVDaGFuZ2UkID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50aXRsZSksXG4gICAgICBtYXAoKGl0ZW0pID0+IGl0ZW0udGl0bGUpXG4gICAgKVxuXG4gICAgLy8gdGhpcyBvYnNlcnZhYmxlIGVtaXRzIGFycmF5cyBvZiBzdWdnZXN0aW9ucyBsb2FkZWQgdXNpbmcgdGhlIGdpdmVuIGFjdGlvblxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zRnJvbUFjdGlvbiA9IG1lcmdlKFxuICAgICAgbmV3VmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUubGVuZ3RoID49IHRoaXMubWluQ2hhcmFjdGVyQ291bnQpXG4gICAgICApLFxuICAgICAgZXh0ZXJuYWxWYWx1ZUNoYW5nZSRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWVcbiAgICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4gdGhpcy5hY3Rpb24odmFsdWUpKSxcbiAgICAgIHRhcCgoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgICAgLy8gZm9yY2luZyB0aGUgcGFuZWwgdG8gb3BlbiBpZiB0aGVyZSBhcmUgc3VnZ2VzdGlvbnNcbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJSZWY/Lm9wZW5QYW5lbCgpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5tZXNzYWdlXG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMuc2VhcmNoaW5nID0gZmFsc2UpKVxuICAgIClcblxuICAgIHRoaXMuc3VnZ2VzdGlvbnMkID0gbWVyZ2UoXG4gICAgICBzdWdnZXN0aW9uc0Zyb21BY3Rpb24sXG4gICAgICAvLyBpZiBhIG5ldyB2YWx1ZSBpcyB1bmRlciB0aGUgbWluIGNoYXIgY291bnQsIGNsZWFyIHN1Z2dlc3Rpb25zXG4gICAgICBuZXdWYWx1ZSQucGlwZShcbiAgICAgICAgZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkNoYXJhY3RlckNvdW50KSxcbiAgICAgICAgbWFwKCgpID0+IFtdKVxuICAgICAgKVxuICAgIClcblxuICAgIC8vIGNsb3NlIHRoZSBwYW5lbCB3aGVuZXZlciBzdWdnZXN0aW9ucyBhcmUgY2xlYXJlZFxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMkXG4gICAgICAgIC5waXBlKGZpbHRlcigoc3VnZ2VzdGlvbnMpID0+IHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJpZ2dlclJlZj8uY2xvc2VQYW5lbCgpXG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGFueSkgPT4ge1xuICAgICAgICBpZiAoYW55ICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuY2FuY2VsRW50ZXIgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmxhc3RJbnB1dFZhbHVlJClcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25TZWxlY3RlZC5zdWJzY3JpYmUodGhpcy5zZWxlY3Rpb25TdWJqZWN0KVxuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcbiAgfVxuXG4gIHVwZGF0ZUlucHV0VmFsdWUodmFsdWU6IEF1dG9jb21wbGV0ZUl0ZW0pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSlcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICh2YWx1ZSBhcyBhbnkpPy50aXRsZSB8fCAnJ1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnXG4gICAgdGhpcy5pbnB1dENsZWFyZWQuZW1pdCgpXG4gICAgdGhpcy5zZWxlY3Rpb25TdWJqZWN0XG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLm9wdGlvbi5kZXNlbGVjdCgpKVxuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICBoYW5kbGVFbnRlcihhbnk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jYW5jZWxFbnRlciAmJiB0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICB0aGlzLmlucHV0U3VibWl0dGVkLmVtaXQoYW55KVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrU2VhcmNoKCkge1xuICAgIHRoaXMuaW5wdXRTdWJtaXR0ZWQuZW1pdCh0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkIGluIHRoZSBsaXN0IG9mIGRpc3BsYXllZCBpdGVtcy5cbiAgICogSWYgcHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24gaXMgdHJ1ZSB0aGVuIHRoZSBpbnB1dCB3aWxsIGJlIGxlZnQgYXMgZW50ZXJlZCBieSB0aGUgdXNlci5cbiAgICogSWYgcHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24gaXMgZmFsc2UgKGJ5IGRlZmF1bHQpIHRoZW4gdGhlIGlucHV0IHdpbGwgYmUgY29tcGxldGVkIHdpdGggdGhlIGl0ZW0gc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG4gICAqIElmIGNsZWFyT25TZWxlY3Rpb24gaXMgdHJ1ZSB0aGVuIHRoZSBpbnB1dCB3aWxsIGJlIGNsZWFyZWQgdXBvbiBzZWxlY3Rpb24uXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgaGFuZGxlU2VsZWN0aW9uKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgdGhpcy5jYW5jZWxFbnRlciA9IHRydWVcbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGV2ZW50Lm9wdGlvbi52YWx1ZSlcbiAgICBpZiAodGhpcy5wcmV2ZW50Q29tcGxldGVPblNlbGVjdGlvbikge1xuICAgICAgdGhpcy5sYXN0SW5wdXRWYWx1ZSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGxhc3RJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IGxhc3RJbnB1dFZhbHVlXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICh0aGlzLmNsZWFyT25TZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoJycpXG4gICAgfVxuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInctZnVsbCBpbmxpbmUtYmxvY2sgcmVsYXRpdmVcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteS1bLS1pY29uLXBhZGRpbmddIGxlZnQtWy0taWNvbi1wYWRkaW5nXSB3LVstLWljb24td2lkdGhdIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICpuZ0lmPVwiIWFsbG93U3VibWl0XCJcbiAgPlxuICAgIDxuZy1pY29uIG5hbWU9XCJpY29ub2lyU2VhcmNoXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgc2VhcmNoXCI+PC9uZy1pY29uPlxuICA8L2Rpdj5cbiAgPGlucHV0XG4gICAgI3NlYXJjaElucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIGNsYXNzPVwiZ24tdWktdGV4dC1pbnB1dFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3B4LVstLWljb24td2lkdGhdJzogIWFsbG93U3VibWl0LFxuICAgIH1cIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgKGtleXVwLmVudGVyKT1cImhhbmRsZUVudGVyKHNlYXJjaElucHV0LnZhbHVlKVwiXG4gIC8+XG4gIDxnbi11aS1idXR0b25cbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIGV4dHJhQ2xhc3M9XCJib3JkZXItMCB0ZXh0LXByaW1hcnktbGlnaHRlc3QgaG92ZXI6dGV4dC1wcmltYXJ5IGZvY3VzOnRleHQtcHJpbWFyeSBhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10ge3tcbiAgICAgIGFsbG93U3VibWl0XG4gICAgICAgID8gJ3JpZ2h0LVtjYWxjKHZhcigtLWljb24td2lkdGgpK3ZhcigtLWljb24tcGFkZGluZykpXSdcbiAgICAgICAgOiAncmlnaHQtWy0taWNvbi1wYWRkaW5nXSdcbiAgICB9fVwiXG4gICAgZGF0YS10ZXN0PVwiY2xlYXItYnRuXCJcbiAgICAqbmdJZj1cInNlYXJjaElucHV0LnZhbHVlXCJcbiAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgIChidXR0b25DbGljayk9XCJjbGVhcigpXCJcbiAgPlxuICAgIDxuZy1pY29uIG5hbWU9XCJtYXRDbG9zZVwiPjwvbmctaWNvbj5cbiAgPC9nbi11aS1idXR0b24+XG4gIDxnbi11aS1idXR0b25cbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIGV4dHJhQ2xhc3M9XCJib3JkZXItMCBib3JkZXItbC1bMXB4XSBib3JkZXItZ3JheS0zMDAgaG92ZXI6Ym9yZGVyLWdyYXktNTAwIHRleHQtcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZGFya2VzdCBmb2N1czp0ZXh0LXByaW1hcnktZGFya2VzdCBhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gcmlnaHQtWy0taWNvbi1wYWRkaW5nXVwiXG4gICAgYXJpYS1sYWJlbD1cIlRyaWdnZXIgc2VhcmNoXCJcbiAgICAqbmdJZj1cImFsbG93U3VibWl0XCJcbiAgICBkYXRhLXRlc3Q9XCJhdXRvY29tcGxldGUtc3VibWl0LWJ0blwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cImhhbmRsZUNsaWNrU2VhcmNoKClcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gIDwvZ24tdWktYnV0dG9uPlxuXG4gIDxnbi11aS1wb3B1cC1hbGVydFxuICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgbXQtMiB3LWZ1bGwgdG9wLVsxMDAlXSBsZWZ0LTBcIlxuICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgdHlwZT1cIndhcm5pbmdcIlxuICA+XG4gICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5hdXRvY29tcGxldGUuZXJyb3I8L3NwYW4+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9nbi11aS1wb3B1cC1hbGVydD5cbjwvc3Bhbj5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlU2VsZWN0aW9uKCRldmVudClcIlxuICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhGbkludGVybmFsXCJcbj5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBzdWdnZXN0aW9ucyQgfCBhc3luY1wiXG4gICAgW3ZhbHVlXT1cInN1Z2dlc3Rpb25cIlxuICAgIGNsYXNzPVwicC0yIHN1Z2dlc3Rpb25cIlxuICA+XG4gICAge3sgZGlzcGxheVdpdGhGbkludGVybmFsKHN1Z2dlc3Rpb24pIH19XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYy9saWIvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFFckIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEYsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7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blN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSdcbmltcG9ydCB7IGZpcnN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFBvcHVwQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJMb25nQXJyb3dEb3duTGVmdCwgaWNvbm9pclNlYXJjaCB9IGZyb20gJ0BuZy1pY29ucy9pY29ub2lyJ1xuaW1wb3J0IHsgbWF0Q2xvc2UgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbmV4cG9ydCB0eXBlIEF1dG9jb21wbGV0ZUl0ZW0gPSB1bmtub3duXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcHVwQWxlcnRDb21wb25lbnQsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgaWNvbm9pclNlYXJjaCxcbiAgICAgIG1hdENsb3NlLFxuICAgICAgaWNvbm9pckxvbmdBcnJvd0Rvd25MZWZ0LFxuICAgIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjc1cmVtJyxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIEBJbnB1dCgpIGVudGVyQnV0dG9uID0gZmFsc2VcbiAgQElucHV0KCkgYWN0aW9uOiAodmFsdWU6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxBdXRvY29tcGxldGVJdGVtW10+XG4gIEBJbnB1dCgpIHZhbHVlPzogQXV0b2NvbXBsZXRlSXRlbVxuICBASW5wdXQoKSBjbGVhck9uU2VsZWN0aW9uID0gZmFsc2VcbiAgQElucHV0KCkgcHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24gPSBmYWxzZVxuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZVxuICBASW5wdXQoKSBtaW5DaGFyYWN0ZXJDb3VudD8gPSAzXG4gIC8vIHRoaXMgd2lsbCBzaG93IGEgc3VibWl0IGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1dDsgaWYgZmFsc2UsIGEgc2VhcmNoIGljb24gd2lsbCBhcHBlYXIgb24gdGhlIGxlZnRcbiAgQElucHV0KCkgYWxsb3dTdWJtaXQgPSBmYWxzZVxuICBASW5wdXQoKSBmb3JjZVRyYWNrUG9zaXRpb24gPSBmYWxzZVxuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVJdGVtPigpXG4gIEBPdXRwdXQoKSBpbnB1dFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBpbnB1dENsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIGlzU2VhcmNoQWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgdHJpZ2dlclJlZjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBpbnB1dFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuXG4gIHNlYXJjaGluZzogYm9vbGVhblxuICBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpXG4gIGNhbmNlbEVudGVyID0gdHJ1ZVxuICBzZWxlY3Rpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oMSlcbiAgbGFzdElucHV0VmFsdWUkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKVxuICBlcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgc3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZUl0ZW1bXT5cbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG4gIHByaXZhdGUgbGFzdFBvc2l0aW9uOiBET01SZWN0IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBpbnRlcnZhbElkUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuICBlbnRlckJ0blBvc2l0aW9uID0gMFxuICBzZWFyY2hBY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIGRpc3BsYXlXaXRoRm46IChpdGVtOiBBdXRvY29tcGxldGVJdGVtKSA9PiBzdHJpbmcgPSAoaXRlbSkgPT5cbiAgICBpdGVtLnRvU3RyaW5nKClcblxuICBnZXQgZGlzcGxheUVudGVyQnRuKCkge1xuICAgIHJldHVybiB0aGlzLmVudGVyQnV0dG9uICYmIHRoaXMuYWxsb3dTdWJtaXQgJiYgIXRoaXMuc2VhcmNoQWN0aXZlXG4gIH1cblxuICBkaXNwbGF5V2l0aEZuSW50ZXJuYWwgPSAoaXRlbT86IEF1dG9jb21wbGV0ZUl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGhGbihpdGVtKVxuICB9XG5cbiAgZ2V0RXh0cmFDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICBpZiAodGhpcy5lbnRlckJ1dHRvbikge1xuICAgICAgICByZXR1cm4gJ2JvcmRlciByb3VuZGVkLWxnIGFic29sdXRlIHctOCBoLTggcmlnaHQtW2NhbGModmFyKC0taWNvbi13aWR0aCkrdmFyKC0taWNvbi1wYWRkaW5nKSldIGluc2V0LXktWy0taWNvbi1wYWRkaW5nXSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnYm9yZGVyIHJvdW5kZWQtbGcgYWJzb2x1dGUgdy04IGgtOCByaWdodC1bY2FsYyh2YXIoLS1pY29uLXdpZHRoKSswLjI1KnZhcigtLWljb24td2lkdGgpKV0gaW5zZXQteS1bY2FsYygwLjI1KnZhcigtLWljb24td2lkdGgpKV0nXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5lbnRlckJ1dHRvbikge1xuICAgICAgICByZXR1cm4gJ2JvcmRlciByb3VuZGVkLWxnIGFic29sdXRlIHctOCBoLTggcmlnaHQtMiBpbnNldC15LTInXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnYm9yZGVyIHJvdW5kZWQtbGcgYWJzb2x1dGUgdy04IGgtOCdcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gY2hhbmdlc1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3QgcHJldmlvdXNUZXh0VmFsdWUgPSB0aGlzLmRpc3BsYXlXaXRoRm5JbnRlcm5hbCh2YWx1ZS5wcmV2aW91c1ZhbHVlKVxuICAgICAgY29uc3QgY3VycmVudFRleHRWYWx1ZSA9IHRoaXMuZGlzcGxheVdpdGhGbkludGVybmFsKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIGlmIChwcmV2aW91c1RleHRWYWx1ZSAhPT0gY3VycmVudFRleHRWYWx1ZSkge1xuICAgICAgICBpZiAoY3VycmVudFRleHRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdCh0cnVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdWYWx1ZSQgPSBtZXJnZShcbiAgICAgIG9mKCcnKSxcbiAgICAgIHRoaXMuaW5wdXRDbGVhcmVkLnBpcGUobWFwKCgpID0+ICcnKSksXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNDAwKVxuICAgICAgKVxuICAgIClcblxuICAgIGNvbnN0IGV4dGVybmFsVmFsdWVDaGFuZ2UkID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50aXRsZSksXG4gICAgICBtYXAoKGl0ZW0pID0+IGl0ZW0udGl0bGUpXG4gICAgKVxuXG4gICAgLy8gdGhpcyBvYnNlcnZhYmxlIGVtaXRzIGFycmF5cyBvZiBzdWdnZXN0aW9ucyBsb2FkZWQgdXNpbmcgdGhlIGdpdmVuIGFjdGlvblxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zRnJvbUFjdGlvbiA9IG1lcmdlKFxuICAgICAgbmV3VmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUubGVuZ3RoID49IHRoaXMubWluQ2hhcmFjdGVyQ291bnQpXG4gICAgICApLFxuICAgICAgZXh0ZXJuYWxWYWx1ZUNoYW5nZSRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWVcbiAgICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4gdGhpcy5hY3Rpb24odmFsdWUpKSxcbiAgICAgIHRhcCgoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgICAgLy8gZm9yY2luZyB0aGUgcGFuZWwgdG8gb3BlbiBpZiB0aGVyZSBhcmUgc3VnZ2VzdGlvbnNcbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJSZWY/Lm9wZW5QYW5lbCgpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5tZXNzYWdlXG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMuc2VhcmNoaW5nID0gZmFsc2UpKVxuICAgIClcblxuICAgIHRoaXMuc3VnZ2VzdGlvbnMkID0gbWVyZ2UoXG4gICAgICBzdWdnZXN0aW9uc0Zyb21BY3Rpb24sXG4gICAgICAvLyBpZiBhIG5ldyB2YWx1ZSBpcyB1bmRlciB0aGUgbWluIGNoYXIgY291bnQsIGNsZWFyIHN1Z2dlc3Rpb25zXG4gICAgICBuZXdWYWx1ZSQucGlwZShcbiAgICAgICAgZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkNoYXJhY3RlckNvdW50KSxcbiAgICAgICAgbWFwKCgpID0+IFtdKVxuICAgICAgKVxuICAgIClcblxuICAgIC8vIGNsb3NlIHRoZSBwYW5lbCB3aGVuZXZlciBzdWdnZXN0aW9ucyBhcmUgY2xlYXJlZFxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMkXG4gICAgICAgIC5waXBlKGZpbHRlcigoc3VnZ2VzdGlvbnMpID0+IHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJpZ2dlclJlZj8uY2xvc2VQYW5lbCgpXG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGFueSkgPT4ge1xuICAgICAgICBpZiAoYW55ICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuY2FuY2VsRW50ZXIgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmxhc3RJbnB1dFZhbHVlJClcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25TZWxlY3RlZC5zdWJzY3JpYmUodGhpcy5zZWxlY3Rpb25TdWJqZWN0KVxuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgdGhpcy5zdGFydFRyYWNraW5nUG9zaXRpb24oKVxuICB9XG5cbiAgLyoqXG4gICAqICEhISBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBmb3Igd2ViIGNvbXBvbmVudCBtb2RlLFxuICAgKiB0aGUgYXV0b2NvbXBsZXRlIGRyb3Bkb3duIG1heSBub3QgdXBkYXRlIGl0cyBwb3NpdGlvblxuICAgKiBpZiB0aGUgcGFnZSBvciBjb250YWluZXIgaXMgZGlzYWJsaW5nIHdpbmQgc2Nyb2xsLlxuICAgKi9cbiAgcHJpdmF0ZSB0cmFja1Bvc2l0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGRyb3Bkb3duT3BlbmVkID0gdGhpcy50cmlnZ2VyUmVmICYmIHRoaXMudHJpZ2dlclJlZi5wYW5lbE9wZW5cbiAgICBjb25zdCByZWN0ID0gdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgICBpZiAoXG4gICAgICBkcm9wZG93bk9wZW5lZCAmJlxuICAgICAgKCF0aGlzLmxhc3RQb3NpdGlvbiB8fFxuICAgICAgICByZWN0LnRvcCAhPT0gdGhpcy5sYXN0UG9zaXRpb24udG9wIHx8XG4gICAgICAgIHJlY3QubGVmdCAhPT0gdGhpcy5sYXN0UG9zaXRpb24ubGVmdClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlclJlZi51cGRhdGVQb3NpdGlvbigpXG4gICAgfVxuXG4gICAgdGhpcy5sYXN0UG9zaXRpb24gPSByZWN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudHJhY2tQb3NpdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiAhISEgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgZm9yIHdlYiBjb21wb25lbnQgbW9kZSxcbiAgICogdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93biBtYXkgbm90IHVwZGF0ZSBpdHMgcG9zaXRpb25cbiAgICogaWYgdGhlIHBhZ2Ugb3IgY29udGFpbmVyIGlzIGRpc2FibGluZyB3aW5kIHNjcm9sbC5cbiAgICovXG4gIHN0YXJ0VHJhY2tpbmdQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy5mb3JjZVRyYWNrUG9zaXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnRyYWNrUG9zaXRpb24pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcblxuICAgIGlmICh0aGlzLmludGVydmFsSWRQb3NpdGlvbikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWRQb3NpdGlvbilcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbnB1dFZhbHVlKHZhbHVlOiBBdXRvY29tcGxldGVJdGVtKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpXG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAodmFsdWUgYXMgYW55KT8udGl0bGUgfHwgJydcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZmFsc2UpXG4gICAgdGhpcy5pbnB1dENsZWFyZWQuZW1pdCgpXG4gICAgdGhpcy5zZWxlY3Rpb25TdWJqZWN0XG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLm9wdGlvbi5kZXNlbGVjdCgpKVxuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICBoYW5kbGVFbnRlcihhbnk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jYW5jZWxFbnRlciAmJiB0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQodHJ1ZSlcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZVxuICAgICAgdGhpcy5pbnB1dFN1Ym1pdHRlZC5lbWl0KGFueSlcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGlja1NlYXJjaCgpIHtcbiAgICB0aGlzLmlucHV0U3VibWl0dGVkLmVtaXQodGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCBpbiB0aGUgbGlzdCBvZiBkaXNwbGF5ZWQgaXRlbXMuXG4gICAqIElmIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uIGlzIHRydWUgdGhlbiB0aGUgaW5wdXQgd2lsbCBiZSBsZWZ0IGFzIGVudGVyZWQgYnkgdGhlIHVzZXIuXG4gICAqIElmIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uIGlzIGZhbHNlIChieSBkZWZhdWx0KSB0aGVuIHRoZSBpbnB1dCB3aWxsIGJlIGNvbXBsZXRlZCB3aXRoIHRoZSBpdGVtIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuICAgKiBJZiBjbGVhck9uU2VsZWN0aW9uIGlzIHRydWUgdGhlbiB0aGUgaW5wdXQgd2lsbCBiZSBjbGVhcmVkIHVwb24gc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuICAgIHRoaXMuY2FuY2VsRW50ZXIgPSB0cnVlXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChldmVudC5vcHRpb24udmFsdWUpXG4gICAgaWYgKHRoaXMucHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMubGFzdElucHV0VmFsdWUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChsYXN0SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXN0SW5wdXRWYWx1ZVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5jbGVhck9uU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCcnKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdChmYWxzZSlcbiAgICB0aGlzLmVudGVyQnRuUG9zaXRpb24gPSBldmVudC50YXJnZXRbJ3ZhbHVlJ10ubGVuZ3RoICogOCArIDgwXG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwidy1mdWxsIGlubGluZS1ibG9jayByZWxhdGl2ZVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gbGVmdC1bLS1pY29uLXBhZGRpbmddIHctWy0taWNvbi13aWR0aF0gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgKm5nSWY9XCIhYWxsb3dTdWJtaXRcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBzZWFyY2hcIj48L25nLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgIDxpbnB1dFxuICAgICAgI3NlYXJjaElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImduLXVpLXRleHQtaW5wdXRcIlxuICAgICAgKGlucHV0KT1cImhhbmRsZUlucHV0KCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlRW50ZXIoc2VhcmNoSW5wdXQudmFsdWUpXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtcHJpbWFyeSc6IHNlYXJjaEFjdGl2ZSAmJiBlbnRlckJ1dHRvbixcbiAgICAgICAgJ3RleHQtZ3JheS05MDAnOiAhc2VhcmNoQWN0aXZlLFxuICAgICAgICAncHgtWy0taWNvbi13aWR0aF0nOiAhYWxsb3dTdWJtaXQsXG4gICAgICB9XCJcbiAgICAvPlxuICAgIDxnbi11aS1idXR0b25cbiAgICAgIHR5cGU9XCJncmF5XCJcbiAgICAgICpuZ0lmPVwic2VhcmNoSW5wdXQudmFsdWUgJiYgZGlzcGxheUVudGVyQnRuXCJcbiAgICAgIGV4dHJhQ2xhc3M9XCJ3LTMyIGgtOCAhb3BhY2l0eS0xMDBcIlxuICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBlbnRlckJ0blBvc2l0aW9uICsgJ3B4JyB9XCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGVcIlxuICAgICAgZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bmctaWNvblxuICAgICAgICBuYW1lPVwiaWNvbm9pckxvbmdBcnJvd0Rvd25MZWZ0XCJcbiAgICAgICAgY2xhc3M9XCIhdy00IHRleHQtZ3JheS05MDAgZm9udC1ib2xkXCJcbiAgICAgID48L25nLWljb24+XG4gICAgICA8c3BhbiB0cmFuc2xhdGUgY2xhc3M9XCJ0ZXh0LWJvbGQgdGV4dC1ncmF5LTkwMCBmb250LWJvbGRcIj5cbiAgICAgICAgRW50ZXIgdG8gc2VhcmNoXG4gICAgICA8L3NwYW4+XG4gICAgPC9nbi11aS1idXR0b24+XG4gIDwvZGl2PlxuICA8Z24tdWktYnV0dG9uXG4gICAgdHlwZT1cInByaW1hcnlcIlxuICAgIFtleHRyYUNsYXNzXT1cImdldEV4dHJhQ2xhc3MoKVwiXG4gICAgZGF0YS10ZXN0PVwiY2xlYXItYnRuXCJcbiAgICAqbmdJZj1cInNlYXJjaElucHV0LnZhbHVlXCJcbiAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgIChidXR0b25DbGljayk9XCJjbGVhcigpXCJcbiAgPlxuICAgIDxuZy1pY29uIGNsYXNzPVwidGV4dC13aGl0ZVwiIG5hbWU9XCJtYXRDbG9zZVwiPjwvbmctaWNvbj5cbiAgPC9nbi11aS1idXR0b24+XG4gIDxnbi11aS1idXR0b25cbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIGV4dHJhQ2xhc3M9XCJib3JkZXItMCBib3JkZXItbC1bMXB4XSBib3JkZXItZ3JheS0zMDAgaG92ZXI6Ym9yZGVyLWdyYXktNTAwIHRleHQtcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZGFya2VzdCBmb2N1czp0ZXh0LXByaW1hcnktZGFya2VzdCBhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gcmlnaHQtWy0taWNvbi1wYWRkaW5nXVwiXG4gICAgYXJpYS1sYWJlbD1cIlRyaWdnZXIgc2VhcmNoXCJcbiAgICAqbmdJZj1cImFsbG93U3VibWl0XCJcbiAgICBkYXRhLXRlc3Q9XCJhdXRvY29tcGxldGUtc3VibWl0LWJ0blwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cImhhbmRsZUNsaWNrU2VhcmNoKClcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gIDwvZ24tdWktYnV0dG9uPlxuXG4gIDxnbi11aS1wb3B1cC1hbGVydFxuICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgbXQtMiB3LWZ1bGwgdG9wLVsxMDAlXSBsZWZ0LTBcIlxuICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgdHlwZT1cIndhcm5pbmdcIlxuICA+XG4gICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5hdXRvY29tcGxldGUuZXJyb3I8L3NwYW4+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9nbi11aS1wb3B1cC1hbGVydD5cbjwvc3Bhbj5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlU2VsZWN0aW9uKCRldmVudClcIlxuICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhGbkludGVybmFsXCJcbj5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBzdWdnZXN0aW9ucyQgfCBhc3luY1wiXG4gICAgW3ZhbHVlXT1cInN1Z2dlc3Rpb25cIlxuICAgIGNsYXNzPVwicC0yIHN1Z2dlc3Rpb25cIlxuICA+XG4gICAge3sgZGlzcGxheVdpdGhGbkludGVybmFsKHN1Z2dlc3Rpb24pIH19XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==