geonetwork-ui 2.3.0-dev.28c8df17 → 2.3.0-dev.2b8cc035

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 (508) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/index.mjs +5 -5
  3. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +15 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +52 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +8 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/gn4/index.mjs +4 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/index.mjs +2 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +123 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +116 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +138 -0
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/index.mjs +2 -0
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +242 -0
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +58 -62
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.mjs +18 -0
  17. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +14 -0
  18. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.mjs +48 -0
  19. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +18 -0
  20. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.mjs +64 -0
  21. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +75 -58
  22. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +76 -14
  23. package/esm2022/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.mjs +1 -1
  24. package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +12 -1
  25. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +4 -4
  26. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +36 -3
  27. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +19 -7
  28. package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
  29. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  30. package/esm2022/libs/common/domain/src/lib/model/record/user-feedbacks.model.mjs +2 -0
  31. package/esm2022/libs/common/domain/src/lib/model/user/index.mjs +2 -0
  32. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  33. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  34. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  35. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  36. package/esm2022/libs/feature/editor/src/index.mjs +2 -2
  37. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +6 -2
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.mjs +11 -0
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.mjs +28 -0
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.mjs +11 -0
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +45 -0
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +50 -0
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +11 -0
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +11 -0
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +121 -0
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +2 -0
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +10 -0
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +29 -0
  51. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  52. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +10 -10
  53. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +16 -1
  54. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +1 -1
  55. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +8 -8
  56. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -2
  57. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +3 -3
  58. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +72 -0
  59. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  60. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  61. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -3
  62. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -7
  63. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
  64. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +52 -25
  65. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +12 -49
  66. package/esm2022/libs/feature/notifications/src/index.mjs +4 -0
  67. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +18 -0
  68. package/esm2022/libs/feature/notifications/src/lib/notification.model.mjs +2 -0
  69. package/esm2022/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.mjs +49 -0
  70. package/esm2022/libs/feature/notifications/src/lib/notifications.service.mjs +29 -0
  71. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +4 -4
  72. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -2
  73. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +22 -4
  74. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +37 -10
  75. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +22 -7
  76. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +52 -17
  77. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +18 -3
  78. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +2 -2
  79. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +3 -3
  80. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +3 -3
  81. package/esm2022/libs/ui/elements/src/index.mjs +15 -15
  82. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +5 -5
  83. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +45 -0
  84. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  85. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +34 -0
  86. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +34 -7
  87. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
  88. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +14 -5
  89. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +59 -0
  90. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +62 -0
  91. package/esm2022/libs/ui/inputs/src/index.mjs +15 -16
  92. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  93. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
  94. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
  95. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +17 -8
  96. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  97. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  98. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +27 -4
  99. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +19 -3
  100. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +18 -29
  101. package/esm2022/libs/ui/layout/src/index.mjs +6 -5
  102. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +18 -0
  103. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +22 -1
  104. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  105. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  106. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
  107. package/esm2022/translations/de.json +46 -0
  108. package/esm2022/translations/en.json +46 -0
  109. package/esm2022/translations/es.json +46 -0
  110. package/esm2022/translations/fr.json +46 -0
  111. package/esm2022/translations/it.json +46 -0
  112. package/esm2022/translations/nl.json +46 -0
  113. package/esm2022/translations/pt.json +46 -0
  114. package/fesm2022/geonetwork-ui.mjs +5228 -3277
  115. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  116. package/index.d.ts +1 -0
  117. package/index.d.ts.map +1 -1
  118. package/index.ts +1 -0
  119. package/libs/api/metadata-converter/src/index.d.ts +4 -4
  120. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  121. package/libs/api/metadata-converter/src/lib/{metadata-base.mapper.d.ts → base.converter.d.ts} +3 -3
  122. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -0
  123. package/libs/api/metadata-converter/src/lib/find-converter.d.ts +3 -0
  124. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -0
  125. package/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.d.ts → gn4.converter.d.ts} +5 -5
  126. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -0
  127. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  128. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts +4 -0
  129. package/libs/api/metadata-converter/src/lib/gn4/index.d.ts.map +1 -0
  130. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts +2 -0
  131. package/libs/api/metadata-converter/src/lib/iso19115-3/index.d.ts.map +1 -0
  132. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +9 -0
  133. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -0
  134. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +20 -0
  135. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -0
  136. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +21 -0
  137. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -0
  138. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts +2 -0
  139. package/libs/api/metadata-converter/src/lib/iso19139/index.d.ts.map +1 -0
  140. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +11 -0
  141. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -0
  142. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +34 -6
  143. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  144. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts +8 -0
  145. package/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.d.ts.map +1 -0
  146. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -0
  147. package/libs/api/metadata-converter/src/lib/iso19139/utils/role.mapper.d.ts.map +1 -0
  148. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -0
  149. package/libs/api/metadata-converter/src/lib/iso19139/utils/update-frequency.mapper.d.ts.map +1 -0
  150. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +39 -3
  151. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  152. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +14 -1
  153. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  154. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts +1 -0
  155. package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts.map +1 -1
  156. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts +1 -0
  157. package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts.map +1 -1
  158. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +2 -2
  159. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  160. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +6 -2
  161. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  162. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -6
  163. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  164. package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
  165. package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
  166. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -4
  167. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  168. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts +15 -0
  169. package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts.map +1 -0
  170. package/libs/common/domain/src/lib/model/user/index.d.ts +2 -0
  171. package/libs/common/domain/src/lib/model/user/index.d.ts.map +1 -0
  172. package/libs/common/domain/src/lib/platform.service.interface.d.ts +3 -0
  173. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  174. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  175. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  176. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  177. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  178. package/libs/feature/editor/src/index.d.ts +1 -1
  179. package/libs/feature/editor/src/index.d.ts.map +1 -1
  180. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +8 -5
  181. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  182. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.d.ts +1 -1
  183. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.d.ts.map +1 -0
  184. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.d.ts +1 -1
  185. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.d.ts.map +1 -0
  186. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
  187. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
  188. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.d.ts +1 -1
  189. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.d.ts.map +1 -0
  190. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
  191. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
  192. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +16 -0
  193. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -0
  194. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.d.ts +2 -2
  195. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -0
  196. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +1 -1
  197. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -0
  198. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts +1 -1
  199. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +1 -0
  200. package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.component.d.ts +12 -4
  201. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -0
  202. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +1 -0
  203. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -0
  204. package/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.d.ts +3 -3
  205. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -0
  206. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +1 -1
  207. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  208. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  209. package/libs/feature/editor/src/lib/models/fields.model.d.ts +1 -1
  210. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  211. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  212. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +23 -0
  213. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
  214. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -1
  215. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  216. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
  217. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  218. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +10 -5
  219. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  220. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  221. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -3
  222. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  223. package/libs/feature/notifications/src/index.d.ts +4 -0
  224. package/libs/feature/notifications/src/index.d.ts.map +1 -0
  225. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +7 -0
  226. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +1 -0
  227. package/libs/feature/notifications/src/lib/notification.model.d.ts +7 -0
  228. package/libs/feature/notifications/src/lib/notification.model.d.ts.map +1 -0
  229. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts +12 -0
  230. package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts.map +1 -0
  231. package/libs/feature/notifications/src/lib/notifications.service.d.ts +15 -0
  232. package/libs/feature/notifications/src/lib/notifications.service.d.ts.map +1 -0
  233. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  234. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  235. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +40 -6
  236. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  237. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +24 -4
  238. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  239. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +14 -4
  240. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  241. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +8 -5
  242. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  243. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +12 -9
  244. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  245. package/libs/ui/elements/src/index.d.ts +14 -14
  246. package/libs/ui/elements/src/index.d.ts.map +1 -1
  247. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  248. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +13 -0
  249. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -0
  250. package/libs/ui/elements/src/lib/notification/notification.component.d.ts +13 -0
  251. package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -0
  252. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +4 -2
  253. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  254. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
  255. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  256. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +10 -8
  257. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  258. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +11 -0
  259. package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +1 -0
  260. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +22 -0
  261. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -0
  262. package/libs/ui/inputs/src/index.d.ts +14 -15
  263. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  264. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  265. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
  266. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
  267. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
  268. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
  269. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +1 -1
  270. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  271. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  272. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  273. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  274. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  275. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +7 -1
  276. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  277. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +4 -1
  278. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  279. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -42
  280. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  281. package/libs/ui/layout/src/index.d.ts +5 -4
  282. package/libs/ui/layout/src/index.d.ts.map +1 -1
  283. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +8 -0
  284. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -0
  285. package/libs/util/shared/src/lib/links/link-utils.d.ts +18 -0
  286. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  287. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  288. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  289. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  290. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  291. package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
  292. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  293. package/package.json +2 -2
  294. package/src/libs/api/metadata-converter/src/index.ts +4 -4
  295. package/src/libs/api/metadata-converter/src/lib/{metadata-base.mapper.ts → base.converter.ts} +2 -2
  296. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +16 -0
  297. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +32 -5
  298. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +11 -4
  299. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +33 -7
  300. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +580 -0
  301. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +2 -2
  302. package/src/libs/api/metadata-converter/src/lib/gn4/{gn4.metadata.mapper.ts → gn4.converter.ts} +2 -2
  303. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +9 -3
  304. package/src/libs/api/metadata-converter/src/lib/gn4/index.ts +3 -0
  305. package/src/libs/api/metadata-converter/src/lib/iso19115-3/index.ts +1 -0
  306. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +176 -0
  307. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +329 -0
  308. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +513 -0
  309. package/src/libs/api/metadata-converter/src/lib/iso19139/index.ts +1 -0
  310. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +327 -0
  311. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +121 -82
  312. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/individual-name.ts +20 -0
  313. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +175 -95
  314. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +84 -16
  315. package/src/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.ts +1 -0
  316. package/src/libs/api/repository/src/lib/gn4/auth/gravatar.service.ts +12 -1
  317. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  318. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +51 -1
  319. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +34 -7
  320. package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
  321. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -4
  322. package/src/libs/common/domain/src/lib/model/record/user-feedbacks.model.ts +15 -0
  323. package/src/libs/common/domain/src/lib/platform.service.interface.ts +3 -0
  324. package/src/libs/common/fixtures/src/index.ts +8 -6
  325. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +3 -3
  326. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
  327. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  328. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  329. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  330. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -1
  331. package/src/libs/feature/editor/src/index.ts +1 -1
  332. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +8 -1
  333. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  334. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  335. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.ts +1 -0
  336. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.ts +4 -1
  337. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
  338. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
  339. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.ts +1 -0
  340. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
  341. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
  342. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +20 -0
  343. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +44 -0
  344. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.ts +4 -1
  345. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +1 -0
  346. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css +0 -0
  347. package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.ts +1 -0
  348. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +0 -0
  349. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +92 -0
  350. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +137 -0
  351. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +0 -0
  352. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.html +1 -0
  353. package/src/libs/feature/editor/src/lib/{record-form → components/record-form}/record-form.component.ts +4 -4
  354. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +9 -9
  355. package/src/libs/feature/editor/src/lib/fields.config.ts +15 -0
  356. package/src/libs/feature/editor/src/lib/models/fields.model.ts +1 -1
  357. package/src/libs/feature/editor/src/lib/services/editor.service.ts +27 -16
  358. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
  359. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -1
  360. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +0 -0
  361. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +36 -0
  362. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +80 -0
  363. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
  364. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +8 -0
  365. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
  366. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +10 -3
  367. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +60 -32
  368. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +17 -61
  369. package/src/libs/feature/notifications/src/index.ts +3 -0
  370. package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +10 -0
  371. package/src/libs/feature/notifications/src/lib/notification.model.ts +6 -0
  372. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.css +0 -0
  373. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.html +17 -0
  374. package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.ts +44 -0
  375. package/src/libs/feature/notifications/src/lib/notifications.service.ts +27 -0
  376. package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
  377. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -1
  378. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +51 -6
  379. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +82 -7
  380. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +49 -8
  381. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +81 -24
  382. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +40 -10
  383. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +2 -2
  384. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +3 -3
  385. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +5 -5
  386. package/src/libs/ui/elements/src/index.ts +14 -14
  387. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  388. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +0 -5
  389. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +0 -21
  390. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -14
  391. package/src/libs/ui/elements/src/lib/notification/notification.component.css +0 -0
  392. package/src/libs/ui/elements/src/lib/notification/notification.component.html +52 -0
  393. package/src/libs/ui/elements/src/lib/notification/notification.component.ts +31 -0
  394. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +2 -2
  395. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +40 -4
  396. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
  397. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -1
  398. package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +54 -0
  399. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.css +0 -0
  400. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +75 -0
  401. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +63 -0
  402. package/src/libs/ui/inputs/src/index.ts +14 -15
  403. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
  404. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
  405. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
  406. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
  407. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
  408. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +13 -0
  409. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  410. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  411. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  412. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  413. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
  414. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +29 -0
  415. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -1
  416. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +16 -1
  417. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +5 -21
  418. package/src/libs/ui/layout/src/index.ts +5 -4
  419. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -0
  420. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +18 -0
  421. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +16 -0
  422. package/src/libs/util/shared/src/lib/links/link-utils.ts +21 -0
  423. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  424. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  425. package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
  426. package/tailwind.base.css +36 -0
  427. package/translations/de.json +46 -0
  428. package/translations/en.json +46 -0
  429. package/translations/es.json +46 -0
  430. package/translations/fr.json +46 -0
  431. package/translations/it.json +46 -0
  432. package/translations/nl.json +46 -0
  433. package/translations/pt.json +46 -0
  434. package/translations/sk.json +46 -0
  435. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +0 -52
  436. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +0 -14
  437. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.mjs +0 -48
  438. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.mjs +0 -18
  439. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.mjs +0 -64
  440. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +0 -130
  441. package/esm2022/libs/api/metadata-converter/src/lib/metadata-base.mapper.mjs +0 -14
  442. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  443. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +0 -30
  444. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.mjs +0 -11
  445. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.mjs +0 -27
  446. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.mjs +0 -11
  447. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.mjs +0 -27
  448. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.mjs +0 -49
  449. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +0 -11
  450. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +0 -11
  451. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +0 -76
  452. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +0 -2
  453. package/esm2022/libs/ui/inputs/src/lib/form-field/index.mjs +0 -10
  454. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +0 -1
  455. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +0 -1
  456. package/libs/api/metadata-converter/src/lib/iso19139/codelists/role.mapper.d.ts.map +0 -1
  457. package/libs/api/metadata-converter/src/lib/iso19139/codelists/status.mapper.d.ts.map +0 -1
  458. package/libs/api/metadata-converter/src/lib/iso19139/codelists/update-frequency.mapper.d.ts.map +0 -1
  459. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts +0 -4
  460. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +0 -1
  461. package/libs/api/metadata-converter/src/lib/metadata-base.mapper.d.ts.map +0 -1
  462. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  463. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  464. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +0 -1
  465. package/libs/ui/inputs/src/lib/form-field/form-field-array/form-field-array.component.d.ts.map +0 -1
  466. package/libs/ui/inputs/src/lib/form-field/form-field-file/form-field-file.component.d.ts.map +0 -1
  467. package/libs/ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.d.ts.map +0 -1
  468. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts +0 -11
  469. package/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.d.ts.map +0 -1
  470. package/libs/ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.d.ts.map +0 -1
  471. package/libs/ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +0 -1
  472. package/libs/ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +0 -1
  473. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +0 -1
  474. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +0 -1
  475. package/libs/ui/inputs/src/lib/form-field/index.d.ts.map +0 -1
  476. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +0 -196
  477. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
  478. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.html +0 -11
  479. package/src/libs/ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.ts +0 -15
  480. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.html +0 -68
  481. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +0 -80
  482. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.d.ts +0 -0
  483. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.d.ts +0 -0
  484. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.d.ts +0 -0
  485. /package/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.d.ts +0 -0
  486. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.d.ts +0 -0
  487. /package/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.d.ts +0 -0
  488. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/keyword.mapper.ts +0 -0
  489. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/role.mapper.ts +0 -0
  490. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/status.mapper.ts +0 -0
  491. /package/src/libs/api/metadata-converter/src/lib/iso19139/{codelists → utils}/update-frequency.mapper.ts +0 -0
  492. /package/src/libs/feature/editor/src/lib/{record-form/record-form.component.css → components/overview-upload/overview-upload.component.css} +0 -0
  493. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.css +0 -0
  494. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-array/form-field-array.component.html +0 -0
  495. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.css +0 -0
  496. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-file/form-field-file.component.html +0 -0
  497. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-object/form-field-object.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css} +0 -0
  498. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-rich/form-field-rich.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.css} +0 -0
  499. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-object/form-field-object.component.html +0 -0
  500. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-simple/form-field-simple.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css} +0 -0
  501. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.css} +0 -0
  502. /package/src/libs/{ui/inputs/src/lib/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.css} +0 -0
  503. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-simple/form-field-simple.component.html +0 -0
  504. /package/src/libs/{ui/inputs/src/lib/form-field/form-field.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.css} +0 -0
  505. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +0 -0
  506. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field-temporal-extent/form-field-temporal-extent.component.html +0 -0
  507. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/form-field.model.ts +0 -0
  508. /package/src/libs/{ui/inputs/src/lib → feature/editor/src/lib/components/record-form}/form-field/index.ts +0 -0
package/esm2022/index.mjs CHANGED
@@ -3,6 +3,7 @@ export * from './libs/api/metadata-converter/src';
3
3
  export * from './libs/api/repository/src';
4
4
  export * from './libs/feature/auth/src';
5
5
  export * from './libs/feature/map/src';
6
+ export * from './libs/feature/notifications/src';
6
7
  export * from './libs/feature/search/src';
7
8
  export * from './libs/feature/record/src';
8
9
  export * from './libs/feature/dataviz/src';
@@ -21,4 +22,4 @@ export * from './libs/util/shared/src';
21
22
  export * from './libs/util/i18n/src';
22
23
  export * from './libs/util/app-config/src';
23
24
  export * from './libs/util/data-fetcher/src';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjb250YWlucyBldmVyeXRoaW5nIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgTlBNIHBhY2thZ2UhXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvYXV0aC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9tYXAvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL3JlY29yZC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9kYXRhdml6L3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL2NhdGFsb2cvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL3JvdXRlci9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvbWFwL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9jYXRhbG9nL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9kYXRhdml6L3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9zZWFyY2gvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2lucHV0cy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvZWxlbWVudHMvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2xheW91dC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdXRpbC9hcHAtY29uZmlnL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMnXG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDhCQUE4QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGV2ZXJ5dGhpbmcgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBOUE0gcGFja2FnZSFcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9hdXRoL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL21hcC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9ub3RpZmljYXRpb25zL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9jYXRhbG9nL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9yb3V0ZXIvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL21hcC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvY2F0YWxvZy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvZGF0YXZpei9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvc2VhcmNoL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS93aWRnZXRzL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9pbnB1dHMvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2VsZW1lbnRzL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9sYXlvdXQvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91dGlsL2kxOG4vc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3V0aWwvYXBwLWNvbmZpZy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjJ1xuIl19
@@ -1,5 +1,5 @@
1
- export * from './lib/iso19139/converter';
2
- export * from './lib/gn4/gn4.metadata.mapper';
3
- export * from './lib/gn4/atomic-operations';
4
- export * from './lib/gn4/types';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsaUJBQWlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9pc28xOTEzOS9jb252ZXJ0ZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbjQvZ240Lm1ldGFkYXRhLm1hcHBlcidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2duNC9hdG9taWMtb3BlcmF0aW9ucydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2duNC90eXBlcydcbiJdfQ==
1
+ export * from './lib/iso19139';
2
+ export * from './lib/iso19115-3';
3
+ export * from './lib/find-converter';
4
+ export * from './lib/gn4';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMzknXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pc28xOTExNS0zJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmluZC1jb252ZXJ0ZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbjQnXG4iXX0=
@@ -0,0 +1,14 @@
1
+ export class MetadataMapperContext {
2
+ }
3
+ export class BaseConverter {
4
+ constructor(ctx = new MetadataMapperContext()) {
5
+ this.ctx = ctx;
6
+ }
7
+ readRecords(documents) {
8
+ return Promise.all(documents.map((doc) => this.readRecord(doc)));
9
+ }
10
+ writeRecords(records) {
11
+ return Promise.all(records.map((doc) => this.writeRecord(doc)));
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9iYXNlLmNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8scUJBQXFCO0NBRWpDO0FBRUQsTUFBTSxPQUFnQixhQUFhO0lBQ2pDLFlBQ1ksTUFBNkIsSUFBSSxxQkFBcUIsRUFBRTtRQUF4RCxRQUFHLEdBQUgsR0FBRyxDQUFxRDtJQUNqRSxDQUFDO0lBSUosV0FBVyxDQUFDLFNBQWM7UUFDeEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBd0I7UUFDbkMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIERhdGFzZXRSZWNvcmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhTWFwcGVyQ29udGV4dCB7XG4gIHJlYWRvbmx5IGxvY2F0aW9uP1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbnZlcnRlcjxGPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjdHg6IE1ldGFkYXRhTWFwcGVyQ29udGV4dCA9IG5ldyBNZXRhZGF0YU1hcHBlckNvbnRleHQoKVxuICApIHt9XG5cbiAgYWJzdHJhY3QgcmVhZFJlY29yZChkb2N1bWVudDogRik6IFByb21pc2U8Q2F0YWxvZ1JlY29yZD5cbiAgYWJzdHJhY3Qgd3JpdGVSZWNvcmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByZWZlcmVuY2U/OiBGKTogUHJvbWlzZTxGPlxuICByZWFkUmVjb3Jkcyhkb2N1bWVudHM6IEZbXSk6IFByb21pc2U8Q2F0YWxvZ1JlY29yZFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGRvY3VtZW50cy5tYXAoKGRvYykgPT4gdGhpcy5yZWFkUmVjb3JkKGRvYykpKVxuICB9XG4gIHdyaXRlUmVjb3JkcyhyZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10pOiBQcm9taXNlPEZbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChyZWNvcmRzLm1hcCgoZG9jKSA9PiB0aGlzLndyaXRlUmVjb3JkKGRvYykpKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { Iso19139Converter } from './iso19139';
2
+ import { Iso191153Converter } from './iso19115-3';
3
+ export function findConverterForDocument(document) {
4
+ if (document.indexOf('mdb:MD_Metadata') > 0) {
5
+ return new Iso191153Converter();
6
+ }
7
+ else if (document.indexOf('gmd:MD_Metadata') > 0) {
8
+ return new Iso19139Converter();
9
+ }
10
+ else {
11
+ throw new Error(`No suitable converter found for the following document:
12
+ ${document.substring(0, 400)}...`);
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9maW5kLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRWpELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsUUFBZ0I7SUFFaEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzNDLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFBO0tBQ2hDO1NBQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFBO0tBQy9CO1NBQU07UUFDTCxNQUFNLElBQUksS0FBSyxDQUFDO0VBQ2xCLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUMvQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJc28xOTEzOUNvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMzknXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IElzbzE5MTE1M0NvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMTUtMydcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChcbiAgZG9jdW1lbnQ6IHN0cmluZ1xuKTogQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgaWYgKGRvY3VtZW50LmluZGV4T2YoJ21kYjpNRF9NZXRhZGF0YScpID4gMCkge1xuICAgIHJldHVybiBuZXcgSXNvMTkxMTUzQ29udmVydGVyKClcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5pbmRleE9mKCdnbWQ6TURfTWV0YWRhdGEnKSA+IDApIHtcbiAgICByZXR1cm4gbmV3IElzbzE5MTM5Q29udmVydGVyKClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1aXRhYmxlIGNvbnZlcnRlciBmb3VuZCBmb3IgdGhlIGZvbGxvd2luZyBkb2N1bWVudDpcbiR7ZG9jdW1lbnQuc3Vic3RyaW5nKDAsIDQwMCl9Li4uYClcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
- import { getRoleFromRoleCode } from '../iso19139/codelists/role.mapper';
2
- import { getKeywordTypeFromKeywordTypeCode } from '../iso19139/codelists/keyword.mapper';
1
+ import { getRoleFromRoleCode } from '../iso19139/utils/role.mapper';
2
+ import { getKeywordTypeFromKeywordTypeCode } from '../iso19139/utils/keyword.mapper';
3
3
  export const selectField = (source, fieldName) => source !== null && fieldName in source ? source[fieldName] : null;
4
4
  export const selectFallbackFields = (source, ...fieldNames) => fieldNames.reduce((prev, curr) => (prev === null ? selectField(source, curr) : prev), null);
5
5
  export const selectFallback = (field, fallback) => field === null ? fallback : field;
@@ -73,4 +73,4 @@ export const mapKeywords = (thesauri, language) => {
73
73
  }
74
74
  return keywords;
75
75
  };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljLW9wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvYXRvbWljLW9wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFdkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFJeEYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLE1BQThCLEVBQzlCLFNBQWlCLEVBQ1AsRUFBRSxDQUNaLE1BQU0sS0FBSyxJQUFJLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFFMUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsTUFBOEIsRUFDOUIsR0FBRyxVQUFvQixFQUNiLEVBQUUsQ0FDWixVQUFVLENBQUMsTUFBTSxDQUNmLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDbEUsSUFBSSxDQUNMLENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBTyxLQUFRLEVBQUUsUUFBVyxFQUFTLEVBQUUsQ0FDbkUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFFbkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsTUFBOEIsRUFDOUIsS0FBYSxFQUNILEVBQUUsQ0FDWixjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0s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LFdBQVcsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUMxRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ2xELFNBQVMsR0FBRztnQkFDVixFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3BCLENBQUE7U0FDRjtRQUNELEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUMzQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLEtBQUssRUFBRSxxQkFBcUIsQ0FBUyxPQUFPLEVBQUUsUUFBUSxDQUFDO2dCQUN2RCxJQUFJLEVBQUUsaUNBQWlDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDM0QsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQ2hDLENBQUMsQ0FBQTtTQUNIO0tBQ0Y7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmRpdmlkdWFsLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IGdldFJvbGVGcm9tUm9sZUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS9jb2RlbGlzdHMvcm9sZS5tYXBwZXInXG5pbXBvcnQgeyBUaGVzYXVydXMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0S2V5d29yZFR5cGVGcm9tS2V5d29yZFR5cGVDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvY29kZWxpc3RzL2tleXdvcmQubWFwcGVyJ1xuXG5leHBvcnQgdHlwZSBTb3VyY2VXaXRoVW5rbm93blByb3BzID0geyBba2V5OiBzdHJpbmddOiB1bmtub3duIH1cblxuZXhwb3J0IGNvbnN0IHNlbGVjdEZpZWxkID0gPFQ+KFxuICBzb3VyY2U6IFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIGZpZWxkTmFtZTogc3RyaW5nXG4pOiBUIHwgbnVsbCA9PlxuICBzb3VyY2UgIT09IG51bGwgJiYgZmllbGROYW1lIGluIHNvdXJjZSA/IChzb3VyY2VbZmllbGROYW1lXSBhcyBUKSA6IG51bGxcblxuZXhwb3J0IGNvbnN0IHNlbGVjdEZhbGxiYWNrRmllbGRzID0gPFQ+KFxuICBzb3VyY2U6IFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIC4uLmZpZWxkTmFtZXM6IHN0cmluZ1tdXG4pOiBUIHwgbnVsbCA9PlxuICBmaWVsZE5hbWVzLnJlZHVjZTxUPihcbiAgICAocHJldiwgY3VycikgPT4gKHByZXYgPT09IG51bGwgPyBzZWxlY3RGaWVsZChzb3VyY2UsIGN1cnIpIDogcHJldiksXG4gICAgbnVsbFxuICApXG5cbmV4cG9ydCBjb25zdCBzZWxlY3RGYWxsYmFjayA9IDxULCBVPihmaWVsZDogVCwgZmFsbGJhY2s6IFUpOiBUIHwgVSA9PlxuICBmaWVsZCA9PT0gbnVsbCA/IGZhbGxiYWNrIDogZmllbGRcblxuZXhwb3J0IGNvbnN0IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZSA9IDxUPihcbiAgc291cmNlOiBTb3VyY2VXaXRoVW5rbm93blByb3BzLFxuICBsYW5nMzogc3RyaW5nXG4pOiBUIHwgbnVsbCA9PlxuICBzZWxlY3RGYWxsYmFjayhzZWxlY3RGaWVsZChzb3VyY2UsIGxhbmczKSwgc2VsZWN0RmllbGQoc291cmNlLCAnZGVmYXVsdCcpKVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0VHJhbnNsYXRlZEZpZWxkID0gPFQ+KFxuICBzb3VyY2U6IFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICBsYW5nMzogc3RyaW5nXG4pOiBUIHwgbnVsbCA9PiBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCBmaWVsZE5hbWUpLCBsYW5nMylcblxuZXhwb3J0IGNvbnN0IHRvRGF0ZSA9IChmaWVsZCkgPT4gbmV3IERhdGUoZmllbGQpXG5cbmV4cG9ydCBjb25zdCBnZXRGaXJzdFZhbHVlID0gKGZpZWxkKSA9PlxuICBBcnJheS5pc0FycmF5KGZpZWxkKSA/IGZpZWxkWzBdIDogZmllbGRcblxuZXhwb3J0IGNvbnN0IGdldEFycmF5SXRlbSA9IChmaWVsZCwgaW5kZXgpID0+XG4gIEFycmF5LmlzQXJyYXkoZmllbGQpICYmIGZpZWxkW2luZGV4XSAhPT0gdW5kZWZpbmVkID8gZmllbGRbaW5kZXhdIDogbnVsbFxuXG5leHBvcnQgY29uc3QgZ2V0QXNBcnJheSA9IChmaWVsZCkgPT5cbiAgQXJyYXkuaXNBcnJheShmaWVsZCkgPyBmaWVsZCA6IGZpZWxkICE9PSBudWxsID8gW2ZpZWxkXSA6IFtdXG5cbmV4cG9ydCBjb25zdCBnZXRBc1VybCA9IChcbiAgZmllbGQsXG4gIGxvY2F0aW9uOiBzdHJpbmcgPSB3aW5kb3cubG9jYXRpb24udG9TdHJpbmcoKVxuKSA9PiB7XG4gIC8vIGFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSB2YWxpZCB1cmwsIGV2ZW4gdGhvdWdoIGl0IGNvdWxkIGJlIGNvbnNpZGVyZWQgYW4gZW1wdHkgcGF0aCB0byB0aGUgcm9vdFxuICBpZiAoZmllbGQgPT09ICcnIHx8IGZpZWxkID09PSBudWxsKSByZXR1cm4gbnVsbFxuICBsZXQgdXJsID0gZmllbGRcbiAgaWYgKGZpZWxkLm1hdGNoKC9ed3d3XFwuLykpIHVybCA9IGBodHRwczovLyR7ZmllbGR9YFxuICB0cnkge1xuICAgIHJldHVybiBuZXcgVVJMKHVybCwgbG9jYXRpb24pXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1hcExvZ28gPSAoc291cmNlOiBTb3VyY2VXaXRoVW5rbm93blByb3BzKSA9PiB7XG4gIGNvbnN0IGxvZ28gPSBzZWxlY3RGYWxsYmFja0ZpZWxkcyhzb3VyY2UsICdsb2dvVXJsJywgJ2xvZ28nKVxuICByZXR1cm4gbG9nbyA/IGdldEFzVXJsKGAvZ2VvbmV0d29yayR7bG9nb31gKSA6IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IG1hcE9yZ2FuaXphdGlvbiA9IChcbiAgc291cmNlQ29udGFjdDogU291cmNlV2l0aFVua25vd25Qcm9wcyxcbiAgbGFuZzM6IHN0cmluZ1xuKTogT3JnYW5pemF0aW9uID0+IHtcbiAgY29uc3Qgd2Vic2l0ZSA9IGdldEFzVXJsKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlQ29udGFjdCwgJ3dlYnNpdGUnKSlcbiAgY29uc3QgbG9nb1VybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlQ29udGFjdCwgJ2xvZ28nKSlcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdvcmdhbmlzYXRpb25PYmplY3QnLCBsYW5nMyksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdvcmdhbmlzYXRpb24nKVxuICAgICksXG4gICAgLi4uKGxvZ29VcmwgJiYgeyBsb2dvVXJsIH0pLFxuICAgIC4uLih3ZWJzaXRlICYmIHsgd2Vic2l0ZSB9KSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWFwQ29udGFjdCA9IChcbiAgc291cmNlQ29udGFjdDogU291cmNlV2l0aFVua25vd25Qcm9wcyxcbiAgbGFuZzM6IHN0cmluZ1xuKTogSW5kaXZpZHVhbCA9PiB7XG4gIGNvbnN0IGFkZHJlc3MgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdhZGRyZXNzJylcbiAgY29uc3QgcGhvbmUgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdwaG9uZScpXG4gIHJldHVybiB7XG4gICAgbGFzdE5hbWU6IHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlQ29udGFjdCwgJ2luZGl2aWR1YWwnKSxcbiAgICBvcmdhbml6YXRpb246IG1hcE9yZ2FuaXphdGlvbihzb3VyY2VDb250YWN0LCBsYW5nMyksXG4gICAgZW1haWw6IHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlQ29udGFjdCwgJ2VtYWlsJyksXG4gICAgcm9sZTogZ2V0Um9sZUZyb21Sb2xlQ29kZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdyb2xlJykpLFxuICAgIC4uLihhZGRyZXNzICYmIHsgYWRkcmVzcyB9KSxcbiAgICAuLi4ocGhvbmUgJiYgeyBwaG9uZSB9KSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWFwS2V5d29yZHMgPSAodGhlc2F1cmk6IFRoZXNhdXJ1c1tdLCBsYW5ndWFnZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGtleXdvcmRzID0gW11cbiAgZm9yIChjb25zdCB0aGVzYXVydXNJZCBpbiB0aGVzYXVyaSkge1xuICAgIGNvbnN0IHJhd1RoZXNhdXJ1cyA9IHRoZXNhdXJpW3RoZXNhdXJ1c0lkXVxuICAgIGxldCB0aGVzYXVydXMgPSBudWxsXG4gICAgaWYgKHJhd1RoZXNhdXJ1cy5pZCkge1xuICAgICAgY29uc3QgdGhlc2F1cnVzU291cmNlOiBTb3VyY2VXaXRoVW5rbm93blByb3BzID0geyAuLi5yYXdUaGVzYXVydXMgfVxuICAgICAgY29uc3QgdXJsID0gZ2V0QXNVcmwoc2VsZWN0RmllbGQodGhlc2F1cnVzU291cmNlLCAnbGluaycpKVxuICAgICAgY29uc3QgbmFtZSA9IHNlbGVjdEZpZWxkKHRoZXNhdXJ1c1NvdXJjZSwgJ3RpdGxlJylcbiAgICAgIHRoZXNhdXJ1cyA9IHtcbiAgICAgICAgaWQ6IHJhd1RoZXNhdXJ1cy5pZCxcbiAgICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgICAuLi4odXJsICYmIHsgdXJsIH0pLFxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2YgcmF3VGhlc2F1cnVzLmtleXdvcmRzKSB7XG4gICAgICBrZXl3b3Jkcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZTxzdHJpbmc+KGtleXdvcmQsIGxhbmd1YWdlKSxcbiAgICAgICAgdHlwZTogZ2V0S2V5d29yZFR5cGVGcm9tS2V5d29yZFR5cGVDb2RlKHJhd1RoZXNhdXJ1cy50aGVtZSksXG4gICAgICAgIC4uLih0aGVzYXVydXMgJiYgeyB0aGVzYXVydXMgfSksXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBrZXl3b3Jkc1xufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljLW9wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvYXRvbWljLW9wZXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFFbkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFJcEYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLE1BQThCLEVBQzlCLFNBQWlCLEVBQ1AsRUFBRSxDQUNaLE1BQU0sS0FBSyxJQUFJLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFFMUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsTUFBOEIsRUFDOUIsR0FBRyxVQUFvQixFQUNiLEVBQUUsQ0FDWixVQUFVLENBQUMsTUFBTSxDQUNmLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDbEUsSUFBSSxDQUNMLENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBTyxLQUFRLEVBQUUsUUFBVyxFQUFTLEVBQUUsQ0FDbkUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFFbkMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsTUFBOEIsRUFDOUIsS0FBYSxFQUNILEVBQUUsQ0FDWixjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0s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LFdBQVcsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUMxRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ2xELFNBQVMsR0FBRztnQkFDVixFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3BCLENBQUE7U0FDRjtRQUNELEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUMzQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLEtBQUssRUFBRSxxQkFBcUIsQ0FBUyxPQUFPLEVBQUUsUUFBUSxDQUFDO2dCQUN2RCxJQUFJLEVBQUUsaUNBQWlDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDM0QsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQ2hDLENBQUMsQ0FBQTtTQUNIO0tBQ0Y7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmRpdmlkdWFsLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IGdldFJvbGVGcm9tUm9sZUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9yb2xlLm1hcHBlcidcbmltcG9ydCB7IFRoZXNhdXJ1cyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBnZXRLZXl3b3JkVHlwZUZyb21LZXl3b3JkVHlwZUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9rZXl3b3JkLm1hcHBlcidcblxuZXhwb3J0IHR5cGUgU291cmNlV2l0aFVua25vd25Qcm9wcyA9IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RGaWVsZCA9IDxUPihcbiAgc291cmNlOiBTb3VyY2VXaXRoVW5rbm93blByb3BzLFxuICBmaWVsZE5hbWU6IHN0cmluZ1xuKTogVCB8IG51bGwgPT5cbiAgc291cmNlICE9PSBudWxsICYmIGZpZWxkTmFtZSBpbiBzb3VyY2UgPyAoc291cmNlW2ZpZWxkTmFtZV0gYXMgVCkgOiBudWxsXG5cbmV4cG9ydCBjb25zdCBzZWxlY3RGYWxsYmFja0ZpZWxkcyA9IDxUPihcbiAgc291cmNlOiBTb3VyY2VXaXRoVW5rbm93blByb3BzLFxuICAuLi5maWVsZE5hbWVzOiBzdHJpbmdbXVxuKTogVCB8IG51bGwgPT5cbiAgZmllbGROYW1lcy5yZWR1Y2U8VD4oXG4gICAgKHByZXYsIGN1cnIpID0+IChwcmV2ID09PSBudWxsID8gc2VsZWN0RmllbGQoc291cmNlLCBjdXJyKSA6IHByZXYpLFxuICAgIG51bGxcbiAgKVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0RmFsbGJhY2sgPSA8VCwgVT4oZmllbGQ6IFQsIGZhbGxiYWNrOiBVKTogVCB8IFUgPT5cbiAgZmllbGQgPT09IG51bGwgPyBmYWxsYmFjayA6IGZpZWxkXG5cbmV4cG9ydCBjb25zdCBzZWxlY3RUcmFuc2xhdGVkVmFsdWUgPSA8VD4oXG4gIHNvdXJjZTogU291cmNlV2l0aFVua25vd25Qcm9wcyxcbiAgbGFuZzM6IHN0cmluZ1xuKTogVCB8IG51bGwgPT5cbiAgc2VsZWN0RmFsbGJhY2soc2VsZWN0RmllbGQoc291cmNlLCBsYW5nMyksIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2RlZmF1bHQnKSlcblxuZXhwb3J0IGNvbnN0IHNlbGVjdFRyYW5zbGF0ZWRGaWVsZCA9IDxUPihcbiAgc291cmNlOiBTb3VyY2VXaXRoVW5rbm93blByb3BzLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgbGFuZzM6IHN0cmluZ1xuKTogVCB8IG51bGwgPT4gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgZmllbGROYW1lKSwgbGFuZzMpXG5cbmV4cG9ydCBjb25zdCB0b0RhdGUgPSAoZmllbGQpID0+IG5ldyBEYXRlKGZpZWxkKVxuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RWYWx1ZSA9IChmaWVsZCkgPT5cbiAgQXJyYXkuaXNBcnJheShmaWVsZCkgPyBmaWVsZFswXSA6IGZpZWxkXG5cbmV4cG9ydCBjb25zdCBnZXRBcnJheUl0ZW0gPSAoZmllbGQsIGluZGV4KSA9PlxuICBBcnJheS5pc0FycmF5KGZpZWxkKSAmJiBmaWVsZFtpbmRleF0gIT09IHVuZGVmaW5lZCA/IGZpZWxkW2luZGV4XSA6IG51bGxcblxuZXhwb3J0IGNvbnN0IGdldEFzQXJyYXkgPSAoZmllbGQpID0+XG4gIEFycmF5LmlzQXJyYXkoZmllbGQpID8gZmllbGQgOiBmaWVsZCAhPT0gbnVsbCA/IFtmaWVsZF0gOiBbXVxuXG5leHBvcnQgY29uc3QgZ2V0QXNVcmwgPSAoXG4gIGZpZWxkLFxuICBsb2NhdGlvbjogc3RyaW5nID0gd2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKClcbikgPT4ge1xuICAvLyBhbiBlbXB0eSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgdXJsLCBldmVuIHRob3VnaCBpdCBjb3VsZCBiZSBjb25zaWRlcmVkIGFuIGVtcHR5IHBhdGggdG8gdGhlIHJvb3RcbiAgaWYgKGZpZWxkID09PSAnJyB8fCBmaWVsZCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgbGV0IHVybCA9IGZpZWxkXG4gIGlmIChmaWVsZC5tYXRjaCgvXnd3d1xcLi8pKSB1cmwgPSBgaHR0cHM6Ly8ke2ZpZWxkfWBcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTCh1cmwsIGxvY2F0aW9uKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYXBMb2dvID0gKHNvdXJjZTogU291cmNlV2l0aFVua25vd25Qcm9wcykgPT4ge1xuICBjb25zdCBsb2dvID0gc2VsZWN0RmFsbGJhY2tGaWVsZHMoc291cmNlLCAnbG9nb1VybCcsICdsb2dvJylcbiAgcmV0dXJuIGxvZ28gPyBnZXRBc1VybChgL2dlb25ldHdvcmske2xvZ299YCkgOiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBtYXBPcmdhbml6YXRpb24gPSAoXG4gIHNvdXJjZUNvbnRhY3Q6IFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIGxhbmczOiBzdHJpbmdcbik6IE9yZ2FuaXphdGlvbiA9PiB7XG4gIGNvbnN0IHdlYnNpdGUgPSBnZXRBc1VybChzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICd3ZWJzaXRlJykpXG4gIGNvbnN0IGxvZ29VcmwgPSBnZXRBc1VybChzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdsb2dvJykpXG4gIHJldHVybiB7XG4gICAgbmFtZTogc2VsZWN0RmFsbGJhY2soXG4gICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihzb3VyY2VDb250YWN0LCAnb3JnYW5pc2F0aW9uT2JqZWN0JywgbGFuZzMpLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VDb250YWN0LCAnb3JnYW5pc2F0aW9uJylcbiAgICApLFxuICAgIC4uLihsb2dvVXJsICYmIHsgbG9nb1VybCB9KSxcbiAgICAuLi4od2Vic2l0ZSAmJiB7IHdlYnNpdGUgfSksXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1hcENvbnRhY3QgPSAoXG4gIHNvdXJjZUNvbnRhY3Q6IFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIGxhbmczOiBzdHJpbmdcbik6IEluZGl2aWR1YWwgPT4ge1xuICBjb25zdCBhZGRyZXNzID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VDb250YWN0LCAnYWRkcmVzcycpXG4gIGNvbnN0IHBob25lID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VDb250YWN0LCAncGhvbmUnKVxuICByZXR1cm4ge1xuICAgIGxhc3ROYW1lOiBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdpbmRpdmlkdWFsJyksXG4gICAgb3JnYW5pemF0aW9uOiBtYXBPcmdhbml6YXRpb24oc291cmNlQ29udGFjdCwgbGFuZzMpLFxuICAgIGVtYWlsOiBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUNvbnRhY3QsICdlbWFpbCcpLFxuICAgIHJvbGU6IGdldFJvbGVGcm9tUm9sZUNvZGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VDb250YWN0LCAncm9sZScpKSxcbiAgICAuLi4oYWRkcmVzcyAmJiB7IGFkZHJlc3MgfSksXG4gICAgLi4uKHBob25lICYmIHsgcGhvbmUgfSksXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IG1hcEtleXdvcmRzID0gKHRoZXNhdXJpOiBUaGVzYXVydXNbXSwgbGFuZ3VhZ2U6IHN0cmluZykgPT4ge1xuICBjb25zdCBrZXl3b3JkcyA9IFtdXG4gIGZvciAoY29uc3QgdGhlc2F1cnVzSWQgaW4gdGhlc2F1cmkpIHtcbiAgICBjb25zdCByYXdUaGVzYXVydXMgPSB0aGVzYXVyaVt0aGVzYXVydXNJZF1cbiAgICBsZXQgdGhlc2F1cnVzID0gbnVsbFxuICAgIGlmIChyYXdUaGVzYXVydXMuaWQpIHtcbiAgICAgIGNvbnN0IHRoZXNhdXJ1c1NvdXJjZTogU291cmNlV2l0aFVua25vd25Qcm9wcyA9IHsgLi4ucmF3VGhlc2F1cnVzIH1cbiAgICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkKHRoZXNhdXJ1c1NvdXJjZSwgJ2xpbmsnKSlcbiAgICAgIGNvbnN0IG5hbWUgPSBzZWxlY3RGaWVsZCh0aGVzYXVydXNTb3VyY2UsICd0aXRsZScpXG4gICAgICB0aGVzYXVydXMgPSB7XG4gICAgICAgIGlkOiByYXdUaGVzYXVydXMuaWQsXG4gICAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgICAgLi4uKHVybCAmJiB7IHVybCB9KSxcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIHJhd1RoZXNhdXJ1cy5rZXl3b3Jkcykge1xuICAgICAga2V5d29yZHMucHVzaCh7XG4gICAgICAgIGxhYmVsOiBzZWxlY3RUcmFuc2xhdGVkVmFsdWU8c3RyaW5nPihrZXl3b3JkLCBsYW5ndWFnZSksXG4gICAgICAgIHR5cGU6IGdldEtleXdvcmRUeXBlRnJvbUtleXdvcmRUeXBlQ29kZShyYXdUaGVzYXVydXMudGhlbWUpLFxuICAgICAgICAuLi4odGhlc2F1cnVzICYmIHsgdGhlc2F1cnVzIH0pLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4ga2V5d29yZHNcbn1cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Gn4FieldMapper } from './gn4.field.mapper';
2
+ import { lastValueFrom } from 'rxjs';
3
+ import { OrganizationsServiceInterface } from '../../../../../../libs/common/domain/src/lib/organizations.service.interface';
4
+ import { BaseConverter } from '../base.converter';
5
+ import { Injectable } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./gn4.field.mapper";
8
+ import * as i2 from "../../../../../../libs/common/domain/src/lib/organizations.service.interface";
9
+ export class Gn4Converter extends BaseConverter {
10
+ constructor(fieldMapper, orgsService) {
11
+ super();
12
+ this.fieldMapper = fieldMapper;
13
+ this.orgsService = orgsService;
14
+ }
15
+ readRecord(document) {
16
+ const { _source } = document;
17
+ const emptyRecord = {
18
+ kind: 'dataset',
19
+ status: null,
20
+ lineage: null,
21
+ recordUpdated: null,
22
+ recordPublished: null,
23
+ ownerOrganization: null,
24
+ licenses: [],
25
+ legalConstraints: [],
26
+ securityConstraints: [],
27
+ otherConstraints: [],
28
+ contacts: [],
29
+ contactsForResource: [],
30
+ keywords: [],
31
+ topics: [],
32
+ spatialExtents: [],
33
+ temporalExtents: [],
34
+ overviews: [],
35
+ languages: [],
36
+ };
37
+ const record = Object.keys(_source).reduce((prev, fieldName) => this.fieldMapper.getMappingFn(fieldName)(prev, _source), emptyRecord);
38
+ return lastValueFrom(this.orgsService.addOrganizationToRecordFromSource(_source, record));
39
+ }
40
+ writeRecord(record) {
41
+ throw new Error('not implemented');
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4Converter, deps: [{ token: i1.Gn4FieldMapper }, { token: i2.OrganizationsServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
44
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4Converter, providedIn: 'root' }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4Converter, decorators: [{
47
+ type: Injectable,
48
+ args: [{
49
+ providedIn: 'root',
50
+ }]
51
+ }], ctorParameters: function () { return [{ type: i1.Gn4FieldMapper }, { type: i2.OrganizationsServiceInterface }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhFQUE4RSxDQUFBO0FBRTVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7O0FBTTFDLE1BQU0sT0FBTyxZQUFhLFNBQVEsYUFBd0I7SUFDeEQsWUFDVSxXQUEyQixFQUMzQixXQUEwQztRQUVsRCxLQUFLLEVBQUUsQ0FBQTtRQUhDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBK0I7SUFHcEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFtQjtRQUM1QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFBO1FBQzVCLE1BQU0sV0FBVyxHQUEyQjtZQUMxQyxJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYixhQUFhLEVBQUUsSUFBSTtZQUNuQixlQUFlLEVBQUUsSUFBSTtZQUNyQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLFFBQVEsRUFBRSxFQUFFO1lBQ1osZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsUUFBUSxFQUFFLEVBQUU7WUFDWixtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLFFBQVEsRUFBRSxFQUFFO1lBQ1osTUFBTSxFQUFFLEVBQUU7WUFDVixjQUFjLEVBQUUsRUFBRTtZQUNsQixlQUFlLEVBQUUsRUFBRTtZQUNuQixTQUFTLEVBQUUsRUFBRTtZQUNiLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFrQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDdkQsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUN6RCxXQUFXLENBQ1osQ0FBQTtRQUNELE9BQU8sYUFBYSxDQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FDcEUsQ0FBQTtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsTUFBcUI7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7OEdBMUNVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR240RmllbGRNYXBwZXIgfSBmcm9tICcuL2duNC5maWVsZC5tYXBwZXInXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvb3JnYW5pemF0aW9ucy5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi4vYmFzZS5jb252ZXJ0ZXInXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEduNFJlY29yZCB9IGZyb20gJy4vdHlwZXMnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHbjRDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPEduNFJlY29yZD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpZWxkTWFwcGVyOiBHbjRGaWVsZE1hcHBlcixcbiAgICBwcml2YXRlIG9yZ3NTZXJ2aWNlOiBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZVxuICApIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICByZWFkUmVjb3JkKGRvY3VtZW50OiBHbjRSZWNvcmQpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCB7IF9zb3VyY2UgfSA9IGRvY3VtZW50XG4gICAgY29uc3QgZW1wdHlSZWNvcmQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4gPSB7XG4gICAgICBraW5kOiAnZGF0YXNldCcsXG4gICAgICBzdGF0dXM6IG51bGwsXG4gICAgICBsaW5lYWdlOiBudWxsLFxuICAgICAgcmVjb3JkVXBkYXRlZDogbnVsbCxcbiAgICAgIHJlY29yZFB1Ymxpc2hlZDogbnVsbCxcbiAgICAgIG93bmVyT3JnYW5pemF0aW9uOiBudWxsLFxuICAgICAgbGljZW5zZXM6IFtdLFxuICAgICAgbGVnYWxDb25zdHJhaW50czogW10sXG4gICAgICBzZWN1cml0eUNvbnN0cmFpbnRzOiBbXSxcbiAgICAgIG90aGVyQ29uc3RyYWludHM6IFtdLFxuICAgICAgY29udGFjdHM6IFtdLFxuICAgICAgY29udGFjdHNGb3JSZXNvdXJjZTogW10sXG4gICAgICBrZXl3b3JkczogW10sXG4gICAgICB0b3BpY3M6IFtdLFxuICAgICAgc3BhdGlhbEV4dGVudHM6IFtdLFxuICAgICAgdGVtcG9yYWxFeHRlbnRzOiBbXSxcbiAgICAgIG92ZXJ2aWV3czogW10sXG4gICAgICBsYW5ndWFnZXM6IFtdLFxuICAgIH1cbiAgICBjb25zdCByZWNvcmQ6IENhdGFsb2dSZWNvcmQgPSBPYmplY3Qua2V5cyhfc291cmNlKS5yZWR1Y2UoXG4gICAgICAocHJldiwgZmllbGROYW1lKSA9PlxuICAgICAgICB0aGlzLmZpZWxkTWFwcGVyLmdldE1hcHBpbmdGbihmaWVsZE5hbWUpKHByZXYsIF9zb3VyY2UpLFxuICAgICAgZW1wdHlSZWNvcmRcbiAgICApXG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLm9yZ3NTZXJ2aWNlLmFkZE9yZ2FuaXphdGlvblRvUmVjb3JkRnJvbVNvdXJjZShfc291cmNlLCByZWNvcmQpXG4gICAgKVxuICB9XG5cbiAgd3JpdGVSZWNvcmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogUHJvbWlzZTxHbjRSZWNvcmQ+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpXG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { getArrayItem, getAsArray, getAsUrl, getFirstValue, mapContact, mapKeywords, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, toDate, } from './atomic-operations';
2
2
  import { MetadataUrlService } from './metadata-url.service';
3
3
  import { Injectable } from '@angular/core';
4
- import { getStatusFromStatusCode } from '../iso19139/codelists/status.mapper';
5
- import { getUpdateFrequencyFromFrequencyCode } from '../iso19139/codelists/update-frequency.mapper';
4
+ import { getStatusFromStatusCode } from '../iso19139/utils/status.mapper';
5
+ import { getUpdateFrequencyFromFrequencyCode } from '../iso19139/utils/update-frequency.mapper';
6
6
  import { matchProtocol } from '../common/distribution.mapper';
7
7
  import { LANG_3_TO_2_MAPPER, LangService } from '../../../../../../libs/util/i18n/src';
8
8
  import * as i0 from "@angular/core";
@@ -59,7 +59,11 @@ export class Gn4FieldMapper {
59
59
  }),
60
60
  creationDateForResource: (output, source) => ({
61
61
  ...output,
62
- datasetCreated: toDate(getFirstValue(selectField(source, 'creationDateForResource'))),
62
+ resourceCreated: toDate(getFirstValue(selectField(source, 'creationDateForResource'))),
63
+ }),
64
+ revisionDateForResource: (output, source) => ({
65
+ ...output,
66
+ resourceUpdated: toDate(getFirstValue(selectField(source, 'revisionDateForResource'))),
63
67
  }),
64
68
  createDate: (output, source) => ({
65
69
  ...output,
@@ -300,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
300
304
  providedIn: 'root',
301
305
  }]
302
306
  }], ctorParameters: function () { return [{ type: i1.MetadataUrlService }, { type: i2.LangService }]; } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDN0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0NBQStDLENBQUE7QUFXbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7OztBQVl0RixNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLGtCQUFzQyxFQUN0QyxXQUF3QjtRQUR4Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRzFCLFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUU3QixXQUFNLEdBQW9DO1lBQ2xELEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFB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RCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxVQUFVLENBQUE7U0FDbEI7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7OEdBcldVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0QXJyYXlJdGVtLFxuICBnZXRBc0FycmF5LFxuICBnZXRBc1VybCxcbiAgZ2V0Rmlyc3RWYWx1ZSxcbiAgbWFwQ29udGFjdCxcbiAgbWFwS2V5d29yZHMsXG4gIHNlbGVjdEZhbGxiYWNrLFxuICBzZWxlY3RGYWxsYmFja0ZpZWxkcyxcbiAgc2VsZWN0RmllbGQsXG4gIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZCxcbiAgc2VsZWN0VHJhbnNsYXRlZFZhbHVlLFxuICBTb3VyY2VXaXRoVW5rbm93blByb3BzLFxuICB0b0RhdGUsXG59IGZyb20gJy4vYXRvbWljLW9wZXJhdGlvbnMnXG5pbXBvcnQgeyBNZXRhZGF0YVVybFNlcnZpY2UgfSBmcm9tICcuL21ldGFkYXRhLXVybC5zZXJ2aWNlJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBnZXRTdGF0dXNGcm9tU3RhdHVzQ29kZSB9IGZyb20gJy4uL2lzbzE5MTM5L2NvZGVsaXN0cy9zdGF0dXMubWFwcGVyJ1xuaW1wb3J0IHsgZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS9jb2RlbGlzdHMvdXBkYXRlLWZyZXF1ZW5jeS5tYXBwZXInXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBDb25zdHJhaW50LFxuICBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0RGlzdHJpYnV0aW9uVHlwZSxcbiAgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgRGF0YXNldFNwYXRpYWxFeHRlbnQsXG4gIE9ubGluZUxpbmtSZXNvdXJjZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgbWF0Y2hQcm90b2NvbCB9IGZyb20gJy4uL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyJ1xuaW1wb3J0IHsgVGhlc2F1cnVzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IExBTkdfM19UT18yX01BUFBFUiwgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbnR5cGUgRVNSZXNwb25zZVNvdXJjZSA9IFNvdXJjZVdpdGhVbmtub3duUHJvcHNcblxudHlwZSBFc0ZpZWxkTWFwcGVyRm4gPSAoXG4gIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgc291cmNlOiBFU1Jlc3BvbnNlU291cmNlXG4pID0+IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEduNEZpZWxkTWFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZXRhZGF0YVVybFNlcnZpY2U6IE1ldGFkYXRhVXJsU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmdTZXJ2aWNlOiBMYW5nU2VydmljZVxuICApIHt9XG5cbiAgcHJpdmF0ZSBsYW5nMyA9IHRoaXMubGFuZ1NlcnZpY2UuZ25MYW5nXG5cbiAgcHJvdGVjdGVkIGZpZWxkczogUmVjb3JkPHN0cmluZywgRXNGaWVsZE1hcHBlckZuPiA9IHtcbiAgICBpZDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYSh7IGlkOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpZCcpIH0sIG91dHB1dCksXG4gICAgdXVpZDogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICd1dWlkJylcbiAgICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gZ2V0QXNVcmwodGhpcy5tZXRhZGF0YVVybFNlcnZpY2UuZ2V0VXJsKHV1aWQpKVxuICAgICAgcmV0dXJuIHsgLi4ub3V0cHV0LCB1bmlxdWVJZGVudGlmaWVyOiB1dWlkLCBsYW5kaW5nUGFnZSB9XG4gICAgfSxcbiAgICBxdWFsaXR5U2NvcmU6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHsgcXVhbGl0eVNjb3JlOiBzZWxlY3RGaWVsZChzb3VyY2UsICdxdWFsaXR5U2NvcmUnKSB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUaXRsZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdGl0bGU6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAncmVzb3VyY2VUaXRsZU9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJlc291cmNlQWJzdHJhY3RPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGFic3RyYWN0OiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgKSxcbiAgICB9KSxcbiAgICBvdmVydmlldzogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBmaXJzdE92ZXJ2aWV3ID0gZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdvdmVydmlldycpKVxuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWU8c3RyaW5nPihcbiAgICAgICAgc2VsZWN0RmllbGQoZmlyc3RPdmVydmlldywgJ3RleHQnKSxcbiAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvdmVydmlld3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1cmw6IGdldEFzVXJsKHNlbGVjdEZhbGxiYWNrRmllbGRzKGZpcnN0T3ZlcnZpZXcsICd1cmwnLCAnZGF0YScpKSxcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiA/IHsgZGVzY3JpcHRpb24gfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0sXG4gICAgY2xfdG9waWM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRvcGljczogW1xuICAgICAgICAuLi4ob3V0cHV0LnRvcGljcyB8fCBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdjbF90b3BpYycpXG4gICAgICAgICkubWFwKCh0b3BpYykgPT4gc2VsZWN0VHJhbnNsYXRlZFZhbHVlPHN0cmluZz4odG9waWMsIHRoaXMubGFuZzMpKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgY2xfc3RhdHVzOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBzdGF0dXM6IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlKFxuICAgICAgICBzZWxlY3RGaWVsZChnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NsX3N0YXR1cycpKSwgJ2tleScpXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNsX21haW50ZW5hbmNlQW5kVXBkYXRlRnJlcXVlbmN5OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB1cGRhdGVGcmVxdWVuY3k6IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlKFxuICAgICAgICBzZWxlY3RGaWVsZChcbiAgICAgICAgICBnZXRGaXJzdFZhbHVlKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3knKVxuICAgICAgICAgICksXG4gICAgICAgICAgJ2tleSdcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjcmVhdGlvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgZGF0YXNldENyZWF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NyZWF0aW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNyZWF0ZURhdGU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZENyZWF0ZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NyZWF0ZURhdGUnKSksXG4gICAgfSksXG4gICAgY2hhbmdlRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkVXBkYXRlZDogdG9EYXRlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY2hhbmdlRGF0ZScpKSxcbiAgICB9KSxcbiAgICBwdWJsaWNhdGlvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkUHVibGlzaGVkOiB0b0RhdGUoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2UnKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICByZXNvdXJjZUxhbmd1YWdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGxhbmdMaXN0ID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdyZXNvdXJjZUxhbmd1YWdlJylcbiAgICAgIClcbiAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IGxhbmdMaXN0Lm1hcCgobGFuZykgPT4gTEFOR18zX1RPXzJfTUFQUEVSW2xhbmddKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBsYW5ndWFnZXMsXG4gICAgICB9XG4gICAgfSxcbiAgICBsaW5rOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhd0xpbmtzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdsaW5rJylcbiAgICAgIClcbiAgICAgIGNvbnN0IGRpc3RyaWJ1dGlvbnMgPSByYXdMaW5rc1xuICAgICAgICAubWFwKChsaW5rKSA9PiB0aGlzLm1hcExpbmsobGluaykpXG4gICAgICAgIC5maWx0ZXIoKHYpID0+IHYgIT09IG51bGwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGRpc3RyaWJ1dGlvbnMsXG4gICAgICB9XG4gICAgfSxcbiAgICBjb250YWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBjb250YWN0czogW1xuICAgICAgICBtYXBDb250YWN0KGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY29udGFjdCcpKSwgdGhpcy5sYW5nMyksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIGNvbnRhY3RGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgY29udGFjdHNGb3JSZXNvdXJjZTogW1xuICAgICAgICAuLi4oJ2NvbnRhY3RzRm9yUmVzb3VyY2UnIGluIG91dHB1dCAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KG91dHB1dC5jb250YWN0c0ZvclJlc291cmNlKVxuICAgICAgICAgID8gb3V0cHV0LmNvbnRhY3RzRm9yUmVzb3VyY2VcbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0Rm9yUmVzb3VyY2UnKSkubWFwKFxuICAgICAgICAgIChjb250YWN0KSA9PiBtYXBDb250YWN0KGNvbnRhY3QsIHRoaXMubGFuZzMpXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIHNvdXJjZUNhdGFsb2d1ZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGNhdGFsb2dVdWlkOiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3NvdXJjZUNhdGFsb2d1ZScpLFxuICAgICAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKVxuICAgIH0sXG4gICAgYWxsS2V5d29yZHM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGtleXdvcmRzOiBtYXBLZXl3b3JkcyhcbiAgICAgICAgc2VsZWN0RmllbGQ8VGhlc2F1cnVzW10+KHNvdXJjZSwgJ2FsbEtleXdvcmRzJyksXG4gICAgICAgIHRoaXMubGFuZzNcbiAgICAgICksXG4gICAgfSksXG4gICAgaW5zcGlyZVRoZW1lOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0b3BpY3M6IFtcbiAgICAgICAgLi4uKG91dHB1dC50b3BpY3MgfHwgW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2luc3BpcmVUaGVtZV9zeW4nKSksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdvdGhlcicsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9Db25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKSlcbiAgICAgICksXG4gICAgTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGVnYWwnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIE1EX0xlZ2FsQ29uc3RyYWludHNPdGhlckNvbnN0cmFpbnRzT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xlZ2FsJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0xlZ2FsQ29uc3RyYWludHNPdGhlckNvbnN0cmFpbnRzT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBNRF9TZWN1cml0eUNvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdzZWN1cml0eScsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9TZWN1cml0eUNvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgbGljZW5zZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsaWNlbnNlJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2xpY2Vuc2VPYmplY3QnKSlcbiAgICAgICksXG4gICAgbGluZWFnZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgbGluZWFnZTogc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ2xpbmVhZ2VPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICB9KSxcbiAgICBtYWluTGFuZ3VhZ2U6IChvdXRwdXQpID0+IG91dHB1dCxcbiAgICB1c2VyU2F2ZWRDb3VudDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGZhdm9yaXRlQ291bnQ6IHBhcnNlSW50KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3VzZXJTYXZlZENvdW50JykpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgaXNPcGVuRGF0YTogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGlzT3BlbkRhdGE6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lzT3BlbkRhdGEnKSAhPT0gJ2ZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGlzUHVibGlzaGVkVG9BbGw6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBpc1B1Ymxpc2hlZFRvQWxsOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpc1B1Ymxpc2hlZFRvQWxsJykgIT09ICdmYWxzZScsXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICB1c2VyaW5mbzogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIG93bmVySW5mbzogc2VsZWN0RmllbGQoc291cmNlLCAndXNlcmluZm8nKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGNsX2hpZXJhcmNoeUxldmVsOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGhpZXJhcmNoeUxldmVsID0gc2VsZWN0RmllbGQoXG4gICAgICAgIGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY2xfaGllcmFyY2h5TGV2ZWwnKSksXG4gICAgICAgICdrZXknXG4gICAgICApXG4gICAgICBjb25zdCBraW5kID0gaGllcmFyY2h5TGV2ZWwgPT09ICdzZXJ2aWNlJyA/ICdzZXJ2aWNlJyA6ICdkYXRhc2V0J1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBraW5kLFxuICAgICAgfVxuICAgIH0sXG4gICAgZ2VvbTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBnZW9tcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnZ2VvbScpKVxuICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzaGFwZScpKVxuICAgICAgY29uc3QgZXh0ZW50RGVzY3JpcHRpb25zID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnZXh0ZW50RGVzY3JpcHRpb25PYmplY3QnKVxuICAgICAgKVxuICAgICAgY29uc3Qgc3BhdGlhbEV4dGVudHMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3NwYXRpYWxFeHRlbnRzJykpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIHNwYXRpYWxFeHRlbnRzOiBbXG4gICAgICAgICAgLi4uc3BhdGlhbEV4dGVudHMsXG4gICAgICAgICAgLi4uZ2VvbXMubWFwKChnZW9tLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoXG4gICAgICAgICAgICAgIGdldEFycmF5SXRlbShleHRlbnREZXNjcmlwdGlvbnMsIGluZGV4KSxcbiAgICAgICAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBzaGFwZXNbaW5kZXhdID8/IGdlb21cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gbnVsbCA/IHsgZGVzY3JpcHRpb24gfSA6IG51bGwpLFxuICAgICAgICAgICAgICBnZW9tZXRyeSxcbiAgICAgICAgICAgIH0gYXMgRGF0YXNldFNwYXRpYWxFeHRlbnRcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2U6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmFuZ2VzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAncmVzb3VyY2VUZW1wb3JhbEV4dGVudERhdGVSYW5nZScpXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIHRlbXBvcmFsRXh0ZW50czogcmFuZ2VzLm1hcCgocmFuZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHNlbGVjdEZpZWxkKHJhbmdlLCAnZ3RlJylcbiAgICAgICAgICBjb25zdCBlbmQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2x0ZScpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLihzdGFydCAhPT0gbnVsbCA/IHsgc3RhcnQ6IHRvRGF0ZShzdGFydCkgfSA6IG51bGwpLFxuICAgICAgICAgICAgLi4uKGVuZCAhPT0gbnVsbCA/IHsgZW5kOiB0b0RhdGUoZW5kKSB9IDogbnVsbCksXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIH1cbiAgICB9LFxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmljRmllbGQgPSAob3V0cHV0KSA9PiBvdXRwdXRcblxuICBwcml2YXRlIGNvbnN0cmFpbnRGaWVsZCA9IChcbiAgICB0eXBlOiAnbGljZW5zZScgfCAnbGVnYWwnIHwgJ3NlY3VyaXR5JyB8ICdvdGhlcicsXG4gICAgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+LFxuICAgIGNvbnN0cmFpbnRBcnJheTogU291cmNlV2l0aFVua25vd25Qcm9wc1tdXG4gICkgPT4ge1xuICAgIGxldCBvdXRwdXRGaWVsZDogc3RyaW5nXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdsaWNlbnNlJzpcbiAgICAgICAgb3V0cHV0RmllbGQgPSAnbGljZW5zZXMnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdsZWdhbCc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xlZ2FsQ29uc3RyYWludHMnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzZWN1cml0eSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ3NlY3VyaXR5Q29uc3RyYWludHMnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdvdGhlcic6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ290aGVyQ29uc3RyYWludHMnXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNvbnN0IG91dHB1dEFycmF5OiBDb25zdHJhaW50W10gPVxuICAgICAgb3V0cHV0RmllbGQgaW4gb3V0cHV0ID8gb3V0cHV0W291dHB1dEZpZWxkXSA6IFtdXG4gICAgb3V0cHV0QXJyYXkucHVzaChcbiAgICAgIC4uLmNvbnN0cmFpbnRBcnJheS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZShpdGVtLCB0aGlzLmxhbmczKSBhcyBzdHJpbmdcbiAgICAgICAgY29uc3QgdXJsID0gZ2V0QXNVcmwoc2VsZWN0RmllbGQoaXRlbSwgJ2xpbmsnKSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICAgIC4uLih1cmwgPyB7IHVybCB9IDoge30pLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBbb3V0cHV0RmllbGRdOiBvdXRwdXRBcnJheSxcbiAgICB9XG4gICAgLy8gYXZvaWQgbGVnYWwgY29uc3RyYWludHMgYmVpbmcgZHVwbGljYXRlcyBvZiBsaWNlbnNlc1xuICAgIGlmIChcbiAgICAgICdsZWdhbENvbnN0cmFpbnRzJyBpbiByZXN1bHQgJiZcbiAgICAgICh0eXBlID09PSAnbGVnYWwnIHx8IHR5cGUgPT09ICdsaWNlbnNlJylcbiAgICApIHtcbiAgICAgIHJlc3VsdC5sZWdhbENvbnN0cmFpbnRzID0gcmVzdWx0LmxlZ2FsQ29uc3RyYWludHMuZmlsdGVyKFxuICAgICAgICAoY29uc3RyYWludCkgPT5cbiAgICAgICAgICAhb3V0cHV0LmxpY2Vuc2VzPy5zb21lKChsaWNlbnNlKSA9PiBsaWNlbnNlLnRleHQgPT09IGNvbnN0cmFpbnQudGV4dClcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgZ2V0TWFwcGluZ0ZuKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpZWxkTmFtZSBpbiB0aGlzLmZpZWxkcyA/IHRoaXMuZmllbGRzW2ZpZWxkTmFtZV0gOiB0aGlzLmdlbmVyaWNGaWVsZFxuICB9XG5cbiAgZ2V0TGlua1R5cGUodXJsOiBzdHJpbmcsIHByb3RvY29sPzogc3RyaW5nKTogRGF0YXNldERpc3RyaWJ1dGlvblR5cGUge1xuICAgIGlmICghcHJvdG9jb2wpIHtcbiAgICAgIHJldHVybiAnbGluaydcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKC9eRVNSSTpSRVNULy50ZXN0KHByb3RvY29sKSAmJiAvRmVhdHVyZVNlcnZlci8udGVzdCh1cmwpKSB8fFxuICAgICAgL15PR0M6V01TLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL15PR0M6V0ZTLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL15PR0M6V01UUy8udGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9vZ2NcXFcqYXBpXFxXKmZlYXR1cmVzL2kudGVzdChwcm90b2NvbClcbiAgICApIHtcbiAgICAgIHJldHVybiAnc2VydmljZSdcbiAgICB9XG4gICAgaWYgKC9eV1dXOkRPV05MT0FELy50ZXN0KHByb3RvY29sKSkge1xuICAgICAgcmV0dXJuICdkb3dubG9hZCdcbiAgICB9XG4gICAgcmV0dXJuICdsaW5rJ1xuICB9XG5cbiAgbWFwTGluayA9IChcbiAgICBzb3VyY2VMaW5rOiBTb3VyY2VXaXRoVW5rbm93blByb3BzXG4gICk6IERhdGFzZXREaXN0cmlidXRpb24gfCBudWxsID0+IHtcbiAgICBjb25zdCB1cmwgPSBnZXRBc1VybChcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAndXJsT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ3VybCcpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IG5hbWUgPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lJylcbiAgICApXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KFxuICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAnZGVzY3JpcHRpb25PYmplY3QnLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnZGVzY3JpcHRpb24nKVxuICAgIClcbiAgICAvLyBubyB1cmw6IGZhaWwgZWFybHlcbiAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAvLyBUT0RPOiBjb2xsZWN0IGVycm9ycyBhdCB0aGUgcmVjb3JkIGxldmVsP1xuICAgICAgY29uc29sZS53YXJuKCdBIGxpbmsgd2l0aG91dCB2YWxpZCBVUkwgd2FzIGZvdW5kJywgc291cmNlTGluaylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdwcm90b2NvbCcpXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0TGlua1R5cGUodXJsLnRvU3RyaW5nKCksIHByb3RvY29sKVxuICAgIGNvbnN0IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9IG1hdGNoUHJvdG9jb2wocHJvdG9jb2wpXG4gICAgY29uc3QgbWltZVR5cGVNYXRjaGVzID1cbiAgICAgIHByb3RvY29sICYmIHByb3RvY29sLm1hdGNoKC9eV1dXOkRPV05MT0FEOiguK1xcLy4rKSQvKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZVR5cGVNYXRjaGVzICYmIG1pbWVUeXBlTWF0Y2hlc1sxXVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0ge1xuICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICB9IGFzIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgfSBhcyBPbmxpbmVMaW5rUmVzb3VyY2VcbiAgICAgIGNhc2UgJ2Rvd25sb2FkJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAuLi4obWltZVR5cGUgJiYgeyBtaW1lVHlwZSB9KSxcbiAgICAgICAgfSBhcyBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb25cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dHJhID0gKHZhbHVlOiBvYmplY3QsIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPikgPT4gKHtcbiAgICAuLi5vdXRwdXQsXG4gICAgZXh0cmFzOiB7IC4uLihvdXRwdXQuZXh0cmFzIHx8IHt9KSwgLi4udmFsdWUgfSxcbiAgfSlcbn1cbiJdfQ==
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFXL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7OztBQVl0RixNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLGtCQUFzQyxFQUN0QyxXQUF3QjtRQUR4Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRzFCLFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUU3QixXQUFNLEdBQW9DO1lBQ2xELEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFB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QUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDdEM7WUFDQSxPQUFPLFNBQVMsQ0FBQTtTQUNqQjtRQUNELElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQyxPQUFPLFVBQVUsQ0FBQTtTQUNsQjtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzs4R0EzV1UsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZXRBcnJheUl0ZW0sXG4gIGdldEFzQXJyYXksXG4gIGdldEFzVXJsLFxuICBnZXRGaXJzdFZhbHVlLFxuICBtYXBDb250YWN0LFxuICBtYXBLZXl3b3JkcyxcbiAgc2VsZWN0RmFsbGJhY2ssXG4gIHNlbGVjdEZhbGxiYWNrRmllbGRzLFxuICBzZWxlY3RGaWVsZCxcbiAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkVmFsdWUsXG4gIFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIHRvRGF0ZSxcbn0gZnJvbSAnLi9hdG9taWMtb3BlcmF0aW9ucydcbmltcG9ydCB7IE1ldGFkYXRhVXJsU2VydmljZSB9IGZyb20gJy4vbWV0YWRhdGEtdXJsLnNlcnZpY2UnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvc3RhdHVzLm1hcHBlcidcbmltcG9ydCB7IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvdXBkYXRlLWZyZXF1ZW5jeS5tYXBwZXInXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBDb25zdHJhaW50LFxuICBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0RGlzdHJpYnV0aW9uVHlwZSxcbiAgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgRGF0YXNldFNwYXRpYWxFeHRlbnQsXG4gIE9ubGluZUxpbmtSZXNvdXJjZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgbWF0Y2hQcm90b2NvbCB9IGZyb20gJy4uL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyJ1xuaW1wb3J0IHsgVGhlc2F1cnVzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IExBTkdfM19UT18yX01BUFBFUiwgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbnR5cGUgRVNSZXNwb25zZVNvdXJjZSA9IFNvdXJjZVdpdGhVbmtub3duUHJvcHNcblxudHlwZSBFc0ZpZWxkTWFwcGVyRm4gPSAoXG4gIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgc291cmNlOiBFU1Jlc3BvbnNlU291cmNlXG4pID0+IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEduNEZpZWxkTWFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZXRhZGF0YVVybFNlcnZpY2U6IE1ldGFkYXRhVXJsU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmdTZXJ2aWNlOiBMYW5nU2VydmljZVxuICApIHt9XG5cbiAgcHJpdmF0ZSBsYW5nMyA9IHRoaXMubGFuZ1NlcnZpY2UuZ25MYW5nXG5cbiAgcHJvdGVjdGVkIGZpZWxkczogUmVjb3JkPHN0cmluZywgRXNGaWVsZE1hcHBlckZuPiA9IHtcbiAgICBpZDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYSh7IGlkOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpZCcpIH0sIG91dHB1dCksXG4gICAgdXVpZDogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICd1dWlkJylcbiAgICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gZ2V0QXNVcmwodGhpcy5tZXRhZGF0YVVybFNlcnZpY2UuZ2V0VXJsKHV1aWQpKVxuICAgICAgcmV0dXJuIHsgLi4ub3V0cHV0LCB1bmlxdWVJZGVudGlmaWVyOiB1dWlkLCBsYW5kaW5nUGFnZSB9XG4gICAgfSxcbiAgICBxdWFsaXR5U2NvcmU6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHsgcXVhbGl0eVNjb3JlOiBzZWxlY3RGaWVsZChzb3VyY2UsICdxdWFsaXR5U2NvcmUnKSB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUaXRsZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdGl0bGU6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAncmVzb3VyY2VUaXRsZU9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJlc291cmNlQWJzdHJhY3RPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGFic3RyYWN0OiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgKSxcbiAgICB9KSxcbiAgICBvdmVydmlldzogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBmaXJzdE92ZXJ2aWV3ID0gZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdvdmVydmlldycpKVxuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWU8c3RyaW5nPihcbiAgICAgICAgc2VsZWN0RmllbGQoZmlyc3RPdmVydmlldywgJ3RleHQnKSxcbiAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvdmVydmlld3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1cmw6IGdldEFzVXJsKHNlbGVjdEZhbGxiYWNrRmllbGRzKGZpcnN0T3ZlcnZpZXcsICd1cmwnLCAnZGF0YScpKSxcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiA/IHsgZGVzY3JpcHRpb24gfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0sXG4gICAgY2xfdG9waWM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRvcGljczogW1xuICAgICAgICAuLi4ob3V0cHV0LnRvcGljcyB8fCBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdjbF90b3BpYycpXG4gICAgICAgICkubWFwKCh0b3BpYykgPT4gc2VsZWN0VHJhbnNsYXRlZFZhbHVlPHN0cmluZz4odG9waWMsIHRoaXMubGFuZzMpKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgY2xfc3RhdHVzOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBzdGF0dXM6IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlKFxuICAgICAgICBzZWxlY3RGaWVsZChnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NsX3N0YXR1cycpKSwgJ2tleScpXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNsX21haW50ZW5hbmNlQW5kVXBkYXRlRnJlcXVlbmN5OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB1cGRhdGVGcmVxdWVuY3k6IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlKFxuICAgICAgICBzZWxlY3RGaWVsZChcbiAgICAgICAgICBnZXRGaXJzdFZhbHVlKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3knKVxuICAgICAgICAgICksXG4gICAgICAgICAgJ2tleSdcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjcmVhdGlvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVzb3VyY2VDcmVhdGVkOiB0b0RhdGUoXG4gICAgICAgIGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjcmVhdGlvbkRhdGVGb3JSZXNvdXJjZScpKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICByZXZpc2lvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVzb3VyY2VVcGRhdGVkOiB0b0RhdGUoXG4gICAgICAgIGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdyZXZpc2lvbkRhdGVGb3JSZXNvdXJjZScpKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjcmVhdGVEYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRDcmVhdGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjcmVhdGVEYXRlJykpLFxuICAgIH0pLFxuICAgIGNoYW5nZURhdGU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZFVwZGF0ZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NoYW5nZURhdGUnKSksXG4gICAgfSksXG4gICAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZFB1Ymxpc2hlZDogdG9EYXRlKFxuICAgICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3B1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlJylcbiAgICAgICksXG4gICAgfSksXG4gICAgcmVzb3VyY2VMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncmVzb3VyY2VMYW5ndWFnZScpXG4gICAgICApXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAoKGxhbmcpID0+IExBTkdfM19UT18yX01BUFBFUltsYW5nXSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgbGFuZ3VhZ2VzLFxuICAgICAgfVxuICAgIH0sXG4gICAgbGluazogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCByYXdMaW5rcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXT4oc291cmNlLCAnbGluaycpXG4gICAgICApXG4gICAgICBjb25zdCBkaXN0cmlidXRpb25zID0gcmF3TGlua3NcbiAgICAgICAgLm1hcCgobGluaykgPT4gdGhpcy5tYXBMaW5rKGxpbmspKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBkaXN0cmlidXRpb25zLFxuICAgICAgfVxuICAgIH0sXG4gICAgY29udGFjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgY29udGFjdHM6IFtcbiAgICAgICAgbWFwQ29udGFjdChnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NvbnRhY3QnKSksIHRoaXMubGFuZzMpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBjb250YWN0Rm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IFtcbiAgICAgICAgLi4uKCdjb250YWN0c0ZvclJlc291cmNlJyBpbiBvdXRwdXQgJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShvdXRwdXQuY29udGFjdHNGb3JSZXNvdXJjZSlcbiAgICAgICAgICA/IG91dHB1dC5jb250YWN0c0ZvclJlc291cmNlXG4gICAgICAgICAgOiBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnY29udGFjdEZvclJlc291cmNlJykpLm1hcChcbiAgICAgICAgICAoY29udGFjdCkgPT4gbWFwQ29udGFjdChjb250YWN0LCB0aGlzLmxhbmczKVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBzb3VyY2VDYXRhbG9ndWU6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBjYXRhbG9nVXVpZDogc2VsZWN0RmFsbGJhY2soXG4gICAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdzb3VyY2VDYXRhbG9ndWUnKSxcbiAgICAgICAgICAgICdubyB0aXRsZSdcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgIClcbiAgICB9LFxuICAgIGFsbEtleXdvcmRzOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBrZXl3b3JkczogbWFwS2V5d29yZHMoXG4gICAgICAgIHNlbGVjdEZpZWxkPFRoZXNhdXJ1c1tdPihzb3VyY2UsICdhbGxLZXl3b3JkcycpLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApLFxuICAgIH0pLFxuICAgIGluc3BpcmVUaGVtZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdG9waWNzOiBbXG4gICAgICAgIC4uLihvdXRwdXQudG9waWNzIHx8IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdpbnNwaXJlVGhlbWVfc3luJykpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBNRF9Db25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnb3RoZXInLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnTURfQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JykpXG4gICAgICApLFxuICAgIE1EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xlZ2FsJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsZWdhbCcsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgTURfU2VjdXJpdHlDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnc2VjdXJpdHknLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfU2VjdXJpdHlDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIGxpY2Vuc2VPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGljZW5zZScsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdsaWNlbnNlT2JqZWN0JykpXG4gICAgICApLFxuICAgIGxpbmVhZ2VPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGxpbmVhZ2U6IHNlbGVjdFRyYW5zbGF0ZWRGaWVsZChzb3VyY2UsICdsaW5lYWdlT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgfSksXG4gICAgbWFpbkxhbmd1YWdlOiAob3V0cHV0KSA9PiBvdXRwdXQsXG4gICAgdXNlclNhdmVkQ291bnQ6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBmYXZvcml0ZUNvdW50OiBwYXJzZUludChzZWxlY3RGaWVsZChzb3VyY2UsICd1c2VyU2F2ZWRDb3VudCcpKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGlzT3BlbkRhdGE6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBpc09wZW5EYXRhOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpc09wZW5EYXRhJykgIT09ICdmYWxzZScsXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBpc1B1Ymxpc2hlZFRvQWxsOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNQdWJsaXNoZWRUb0FsbDogc2VsZWN0RmllbGQoc291cmNlLCAnaXNQdWJsaXNoZWRUb0FsbCcpICE9PSAnZmFsc2UnLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgdXNlcmluZm86IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBvd25lckluZm86IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3VzZXJpbmZvJyksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBjbF9oaWVyYXJjaHlMZXZlbDogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBoaWVyYXJjaHlMZXZlbCA9IHNlbGVjdEZpZWxkKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NsX2hpZXJhcmNoeUxldmVsJykpLFxuICAgICAgICAna2V5J1xuICAgICAgKVxuICAgICAgY29uc3Qga2luZCA9IGhpZXJhcmNoeUxldmVsID09PSAnc2VydmljZScgPyAnc2VydmljZScgOiAnZGF0YXNldCdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAga2luZCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGdlb206IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZ2VvbXMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2dlb20nKSlcbiAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnc2hhcGUnKSlcbiAgICAgIGNvbnN0IGV4dGVudERlc2NyaXB0aW9ucyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2V4dGVudERlc2NyaXB0aW9uT2JqZWN0JylcbiAgICAgIClcbiAgICAgIGNvbnN0IHNwYXRpYWxFeHRlbnRzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzcGF0aWFsRXh0ZW50cycpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBzcGF0aWFsRXh0ZW50czogW1xuICAgICAgICAgIC4uLnNwYXRpYWxFeHRlbnRzLFxuICAgICAgICAgIC4uLmdlb21zLm1hcCgoZ2VvbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKFxuICAgICAgICAgICAgICBnZXRBcnJheUl0ZW0oZXh0ZW50RGVzY3JpcHRpb25zLCBpbmRleCksXG4gICAgICAgICAgICAgIHRoaXMubGFuZzNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gc2hhcGVzW2luZGV4XSA/PyBnZW9tXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gIT09IG51bGwgPyB7IGRlc2NyaXB0aW9uIH0gOiBudWxsKSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgICAgICB9IGFzIERhdGFzZXRTcGF0aWFsRXh0ZW50XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvdXJjZVRlbXBvcmFsRXh0ZW50RGF0ZVJhbmdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhbmdlcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2UnKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHM6IHJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2d0ZScpXG4gICAgICAgICAgY29uc3QgZW5kID0gc2VsZWN0RmllbGQocmFuZ2UsICdsdGUnKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi4oc3RhcnQgIT09IG51bGwgPyB7IHN0YXJ0OiB0b0RhdGUoc3RhcnQpIH0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihlbmQgIT09IG51bGwgPyB7IGVuZDogdG9EYXRlKGVuZCkgfSA6IG51bGwpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gKG91dHB1dCkgPT4gb3V0cHV0XG5cbiAgcHJpdmF0ZSBjb25zdHJhaW50RmllbGQgPSAoXG4gICAgdHlwZTogJ2xpY2Vuc2UnIHwgJ2xlZ2FsJyB8ICdzZWN1cml0eScgfCAnb3RoZXInLFxuICAgIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgICBjb25zdHJhaW50QXJyYXk6IFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXVxuICApID0+IHtcbiAgICBsZXQgb3V0cHV0RmllbGQ6IHN0cmluZ1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbGljZW5zZSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xpY2Vuc2VzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdsZWdhbENvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2VjdXJpdHknOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdzZWN1cml0eUNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdvdGhlckNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXRBcnJheTogQ29uc3RyYWludFtdID1cbiAgICAgIG91dHB1dEZpZWxkIGluIG91dHB1dCA/IG91dHB1dFtvdXRwdXRGaWVsZF0gOiBbXVxuICAgIG91dHB1dEFycmF5LnB1c2goXG4gICAgICAuLi5jb25zdHJhaW50QXJyYXkubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoaXRlbSwgdGhpcy5sYW5nMykgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkKGl0ZW0sICdsaW5rJykpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICAuLi4odXJsID8geyB1cmwgfSA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgW291dHB1dEZpZWxkXTogb3V0cHV0QXJyYXksXG4gICAgfVxuICAgIC8vIGF2b2lkIGxlZ2FsIGNvbnN0cmFpbnRzIGJlaW5nIGR1cGxpY2F0ZXMgb2YgbGljZW5zZXNcbiAgICBpZiAoXG4gICAgICAnbGVnYWxDb25zdHJhaW50cycgaW4gcmVzdWx0ICYmXG4gICAgICAodHlwZSA9PT0gJ2xlZ2FsJyB8fCB0eXBlID09PSAnbGljZW5zZScpXG4gICAgKSB7XG4gICAgICByZXN1bHQubGVnYWxDb25zdHJhaW50cyA9IHJlc3VsdC5sZWdhbENvbnN0cmFpbnRzLmZpbHRlcihcbiAgICAgICAgKGNvbnN0cmFpbnQpID0+XG4gICAgICAgICAgIW91dHB1dC5saWNlbnNlcz8uc29tZSgobGljZW5zZSkgPT4gbGljZW5zZS50ZXh0ID09PSBjb25zdHJhaW50LnRleHQpXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGdldE1hcHBpbmdGbihmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZE5hbWUgaW4gdGhpcy5maWVsZHMgPyB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdIDogdGhpcy5nZW5lcmljRmllbGRcbiAgfVxuXG4gIGdldExpbmtUeXBlKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyk6IERhdGFzZXREaXN0cmlidXRpb25UeXBlIHtcbiAgICBpZiAoIXByb3RvY29sKSB7XG4gICAgICByZXR1cm4gJ2xpbmsnXG4gICAgfVxuICAgIGlmIChcbiAgICAgICgvXkVTUkk6UkVTVC8udGVzdChwcm90b2NvbCkgJiYgL0ZlYXR1cmVTZXJ2ZXIvLnRlc3QodXJsKSkgfHxcbiAgICAgIC9eT0dDOldNUy8udGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9eT0dDOldGUy8udGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9eT0dDOldNVFMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvb2djXFxXKmFwaVxcVypmZWF0dXJlcy9pLnRlc3QocHJvdG9jb2wpXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ3NlcnZpY2UnXG4gICAgfVxuICAgIGlmICgvXldXVzpET1dOTE9BRC8udGVzdChwcm90b2NvbCkpIHtcbiAgICAgIHJldHVybiAnZG93bmxvYWQnXG4gICAgfVxuICAgIHJldHVybiAnbGluaydcbiAgfVxuXG4gIG1hcExpbmsgPSAoXG4gICAgc291cmNlTGluazogU291cmNlV2l0aFVua25vd25Qcm9wc1xuICApOiBEYXRhc2V0RGlzdHJpYnV0aW9uIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdXJsID0gZ2V0QXNVcmwoXG4gICAgICBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ3VybE9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICd1cmwnKVxuICAgICAgKVxuICAgIClcbiAgICBjb25zdCBuYW1lID0gc2VsZWN0RmFsbGJhY2soXG4gICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnbmFtZU9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnbmFtZScpXG4gICAgKVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0RmFsbGJhY2soXG4gICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihcbiAgICAgICAgc291cmNlTGluayxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uT2JqZWN0JyxcbiAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgKSxcbiAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ2Rlc2NyaXB0aW9uJylcbiAgICApXG4gICAgLy8gbm8gdXJsOiBmYWlsIGVhcmx5XG4gICAgaWYgKHVybCA9PT0gbnVsbCkge1xuICAgICAgLy8gVE9ETzogY29sbGVjdCBlcnJvcnMgYXQgdGhlIHJlY29yZCBsZXZlbD9cbiAgICAgIGNvbnNvbGUud2FybignQSBsaW5rIHdpdGhvdXQgdmFsaWQgVVJMIHdhcyBmb3VuZCcsIHNvdXJjZUxpbmspXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHByb3RvY29sID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAncHJvdG9jb2wnKVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldExpbmtUeXBlKHVybC50b1N0cmluZygpLCBwcm90b2NvbClcbiAgICBjb25zdCBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPSBtYXRjaFByb3RvY29sKHByb3RvY29sKVxuICAgIGNvbnN0IG1pbWVUeXBlTWF0Y2hlcyA9XG4gICAgICBwcm90b2NvbCAmJiBwcm90b2NvbC5tYXRjaCgvXldXVzpET1dOTE9BRDooLitcXC8uKykkLylcbiAgICBjb25zdCBtaW1lVHlwZSA9IG1pbWVUeXBlTWF0Y2hlcyAmJiBtaW1lVHlwZU1hdGNoZXNbMV1cblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IHtcbiAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIGFjY2Vzc1NlcnZpY2VQcm90b2NvbCxcbiAgICAgICAgfSBhcyBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIH0gYXMgT25saW5lTGlua1Jlc291cmNlXG4gICAgICBjYXNlICdkb3dubG9hZCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgLi4uKG1pbWVUeXBlICYmIHsgbWltZVR5cGUgfSksXG4gICAgICAgIH0gYXMgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRyYSA9ICh2YWx1ZTogb2JqZWN0LCBvdXRwdXQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4pID0+ICh7XG4gICAgLi4ub3V0cHV0LFxuICAgIGV4dHJhczogeyAuLi4ob3V0cHV0LmV4dHJhcyB8fCB7fSksIC4uLnZhbHVlIH0sXG4gIH0pXG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './gn4.converter';
2
+ export * from './atomic-operations';
3
+ export * from './types';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nbjQuY29udmVydGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9hdG9taWMtb3BlcmF0aW9ucydcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './iso19115-3.converter';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lzbzE5MTE1LTMuY29udmVydGVyJ1xuIl19
@@ -0,0 +1,123 @@
1
+ import { Iso19139Converter } from '../iso19139';
2
+ import { readContacts, readDistributions, readKind, readLandingPage, readLineage, readOwnerOrganization, readRecordCreated, readRecordPublished, readRecordUpdated, readResourceContacts, readUniqueIdentifier, } from './read-parts';
3
+ import { writeContacts, writeContactsForResource, writeDistributions, writeKind, writeLandingPage, writeLineage, writeOwnerOrganization, writeRecordCreated, writeRecordPublished, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSpatialRepresentation, writeStatus, writeUniqueIdentifier, } from './write-parts';
4
+ import { renameElements } from '../xml-utils';
5
+ export class Iso191153Converter extends Iso19139Converter {
6
+ constructor() {
7
+ super();
8
+ this.readers['uniqueIdentifier'] = readUniqueIdentifier;
9
+ this.readers['kind'] = readKind;
10
+ this.readers['recordUpdated'] = readRecordUpdated;
11
+ this.readers['recordCreated'] = readRecordCreated;
12
+ this.readers['recordPublished'] = readRecordPublished;
13
+ this.readers['contacts'] = readContacts;
14
+ this.readers['contactsForResource'] = readResourceContacts;
15
+ this.readers['ownerOrganization'] = readOwnerOrganization;
16
+ this.readers['landingPage'] = readLandingPage;
17
+ this.readers['lineage'] = readLineage;
18
+ this.readers['distributions'] = readDistributions;
19
+ this.writers['uniqueIdentifier'] = writeUniqueIdentifier;
20
+ this.writers['kind'] = writeKind;
21
+ this.writers['recordUpdated'] = writeRecordUpdated;
22
+ this.writers['recordCreated'] = writeRecordCreated;
23
+ this.writers['recordPublished'] = writeRecordPublished;
24
+ this.writers['resourceUpdated'] = writeResourceUpdated;
25
+ this.writers['resourceCreated'] = writeResourceCreated;
26
+ this.writers['resourcePublished'] = writeResourcePublished;
27
+ this.writers['contacts'] = writeContacts;
28
+ this.writers['contactsForResource'] = writeContactsForResource;
29
+ this.writers['ownerOrganization'] = writeOwnerOrganization;
30
+ this.writers['landingPage'] = writeLandingPage;
31
+ this.writers['lineage'] = writeLineage;
32
+ this.writers['distributions'] = writeDistributions;
33
+ this.writers['status'] = writeStatus;
34
+ this.writers['spatialRepresentation'] = writeSpatialRepresentation;
35
+ }
36
+ beforeDocumentCreation(rootEl) {
37
+ renameElements(rootEl, {
38
+ gmd: 'mdb',
39
+ 'gmd:characterEncoding': 'lan:characterEncoding',
40
+ 'gmd:MD_CharacterSetCode': 'lan:MD_CharacterSetCode',
41
+ 'gmd:MD_DataIdentification': 'mri:MD_DataIdentification',
42
+ 'gmd:citation': 'mri:citation',
43
+ 'gmd:abstract': 'mri:abstract',
44
+ 'gmd:title': 'cit:title',
45
+ 'gmd:CI_Citation': 'cit:CI_Citation',
46
+ 'gmx:Anchor': 'gcx:Anchor',
47
+ // languages
48
+ 'gmd:PT_Locale': 'lan:PT_Locale',
49
+ 'gmd:languageCode': 'lan:languageCode',
50
+ 'gmd:LanguageCode': 'lan:LanguageCode',
51
+ // status
52
+ 'gmd:status': 'mri:status',
53
+ 'gmd:MD_ProgressCode': 'mri:MD_ProgressCode',
54
+ // dates
55
+ 'gmd:date': 'cit:date',
56
+ 'gmd:CI_Date': 'cit:CI_Date',
57
+ 'gmd:dateType': 'cit:dateType',
58
+ 'gmd:CI_DateTypeCode': 'cit:CI_DateTypeCode',
59
+ // contacts
60
+ 'gmd:CI_Responsibility': 'cit:CI_Responsibility',
61
+ 'gmd:role': 'cit:role',
62
+ 'gmd:CI_RoleCode': 'cit:CI_RoleCode',
63
+ // keywords
64
+ 'gmd:descriptiveKeywords': 'mri:descriptiveKeywords',
65
+ 'gmd:MD_Keywords': 'mri:MD_Keywords',
66
+ 'gmd:type': 'mri:type',
67
+ 'gmd:MD_KeywordTypeCode': 'mri:MD_KeywordTypeCode',
68
+ 'gmd:thesaurusName': 'mri:thesaurusName',
69
+ 'gmd:keyword': 'mri:keyword',
70
+ 'gmd:identifier': 'cit:identifier',
71
+ 'gmd:MD_Identifier': 'mcc:MD_Identifier',
72
+ 'gmd:code': 'mcc:code',
73
+ // distributions
74
+ 'gmd:MD_Distribution': 'mrd:MD_Distribution',
75
+ 'gmd:transferOptions': 'mrd:transferOptions',
76
+ 'gmd:MD_DigitalTransferOptions': 'mrd:MD_DigitalTransferOptions',
77
+ 'gmd:onLine': 'mrd:onLine',
78
+ 'gmd:distributionFormat': 'mrd:distributionFormat',
79
+ 'gmd:MD_Format': 'mrd:MD_Format',
80
+ 'gmd:CI_OnlineResource': 'cit:CI_OnlineResource',
81
+ 'gmd:linkage': 'cit:linkage',
82
+ 'gmd:name': 'cit:name',
83
+ 'gmd:description': 'cit:description',
84
+ 'gmd:CI_OnLineFunctionCode': 'cit:CI_OnLineFunctionCode',
85
+ 'gmd:function': 'cit:function',
86
+ 'gmd:protocol': 'cit:protocol',
87
+ // topic
88
+ 'gmd:topicCategory': 'mri:topicCategory',
89
+ 'gmd:MD_TopicCategoryCode': 'mri:MD_TopicCategoryCode',
90
+ // update frequency
91
+ 'gmd:resourceMaintenance': 'mri:resourceMaintenance',
92
+ 'gmd:MD_MaintenanceInformation': 'mmi:MD_MaintenanceInformation',
93
+ 'gmd:userDefinedMaintenanceFrequency': 'mmi:userDefinedMaintenanceFrequency',
94
+ 'gts:TM_PeriodDuration': 'gco:TM_PeriodDuration',
95
+ // constraints
96
+ 'gmd:resourceConstraints': 'mri:resourceConstraints',
97
+ 'gmd:MD_Constraints': 'mco:MD_Constraints',
98
+ 'gmd:MD_LegalConstraints': 'mco:MD_LegalConstraints',
99
+ 'gmd:MD_SecurityConstraints': 'mco:MD_SecurityConstraints',
100
+ 'gmd:useLimitation': 'mco:useLimitation',
101
+ 'gmd:useConstraints': 'mco:useConstraints',
102
+ 'gmd:accessConstraints': 'mco:accessConstraints',
103
+ 'gmd:otherConstraints': 'mco:otherConstraints',
104
+ 'gmd:MD_RestrictionCode': 'mco:MD_RestrictionCode',
105
+ 'gmd:classification': 'mco:classification',
106
+ 'gmd:MD_ClassificationCode': 'mco:MD_ClassificationCode',
107
+ // overviews
108
+ 'gmd:graphicOverview': 'mri:graphicOverview',
109
+ 'gmd:MD_BrowseGraphic': 'mcc:MD_BrowseGraphic',
110
+ 'gmd:fileName': 'mcc:fileName',
111
+ 'gmd:fileDescription': 'mcc:fileDescription',
112
+ // no more URL elements
113
+ 'gmd:URL': 'gco:CharacterString',
114
+ });
115
+ }
116
+ async writeRecord(record, reference) {
117
+ let result = await super.writeRecord(record, reference);
118
+ // fix gco namespace definition (changes between iso19139 and iso19115-3
119
+ result = result.replace('"http://www.isotc211.org/2005/gco"', '"http://standards.iso.org/iso/19115/-3/gco/1.0"');
120
+ return result;
121
+ }
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMTUtMy5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL2lzbzE5MTE1LTMuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMvQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsZUFBZSxFQUNmLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHN0MsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUN2RDtRQUNFLEtBQUssRUFBRSxDQUFBO1FBRVAsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFBO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFBO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsaUJBQWlCLENBQUE7UUFDakQsSUFBSSxDQUFD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QW9CLEVBQUUsb0JBQW9CO1lBQzFDLHVCQUF1QixFQUFFLHVCQUF1QjtZQUNoRCxzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsd0JBQXdCLEVBQUUsd0JBQXdCO1lBQ2xELG9CQUFvQixFQUFFLG9CQUFvQjtZQUMxQywyQkFBMkIsRUFBRSwyQkFBMkI7WUFFeEQsWUFBWTtZQUNaLHFCQUFxQixFQUFFLHFCQUFxQjtZQUM1QyxzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsY0FBYyxFQUFFLGNBQWM7WUFDOUIscUJBQXFCLEVBQUUscUJBQXFCO1lBRTVDLHVCQUF1QjtZQUN2QixTQUFTLEVBQUUscUJBQXFCO1NBQ2pDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLE1BQXFCLEVBQ3JCLFNBQWtCO1FBRWxCLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDdkQsd0VBQXdFO1FBQ3hFLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNyQixvQ0FBb0MsRUFDcEMsaURBQWlELENBQ2xELENBQUE7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzbzE5MTM5Q29udmVydGVyIH0gZnJvbSAnLi4vaXNvMTkxMzknXG5pbXBvcnQge1xuICByZWFkQ29udGFjdHMsXG4gIHJlYWREaXN0cmlidXRpb25zLFxuICByZWFkS2luZCxcbiAgcmVhZExhbmRpbmdQYWdlLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFB1Ymxpc2hlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNvbnRhY3RzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgd3JpdGVDb250YWN0cyxcbiAgd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICB3cml0ZURpc3RyaWJ1dGlvbnMsXG4gIHdyaXRlS2luZCxcbiAgd3JpdGVMYW5kaW5nUGFnZSxcbiAgd3JpdGVMaW5lYWdlLFxuICB3cml0ZU93bmVyT3JnYW5pemF0aW9uLFxuICB3cml0ZVJlY29yZENyZWF0ZWQsXG4gIHdyaXRlUmVjb3JkUHVibGlzaGVkLFxuICB3cml0ZVJlY29yZFVwZGF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gIHdyaXRlU3RhdHVzLFxuICB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG59IGZyb20gJy4vd3JpdGUtcGFydHMnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyByZW5hbWVFbGVtZW50cyB9IGZyb20gJy4uL3htbC11dGlscydcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmV4cG9ydCBjbGFzcyBJc28xOTExNTNDb252ZXJ0ZXIgZXh0ZW5kcyBJc28xOTEzOUNvbnZlcnRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMucmVhZGVyc1sndW5pcXVlSWRlbnRpZmllciddID0gcmVhZFVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLnJlYWRlcnNbJ2tpbmQnXSA9IHJlYWRLaW5kXG4gICAgdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10gPSByZWFkUmVjb3JkVXBkYXRlZFxuICAgIHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddID0gcmVhZFJlY29yZENyZWF0ZWRcbiAgICB0aGlzLnJlYWRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gcmVhZFJlY29yZFB1Ymxpc2hlZFxuICAgIHRoaXMucmVhZGVyc1snY29udGFjdHMnXSA9IHJlYWRDb250YWN0c1xuICAgIHRoaXMucmVhZGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gcmVhZFJlc291cmNlQ29udGFjdHNcbiAgICB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10gPSByZWFkT3duZXJPcmdhbml6YXRpb25cbiAgICB0aGlzLnJlYWRlcnNbJ2xhbmRpbmdQYWdlJ10gPSByZWFkTGFuZGluZ1BhZ2VcbiAgICB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXSA9IHJlYWRMaW5lYWdlXG4gICAgdGhpcy5yZWFkZXJzWydkaXN0cmlidXRpb25zJ10gPSByZWFkRGlzdHJpYnV0aW9uc1xuXG4gICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSB3cml0ZVVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLndyaXRlcnNbJ2tpbmQnXSA9IHdyaXRlS2luZFxuICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddID0gd3JpdGVSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10gPSB3cml0ZVJlY29yZENyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gd3JpdGVSZWNvcmRQdWJsaXNoZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddID0gd3JpdGVSZXNvdXJjZVVwZGF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddID0gd3JpdGVSZXNvdXJjZUNyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10gPSB3cml0ZVJlc291cmNlUHVibGlzaGVkXG4gICAgdGhpcy53cml0ZXJzWydjb250YWN0cyddID0gd3JpdGVDb250YWN0c1xuICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gd3JpdGVDb250YWN0c0ZvclJlc291cmNlXG4gICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddID0gd3JpdGVPd25lck9yZ2FuaXphdGlvblxuICAgIHRoaXMud3JpdGVyc1snbGFuZGluZ1BhZ2UnXSA9IHdyaXRlTGFuZGluZ1BhZ2VcbiAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXSA9IHdyaXRlTGluZWFnZVxuICAgIHRoaXMud3JpdGVyc1snZGlzdHJpYnV0aW9ucyddID0gd3JpdGVEaXN0cmlidXRpb25zXG4gICAgdGhpcy53cml0ZXJzWydzdGF0dXMnXSA9IHdyaXRlU3RhdHVzXG4gICAgdGhpcy53cml0ZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXSA9IHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uXG4gIH1cblxuICBiZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbDogWG1sRWxlbWVudCkge1xuICAgIHJlbmFtZUVsZW1lbnRzKHJvb3RFbCwge1xuICAgICAgZ21kOiAnbWRiJyxcbiAgICAgICdnbWQ6Y2hhcmFjdGVyRW5jb2RpbmcnOiAnbGFuOmNoYXJhY3RlckVuY29kaW5nJyxcbiAgICAgICdnbWQ6TURfQ2hhcmFjdGVyU2V0Q29kZSc6ICdsYW46TURfQ2hhcmFjdGVyU2V0Q29kZScsXG4gICAgICAnZ21kOk1EX0RhdGFJZGVudGlmaWNhdGlvbic6ICdtcmk6TURfRGF0YUlkZW50aWZpY2F0aW9uJyxcbiAgICAgICdnbWQ6Y2l0YXRpb24nOiAnbXJpOmNpdGF0aW9uJyxcbiAgICAgICdnbWQ6YWJzdHJhY3QnOiAnbXJpOmFic3RyYWN0JyxcbiAgICAgICdnbWQ6dGl0bGUnOiAnY2l0OnRpdGxlJyxcbiAgICAgICdnbWQ6Q0lfQ2l0YXRpb24nOiAnY2l0OkNJX0NpdGF0aW9uJyxcbiAgICAgICdnbXg6QW5jaG9yJzogJ2djeDpBbmNob3InLFxuXG4gICAgICAvLyBsYW5ndWFnZXNcbiAgICAgICdnbWQ6UFRfTG9jYWxlJzogJ2xhbjpQVF9Mb2NhbGUnLFxuICAgICAgJ2dtZDpsYW5ndWFnZUNvZGUnOiAnbGFuOmxhbmd1YWdlQ29kZScsXG4gICAgICAnZ21kOkxhbmd1YWdlQ29kZSc6ICdsYW46TGFuZ3VhZ2VDb2RlJyxcblxuICAgICAgLy8gc3RhdHVzXG4gICAgICAnZ21kOnN0YXR1cyc6ICdtcmk6c3RhdHVzJyxcbiAgICAgICdnbWQ6TURfUHJvZ3Jlc3NDb2RlJzogJ21yaTpNRF9Qcm9ncmVzc0NvZGUnLFxuXG4gICAgICAvLyBkYXRlc1xuICAgICAgJ2dtZDpkYXRlJzogJ2NpdDpkYXRlJyxcbiAgICAgICdnbWQ6Q0lfRGF0ZSc6ICdjaXQ6Q0lfRGF0ZScsXG4gICAgICAnZ21kOmRhdGVUeXBlJzogJ2NpdDpkYXRlVHlwZScsXG4gICAgICAnZ21kOkNJX0RhdGVUeXBlQ29kZSc6ICdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyxcblxuICAgICAgLy8gY29udGFjdHNcbiAgICAgICdnbWQ6Q0lfUmVzcG9uc2liaWxpdHknOiAnY2l0OkNJX1Jlc3BvbnNpYmlsaXR5JyxcbiAgICAgICdnbWQ6cm9sZSc6ICdjaXQ6cm9sZScsXG4gICAgICAnZ21kOkNJX1JvbGVDb2RlJzogJ2NpdDpDSV9Sb2xlQ29kZScsXG5cbiAgICAgIC8vIGtleXdvcmRzXG4gICAgICAnZ21kOmRlc2NyaXB0aXZlS2V5d29yZHMnOiAnbXJpOmRlc2NyaXB0aXZlS2V5d29yZHMnLFxuICAgICAgJ2dtZDpNRF9LZXl3b3Jkcyc6ICdtcmk6TURfS2V5d29yZHMnLFxuICAgICAgJ2dtZDp0eXBlJzogJ21yaTp0eXBlJyxcbiAgICAgICdnbWQ6TURfS2V5d29yZFR5cGVDb2RlJzogJ21yaTpNRF9LZXl3b3JkVHlwZUNvZGUnLFxuICAgICAgJ2dtZDp0aGVzYXVydXNOYW1lJzogJ21yaTp0aGVzYXVydXNOYW1lJyxcbiAgICAgICdnbWQ6a2V5d29yZCc6ICdtcmk6a2V5d29yZCcsXG4gICAgICAnZ21kOmlkZW50aWZpZXInOiAnY2l0OmlkZW50aWZpZXInLFxuICAgICAgJ2dtZDpNRF9JZGVudGlmaWVyJzogJ21jYzpNRF9JZGVudGlmaWVyJyxcbiAgICAgICdnbWQ6Y29kZSc6ICdtY2M6Y29kZScsXG5cbiAgICAgIC8vIGRpc3RyaWJ1dGlvbnNcbiAgICAgICdnbWQ6TURfRGlzdHJpYnV0aW9uJzogJ21yZDpNRF9EaXN0cmlidXRpb24nLFxuICAgICAgJ2dtZDp0cmFuc2Zlck9wdGlvbnMnOiAnbXJkOnRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnOiAnbXJkOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnLFxuICAgICAgJ2dtZDpvbkxpbmUnOiAnbXJkOm9uTGluZScsXG4gICAgICAnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCc6ICdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JyxcbiAgICAgICdnbWQ6TURfRm9ybWF0JzogJ21yZDpNRF9Gb3JtYXQnLFxuICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZSc6ICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2dtZDpsaW5rYWdlJzogJ2NpdDpsaW5rYWdlJyxcbiAgICAgICdnbWQ6bmFtZSc6ICdjaXQ6bmFtZScsXG4gICAgICAnZ21kOmRlc2NyaXB0aW9uJzogJ2NpdDpkZXNjcmlwdGlvbicsXG4gICAgICAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZSc6ICdjaXQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyxcbiAgICAgICdnbWQ6ZnVuY3Rpb24nOiAnY2l0OmZ1bmN0aW9uJyxcbiAgICAgICdnbWQ6cHJvdG9jb2wnOiAnY2l0OnByb3RvY29sJyxcblxuICAgICAgLy8gdG9waWNcbiAgICAgICdnbWQ6dG9waWNDYXRlZ29yeSc6ICdtcmk6dG9waWNDYXRlZ29yeScsXG4gICAgICAnZ21kOk1EX1RvcGljQ2F0ZWdvcnlDb2RlJzogJ21yaTpNRF9Ub3BpY0NhdGVnb3J5Q29kZScsXG5cbiAgICAgIC8vIHVwZGF0ZSBmcmVxdWVuY3lcbiAgICAgICdnbWQ6cmVzb3VyY2VNYWludGVuYW5jZSc6ICdtcmk6cmVzb3VyY2VNYWludGVuYW5jZScsXG4gICAgICAnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nOiAnbW1pOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nLFxuICAgICAgJ2dtZDp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JzpcbiAgICAgICAgJ21taTp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JyxcbiAgICAgICdndHM6VE1fUGVyaW9kRHVyYXRpb24nOiAnZ2NvOlRNX1BlcmlvZER1cmF0aW9uJyxcblxuICAgICAgLy8gY29uc3RyYWludHNcbiAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cyc6ICdtcmk6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0NvbnN0cmFpbnRzJzogJ21jbzpNRF9Db25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnOiAnbWNvOk1EX0xlZ2FsQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJzogJ21jbzpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6dXNlTGltaXRhdGlvbic6ICdtY286dXNlTGltaXRhdGlvbicsXG4gICAgICAnZ21kOnVzZUNvbnN0cmFpbnRzJzogJ21jbzp1c2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJzogJ21jbzphY2Nlc3NDb25zdHJhaW50cycsXG4gICAgICAnZ21kOm90aGVyQ29uc3RyYWludHMnOiAnbWNvOm90aGVyQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnOiAnbWNvOk1EX1Jlc3RyaWN0aW9uQ29kZScsXG4gICAgICAnZ21kOmNsYXNzaWZpY2F0aW9uJzogJ21jbzpjbGFzc2lmaWNhdGlvbicsXG4gICAgICAnZ21kOk1EX0NsYXNzaWZpY2F0aW9uQ29kZSc6ICdtY286TURfQ2xhc3NpZmljYXRpb25Db2RlJyxcblxuICAgICAgLy8gb3ZlcnZpZXdzXG4gICAgICAnZ21kOmdyYXBoaWNPdmVydmlldyc6ICdtcmk6Z3JhcGhpY092ZXJ2aWV3JyxcbiAgICAgICdnbWQ6TURfQnJvd3NlR3JhcGhpYyc6ICdtY2M6TURfQnJvd3NlR3JhcGhpYycsXG4gICAgICAnZ21kOmZpbGVOYW1lJzogJ21jYzpmaWxlTmFtZScsXG4gICAgICAnZ21kOmZpbGVEZXNjcmlwdGlvbic6ICdtY2M6ZmlsZURlc2NyaXB0aW9uJyxcblxuICAgICAgLy8gbm8gbW9yZSBVUkwgZWxlbWVudHNcbiAgICAgICdnbWQ6VVJMJzogJ2djbzpDaGFyYWN0ZXJTdHJpbmcnLFxuICAgIH0pXG4gIH1cblxuICBhc3luYyB3cml0ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHN1cGVyLndyaXRlUmVjb3JkKHJlY29yZCwgcmVmZXJlbmNlKVxuICAgIC8vIGZpeCBnY28gbmFtZXNwYWNlIGRlZmluaXRpb24gKGNoYW5nZXMgYmV0d2VlbiBpc28xOTEzOSBhbmQgaXNvMTkxMTUtM1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKFxuICAgICAgJ1wiaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nY29cIicsXG4gICAgICAnXCJodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2djby8xLjBcIidcbiAgICApXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iXX0=