geonetwork-ui 2.6.0-dev.b306f1194 → 2.6.0-dev.ceb4be4c1

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 (462) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +44 -6
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  9. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -1
  10. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +4 -12
  11. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +29 -5
  12. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  13. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  15. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +49 -9
  16. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  17. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
  18. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +29 -6
  19. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  20. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +18 -0
  21. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +2 -3
  22. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +1 -1
  23. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -5
  24. package/esm2022/libs/feature/record/src/index.mjs +2 -4
  25. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  26. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +5 -9
  27. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  28. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +7 -11
  29. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +6 -3
  30. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +38 -7
  31. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  32. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  33. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +14 -5
  34. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -15
  35. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  36. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  37. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  38. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  39. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  40. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  41. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  42. package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -1
  43. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +8 -7
  44. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +13 -19
  45. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  46. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  47. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +30 -10
  48. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +70 -1
  49. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  50. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  51. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  52. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  53. package/esm2022/libs/ui/elements/src/index.mjs +5 -1
  54. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  55. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +3 -3
  56. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +18 -7
  57. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  58. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  59. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +27 -53
  60. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +68 -0
  61. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +3 -3
  62. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +3 -3
  63. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  64. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +8 -5
  65. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +51 -0
  67. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +17 -7
  68. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +169 -0
  69. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +22 -4
  70. package/esm2022/libs/ui/inputs/src/index.mjs +3 -2
  71. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  72. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  73. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  74. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  75. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +42 -0
  76. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  77. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  78. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -3
  79. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -9
  80. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  81. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +43 -3
  82. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
  83. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  84. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  85. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +15 -3
  86. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +3 -3
  87. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  88. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +107 -0
  89. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +4 -12
  90. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  91. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  92. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
  93. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  94. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  95. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  96. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  97. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  98. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  99. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +29 -15
  100. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +11 -3
  101. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  102. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +2 -1
  103. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  104. package/esm2022/libs/util/shared/src/index.mjs +2 -1
  105. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  106. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  107. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +16 -6
  108. package/esm2022/translations/de.json +41 -6
  109. package/esm2022/translations/en.json +43 -8
  110. package/esm2022/translations/es.json +41 -6
  111. package/esm2022/translations/fr.json +42 -7
  112. package/esm2022/translations/it.json +44 -9
  113. package/esm2022/translations/nl.json +41 -6
  114. package/esm2022/translations/pt.json +41 -6
  115. package/fesm2022/geonetwork-ui.mjs +2418 -1039
  116. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  117. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  118. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  119. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  120. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  121. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  122. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  123. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  124. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  125. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  126. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  127. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  128. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  129. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  130. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +3 -0
  131. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  132. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  133. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +9 -3
  134. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  135. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -0
  136. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  137. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  138. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  139. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  140. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  141. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +6 -3
  142. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  143. package/libs/feature/editor/src/index.d.ts +1 -0
  144. package/libs/feature/editor/src/index.d.ts.map +1 -1
  145. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +7 -0
  146. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  147. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  148. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  149. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  150. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  151. package/libs/feature/record/src/index.d.ts +1 -3
  152. package/libs/feature/record/src/index.d.ts.map +1 -1
  153. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +9 -1
  154. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  155. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  156. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  157. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  158. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  159. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  160. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  161. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  162. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  163. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  164. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  165. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +9 -1
  166. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  167. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  168. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  169. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  170. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  171. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  172. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  173. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  174. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  175. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  176. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  177. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  178. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  179. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  180. package/libs/feature/search/src/index.d.ts +1 -1
  181. package/libs/feature/search/src/index.d.ts.map +1 -1
  182. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  183. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  184. package/libs/feature/search/src/lib/feature-search.module.d.ts +4 -2
  185. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  186. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  187. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  188. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  189. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  190. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  191. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  192. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -0
  193. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  194. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  195. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  196. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  197. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  198. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  199. package/libs/ui/elements/src/index.d.ts +4 -0
  200. package/libs/ui/elements/src/index.d.ts.map +1 -1
  201. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  202. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  203. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  204. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  205. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  206. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  207. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -7
  208. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  209. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +13 -0
  210. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  211. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
  212. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  213. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  214. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  215. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +16 -0
  216. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  217. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +8 -1
  218. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  219. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +31 -0
  220. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  221. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +4 -1
  222. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  223. package/libs/ui/inputs/src/index.d.ts +2 -1
  224. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  225. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  226. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  227. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  228. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  229. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  230. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  231. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  232. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  233. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  234. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -24
  235. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  236. package/libs/ui/layout/src/index.d.ts +1 -0
  237. package/libs/ui/layout/src/index.d.ts.map +1 -1
  238. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  239. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  240. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
  241. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  242. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  243. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  244. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +2 -0
  245. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  246. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +27 -0
  247. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  248. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  249. package/libs/ui/map/src/index.d.ts +1 -0
  250. package/libs/ui/map/src/index.d.ts.map +1 -1
  251. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  252. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  253. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  254. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  255. package/libs/ui/search/src/index.d.ts +1 -0
  256. package/libs/ui/search/src/index.d.ts.map +1 -1
  257. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  258. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  259. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  260. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +5 -1
  261. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  262. package/libs/ui/search/src/lib/ui-search.module.d.ts +21 -19
  263. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  264. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  265. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  266. package/libs/util/shared/src/index.d.ts +1 -0
  267. package/libs/util/shared/src/index.d.ts.map +1 -1
  268. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  269. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  270. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  271. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  272. package/libs/util/shared/src/lib/links/link-utils.d.ts +14 -7
  273. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  274. package/package.json +2 -2
  275. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  276. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  277. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  278. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  279. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  280. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +2 -2
  281. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  282. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  283. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +63 -6
  284. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  285. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +4 -3
  286. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  287. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -0
  288. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +3 -11
  289. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +50 -5
  290. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  291. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +14 -4
  292. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +2 -0
  293. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +36 -26
  294. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +16 -2
  295. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  296. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +1 -1
  297. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  298. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +58 -10
  299. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
  300. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  301. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +31 -1
  302. package/src/libs/feature/editor/src/index.ts +1 -0
  303. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +14 -0
  304. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +15 -0
  305. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +1 -2
  306. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +2 -2
  307. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  308. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  309. package/src/libs/feature/record/src/index.ts +1 -3
  310. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +16 -10
  311. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -3
  312. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  313. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +4 -5
  314. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  315. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +1 -0
  316. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +25 -16
  317. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +40 -4
  318. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  319. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  320. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +27 -3
  321. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +21 -17
  322. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  323. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  324. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  325. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  326. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  327. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  328. package/src/libs/feature/search/src/index.ts +1 -1
  329. package/src/libs/feature/search/src/lib/constants.ts +1 -0
  330. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +0 -6
  331. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -8
  332. package/src/libs/feature/search/src/lib/feature-search.module.ts +9 -10
  333. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  334. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.css +0 -0
  335. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  336. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  337. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  338. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  339. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +26 -5
  340. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  341. package/src/libs/feature/search/src/lib/utils/service/fields.ts +99 -0
  342. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  343. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  344. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  345. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  346. package/src/libs/ui/elements/src/index.ts +4 -0
  347. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  348. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  349. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  350. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
  351. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +29 -2
  352. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  353. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  354. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  355. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  356. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +133 -138
  357. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +19 -47
  358. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  359. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +11 -0
  360. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +70 -0
  361. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
  362. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -7
  363. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  364. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  365. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  366. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +24 -7
  367. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -4
  368. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +2 -3
  369. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +48 -0
  370. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +52 -0
  371. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +8 -29
  372. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +14 -1
  373. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  374. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +110 -0
  375. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +191 -0
  376. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +9 -1
  377. package/src/libs/ui/inputs/src/index.ts +2 -1
  378. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  379. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  380. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  381. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  382. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  383. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +44 -0
  384. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  385. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  386. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  387. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  388. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +7 -8
  389. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +2 -1
  390. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
  391. package/src/libs/ui/layout/src/index.ts +1 -0
  392. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +46 -2
  393. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  394. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
  395. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
  396. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  397. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  398. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  399. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  400. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +4 -7
  401. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -0
  402. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  403. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  404. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  405. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +44 -0
  406. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +130 -0
  407. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -5
  408. package/src/libs/ui/map/src/index.ts +1 -0
  409. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  410. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  411. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  412. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  413. package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +8 -8
  414. package/src/libs/ui/search/src/index.ts +1 -0
  415. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  416. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  417. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +25 -0
  418. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  419. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  420. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  421. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  422. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  423. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +28 -15
  424. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +22 -11
  425. package/src/libs/ui/search/src/lib/ui-search.module.ts +5 -0
  426. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
  427. package/src/libs/util/app-config/src/lib/app-config.ts +1 -0
  428. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  429. package/src/libs/util/shared/src/index.ts +1 -0
  430. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  431. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +15 -3
  432. package/src/libs/util/shared/src/lib/links/link-utils.ts +33 -12
  433. package/tailwind.base.config.js +3 -0
  434. package/tailwind.base.css +19 -26
  435. package/translations/de.json +41 -6
  436. package/translations/en.json +43 -8
  437. package/translations/es.json +41 -6
  438. package/translations/fr.json +42 -7
  439. package/translations/it.json +44 -9
  440. package/translations/nl.json +41 -6
  441. package/translations/pt.json +41 -6
  442. package/translations/sk.json +41 -6
  443. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  444. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  445. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  446. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  447. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  448. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
  449. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  450. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  451. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  452. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  453. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  454. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  455. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  456. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  457. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  458. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  459. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  460. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  461. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  462. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-map-container/form-field-map-container.component.css → multilingual-panel/multilingual-panel.component.css} +0 -0
@@ -5,4 +5,5 @@ export * from './lib/gn4';
5
5
  export * from './lib/dcat-ap';
6
6
  export * from './lib/xml-utils';
7
7
  export * from './lib/base.converter';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2lzbzE5MTM5J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMTUtMydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbmQtY29udmVydGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ240J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGNhdC1hcCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3htbC11dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UuY29udmVydGVyJ1xuIl19
8
+ export * from './lib/common/resource-types';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLDZCQUE2QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMzknXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pc28xOTExNS0zJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmluZC1jb252ZXJ0ZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbjQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kY2F0LWFwJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIveG1sLXV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS5jb252ZXJ0ZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24vcmVzb3VyY2UtdHlwZXMnXG4iXX0=
@@ -11,4 +11,4 @@ export class BaseConverter {
11
11
  return Promise.all(records.map((doc) => this.writeRecord(doc)));
12
12
  }
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9iYXNlLmNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8scUJBQXFCO0NBRWpDO0FBRUQsTUFBTSxPQUFnQixhQUFhO0lBQ2pDLFlBQ1ksTUFBNkIsSUFBSSxxQkFBcUIsRUFBRTtRQUF4RCxRQUFHLEdBQUgsR0FBRyxDQUFxRDtJQUNqRSxDQUFDO0lBSUosV0FBVyxDQUFDLFNBQWM7UUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBd0I7UUFDbkMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIERhdGFzZXRSZWNvcmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhTWFwcGVyQ29udGV4dCB7XG4gIHJlYWRvbmx5IGxvY2F0aW9uP1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbnZlcnRlcjxGPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjdHg6IE1ldGFkYXRhTWFwcGVyQ29udGV4dCA9IG5ldyBNZXRhZGF0YU1hcHBlckNvbnRleHQoKVxuICApIHt9XG5cbiAgYWJzdHJhY3QgcmVhZFJlY29yZChkb2N1bWVudDogRik6IFByb21pc2U8Q2F0YWxvZ1JlY29yZD5cbiAgYWJzdHJhY3Qgd3JpdGVSZWNvcmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByZWZlcmVuY2U/OiBGKTogUHJvbWlzZTxGPlxuICByZWFkUmVjb3Jkcyhkb2N1bWVudHM6IEZbXSk6IFByb21pc2U8Q2F0YWxvZ1JlY29yZFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGRvY3VtZW50cy5tYXAoKGRvYykgPT4gdGhpcy5yZWFkUmVjb3JkKGRvYykpKVxuICB9XG4gIHdyaXRlUmVjb3JkcyhyZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10pOiBQcm9taXNlPEZbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChyZWNvcmRzLm1hcCgoZG9jKSA9PiB0aGlzLndyaXRlUmVjb3JkKGRvYykpKVxuICB9XG59XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9iYXNlLmNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8scUJBQXFCO0NBRWpDO0FBRUQsTUFBTSxPQUFnQixhQUFhO0lBQ2pDLFlBQ1ksTUFBNkIsSUFBSSxxQkFBcUIsRUFBRTtRQUF4RCxRQUFHLEdBQUgsR0FBRyxDQUFxRDtJQUNqRSxDQUFDO0lBSUosV0FBVyxDQUFDLFNBQWM7UUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBd0I7UUFDbkMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmV4cG9ydCBjbGFzcyBNZXRhZGF0YU1hcHBlckNvbnRleHQge1xuICByZWFkb25seSBsb2NhdGlvbj9cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb252ZXJ0ZXI8Rj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY3R4OiBNZXRhZGF0YU1hcHBlckNvbnRleHQgPSBuZXcgTWV0YWRhdGFNYXBwZXJDb250ZXh0KClcbiAgKSB7fVxuXG4gIGFic3RyYWN0IHJlYWRSZWNvcmQoZG9jdW1lbnQ6IEYpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+XG4gIGFic3RyYWN0IHdyaXRlUmVjb3JkKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcmVmZXJlbmNlPzogRik6IFByb21pc2U8Rj5cbiAgcmVhZFJlY29yZHMoZG9jdW1lbnRzOiBGW10pOiBQcm9taXNlPENhdGFsb2dSZWNvcmRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChkb2N1bWVudHMubWFwKChkb2MpID0+IHRoaXMucmVhZFJlY29yZChkb2MpKSlcbiAgfVxuICB3cml0ZVJlY29yZHMocmVjb3JkczogQ2F0YWxvZ1JlY29yZFtdKTogUHJvbWlzZTxGW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVjb3Jkcy5tYXAoKGRvYykgPT4gdGhpcy53cml0ZVJlY29yZChkb2MpKSlcbiAgfVxufVxuIl19
@@ -5,6 +5,8 @@ export function matchProtocol(protocol) {
5
5
  return 'wfs';
6
6
  if (/wmts/i.test(protocol))
7
7
  return 'wmts';
8
+ if (/tms/i.test(protocol))
9
+ return 'tms';
8
10
  if (/wps/i.test(protocol))
9
11
  return 'wps';
10
12
  if (/ogc\W*api\W*features/i.test(protocol))
@@ -21,4 +23,4 @@ export function matchMimeType(format) {
21
23
  // TODO: check whether the format is a valid mime type
22
24
  return format || null;
23
25
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBZ0I7SUFDNUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFDekMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sYUFBYSxDQUFBO0lBQ2hFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLFVBQVUsQ0FBQTtJQUM3QyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUE7SUFDaEQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBYztJQUMxQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLG1CQUFtQixDQUFBO0lBQzdELHNEQUFzRDtJQUN0RCxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUE7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZpY2VQcm90b2NvbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoUHJvdG9jb2wocHJvdG9jb2w6IHN0cmluZyk6IFNlcnZpY2VQcm90b2NvbCB7XG4gIGlmICgvd21zL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnd21zJ1xuICBpZiAoL3dmcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dmcydcbiAgaWYgKC93bXRzL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnd210cydcbiAgaWYgKC93cHMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICd3cHMnXG4gIGlmICgvb2djXFxXKmFwaVxcVypmZWF0dXJlcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ29nY0ZlYXR1cmVzJ1xuICBpZiAoL2VzcmkvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICdlc3JpUmVzdCdcbiAgaWYgKC9ET1dOTE9BRC0xL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnR1BGREwnXG4gIHJldHVybiAnb3RoZXInXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaE1pbWVUeXBlKGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKC9zaHB8c2hhcGVmaWxlL2kudGVzdChmb3JtYXQpKSByZXR1cm4gJ3gtZ2lzL3gtc2hhcGVmaWxlJ1xuICAvLyBUT0RPOiBjaGVjayB3aGV0aGVyIHRoZSBmb3JtYXQgaXMgYSB2YWxpZCBtaW1lIHR5cGVcbiAgcmV0dXJuIGZvcm1hdCB8fCBudWxsXG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBZ0I7SUFDNUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFDekMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLGFBQWEsQ0FBQTtJQUNoRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDN0MsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sT0FBTyxDQUFBO0lBQ2hELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDMUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxtQkFBbUIsQ0FBQTtJQUM3RCxzREFBc0Q7SUFDdEQsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFBO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlUHJvdG9jb2wgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFByb3RvY29sKHByb3RvY29sOiBzdHJpbmcpOiBTZXJ2aWNlUHJvdG9jb2wge1xuICBpZiAoL3dtcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dtcydcbiAgaWYgKC93ZnMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICd3ZnMnXG4gIGlmICgvd210cy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dtdHMnXG4gIGlmICgvdG1zL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAndG1zJ1xuICBpZiAoL3dwcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dwcydcbiAgaWYgKC9vZ2NcXFcqYXBpXFxXKmZlYXR1cmVzL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnb2djRmVhdHVyZXMnXG4gIGlmICgvZXNyaS9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ2VzcmlSZXN0J1xuICBpZiAoL0RPV05MT0FELTEvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICdHUEZETCdcbiAgcmV0dXJuICdvdGhlcidcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoTWltZVR5cGUoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoL3NocHxzaGFwZWZpbGUvaS50ZXN0KGZvcm1hdCkpIHJldHVybiAneC1naXMveC1zaGFwZWZpbGUnXG4gIC8vIFRPRE86IGNoZWNrIHdoZXRoZXIgdGhlIGZvcm1hdCBpcyBhIHZhbGlkIG1pbWUgdHlwZVxuICByZXR1cm4gZm9ybWF0IHx8IG51bGxcbn1cbiJdfQ==
@@ -1,18 +1,20 @@
1
+ export const PossibleResourceTypes = {
2
+ application: 'reuse',
3
+ dataset: 'dataset',
4
+ interactiveMap: 'reuse',
5
+ map: 'reuse',
6
+ 'map/static': 'reuse', // old index field
7
+ 'map/interactive': 'reuse', // old index field
8
+ 'map-interactive': 'reuse', // new index field since Oct 10, 2024
9
+ 'map-static': 'reuse', // new index field
10
+ mapDigital: 'reuse',
11
+ series: 'dataset',
12
+ service: 'service',
13
+ staticMap: 'reuse',
14
+ };
15
+ export const PossibleResourceTypesDefinition = Object.entries(PossibleResourceTypes).reduce((acc, [key, val]) => ((acc[val] ??= []).push(key), acc), {});
1
16
  export function getResourceType(type) {
2
- const possibleResourceTypes = {
3
- application: 'reuse',
4
- dataset: 'dataset',
5
- map: 'reuse',
6
- 'map/static': 'reuse', // old index field
7
- 'map/interactive': 'reuse', // old index field
8
- 'map-interactive': 'reuse', // new index field since Oct 10, 2024
9
- 'map-static': 'reuse', // new index field
10
- mapDigital: 'reuse',
11
- interactiveMap: 'reuse',
12
- staticMap: 'reuse',
13
- service: 'service',
14
- };
15
- return (possibleResourceTypes[type] ||
17
+ return (PossibleResourceTypes[type] ||
16
18
  'dataset');
17
19
  }
18
20
  export function getReuseType(type) {
@@ -35,4 +37,4 @@ export function getReuseType(type) {
35
37
  export function kindToCodeListValue(record) {
36
38
  return record.kind === 'reuse' ? record.reuseType : record.kind;
37
39
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9jb21tb24vcmVzb3VyY2UtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFZO0lBQzFDLE1BQU0scUJBQXFCLEdBQUc7UUFDNUIsV0FBVyxFQUFFLE9BQU87UUFDcEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsR0FBRyxFQUFFLE9BQU87UUFDWixZQUFZLEVBQUUsT0FBTyxFQUFFLGtCQUFrQjtRQUN6QyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCO1FBQzlDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxxQ0FBcUM7UUFDakUsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0I7UUFDekMsVUFBVSxFQUFFLE9BQU87UUFDbkIsY0FBYyxFQUFFLE9BQU87UUFDdkIsU0FBUyxFQUFFLE9BQU87UUFDbEIsT0FBTyxFQUFFLFNBQVM7S0FDVixDQUFBO0lBRVYsT0FBTyxDQUNMLHFCQUFxQixDQUFDLElBQTBDLENBQUM7UUFDakUsU0FBUyxDQUNWLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE1BQU0sa0JBQWtCLEdBQUc7UUFDekIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsR0FBRyxFQUFFLEtBQUs7UUFDVixZQUFZLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtRQUN2QyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsa0JBQWtCO1FBQzVDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxxQ0FBcUM7UUFDL0QsWUFBWSxFQUFFLEtBQUssRUFBRSxrQkFBa0I7UUFDdkMsVUFBVSxFQUFFLEtBQUs7UUFDakIsY0FBYyxFQUFFLEtBQUs7UUFDckIsU0FBUyxFQUFFLEtBQUs7S0FDUixDQUFBO0lBRVYsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWxDLE9BQU8sSUFBSSxLQUFLLE9BQU87UUFDckIsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQXVDLENBQUMsSUFBSSxPQUFPO1FBQ3hFLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQXFCO0lBQ3ZELE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIFJlY29yZEtpbmQsXG4gIFJldXNlVHlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VUeXBlKHR5cGU6IHN0cmluZyk6IFJlY29yZEtpbmQge1xuICBjb25zdCBwb3NzaWJsZVJlc291cmNlVHlwZXMgPSB7XG4gICAgYXBwbGljYXRpb246ICdyZXVzZScsXG4gICAgZGF0YXNldDogJ2RhdGFzZXQnLFxuICAgIG1hcDogJ3JldXNlJyxcbiAgICAnbWFwL3N0YXRpYyc6ICdyZXVzZScsIC8vIG9sZCBpbmRleCBmaWVsZFxuICAgICdtYXAvaW50ZXJhY3RpdmUnOiAncmV1c2UnLCAvLyBvbGQgaW5kZXggZmllbGRcbiAgICAnbWFwLWludGVyYWN0aXZlJzogJ3JldXNlJywgLy8gbmV3IGluZGV4IGZpZWxkIHNpbmNlIE9jdCAxMCwgMjAyNFxuICAgICdtYXAtc3RhdGljJzogJ3JldXNlJywgLy8gbmV3IGluZGV4IGZpZWxkXG4gICAgbWFwRGlnaXRhbDogJ3JldXNlJyxcbiAgICBpbnRlcmFjdGl2ZU1hcDogJ3JldXNlJyxcbiAgICBzdGF0aWNNYXA6ICdyZXVzZScsXG4gICAgc2VydmljZTogJ3NlcnZpY2UnLFxuICB9IGFzIGNvbnN0XG5cbiAgcmV0dXJuIChcbiAgICBwb3NzaWJsZVJlc291cmNlVHlwZXNbdHlwZSBhcyBrZXlvZiB0eXBlb2YgcG9zc2libGVSZXNvdXJjZVR5cGVzXSB8fFxuICAgICdkYXRhc2V0J1xuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXVzZVR5cGUodHlwZTogc3RyaW5nKTogUmV1c2VUeXBlIHtcbiAgY29uc3QgcG9zc2libGVSZXVzZVR5cGVzID0ge1xuICAgIGFwcGxpY2F0aW9uOiAnYXBwbGljYXRpb24nLFxuICAgIG1hcDogJ21hcCcsXG4gICAgJ21hcC9zdGF0aWMnOiAnbWFwJywgLy8gb2xkIGluZGV4IGZpZWxkXG4gICAgJ21hcC9pbnRlcmFjdGl2ZSc6ICdtYXAnLCAvLyBvbGQgaW5kZXggZmllbGRcbiAgICAnbWFwLWludGVyYWN0aXZlJzogJ21hcCcsIC8vIG5ldyBpbmRleCBmaWVsZCBzaW5jZSBPY3QgMTAsIDIwMjRcbiAgICAnbWFwLXN0YXRpYyc6ICdtYXAnLCAvLyBuZXcgaW5kZXggZmllbGRcbiAgICBtYXBEaWdpdGFsOiAnbWFwJyxcbiAgICBpbnRlcmFjdGl2ZU1hcDogJ21hcCcsXG4gICAgc3RhdGljTWFwOiAnbWFwJyxcbiAgfSBhcyBjb25zdFxuXG4gIGNvbnN0IGtpbmQgPSBnZXRSZXNvdXJjZVR5cGUodHlwZSlcblxuICByZXR1cm4ga2luZCA9PT0gJ3JldXNlJ1xuICAgID8gcG9zc2libGVSZXVzZVR5cGVzW3R5cGUgYXMga2V5b2YgdHlwZW9mIHBvc3NpYmxlUmV1c2VUeXBlc10gfHwgJ290aGVyJ1xuICAgIDogdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBraW5kVG9Db2RlTGlzdFZhbHVlKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkge1xuICByZXR1cm4gcmVjb3JkLmtpbmQgPT09ICdyZXVzZScgPyByZWNvcmQucmV1c2VUeXBlIDogcmVjb3JkLmtpbmRcbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9jb21tb24vcmVzb3VyY2UtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsV0FBVyxFQUFFLE9BQU87SUFDcEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLE9BQU87SUFDdkIsR0FBRyxFQUFFLE9BQU87SUFDWixZQUFZLEVBQUUsT0FBTyxFQUFFLGtCQUFrQjtJQUN6QyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCO0lBQzlDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxxQ0FBcUM7SUFDakUsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0I7SUFDekMsVUFBVSxFQUFFLE9BQU87SUFDbkIsTUFBTSxFQUFFLFNBQVM7SUFDakIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLE9BQU87Q0FDVixDQUFBO0FBUVYsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDM0QscUJBQXFCLENBQ3RCLENBQUMsTUFBTSxDQUNOLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDdkQsRUFBRSxDQUM2QixDQUFBO0FBRWpDLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWTtJQUMxQyxPQUFPLENBQ0wscUJBQXFCLENBQUMsSUFBMEMsQ0FBQztRQUNqRSxTQUFTLENBQ1YsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVk7SUFDdkMsTUFBTSxrQkFBa0IsR0FBRztRQUN6QixXQUFXLEVBQUUsYUFBYTtRQUMxQixHQUFHLEVBQUUsS0FBSztRQUNWLFlBQVksRUFBRSxLQUFLLEVBQUUsa0JBQWtCO1FBQ3ZDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxrQkFBa0I7UUFDNUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLHFDQUFxQztRQUMvRCxZQUFZLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtRQUN2QyxVQUFVLEVBQUUsS0FBSztRQUNqQixjQUFjLEVBQUUsS0FBSztRQUNyQixTQUFTLEVBQUUsS0FBSztLQUNSLENBQUE7SUFFVixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFbEMsT0FBTyxJQUFJLEtBQUssT0FBTztRQUNyQixDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBdUMsQ0FBQyxJQUFJLE9BQU87UUFDeEUsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBcUI7SUFDdkQsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQTtBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgUmVjb3JkS2luZCxcbiAgUmV1c2VUeXBlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmV4cG9ydCBjb25zdCBQb3NzaWJsZVJlc291cmNlVHlwZXMgPSB7XG4gIGFwcGxpY2F0aW9uOiAncmV1c2UnLFxuICBkYXRhc2V0OiAnZGF0YXNldCcsXG4gIGludGVyYWN0aXZlTWFwOiAncmV1c2UnLFxuICBtYXA6ICdyZXVzZScsXG4gICdtYXAvc3RhdGljJzogJ3JldXNlJywgLy8gb2xkIGluZGV4IGZpZWxkXG4gICdtYXAvaW50ZXJhY3RpdmUnOiAncmV1c2UnLCAvLyBvbGQgaW5kZXggZmllbGRcbiAgJ21hcC1pbnRlcmFjdGl2ZSc6ICdyZXVzZScsIC8vIG5ldyBpbmRleCBmaWVsZCBzaW5jZSBPY3QgMTAsIDIwMjRcbiAgJ21hcC1zdGF0aWMnOiAncmV1c2UnLCAvLyBuZXcgaW5kZXggZmllbGRcbiAgbWFwRGlnaXRhbDogJ3JldXNlJyxcbiAgc2VyaWVzOiAnZGF0YXNldCcsXG4gIHNlcnZpY2U6ICdzZXJ2aWNlJyxcbiAgc3RhdGljTWFwOiAncmV1c2UnLFxufSBhcyBjb25zdFxuXG50eXBlIEtpbmRUeXBlID0ga2V5b2YgdHlwZW9mIFBvc3NpYmxlUmVzb3VyY2VUeXBlc1xudHlwZSBSZXNvdXJjZVR5cGUgPSAncmV1c2UnIHwgJ2RhdGFzZXQnIHwgJ3NlcnZpY2UnXG50eXBlIFBvc3NpYmxlUmVzb3VyY2VUeXBlc0dyb3VwZWQgPSB7XG4gIFtLIGluIFJlc291cmNlVHlwZV06IEtpbmRUeXBlW11cbn1cblxuZXhwb3J0IGNvbnN0IFBvc3NpYmxlUmVzb3VyY2VUeXBlc0RlZmluaXRpb24gPSBPYmplY3QuZW50cmllcyhcbiAgUG9zc2libGVSZXNvdXJjZVR5cGVzXG4pLnJlZHVjZShcbiAgKGFjYywgW2tleSwgdmFsXSkgPT4gKChhY2NbdmFsXSA/Pz0gW10pLnB1c2goa2V5KSwgYWNjKSxcbiAge31cbikgYXMgUG9zc2libGVSZXNvdXJjZVR5cGVzR3JvdXBlZFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VUeXBlKHR5cGU6IHN0cmluZyk6IFJlY29yZEtpbmQge1xuICByZXR1cm4gKFxuICAgIFBvc3NpYmxlUmVzb3VyY2VUeXBlc1t0eXBlIGFzIGtleW9mIHR5cGVvZiBQb3NzaWJsZVJlc291cmNlVHlwZXNdIHx8XG4gICAgJ2RhdGFzZXQnXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJldXNlVHlwZSh0eXBlOiBzdHJpbmcpOiBSZXVzZVR5cGUge1xuICBjb25zdCBwb3NzaWJsZVJldXNlVHlwZXMgPSB7XG4gICAgYXBwbGljYXRpb246ICdhcHBsaWNhdGlvbicsXG4gICAgbWFwOiAnbWFwJyxcbiAgICAnbWFwL3N0YXRpYyc6ICdtYXAnLCAvLyBvbGQgaW5kZXggZmllbGRcbiAgICAnbWFwL2ludGVyYWN0aXZlJzogJ21hcCcsIC8vIG9sZCBpbmRleCBmaWVsZFxuICAgICdtYXAtaW50ZXJhY3RpdmUnOiAnbWFwJywgLy8gbmV3IGluZGV4IGZpZWxkIHNpbmNlIE9jdCAxMCwgMjAyNFxuICAgICdtYXAtc3RhdGljJzogJ21hcCcsIC8vIG5ldyBpbmRleCBmaWVsZFxuICAgIG1hcERpZ2l0YWw6ICdtYXAnLFxuICAgIGludGVyYWN0aXZlTWFwOiAnbWFwJyxcbiAgICBzdGF0aWNNYXA6ICdtYXAnLFxuICB9IGFzIGNvbnN0XG5cbiAgY29uc3Qga2luZCA9IGdldFJlc291cmNlVHlwZSh0eXBlKVxuXG4gIHJldHVybiBraW5kID09PSAncmV1c2UnXG4gICAgPyBwb3NzaWJsZVJldXNlVHlwZXNbdHlwZSBhcyBrZXlvZiB0eXBlb2YgcG9zc2libGVSZXVzZVR5cGVzXSB8fCAnb3RoZXInXG4gICAgOiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtpbmRUb0NvZGVMaXN0VmFsdWUocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSB7XG4gIHJldHVybiByZWNvcmQua2luZCA9PT0gJ3JldXNlJyA/IHJlY29yZC5yZXVzZVR5cGUgOiByZWNvcmQua2luZFxufVxuIl19
@@ -86,10 +86,18 @@ export class Gn4FieldMapper {
86
86
  const langList = getAsArray(selectField(source, 'resourceLanguage'));
87
87
  const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
88
88
  const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null; // set the first language as main one as fallback
89
- const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
90
89
  return {
91
90
  ...output,
92
91
  defaultLanguage,
92
+ };
93
+ },
94
+ otherLanguage: (output, source) => {
95
+ const langList = getAsArray(selectField(source, 'otherLanguage'));
96
+ const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
97
+ const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null;
98
+ const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
99
+ return {
100
+ ...output,
93
101
  otherLanguages,
94
102
  };
95
103
  },
@@ -163,8 +171,32 @@ export class Gn4FieldMapper {
163
171
  related: (output, source) => {
164
172
  const fcatSource = selectField(getFirstValue(selectField(selectField(source, 'related'), 'fcats')) ?? {}, '_source');
165
173
  const featureCatalogIdentifier = selectField(fcatSource, 'uuid');
166
- return featureCatalogIdentifier
167
- ? this.addExtra({ featureCatalogIdentifier }, output)
174
+ const sourceOfLinks = getAsArray(selectField(selectField(source, 'related'), 'hassources'));
175
+ const sourceOfIdentifiers = sourceOfLinks
176
+ .filter((link) => link['origin'] === 'catalog')
177
+ .map((link) => {
178
+ return selectField(selectField(link, '_source'), 'uuid');
179
+ });
180
+ const extraValues = {};
181
+ if (featureCatalogIdentifier) {
182
+ extraValues.featureCatalogIdentifier = featureCatalogIdentifier;
183
+ }
184
+ if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
185
+ extraValues.sourceOfIdentifiers = sourceOfIdentifiers;
186
+ }
187
+ return Object.keys(extraValues).length > 0
188
+ ? this.addExtra(extraValues, output)
189
+ : output;
190
+ },
191
+ recordLink: (output, source) => {
192
+ const recordLinks = getAsArray(selectField(source, 'recordLink'));
193
+ const sourcesIdentifiers = recordLinks
194
+ .filter((link) => link['origin'] === 'catalog' && link['type'] === 'sources')
195
+ .map((link) => selectField(link, 'to'));
196
+ return sourcesIdentifiers && sourcesIdentifiers.length > 0
197
+ ? this.addExtra({
198
+ sourcesIdentifiers,
199
+ }, output)
168
200
  : output;
169
201
  },
170
202
  isPublishedToAll: (output, source) => this.addExtra({
@@ -257,6 +289,10 @@ export class Gn4FieldMapper {
257
289
  const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
258
290
  const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
259
291
  const description = selectFallback(selectTranslatedField(sourceLink, 'descriptionObject', this.lang3), selectField(sourceLink, 'description'));
292
+ const descriptionLink = selectField(sourceLink, 'descriptionObject');
293
+ const accessRestricted = descriptionLink &&
294
+ 'link' in descriptionLink &&
295
+ descriptionLink.link.toString().includes('#MD_RestrictionCode_restricted');
260
296
  // no url: fail early
261
297
  if (url === null) {
262
298
  // TODO: collect errors at the record level?
@@ -279,6 +315,7 @@ export class Gn4FieldMapper {
279
315
  type,
280
316
  url: url,
281
317
  accessServiceProtocol,
318
+ accessRestricted: accessRestricted,
282
319
  };
283
320
  case 'link':
284
321
  return {
@@ -297,8 +334,8 @@ export class Gn4FieldMapper {
297
334
  return {
298
335
  ...distribution,
299
336
  type,
300
- endpointUrl: url,
301
- protocol: accessServiceProtocol,
337
+ url: url,
338
+ accessServiceProtocol: accessServiceProtocol,
302
339
  };
303
340
  }
304
341
  };
@@ -318,6 +355,7 @@ export class Gn4FieldMapper {
318
355
  /^OGC:WMS/.test(protocol) ||
319
356
  /^OGC:WFS/.test(protocol) ||
320
357
  /^OGC:WMTS/.test(protocol) ||
358
+ /TMS/i.test(protocol) ||
321
359
  /ogc\W*api\W*features/i.test(protocol) ||
322
360
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
323
361
  ) {
@@ -337,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
337
375
  providedIn: 'root',
338
376
  }]
339
377
  }], ctorParameters: () => [{ type: i1.MetadataUrlService }, { type: i2.LangService }] });
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFRL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBOzs7O0FBWXhFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQ1Usa0JBQXNDLEVBQ3RDLFdBQXdCO1FBRHhCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHMUIsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBO1FBRTdCLFdBQU0sR0FBb0M7WUFDbEQsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3JCLElBQUks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QUFXLENBQUMsR0FBVyxFQUFFLFFBQWlCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztRQUNELElBQ0UsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUQsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDMUIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMscURBQXFEO1VBQ3BILENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxVQUFVLENBQUE7UUFDbkIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzsrR0FoWlUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZXRBcnJheUl0ZW0sXG4gIGdldEFzQXJyYXksXG4gIGdldEFzVXJsLFxuICBnZXRGaXJzdFZhbHVlLFxuICBtYXBDb250YWN0LFxuICBtYXBLZXl3b3JkcyxcbiAgc2VsZWN0RmFsbGJhY2ssXG4gIHNlbGVjdEZhbGxiYWNrRmllbGRzLFxuICBzZWxlY3RGaWVsZCxcbiAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkVmFsdWUsXG4gIFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIHRvRGF0ZSxcbn0gZnJvbSAnLi9hdG9taWMtb3BlcmF0aW9ucydcbmltcG9ydCB7IE1ldGFkYXRhVXJsU2VydmljZSB9IGZyb20gJy4vbWV0YWRhdGEtdXJsLnNlcnZpY2UnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvc3RhdHVzLm1hcHBlcidcbmltcG9ydCB7IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvdXBkYXRlLWZyZXF1ZW5jeS5tYXBwZXInXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBDb25zdHJhaW50LFxuICBEYXRhc2V0U3BhdGlhbEV4dGVudCxcbiAgT25saW5lUmVzb3VyY2UsXG4gIE9ubGluZVJlc291cmNlVHlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgbWF0Y2hQcm90b2NvbCB9IGZyb20gJy4uL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyJ1xuaW1wb3J0IHsgVGhlc2F1cnVzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IExBTkdfM19UT18yX01BUFBFUiwgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBnZXRSZXNvdXJjZVR5cGUsIGdldFJldXNlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9yZXNvdXJjZS10eXBlcydcblxudHlwZSBFU1Jlc3BvbnNlU291cmNlID0gU291cmNlV2l0aFVua25vd25Qcm9wc1xuXG50eXBlIEVzRmllbGRNYXBwZXJGbiA9IChcbiAgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+LFxuICBzb3VyY2U6IEVTUmVzcG9uc2VTb3VyY2VcbikgPT4gUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR240RmllbGRNYXBwZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1ldGFkYXRhVXJsU2VydmljZTogTWV0YWRhdGFVcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGxhbmczID0gdGhpcy5sYW5nU2VydmljZS5nbkxhbmdcblxuICBwcm90ZWN0ZWQgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBFc0ZpZWxkTWFwcGVyRm4+ID0ge1xuICAgIGlkOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKHsgaWQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lkJykgfSwgb3V0cHV0KSxcbiAgICB1dWlkOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHV1aWQgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3V1aWQnKVxuICAgICAgY29uc3QgbGFuZGluZ1BhZ2UgPSBnZXRBc1VybCh0aGlzLm1ldGFkYXRhVXJsU2VydmljZS5nZXRVcmwodXVpZCkpXG4gICAgICByZXR1cm4geyAuLi5vdXRwdXQsIHVuaXF1ZUlkZW50aWZpZXI6IHV1aWQsIGxhbmRpbmdQYWdlIH1cbiAgICB9LFxuICAgIHF1YWxpdHlTY29yZTogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAgeyBxdWFsaXR5U2NvcmU6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3F1YWxpdHlTY29yZScpIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICByZXNvdXJjZVRpdGxlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0aXRsZTogc2VsZWN0RmFsbGJhY2soXG4gICAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZChzb3VyY2UsICdyZXNvdXJjZVRpdGxlT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgICdubyB0aXRsZSdcbiAgICAgICksXG4gICAgfSksXG4gICAgcmVzb3VyY2VBYnN0cmFjdE9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgYWJzdHJhY3Q6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAncmVzb3VyY2VBYnN0cmFjdE9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIG92ZXJ2aWV3OiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0T3ZlcnZpZXcgPSBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ292ZXJ2aWV3JykpXG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZTxzdHJpbmc+KFxuICAgICAgICBzZWxlY3RGaWVsZChmaXJzdE92ZXJ2aWV3LCAndGV4dCcpLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIG92ZXJ2aWV3czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVybDogZ2V0QXNVcmwoc2VsZWN0RmFsbGJhY2tGaWVsZHMoZmlyc3RPdmVydmlldywgJ3VybCcsICdkYXRhJykpLFxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uID8geyBkZXNjcmlwdGlvbiB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICBjbF90b3BpYzogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdG9waWNzOiBbXG4gICAgICAgIC4uLihvdXRwdXQudG9waWNzIHx8IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ2NsX3RvcGljJylcbiAgICAgICAgKS5tYXAoKHRvcGljKSA9PiBzZWxlY3RUcmFuc2xhdGVkVmFsdWU8c3RyaW5nPih0b3BpYywgdGhpcy5sYW5nMykpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBjbF9zdGF0dXM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHN0YXR1czogZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUoXG4gICAgICAgIHNlbGVjdEZpZWxkKGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY2xfc3RhdHVzJykpLCAna2V5JylcbiAgICAgICksXG4gICAgfSksXG4gICAgY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3k6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHVwZGF0ZUZyZXF1ZW5jeTogZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUoXG4gICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgIGdldEZpcnN0VmFsdWUoXG4gICAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeScpXG4gICAgICAgICAgKSxcbiAgICAgICAgICAna2V5J1xuICAgICAgICApXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZUNyZWF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NyZWF0aW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZVVwZGF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3JldmlzaW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIHB1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZVB1Ymxpc2hlZDogdG9EYXRlKFxuICAgICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3B1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlJylcbiAgICAgICksXG4gICAgfSksXG4gICAgY3JlYXRlRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkQ3JlYXRlZDogdG9EYXRlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY3JlYXRlRGF0ZScpKSxcbiAgICB9KSxcbiAgICBjaGFuZ2VEYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRVcGRhdGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjaGFuZ2VEYXRlJykpLFxuICAgIH0pLFxuICAgIHB1YmxpY2F0aW9uRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkUHVibGlzaGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdwdWJsaWNhdGlvbkRhdGUnKSksXG4gICAgfSksXG4gICAgcmVzb3VyY2VMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncmVzb3VyY2VMYW5ndWFnZScpXG4gICAgICApXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAoKGxhbmcpID0+IExBTkdfM19UT18yX01BUFBFUltsYW5nXSlcbiAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IG91dHB1dC5kZWZhdWx0TGFuZ3VhZ2UgPz8gbGFuZ3VhZ2VzWzBdID8/IG51bGwgLy8gc2V0IHRoZSBmaXJzdCBsYW5ndWFnZSBhcyBtYWluIG9uZSBhcyBmYWxsYmFja1xuICAgICAgY29uc3Qgb3RoZXJMYW5ndWFnZXMgPSBsYW5ndWFnZXMuZmlsdGVyKFxuICAgICAgICAobGFuZykgPT4gbGFuZyAhPT0gZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgb3RoZXJMYW5ndWFnZXMsXG4gICAgICB9XG4gICAgfSxcbiAgICBtYWluTGFuZ3VhZ2U6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ21haW5MYW5ndWFnZScpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZTogbGFuZ3VhZ2UgPyBMQU5HXzNfVE9fMl9NQVBQRVJbbGFuZ3VhZ2VdIDogbnVsbCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpbms6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmF3TGlua3MgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ2xpbmsnKVxuICAgICAgKVxuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gcmF3TGlua3NcbiAgICAgICAgLm1hcCgobGluaykgPT4gdGhpcy5tYXBMaW5rKGxpbmspKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGNvbnRhY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGNvbnRhY3RzOiBbXG4gICAgICAgIG1hcENvbnRhY3QoZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0JykpLCB0aGlzLmxhbmczKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgY29udGFjdEZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBjb250YWN0c0ZvclJlc291cmNlOiBbXG4gICAgICAgIC4uLignY29udGFjdHNGb3JSZXNvdXJjZScgaW4gb3V0cHV0ICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkob3V0cHV0LmNvbnRhY3RzRm9yUmVzb3VyY2UpXG4gICAgICAgICAgPyBvdXRwdXQuY29udGFjdHNGb3JSZXNvdXJjZVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NvbnRhY3RGb3JSZXNvdXJjZScpKS5tYXAoXG4gICAgICAgICAgKGNvbnRhY3QpID0+IG1hcENvbnRhY3QoY29udGFjdCwgdGhpcy5sYW5nMylcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgc291cmNlQ2F0YWxvZ3VlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgY2F0YWxvZ1V1aWQ6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnc291cmNlQ2F0YWxvZ3VlJyksXG4gICAgICAgICAgICAnbm8gdGl0bGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApXG4gICAgfSxcbiAgICBhbGxLZXl3b3JkczogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAga2V5d29yZHM6IG1hcEtleXdvcmRzKFxuICAgICAgICBzZWxlY3RGaWVsZDxUaGVzYXVydXNbXT4oc291cmNlLCAnYWxsS2V5d29yZHMnKSxcbiAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgKSxcbiAgICB9KSxcbiAgICBpbnNwaXJlVGhlbWU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRvcGljczogW1xuICAgICAgICAuLi4ob3V0cHV0LnRvcGljcyB8fCBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnaW5zcGlyZVRoZW1lX3N5bicpKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgTURfQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ290aGVyJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpKVxuICAgICAgKSxcbiAgICBNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsZWdhbCcsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgTURfTGVnYWxDb25zdHJhaW50c090aGVyQ29uc3RyYWludHNPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGVnYWwnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfTGVnYWxDb25zdHJhaW50c090aGVyQ29uc3RyYWludHNPYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIE1EX1NlY3VyaXR5Q29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ3NlY3VyaXR5JyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX1NlY3VyaXR5Q29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBsaWNlbnNlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xpY2Vuc2UnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnbGljZW5zZU9iamVjdCcpKVxuICAgICAgKSxcbiAgICBsaW5lYWdlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBsaW5lYWdlOiBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAnbGluZWFnZU9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgIH0pLFxuICAgIHVzZXJTYXZlZENvdW50OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZmF2b3JpdGVDb3VudDogcGFyc2VJbnQoc2VsZWN0RmllbGQoc291cmNlLCAndXNlclNhdmVkQ291bnQnKSksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBpc09wZW5EYXRhOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNPcGVuRGF0YTogc2VsZWN0RmllbGQoc291cmNlLCAnaXNPcGVuRGF0YScpICE9PSAnZmFsc2UnLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZmVhdHVyZVR5cGVzOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGVzOiBzZWxlY3RGaWVsZChzb3VyY2UsICdmZWF0dXJlVHlwZXMnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHJlbGF0ZWQ6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZmNhdFNvdXJjZSA9IHNlbGVjdEZpZWxkKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKFxuICAgICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+c2VsZWN0RmllbGQoc291cmNlLCAncmVsYXRlZCcpLFxuICAgICAgICAgICAgJ2ZjYXRzJ1xuICAgICAgICAgIClcbiAgICAgICAgKSA/PyB7fSxcbiAgICAgICAgJ19zb3VyY2UnXG4gICAgICApXG4gICAgICBjb25zdCBmZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXIgPSBzZWxlY3RGaWVsZChcbiAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+ZmNhdFNvdXJjZSxcbiAgICAgICAgJ3V1aWQnXG4gICAgICApXG4gICAgICByZXR1cm4gZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyXG4gICAgICAgID8gdGhpcy5hZGRFeHRyYSh7IGZlYXR1cmVDYXRhbG9nSWRlbnRpZmllciB9LCBvdXRwdXQpXG4gICAgICAgIDogb3V0cHV0XG4gICAgfSxcbiAgICBpc1B1Ymxpc2hlZFRvQWxsOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNQdWJsaXNoZWRUb0FsbDogc2VsZWN0RmllbGQoc291cmNlLCAnaXNQdWJsaXNoZWRUb0FsbCcpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZWRpdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGVkaXQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2VkaXQnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHVzZXJpbmZvOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgb3duZXJJbmZvOiBzZWxlY3RGaWVsZChzb3VyY2UsICd1c2VyaW5mbycpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUeXBlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAncmVzb3VyY2VUeXBlJykpXG4gICAgICBjb25zdCBraW5kID0gZ2V0UmVzb3VyY2VUeXBlKHJlc291cmNlVHlwZSlcbiAgICAgIGNvbnN0IHJldXNlVHlwZSA9IGdldFJldXNlVHlwZShyZXNvdXJjZVR5cGUpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIC4uLihyZXVzZVR5cGUgJiYgeyByZXVzZVR5cGUgfSksXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGdlb206IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZ2VvbXMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2dlb20nKSlcbiAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnc2hhcGUnKSlcbiAgICAgIGNvbnN0IGV4dGVudERlc2NyaXB0aW9ucyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2V4dGVudERlc2NyaXB0aW9uT2JqZWN0JylcbiAgICAgIClcbiAgICAgIGNvbnN0IHNwYXRpYWxFeHRlbnRzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzcGF0aWFsRXh0ZW50cycpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBzcGF0aWFsRXh0ZW50czogW1xuICAgICAgICAgIC4uLnNwYXRpYWxFeHRlbnRzLFxuICAgICAgICAgIC4uLmdlb21zLm1hcCgoZ2VvbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKFxuICAgICAgICAgICAgICBnZXRBcnJheUl0ZW0oZXh0ZW50RGVzY3JpcHRpb25zLCBpbmRleCksXG4gICAgICAgICAgICAgIHRoaXMubGFuZzNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gc2hhcGVzW2luZGV4XSA/PyBnZW9tXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gIT09IG51bGwgPyB7IGRlc2NyaXB0aW9uIH0gOiBudWxsKSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgICAgICB9IGFzIERhdGFzZXRTcGF0aWFsRXh0ZW50XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvdXJjZVRlbXBvcmFsRXh0ZW50RGF0ZVJhbmdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhbmdlcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2UnKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHM6IHJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2d0ZScpXG4gICAgICAgICAgY29uc3QgZW5kID0gc2VsZWN0RmllbGQocmFuZ2UsICdsdGUnKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi4oc3RhcnQgIT09IG51bGwgPyB7IHN0YXJ0OiB0b0RhdGUoc3RhcnQpIH0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihlbmQgIT09IG51bGwgPyB7IGVuZDogdG9EYXRlKGVuZCkgfSA6IG51bGwpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gKG91dHB1dCkgPT4gb3V0cHV0XG5cbiAgcHJpdmF0ZSBjb25zdHJhaW50RmllbGQgPSAoXG4gICAgdHlwZTogJ2xpY2Vuc2UnIHwgJ2xlZ2FsJyB8ICdzZWN1cml0eScgfCAnb3RoZXInLFxuICAgIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgICBjb25zdHJhaW50QXJyYXk6IFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXVxuICApID0+IHtcbiAgICBsZXQgb3V0cHV0RmllbGQ6IHN0cmluZ1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbGljZW5zZSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xpY2Vuc2VzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdsZWdhbENvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2VjdXJpdHknOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdzZWN1cml0eUNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdvdGhlckNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXRBcnJheTogQ29uc3RyYWludFtdID1cbiAgICAgIG91dHB1dEZpZWxkIGluIG91dHB1dCA/IG91dHB1dFtvdXRwdXRGaWVsZF0gOiBbXVxuICAgIG91dHB1dEFycmF5LnB1c2goXG4gICAgICAuLi5jb25zdHJhaW50QXJyYXkubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoaXRlbSwgdGhpcy5sYW5nMykgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkKGl0ZW0sICdsaW5rJykpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICAuLi4odXJsID8geyB1cmwgfSA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgW291dHB1dEZpZWxkXTogb3V0cHV0QXJyYXksXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGdldE1hcHBpbmdGbihmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZE5hbWUgaW4gdGhpcy5maWVsZHMgPyB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdIDogdGhpcy5nZW5lcmljRmllbGRcbiAgfVxuXG4gIGdldExpbmtUeXBlKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyk6IE9ubGluZVJlc291cmNlVHlwZSB7XG4gICAgaWYgKCFwcm90b2NvbCkge1xuICAgICAgcmV0dXJuICdsaW5rJ1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoL15FU1JJOlJFU1QvLnRlc3QocHJvdG9jb2wpICYmIC9GZWF0dXJlU2VydmVyLy50ZXN0KHVybCkpIHx8XG4gICAgICAvXk9HQzpXTVMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXRlMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXTVRTLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL29nY1xcVyphcGlcXFcqZmVhdHVyZXMvaS50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgKC9eV1dXOkRPV05MT0FELS8udGVzdChwcm90b2NvbCkgJiYgL2RhdGEuZ2VvcGYuZnIvLnRlc3QodXJsKSkgLy8gVE8gRE8gOiBjaGFuZ2Ugd2l0aCB0aGUgZ29vZCBwcm90b2NvbCB3aGVuIGRlY2lkZWRcbiAgICApIHtcbiAgICAgIHJldHVybiAnc2VydmljZSdcbiAgICB9XG4gICAgaWYgKC9eV1dXOkRPV05MT0FELy50ZXN0KHByb3RvY29sKSkge1xuICAgICAgcmV0dXJuICdkb3dubG9hZCdcbiAgICB9XG4gICAgcmV0dXJuICdsaW5rJ1xuICB9XG5cbiAgbWFwTGluayA9IChzb3VyY2VMaW5rOiBTb3VyY2VXaXRoVW5rbm93blByb3BzKTogT25saW5lUmVzb3VyY2UgfCBudWxsID0+IHtcbiAgICBjb25zdCB1cmwgPSBnZXRBc1VybChcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAndXJsT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ3VybCcpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IG5hbWUgPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lJylcbiAgICApXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KFxuICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAnZGVzY3JpcHRpb25PYmplY3QnLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnZGVzY3JpcHRpb24nKVxuICAgIClcbiAgICAvLyBubyB1cmw6IGZhaWwgZWFybHlcbiAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAvLyBUT0RPOiBjb2xsZWN0IGVycm9ycyBhdCB0aGUgcmVjb3JkIGxldmVsP1xuICAgICAgY29uc29sZS53YXJuKCdBIGxpbmsgd2l0aG91dCB2YWxpZCBVUkwgd2FzIGZvdW5kJywgc291cmNlTGluaylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdwcm90b2NvbCcpXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0TGlua1R5cGUodXJsLnRvU3RyaW5nKCksIHByb3RvY29sKVxuICAgIGNvbnN0IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9IG1hdGNoUHJvdG9jb2wocHJvdG9jb2wpXG4gICAgY29uc3QgbWltZVR5cGVNYXRjaGVzID1cbiAgICAgIHByb3RvY29sICYmIHByb3RvY29sLm1hdGNoKC9eV1dXOkRPV05MT0FEOiguK1xcLy4rKSQvKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZVR5cGVNYXRjaGVzICYmIG1pbWVUeXBlTWF0Y2hlc1sxXVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0ge1xuICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICB9XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIC4uLihtaW1lVHlwZSAmJiB7IG1pbWVUeXBlIH0pLFxuICAgICAgICB9XG4gICAgICBjYXNlICdlbmRwb2ludCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZW5kcG9pbnRVcmw6IHVybCxcbiAgICAgICAgICBwcm90b2NvbDogYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRyYSA9ICh2YWx1ZTogb2JqZWN0LCBvdXRwdXQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4pID0+ICh7XG4gICAgLi4ub3V0cHV0LFxuICAgIGV4dHJhczogeyAuLi4ob3V0cHV0LmV4dHJhcyB8fCB7fSksIC4uLnZhbHVlIH0sXG4gIH0pXG59XG4iXX0=
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFRL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBOzs7O0FBWXhFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQ1Usa0JBQXNDLEVBQ3RDLFdBQXdCO1FBRHhCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHMUIsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBO1FBRTdCLFdBQU0sR0FBb0M7WUFDbEQsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3JCLElBQUks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QUFHLENBQUMsQ0FBQztZQUMxRCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyQix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxxREFBcUQ7VUFDcEgsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOytHQW5jVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGdldEFycmF5SXRlbSxcbiAgZ2V0QXNBcnJheSxcbiAgZ2V0QXNVcmwsXG4gIGdldEZpcnN0VmFsdWUsXG4gIG1hcENvbnRhY3QsXG4gIG1hcEtleXdvcmRzLFxuICBzZWxlY3RGYWxsYmFjayxcbiAgc2VsZWN0RmFsbGJhY2tGaWVsZHMsXG4gIHNlbGVjdEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkRmllbGQsXG4gIHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZSxcbiAgU291cmNlV2l0aFVua25vd25Qcm9wcyxcbiAgdG9EYXRlLFxufSBmcm9tICcuL2F0b21pYy1vcGVyYXRpb25zJ1xuaW1wb3J0IHsgTWV0YWRhdGFVcmxTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS11cmwuc2VydmljZSdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9zdGF0dXMubWFwcGVyJ1xuaW1wb3J0IHsgZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy91cGRhdGUtZnJlcXVlbmN5Lm1hcHBlcidcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXRTcGF0aWFsRXh0ZW50LFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgT25saW5lUmVzb3VyY2VUeXBlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBtYXRjaFByb3RvY29sIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5pbXBvcnQgeyBUaGVzYXVydXMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgTEFOR18zX1RPXzJfTUFQUEVSLCBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcbmltcG9ydCB7IGdldFJlc291cmNlVHlwZSwgZ2V0UmV1c2VUeXBlIH0gZnJvbSAnLi4vY29tbW9uL3Jlc291cmNlLXR5cGVzJ1xuXG50eXBlIEVTUmVzcG9uc2VTb3VyY2UgPSBTb3VyY2VXaXRoVW5rbm93blByb3BzXG5cbnR5cGUgRXNGaWVsZE1hcHBlckZuID0gKFxuICBvdXRwdXQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4sXG4gIHNvdXJjZTogRVNSZXNwb25zZVNvdXJjZVxuKSA9PiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHbjRGaWVsZE1hcHBlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWV0YWRhdGFVcmxTZXJ2aWNlOiBNZXRhZGF0YVVybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5nU2VydmljZTogTGFuZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgbGFuZzMgPSB0aGlzLmxhbmdTZXJ2aWNlLmduTGFuZ1xuXG4gIHByb3RlY3RlZCBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIEVzRmllbGRNYXBwZXJGbj4gPSB7XG4gICAgaWQ6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoeyBpZDogc2VsZWN0RmllbGQoc291cmNlLCAnaWQnKSB9LCBvdXRwdXQpLFxuICAgIHV1aWQ6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgdXVpZCA9IHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAndXVpZCcpXG4gICAgICBjb25zdCBsYW5kaW5nUGFnZSA9IGdldEFzVXJsKHRoaXMubWV0YWRhdGFVcmxTZXJ2aWNlLmdldFVybCh1dWlkKSlcbiAgICAgIHJldHVybiB7IC4uLm91dHB1dCwgdW5pcXVlSWRlbnRpZmllcjogdXVpZCwgbGFuZGluZ1BhZ2UgfVxuICAgIH0sXG4gICAgcXVhbGl0eVNjb3JlOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7IHF1YWxpdHlTY29yZTogc2VsZWN0RmllbGQoc291cmNlLCAncXVhbGl0eVNjb3JlJykgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHJlc291cmNlVGl0bGVPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRpdGxlOiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVGl0bGVPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgKSxcbiAgICB9KSxcbiAgICByZXNvdXJjZUFic3RyYWN0T2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBhYnN0cmFjdDogc2VsZWN0RmFsbGJhY2soXG4gICAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZChzb3VyY2UsICdyZXNvdXJjZUFic3RyYWN0T2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgICdubyB0aXRsZSdcbiAgICAgICksXG4gICAgfSksXG4gICAgb3ZlcnZpZXc6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZmlyc3RPdmVydmlldyA9IGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnb3ZlcnZpZXcnKSlcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlPHN0cmluZz4oXG4gICAgICAgIHNlbGVjdEZpZWxkKGZpcnN0T3ZlcnZpZXcsICd0ZXh0JyksXG4gICAgICAgIHRoaXMubGFuZzNcbiAgICAgIClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgb3ZlcnZpZXdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdXJsOiBnZXRBc1VybChzZWxlY3RGYWxsYmFja0ZpZWxkcyhmaXJzdE92ZXJ2aWV3LCAndXJsJywgJ2RhdGEnKSksXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gPyB7IGRlc2NyaXB0aW9uIH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsX3RvcGljOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0b3BpY3M6IFtcbiAgICAgICAgLi4uKG91dHB1dC50b3BpY3MgfHwgW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkPFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXT4oc291cmNlLCAnY2xfdG9waWMnKVxuICAgICAgICApLm1hcCgodG9waWMpID0+IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZTxzdHJpbmc+KHRvcGljLCB0aGlzLmxhbmczKSksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIGNsX3N0YXR1czogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgc3RhdHVzOiBnZXRTdGF0dXNGcm9tU3RhdHVzQ29kZShcbiAgICAgICAgc2VsZWN0RmllbGQoZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdjbF9zdGF0dXMnKSksICdrZXknKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdXBkYXRlRnJlcXVlbmN5OiBnZXRVcGRhdGVGcmVxdWVuY3lGcm9tRnJlcXVlbmN5Q29kZShcbiAgICAgICAgc2VsZWN0RmllbGQoXG4gICAgICAgICAgZ2V0Rmlyc3RWYWx1ZShcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NsX21haW50ZW5hbmNlQW5kVXBkYXRlRnJlcXVlbmN5JylcbiAgICAgICAgICApLFxuICAgICAgICAgICdrZXknXG4gICAgICAgIClcbiAgICAgICksXG4gICAgfSksXG4gICAgY3JlYXRpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlc291cmNlQ3JlYXRlZDogdG9EYXRlKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY3JlYXRpb25EYXRlRm9yUmVzb3VyY2UnKSlcbiAgICAgICksXG4gICAgfSksXG4gICAgcmV2aXNpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlc291cmNlVXBkYXRlZDogdG9EYXRlKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncmV2aXNpb25EYXRlRm9yUmVzb3VyY2UnKSlcbiAgICAgICksXG4gICAgfSksXG4gICAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlc291cmNlUHVibGlzaGVkOiB0b0RhdGUoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2UnKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjcmVhdGVEYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRDcmVhdGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjcmVhdGVEYXRlJykpLFxuICAgIH0pLFxuICAgIGNoYW5nZURhdGU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZFVwZGF0ZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NoYW5nZURhdGUnKSksXG4gICAgfSksXG4gICAgcHVibGljYXRpb25EYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRQdWJsaXNoZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3B1YmxpY2F0aW9uRGF0ZScpKSxcbiAgICB9KSxcbiAgICByZXNvdXJjZUxhbmd1YWdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGxhbmdMaXN0ID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdyZXNvdXJjZUxhbmd1YWdlJylcbiAgICAgIClcbiAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IGxhbmdMaXN0Lm1hcCgobGFuZykgPT4gTEFOR18zX1RPXzJfTUFQUEVSW2xhbmddKVxuICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gb3V0cHV0LmRlZmF1bHRMYW5ndWFnZSA/PyBsYW5ndWFnZXNbMF0gPz8gbnVsbCAvLyBzZXQgdGhlIGZpcnN0IGxhbmd1YWdlIGFzIG1haW4gb25lIGFzIGZhbGxiYWNrXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlLFxuICAgICAgfVxuICAgIH0sXG4gICAgb3RoZXJMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdvdGhlckxhbmd1YWdlJykpXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAoKGxhbmcpID0+IExBTkdfM19UT18yX01BUFBFUltsYW5nXSlcbiAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IG91dHB1dC5kZWZhdWx0TGFuZ3VhZ2UgPz8gbGFuZ3VhZ2VzWzBdID8/IG51bGxcbiAgICAgIGNvbnN0IG90aGVyTGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzLmZpbHRlcihcbiAgICAgICAgKGxhbmcpID0+IGxhbmcgIT09IGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgfVxuICAgIH0sXG4gICAgbWFpbkxhbmd1YWdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdtYWluTGFuZ3VhZ2UnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IGxhbmd1YWdlID8gTEFOR18zX1RPXzJfTUFQUEVSW2xhbmd1YWdlXSA6IG51bGwsXG4gICAgICB9XG4gICAgfSxcbiAgICBsaW5rOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhd0xpbmtzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdsaW5rJylcbiAgICAgIClcbiAgICAgIGNvbnN0IG9ubGluZVJlc291cmNlcyA9IHJhd0xpbmtzXG4gICAgICAgIC5tYXAoKGxpbmspID0+IHRoaXMubWFwTGluayhsaW5rKSlcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gbnVsbClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgfSBhcyBDYXRhbG9nUmVjb3JkXG4gICAgfSxcbiAgICBjb250YWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBjb250YWN0czogW1xuICAgICAgICBtYXBDb250YWN0KGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY29udGFjdCcpKSwgdGhpcy5sYW5nMyksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIGNvbnRhY3RGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgY29udGFjdHNGb3JSZXNvdXJjZTogW1xuICAgICAgICAuLi4oJ2NvbnRhY3RzRm9yUmVzb3VyY2UnIGluIG91dHB1dCAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KG91dHB1dC5jb250YWN0c0ZvclJlc291cmNlKVxuICAgICAgICAgID8gb3V0cHV0LmNvbnRhY3RzRm9yUmVzb3VyY2VcbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0Rm9yUmVzb3VyY2UnKSkubWFwKFxuICAgICAgICAgIChjb250YWN0KSA9PiBtYXBDb250YWN0KGNvbnRhY3QsIHRoaXMubGFuZzMpXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIHNvdXJjZUNhdGFsb2d1ZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGNhdGFsb2dVdWlkOiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3NvdXJjZUNhdGFsb2d1ZScpLFxuICAgICAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKVxuICAgIH0sXG4gICAgYWxsS2V5d29yZHM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGtleXdvcmRzOiBtYXBLZXl3b3JkcyhcbiAgICAgICAgc2VsZWN0RmllbGQ8VGhlc2F1cnVzW10+KHNvdXJjZSwgJ2FsbEtleXdvcmRzJyksXG4gICAgICAgIHRoaXMubGFuZzNcbiAgICAgICksXG4gICAgfSksXG4gICAgaW5zcGlyZVRoZW1lOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0b3BpY3M6IFtcbiAgICAgICAgLi4uKG91dHB1dC50b3BpY3MgfHwgW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2luc3BpcmVUaGVtZV9zeW4nKSksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdvdGhlcicsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9Db25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKSlcbiAgICAgICksXG4gICAgTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGVnYWwnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIE1EX0xlZ2FsQ29uc3RyYWludHNPdGhlckNvbnN0cmFpbnRzT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xlZ2FsJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0xlZ2FsQ29uc3RyYWludHNPdGhlckNvbnN0cmFpbnRzT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBNRF9TZWN1cml0eUNvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdzZWN1cml0eScsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9TZWN1cml0eUNvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgbGljZW5zZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsaWNlbnNlJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2xpY2Vuc2VPYmplY3QnKSlcbiAgICAgICksXG4gICAgbGluZWFnZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgbGluZWFnZTogc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ2xpbmVhZ2VPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICB9KSxcbiAgICB1c2VyU2F2ZWRDb3VudDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGZhdm9yaXRlQ291bnQ6IHBhcnNlSW50KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3VzZXJTYXZlZENvdW50JykpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgaXNPcGVuRGF0YTogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGlzT3BlbkRhdGE6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lzT3BlbkRhdGEnKSAhPT0gJ2ZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGZlYXR1cmVUeXBlczogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGZlYXR1cmVUeXBlczogc2VsZWN0RmllbGQoc291cmNlLCAnZmVhdHVyZVR5cGVzJyksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICByZWxhdGVkOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGZjYXRTb3VyY2UgPSBzZWxlY3RGaWVsZChcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShcbiAgICAgICAgICBzZWxlY3RGaWVsZChcbiAgICAgICAgICAgIDxTb3VyY2VXaXRoVW5rbm93blByb3BzPnNlbGVjdEZpZWxkKHNvdXJjZSwgJ3JlbGF0ZWQnKSxcbiAgICAgICAgICAgICdmY2F0cydcbiAgICAgICAgICApXG4gICAgICAgICkgPz8ge30sXG4gICAgICAgICdfc291cmNlJ1xuICAgICAgKVxuICAgICAgY29uc3QgZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyOiBzdHJpbmcgPSBzZWxlY3RGaWVsZChcbiAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+ZmNhdFNvdXJjZSxcbiAgICAgICAgJ3V1aWQnXG4gICAgICApXG4gICAgICBjb25zdCBzb3VyY2VPZkxpbmtzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQoXG4gICAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+c2VsZWN0RmllbGQoc291cmNlLCAncmVsYXRlZCcpLFxuICAgICAgICAgICdoYXNzb3VyY2VzJ1xuICAgICAgICApXG4gICAgICApXG4gICAgICBjb25zdCBzb3VyY2VPZklkZW50aWZpZXJzOiBzdHJpbmdbXSA9IHNvdXJjZU9mTGlua3NcbiAgICAgICAgLmZpbHRlcigobGluaykgPT4gbGlua1snb3JpZ2luJ10gPT09ICdjYXRhbG9nJylcbiAgICAgICAgLm1hcCgobGluaykgPT4ge1xuICAgICAgICAgIHJldHVybiBzZWxlY3RGaWVsZChcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKDxTb3VyY2VXaXRoVW5rbm93blByb3BzPmxpbmssICdfc291cmNlJyksXG4gICAgICAgICAgICAndXVpZCdcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICBjb25zdCBleHRyYVZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+ID0ge31cbiAgICAgIGlmIChmZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXIpIHtcbiAgICAgICAgZXh0cmFWYWx1ZXMuZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyID0gZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyXG4gICAgICB9XG4gICAgICBpZiAoc291cmNlT2ZJZGVudGlmaWVycyAmJiBzb3VyY2VPZklkZW50aWZpZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXh0cmFWYWx1ZXMuc291cmNlT2ZJZGVudGlmaWVycyA9IHNvdXJjZU9mSWRlbnRpZmllcnNcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhleHRyYVZhbHVlcykubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuYWRkRXh0cmEoZXh0cmFWYWx1ZXMsIG91dHB1dClcbiAgICAgICAgOiBvdXRwdXRcbiAgICB9LFxuICAgIHJlY29yZExpbms6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmVjb3JkTGlua3MgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ3JlY29yZExpbmsnKVxuICAgICAgKVxuICAgICAgY29uc3Qgc291cmNlc0lkZW50aWZpZXJzOiBzdHJpbmdbXSA9IHJlY29yZExpbmtzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGxpbmspID0+IGxpbmtbJ29yaWdpbiddID09PSAnY2F0YWxvZycgJiYgbGlua1sndHlwZSddID09PSAnc291cmNlcydcbiAgICAgICAgKVxuICAgICAgICAubWFwKChsaW5rKSA9PiBzZWxlY3RGaWVsZCg8U291cmNlV2l0aFVua25vd25Qcm9wcz5saW5rLCAndG8nKSlcblxuICAgICAgcmV0dXJuIHNvdXJjZXNJZGVudGlmaWVycyAmJiBzb3VyY2VzSWRlbnRpZmllcnMubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuYWRkRXh0cmEoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNvdXJjZXNJZGVudGlmaWVycyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdXRwdXRcbiAgICAgICAgICApXG4gICAgICAgIDogb3V0cHV0XG4gICAgfSxcbiAgICBpc1B1Ymxpc2hlZFRvQWxsOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNQdWJsaXNoZWRUb0FsbDogc2VsZWN0RmllbGQoc291cmNlLCAnaXNQdWJsaXNoZWRUb0FsbCcpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZWRpdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGVkaXQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2VkaXQnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHVzZXJpbmZvOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgb3duZXJJbmZvOiBzZWxlY3RGaWVsZChzb3VyY2UsICd1c2VyaW5mbycpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUeXBlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAncmVzb3VyY2VUeXBlJykpXG4gICAgICBjb25zdCBraW5kID0gZ2V0UmVzb3VyY2VUeXBlKHJlc291cmNlVHlwZSlcbiAgICAgIGNvbnN0IHJldXNlVHlwZSA9IGdldFJldXNlVHlwZShyZXNvdXJjZVR5cGUpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIC4uLihyZXVzZVR5cGUgJiYgeyByZXVzZVR5cGUgfSksXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGdlb206IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZ2VvbXMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2dlb20nKSlcbiAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnc2hhcGUnKSlcbiAgICAgIGNvbnN0IGV4dGVudERlc2NyaXB0aW9ucyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2V4dGVudERlc2NyaXB0aW9uT2JqZWN0JylcbiAgICAgIClcbiAgICAgIGNvbnN0IHNwYXRpYWxFeHRlbnRzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzcGF0aWFsRXh0ZW50cycpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBzcGF0aWFsRXh0ZW50czogW1xuICAgICAgICAgIC4uLnNwYXRpYWxFeHRlbnRzLFxuICAgICAgICAgIC4uLmdlb21zLm1hcCgoZ2VvbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKFxuICAgICAgICAgICAgICBnZXRBcnJheUl0ZW0oZXh0ZW50RGVzY3JpcHRpb25zLCBpbmRleCksXG4gICAgICAgICAgICAgIHRoaXMubGFuZzNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gc2hhcGVzW2luZGV4XSA/PyBnZW9tXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gIT09IG51bGwgPyB7IGRlc2NyaXB0aW9uIH0gOiBudWxsKSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgICAgICB9IGFzIERhdGFzZXRTcGF0aWFsRXh0ZW50XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvdXJjZVRlbXBvcmFsRXh0ZW50RGF0ZVJhbmdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhbmdlcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2UnKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHM6IHJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2d0ZScpXG4gICAgICAgICAgY29uc3QgZW5kID0gc2VsZWN0RmllbGQocmFuZ2UsICdsdGUnKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi4oc3RhcnQgIT09IG51bGwgPyB7IHN0YXJ0OiB0b0RhdGUoc3RhcnQpIH0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihlbmQgIT09IG51bGwgPyB7IGVuZDogdG9EYXRlKGVuZCkgfSA6IG51bGwpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gKG91dHB1dCkgPT4gb3V0cHV0XG5cbiAgcHJpdmF0ZSBjb25zdHJhaW50RmllbGQgPSAoXG4gICAgdHlwZTogJ2xpY2Vuc2UnIHwgJ2xlZ2FsJyB8ICdzZWN1cml0eScgfCAnb3RoZXInLFxuICAgIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgICBjb25zdHJhaW50QXJyYXk6IFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXVxuICApID0+IHtcbiAgICBsZXQgb3V0cHV0RmllbGQ6IHN0cmluZ1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbGljZW5zZSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xpY2Vuc2VzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdsZWdhbENvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2VjdXJpdHknOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdzZWN1cml0eUNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdvdGhlckNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXRBcnJheTogQ29uc3RyYWludFtdID1cbiAgICAgIG91dHB1dEZpZWxkIGluIG91dHB1dCA/IG91dHB1dFtvdXRwdXRGaWVsZF0gOiBbXVxuICAgIG91dHB1dEFycmF5LnB1c2goXG4gICAgICAuLi5jb25zdHJhaW50QXJyYXkubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoaXRlbSwgdGhpcy5sYW5nMykgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkKGl0ZW0sICdsaW5rJykpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICAuLi4odXJsID8geyB1cmwgfSA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgW291dHB1dEZpZWxkXTogb3V0cHV0QXJyYXksXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGdldE1hcHBpbmdGbihmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZE5hbWUgaW4gdGhpcy5maWVsZHMgPyB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdIDogdGhpcy5nZW5lcmljRmllbGRcbiAgfVxuXG4gIGdldExpbmtUeXBlKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyk6IE9ubGluZVJlc291cmNlVHlwZSB7XG4gICAgaWYgKCFwcm90b2NvbCkge1xuICAgICAgcmV0dXJuICdsaW5rJ1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoL15FU1JJOlJFU1QvLnRlc3QocHJvdG9jb2wpICYmIC9GZWF0dXJlU2VydmVyLy50ZXN0KHVybCkpIHx8XG4gICAgICAvXk9HQzpXTVMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXRlMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXTVRTLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL1RNUy9pLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvb2djXFxXKmFwaVxcVypmZWF0dXJlcy9pLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAoL15XV1c6RE9XTkxPQUQtLy50ZXN0KHByb3RvY29sKSAmJiAvZGF0YS5nZW9wZi5mci8udGVzdCh1cmwpKSAvLyBUTyBETyA6IGNoYW5nZSB3aXRoIHRoZSBnb29kIHByb3RvY29sIHdoZW4gZGVjaWRlZFxuICAgICkge1xuICAgICAgcmV0dXJuICdzZXJ2aWNlJ1xuICAgIH1cbiAgICBpZiAoL15XV1c6RE9XTkxPQUQvLnRlc3QocHJvdG9jb2wpKSB7XG4gICAgICByZXR1cm4gJ2Rvd25sb2FkJ1xuICAgIH1cbiAgICByZXR1cm4gJ2xpbmsnXG4gIH1cblxuICBtYXBMaW5rID0gKHNvdXJjZUxpbms6IFNvdXJjZVdpdGhVbmtub3duUHJvcHMpOiBPbmxpbmVSZXNvdXJjZSB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKFxuICAgICAgc2VsZWN0RmFsbGJhY2soXG4gICAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICd1cmxPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAndXJsJylcbiAgICAgIClcbiAgICApXG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ25hbWVPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ25hbWUnKVxuICAgIClcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkPHN0cmluZz4oXG4gICAgICAgIHNvdXJjZUxpbmssXG4gICAgICAgICdkZXNjcmlwdGlvbk9iamVjdCcsXG4gICAgICAgIHRoaXMubGFuZzNcbiAgICAgICksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdkZXNjcmlwdGlvbicpXG4gICAgKVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uTGluayA9IHNlbGVjdEZpZWxkPG9iamVjdD4oc291cmNlTGluaywgJ2Rlc2NyaXB0aW9uT2JqZWN0JylcbiAgICBjb25zdCBhY2Nlc3NSZXN0cmljdGVkID1cbiAgICAgIGRlc2NyaXB0aW9uTGluayAmJlxuICAgICAgJ2xpbmsnIGluIGRlc2NyaXB0aW9uTGluayAmJlxuICAgICAgZGVzY3JpcHRpb25MaW5rLmxpbmsudG9TdHJpbmcoKS5pbmNsdWRlcygnI01EX1Jlc3RyaWN0aW9uQ29kZV9yZXN0cmljdGVkJylcbiAgICAvLyBubyB1cmw6IGZhaWwgZWFybHlcbiAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAvLyBUT0RPOiBjb2xsZWN0IGVycm9ycyBhdCB0aGUgcmVjb3JkIGxldmVsP1xuICAgICAgY29uc29sZS53YXJuKCdBIGxpbmsgd2l0aG91dCB2YWxpZCBVUkwgd2FzIGZvdW5kJywgc291cmNlTGluaylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdwcm90b2NvbCcpXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0TGlua1R5cGUodXJsLnRvU3RyaW5nKCksIHByb3RvY29sKVxuICAgIGNvbnN0IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9IG1hdGNoUHJvdG9jb2wocHJvdG9jb2wpXG4gICAgY29uc3QgbWltZVR5cGVNYXRjaGVzID1cbiAgICAgIHByb3RvY29sICYmIHByb3RvY29sLm1hdGNoKC9eV1dXOkRPV05MT0FEOiguK1xcLy4rKSQvKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZVR5cGVNYXRjaGVzICYmIG1pbWVUeXBlTWF0Y2hlc1sxXVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0ge1xuICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICAgIGFjY2Vzc1Jlc3RyaWN0ZWQ6IGFjY2Vzc1Jlc3RyaWN0ZWQsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICB9XG4gICAgICBjYXNlICdkb3dubG9hZCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgLi4uKG1pbWVUeXBlICYmIHsgbWltZVR5cGUgfSksXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2VuZHBvaW50JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCxcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRXh0cmEgPSAodmFsdWU6IG9iamVjdCwgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+KSA9PiAoe1xuICAgIC4uLm91dHB1dCxcbiAgICBleHRyYXM6IHsgLi4uKG91dHB1dC5leHRyYXMgfHwge30pLCAuLi52YWx1ZSB9LFxuICB9KVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvdHlwZXMvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcblxudHlwZSBMYW5nQ29kZSA9IHN0cmluZ1xudHlwZSBNdWx0aWxpbmd1YWxGaWVsZCA9IHtcbiAgW0sgaW4gYGxhbmcke0xhbmdDb2RlfWBdOiBzdHJpbmdcbn0gJiB7XG4gIGRlZmF1bHQ6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgQm9vbGVhblN0cmluZyA9ICd0cnVlJyB8ICdmYWxzZSdcbmludGVyZmFjZSBDb2RlTGlzdEVudHJ5IGV4dGVuZHMgTXVsdGlsaW5ndWFsRmllbGQge1xuICBrZXk6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgTWF5YmVBcnJheTxUPiA9IFQgfCBUW11cblxuaW50ZXJmYWNlIENvbnRhY3Qge1xuICBvcmdhbmlzYXRpb24/OiBzdHJpbmdcbiAgb3JnYW5pc2F0aW9uT2JqZWN0PzogTXVsdGlsaW5ndWFsRmllbGRcbiAgcm9sZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nXG4gIGxvZ286IHN0cmluZ1xuICBpbmRpdmlkdWFsOiBzdHJpbmdcbiAgcG9zaXRpb246IHN0cmluZ1xuICBwaG9uZTogc3RyaW5nXG4gIGFkZHJlc3M6IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgT3ZlcnZpZXcge1xuICBkYXRhPzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICB0ZXh0PzogTXVsdGlsaW5ndWFsRmllbGRcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlRGF0ZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBkYXRlOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2Uge1xuICBndGU/OiBzdHJpbmdcbiAgbHRlPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBSZXNvdXJjZUlkZW50aWZpZXIge1xuICBjb2RlOiBzdHJpbmdcbiAgY29kZVNwYWNlOiBzdHJpbmdcbiAgbGluazogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2Uge1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU6IHN0cmluZ1xuICBleHBsYW5hdGlvbjogc3RyaW5nXG4gIHBhc3M6IEJvb2xlYW5TdHJpbmdcbn1cblxudHlwZSBUaGVzYXVydXNOYW1lID0gc3RyaW5nXG5leHBvcnQgaW50ZXJmYWNlIFRoZXNhdXJ1cyB7XG4gIGlkPzogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRoZW1lPzogc3RyaW5nXG4gIGxpbms/OiBzdHJpbmdcbiAga2V5d29yZHM6IE11bHRpbGluZ3VhbEZpZWxkW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgcHJvdG9jb2w/OiBzdHJpbmdcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgdXJsPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgZnVuY3Rpb24/OiBzdHJpbmdcbiAgYXBwbGljYXRpb25Qcm9maWxlPzogc3RyaW5nXG4gIGdyb3VwPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhT2JqZWN0ID0gUGFydGlhbDx7XG4gIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBPcmc6IHN0cmluZ1xuICBPcmdGb3JSZXNvdXJjZTogc3RyaW5nW11cbiAgYWxsS2V5d29yZHM6IFJlY29yZDxUaGVzYXVydXNOYW1lLCBUaGVzYXVydXM+XG4gIGNoYW5nZURhdGU6IHN0cmluZ1xuICBjbF9jaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9mdW5jdGlvbjogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX2hpZXJhcmNoeUxldmVsOiBDb2RlTGlzdEVudHJ5W11cbiAgY2xfcmVzb3VyY2VDaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9zdGF0dXM6IENvZGVMaXN0RW50cnlbXVxuICBjbF90b3BpYzogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX3R5cGU6IENvZGVMaXN0RW50cnlbXVxuICBjb25mb3JtVG9fVGl0cmVkdW5lc3BjaWZpY2F0aW9ubGFxdWVsbGVsYXNyaWVkZWRvbm5lc2VzdGNvbmZvcm1lb3Vub246IHN0cmluZ1xuICBjb250YWN0OiBDb250YWN0W11cbiAgY29udGFjdEZvclJlc291cmNlOiBDb250YWN0W11cbiAgY3JlYXRlRGF0ZTogc3RyaW5nXG4gIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICBjcmVhdGlvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBjcmVhdGlvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIGRhdGVTdGFtcDogc3RyaW5nXG4gIGRpc3BsYXlPcmRlcjogc3RyaW5nXG4gIGRvY1R5cGU6IHN0cmluZ1xuICBkb2N1bWVudDogc3RyaW5nXG4gIGRvY3VtZW50U3RhbmRhcmQ6IHN0cmluZ1xuICBkcmFmdDogc3RyaW5nXG4gIGV4dGVudERlc2NyaXB0aW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGV4dHJhOiBzdHJpbmdcbiAgZmVhdHVyZU9mUmVjb3JkOiBzdHJpbmdcbiAgZmVlZGJhY2tDb3VudDogc3RyaW5nXG4gIGdlb206IEdlb21ldHJ5IHwgR2VvbWV0cnlbXVxuICBncm91cE93bmVyOiBzdHJpbmdcbiAgZ3JvdXBQdWJsaXNoZWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGdyb3VwUHVibGlzaGVkSWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGhhcnZlc3RlclV1aWQ6IHN0cmluZ1xuICBoYXNJbnNwaXJlVGhlbWU6IEJvb2xlYW5TdHJpbmdcbiAgaGFzT3ZlcnZpZXc6IEJvb2xlYW5TdHJpbmdcbiAgaGFzeGxpbmtzOiBCb29sZWFuU3RyaW5nXG4gIGlkOiBzdHJpbmdcbiAgaW5kZXhpbmdEYXRlOiBzdHJpbmcgfCBudW1iZXJcbiAgaW5kZXhpbmdFcnJvcjogc3RyaW5nIHwgc3RyaW5nW11cbiAgaW5kZXhpbmdFcnJvck1zZzogc3RyaW5nW11cbiAgaW5zcGlyZUFubmV4OiBzdHJpbmdbXVxuICBpbnNwaXJlQW5uZXhGb3JGaXJzdFRoZW1lOiBzdHJpbmdcbiAgaW5zcGlyZVRoZW1lOiBzdHJpbmdbXVxuICBpbnNwaXJlVGhlbWVGaXJzdDogc3RyaW5nXG4gIGluc3BpcmVUaGVtZUZpcnN0X3N5bjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZU51bWJlcjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZVVyaTogc3RyaW5nW11cbiAgaW5zcGlyZVRoZW1lX3N5bjogc3RyaW5nW11cbiAgaXNIYXJ2ZXN0ZWQ6IHN0cmluZ1xuICBpc09wZW5EYXRhOiBzdHJpbmdcbiAgZWRpdDogYm9vbGVhblxuICBpc1B1Ymxpc2hlZFRvQWxsOiBzdHJpbmdcbiAgaXNUZW1wbGF0ZTogc3RyaW5nXG4gIGtleXdvcmRUeXBlOiBSZWNvcmQ8c3RyaW5nLCBNdWx0aWxpbmd1YWxGaWVsZFtdPlxuICBsaWNlbnNlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGxpbmVhZ2VPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIGxpbms6IExpbmtbXVxuICBsaW5rUHJvdG9jb2w6IHN0cmluZ1tdXG4gIGxpbmtVcmw6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGxpbmtVcmxQcm90b2NvbE9HQ1dGUzogc3RyaW5nIHwgc3RyaW5nW11cbiAgbGlua1VybFByb3RvY29sT0dDV01TOiBzdHJpbmdbXVxuICBsaW5rVXJsUHJvdG9jb2xXV1dMSU5LMTBodHRwbGluazogTWF5YmVBcnJheTxzdHJpbmc+XG4gIGxpbmtVcmxQcm90b2NvbFdXV0xJTksxMGh0dHByZWxhdGVkOiBzdHJpbmdcbiAgbG9jYXRpb246IHN0cmluZ1xuICBsb2dvOiBzdHJpbmdcbiAgbWFpbkxhbmd1YWdlOiBzdHJpbmdcbiAgbWV0YWRhdGFJZGVudGlmaWVyOiBzdHJpbmdcbiAgb3ZlcnZpZXc6IE92ZXJ2aWV3W11cbiAgb3duZXI6IHN0cmluZ1xuICBwb2ludE9mQ29udGFjdE9yZzogc3RyaW5nXG4gIHBvaW50T2ZDb250YWN0T3JnRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBwb3B1bGFyaXR5OiBudW1iZXJcbiAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IHN0cmluZyB8IHN0cmluZ1tdXG4gIHJhdGluZzogc3RyaW5nXG4gIHJlY29yZDogc3RyaW5nXG4gIHJlY29yZEdyb3VwOiBzdHJpbmdcbiAgcmVjb3JkT3duZXI6IHN0cmluZ1xuICByZXNvbHV0aW9uRGlzdGFuY2U6IHN0cmluZ1tdXG4gIHJlc29sdXRpb25TY2FsZURlbm9taW5hdG9yOiBzdHJpbmdbXVxuICByZXNvdXJjZUFic3RyYWN0T2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZURhdGU6IFJlc291cmNlRGF0ZVtdXG4gIHJlc291cmNlRWRpdGlvbjogc3RyaW5nXG4gIHJlc291cmNlSWRlbnRpZmllcjogUmVzb3VyY2VJZGVudGlmaWVyW11cbiAgcmVzb3VyY2VMYW5ndWFnZTogc3RyaW5nW11cbiAgcmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZTogUmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZVtdXG4gIHJlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2U6IFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2VbXVxuICByZXNvdXJjZVRpdGxlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZVR5cGU6IHN0cmluZ1tdXG4gIHJlc291cmNlVHlwZU5hbWVPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICByZXZpc2lvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICByZXZpc2lvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIHNvdXJjZUNhdGFsb2d1ZTogc3RyaW5nXG4gIHNwZWNpZmljYXRpb25Db25mb3JtYW5jZTogTWF5YmVBcnJheTxTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2U+XG4gIHN0YW5kYXJkTmFtZU9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRcbiAgc3RhbmRhcmRWZXJzaW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICB0YWc6IE11bHRpbGluZ3VhbEZpZWxkW11cbiAgdGFnTnVtYmVyOiBzdHJpbmdcbiAgdXNlclNhdmVkQ291bnQ6IHN0cmluZ1xuICB1c2VyaW5mbzogc3RyaW5nXG4gIHV1aWQ6IHN0cmluZ1xuICB2YWxpZDogc3RyaW5nXG4gIHhsaW5rOiBzdHJpbmdbXVxufT5cblxuZXhwb3J0IGludGVyZmFjZSBHbjRSZWNvcmQge1xuICBfaW5kZXg6IHN0cmluZ1xuICBfdHlwZT86IHN0cmluZ1xuICBfaWQ6IHN0cmluZ1xuICBfc2NvcmU6IG51bWJlclxuICBfc291cmNlOiBNZXRhZGF0YU9iamVjdFxuICBlZGl0PzogYm9vbGVhblxuICBvd25lcj86IGJvb2xlYW5cbiAgaXNQdWJsaXNoZWRUb0FsbD86IGJvb2xlYW5cbiAgdmlldz86IGJvb2xlYW5cbiAgbm90aWZ5PzogYm9vbGVhblxuICBkb3dubG9hZD86IGJvb2xlYW5cbiAgZHluYW1pYz86IGJvb2xlYW5cbiAgZmVhdHVyZWQ/OiBib29sZWFuXG4gIGd1ZXN0ZG93bmxvYWQ/OiBib29sZWFuXG4gIHNlbGVjdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEduNFJlY29yZFJlbGF0ZWQge1xuICBmY2F0cz86IEduNFJlY29yZFtdXG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvdHlwZXMvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcblxudHlwZSBMYW5nQ29kZSA9IHN0cmluZ1xudHlwZSBNdWx0aWxpbmd1YWxGaWVsZCA9IHtcbiAgW0sgaW4gYGxhbmcke0xhbmdDb2RlfWBdOiBzdHJpbmdcbn0gJiB7XG4gIGRlZmF1bHQ6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgQm9vbGVhblN0cmluZyA9ICd0cnVlJyB8ICdmYWxzZSdcbmludGVyZmFjZSBDb2RlTGlzdEVudHJ5IGV4dGVuZHMgTXVsdGlsaW5ndWFsRmllbGQge1xuICBrZXk6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgTWF5YmVBcnJheTxUPiA9IFQgfCBUW11cblxuaW50ZXJmYWNlIENvbnRhY3Qge1xuICBvcmdhbmlzYXRpb24/OiBzdHJpbmdcbiAgb3JnYW5pc2F0aW9uT2JqZWN0PzogTXVsdGlsaW5ndWFsRmllbGRcbiAgcm9sZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nXG4gIGxvZ286IHN0cmluZ1xuICBpbmRpdmlkdWFsOiBzdHJpbmdcbiAgcG9zaXRpb246IHN0cmluZ1xuICBwaG9uZTogc3RyaW5nXG4gIGFkZHJlc3M6IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgT3ZlcnZpZXcge1xuICBkYXRhPzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICB0ZXh0PzogTXVsdGlsaW5ndWFsRmllbGRcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlRGF0ZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBkYXRlOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2Uge1xuICBndGU/OiBzdHJpbmdcbiAgbHRlPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBSZXNvdXJjZUlkZW50aWZpZXIge1xuICBjb2RlOiBzdHJpbmdcbiAgY29kZVNwYWNlOiBzdHJpbmdcbiAgbGluazogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2Uge1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU6IHN0cmluZ1xuICBleHBsYW5hdGlvbjogc3RyaW5nXG4gIHBhc3M6IEJvb2xlYW5TdHJpbmdcbn1cblxudHlwZSBUaGVzYXVydXNOYW1lID0gc3RyaW5nXG5leHBvcnQgaW50ZXJmYWNlIFRoZXNhdXJ1cyB7XG4gIGlkPzogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRoZW1lPzogc3RyaW5nXG4gIGxpbms/OiBzdHJpbmdcbiAga2V5d29yZHM6IE11bHRpbGluZ3VhbEZpZWxkW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgcHJvdG9jb2w/OiBzdHJpbmdcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgdXJsPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgZnVuY3Rpb24/OiBzdHJpbmdcbiAgYXBwbGljYXRpb25Qcm9maWxlPzogc3RyaW5nXG4gIGdyb3VwPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhT2JqZWN0ID0gUGFydGlhbDx7XG4gIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBPcmc6IHN0cmluZ1xuICBPcmdGb3JSZXNvdXJjZTogc3RyaW5nW11cbiAgYWxsS2V5d29yZHM6IFJlY29yZDxUaGVzYXVydXNOYW1lLCBUaGVzYXVydXM+XG4gIGNoYW5nZURhdGU6IHN0cmluZ1xuICBjbF9jaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9mdW5jdGlvbjogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX2hpZXJhcmNoeUxldmVsOiBDb2RlTGlzdEVudHJ5W11cbiAgY2xfcmVzb3VyY2VDaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9zdGF0dXM6IENvZGVMaXN0RW50cnlbXVxuICBjbF90b3BpYzogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX3R5cGU6IENvZGVMaXN0RW50cnlbXVxuICBjb25mb3JtVG9fVGl0cmVkdW5lc3BjaWZpY2F0aW9ubGFxdWVsbGVsYXNyaWVkZWRvbm5lc2VzdGNvbmZvcm1lb3Vub246IHN0cmluZ1xuICBjb250YWN0OiBDb250YWN0W11cbiAgY29udGFjdEZvclJlc291cmNlOiBDb250YWN0W11cbiAgY3JlYXRlRGF0ZTogc3RyaW5nXG4gIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICBjcmVhdGlvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBjcmVhdGlvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIGRhdGVTdGFtcDogc3RyaW5nXG4gIGRpc3BsYXlPcmRlcjogc3RyaW5nXG4gIGRvY1R5cGU6IHN0cmluZ1xuICBkb2N1bWVudDogc3RyaW5nXG4gIGRvY3VtZW50U3RhbmRhcmQ6IHN0cmluZ1xuICBkcmFmdDogc3RyaW5nXG4gIGV4dGVudERlc2NyaXB0aW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGV4dHJhOiBzdHJpbmdcbiAgZmVhdHVyZU9mUmVjb3JkOiBzdHJpbmdcbiAgZmVlZGJhY2tDb3VudDogc3RyaW5nXG4gIGdlb206IEdlb21ldHJ5IHwgR2VvbWV0cnlbXVxuICBncm91cE93bmVyOiBzdHJpbmdcbiAgZ3JvdXBQdWJsaXNoZWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGdyb3VwUHVibGlzaGVkSWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGhhcnZlc3RlclV1aWQ6IHN0cmluZ1xuICBoYXNJbnNwaXJlVGhlbWU6IEJvb2xlYW5TdHJpbmdcbiAgaGFzT3ZlcnZpZXc6IEJvb2xlYW5TdHJpbmdcbiAgaGFzeGxpbmtzOiBCb29sZWFuU3RyaW5nXG4gIGlkOiBzdHJpbmdcbiAgaW5kZXhpbmdEYXRlOiBzdHJpbmcgfCBudW1iZXJcbiAgaW5kZXhpbmdFcnJvcjogc3RyaW5nIHwgc3RyaW5nW11cbiAgaW5kZXhpbmdFcnJvck1zZzogc3RyaW5nW11cbiAgaW5zcGlyZUFubmV4OiBzdHJpbmdbXVxuICBpbnNwaXJlQW5uZXhGb3JGaXJzdFRoZW1lOiBzdHJpbmdcbiAgaW5zcGlyZVRoZW1lOiBzdHJpbmdbXVxuICBpbnNwaXJlVGhlbWVGaXJzdDogc3RyaW5nXG4gIGluc3BpcmVUaGVtZUZpcnN0X3N5bjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZU51bWJlcjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZVVyaTogc3RyaW5nW11cbiAgaW5zcGlyZVRoZW1lX3N5bjogc3RyaW5nW11cbiAgaXNIYXJ2ZXN0ZWQ6IHN0cmluZ1xuICBpc09wZW5EYXRhOiBzdHJpbmdcbiAgZWRpdDogYm9vbGVhblxuICBpc1B1Ymxpc2hlZFRvQWxsOiBzdHJpbmdcbiAgaXNUZW1wbGF0ZTogc3RyaW5nXG4gIGtleXdvcmRUeXBlOiBSZWNvcmQ8c3RyaW5nLCBNdWx0aWxpbmd1YWxGaWVsZFtdPlxuICBsaWNlbnNlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGxpbmVhZ2VPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIGxpbms6IExpbmtbXVxuICBsaW5rUHJvdG9jb2w6IHN0cmluZ1tdXG4gIGxpbmtVcmw6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGxpbmtVcmxQcm90b2NvbE9HQ1dGUzogc3RyaW5nIHwgc3RyaW5nW11cbiAgbGlua1VybFByb3RvY29sT0dDV01TOiBzdHJpbmdbXVxuICBsaW5rVXJsUHJvdG9jb2xXV1dMSU5LMTBodHRwbGluazogTWF5YmVBcnJheTxzdHJpbmc+XG4gIGxpbmtVcmxQcm90b2NvbFdXV0xJTksxMGh0dHByZWxhdGVkOiBzdHJpbmdcbiAgbG9jYXRpb246IHN0cmluZ1xuICBsb2dvOiBzdHJpbmdcbiAgbWFpbkxhbmd1YWdlOiBzdHJpbmdcbiAgbWV0YWRhdGFJZGVudGlmaWVyOiBzdHJpbmdcbiAgb3ZlcnZpZXc6IE92ZXJ2aWV3W11cbiAgb3duZXI6IHN0cmluZ1xuICBwb2ludE9mQ29udGFjdE9yZzogc3RyaW5nXG4gIHBvaW50T2ZDb250YWN0T3JnRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBwb3B1bGFyaXR5OiBudW1iZXJcbiAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IHN0cmluZyB8IHN0cmluZ1tdXG4gIHJhdGluZzogc3RyaW5nXG4gIHJlY29yZDogc3RyaW5nXG4gIHJlY29yZEdyb3VwOiBzdHJpbmdcbiAgcmVjb3JkT3duZXI6IHN0cmluZ1xuICByZXNvbHV0aW9uRGlzdGFuY2U6IHN0cmluZ1tdXG4gIHJlc29sdXRpb25TY2FsZURlbm9taW5hdG9yOiBzdHJpbmdbXVxuICByZXNvdXJjZUFic3RyYWN0T2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZURhdGU6IFJlc291cmNlRGF0ZVtdXG4gIHJlc291cmNlRWRpdGlvbjogc3RyaW5nXG4gIHJlc291cmNlSWRlbnRpZmllcjogUmVzb3VyY2VJZGVudGlmaWVyW11cbiAgcmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZTogUmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZVtdXG4gIHJlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2U6IFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2VbXVxuICByZXNvdXJjZVRpdGxlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZVR5cGU6IHN0cmluZ1tdXG4gIHJlc291cmNlVHlwZU5hbWVPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICByZXZpc2lvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICByZXZpc2lvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIHNvdXJjZUNhdGFsb2d1ZTogc3RyaW5nXG4gIHNwZWNpZmljYXRpb25Db25mb3JtYW5jZTogTWF5YmVBcnJheTxTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2U+XG4gIHN0YW5kYXJkTmFtZU9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRcbiAgc3RhbmRhcmRWZXJzaW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICB0YWc6IE11bHRpbGluZ3VhbEZpZWxkW11cbiAgdGFnTnVtYmVyOiBzdHJpbmdcbiAgdXNlclNhdmVkQ291bnQ6IHN0cmluZ1xuICB1c2VyaW5mbzogc3RyaW5nXG4gIHV1aWQ6IHN0cmluZ1xuICB2YWxpZDogc3RyaW5nXG4gIHhsaW5rOiBzdHJpbmdbXVxufT5cblxuZXhwb3J0IGludGVyZmFjZSBHbjRSZWNvcmQge1xuICBfaW5kZXg6IHN0cmluZ1xuICBfdHlwZT86IHN0cmluZ1xuICBfaWQ6IHN0cmluZ1xuICBfc2NvcmU6IG51bWJlclxuICBfc291cmNlOiBNZXRhZGF0YU9iamVjdFxuICBlZGl0PzogYm9vbGVhblxuICBvd25lcj86IGJvb2xlYW5cbiAgaXNQdWJsaXNoZWRUb0FsbD86IGJvb2xlYW5cbiAgdmlldz86IGJvb2xlYW5cbiAgbm90aWZ5PzogYm9vbGVhblxuICBkb3dubG9hZD86IGJvb2xlYW5cbiAgZHluYW1pYz86IGJvb2xlYW5cbiAgZmVhdHVyZWQ/OiBib29sZWFuXG4gIGd1ZXN0ZG93bmxvYWQ/OiBib29sZWFuXG4gIHNlbGVjdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEduNFJlY29yZFJlbGF0ZWQge1xuICBmY2F0cz86IEduNFJlY29yZFtdXG59XG4iXX0=