geonetwork-ui 2.1.0 → 2.2.0-dev.0da04556

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 (208) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
  2. package/esm2022/libs/api/repository/src/index.mjs +2 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  4. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  5. package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +2 -2
  6. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +2 -2
  7. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
  8. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  9. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  10. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  12. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  13. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  14. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
  15. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +17 -3
  16. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +76 -0
  17. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -3
  18. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
  19. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +9 -6
  20. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -2
  21. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
  22. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +3 -3
  23. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +2 -2
  24. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  25. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  26. package/esm2022/libs/ui/elements/src/index.mjs +4 -1
  27. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  28. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  29. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
  30. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +10 -3
  31. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -6
  32. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  33. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  34. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +15 -3
  35. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +19 -40
  36. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +6 -3
  37. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +45 -0
  38. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  39. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
  40. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
  41. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  42. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  43. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  44. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  45. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  46. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  47. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +3 -3
  48. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +5 -1
  49. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  50. package/esm2022/libs/util/i18n/src/index.mjs +2 -1
  51. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  52. package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +8 -1
  53. package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
  54. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  55. package/esm2022/translations/de.json +102 -84
  56. package/esm2022/translations/en.json +40 -22
  57. package/esm2022/translations/es.json +18 -0
  58. package/esm2022/translations/fr.json +26 -8
  59. package/esm2022/translations/it.json +27 -6
  60. package/esm2022/translations/nl.json +18 -0
  61. package/esm2022/translations/pt.json +18 -0
  62. package/fesm2022/geonetwork-ui.mjs +801 -257
  63. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  64. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  65. package/libs/api/repository/src/index.d.ts +1 -0
  66. package/libs/api/repository/src/index.d.ts.map +1 -1
  67. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  68. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  69. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -0
  70. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  71. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
  72. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  73. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
  74. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  75. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  76. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  77. package/libs/feature/map/src/index.d.ts +1 -0
  78. package/libs/feature/map/src/index.d.ts.map +1 -1
  79. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  80. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  81. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  82. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  83. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
  84. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
  85. package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -12
  86. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  87. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +20 -0
  88. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  89. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
  90. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  91. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -2
  92. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  93. package/libs/feature/search/src/lib/state/effects.d.ts +1 -1
  94. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  95. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -1
  96. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  97. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  98. package/libs/ui/elements/src/index.d.ts +3 -0
  99. package/libs/ui/elements/src/index.d.ts.map +1 -1
  100. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  101. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  102. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  103. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
  104. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
  105. package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts +1 -0
  106. package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts.map +1 -1
  107. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
  108. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  109. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  110. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  111. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
  112. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  113. package/libs/ui/inputs/src/lib/button/button.component.d.ts +2 -4
  114. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  115. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  116. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  117. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  118. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts +1 -1
  119. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +18 -17
  120. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  121. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  122. package/libs/util/app-config/src/lib/model.d.ts +2 -0
  123. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  124. package/libs/util/i18n/src/index.d.ts +1 -0
  125. package/libs/util/i18n/src/index.d.ts.map +1 -1
  126. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  127. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  128. package/libs/util/shared/src/lib/services/theme.service.d.ts +1 -0
  129. package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
  130. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
  131. package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
  132. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  133. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  134. package/package.json +11 -6
  135. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
  136. package/src/libs/api/repository/src/index.ts +1 -0
  137. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  138. package/src/libs/common/domain/src/lib/index.ts +2 -0
  139. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -0
  140. package/src/libs/feature/auth/src/lib/feature-auth.module.ts +1 -1
  141. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +1 -1
  142. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
  143. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  144. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  145. package/src/libs/feature/map/src/index.ts +1 -0
  146. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  147. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  148. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  149. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  150. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  151. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  152. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
  153. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
  154. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
  155. package/src/libs/feature/map/src/lib/feature-map.module.ts +9 -0
  156. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  157. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  158. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +83 -0
  159. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +9 -3
  160. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
  161. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
  162. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -4
  163. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -1
  164. package/src/libs/feature/search/src/lib/state/effects.ts +1 -1
  165. package/src/libs/feature/search/src/lib/utils/service/fields.ts +1 -1
  166. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
  167. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
  168. package/src/libs/ui/elements/src/index.ts +3 -0
  169. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  170. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  171. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +29 -0
  172. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  173. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
  174. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
  175. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +16 -0
  176. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +93 -27
  177. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +7 -0
  178. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  179. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +59 -32
  180. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
  181. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  182. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  183. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +7 -0
  184. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  185. package/src/libs/ui/inputs/src/lib/button/button.component.ts +22 -42
  186. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
  187. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +47 -0
  188. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
  189. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
  190. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  191. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  192. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +2 -2
  193. package/src/libs/util/app-config/src/lib/app-config.ts +4 -0
  194. package/src/libs/util/app-config/src/lib/model.ts +2 -0
  195. package/src/libs/util/i18n/src/index.ts +1 -0
  196. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  197. package/src/libs/util/shared/src/lib/services/theme.service.ts +9 -0
  198. package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
  199. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  200. package/tailwind.base.css +31 -1
  201. package/translations/de.json +102 -84
  202. package/translations/en.json +40 -22
  203. package/translations/es.json +18 -0
  204. package/translations/fr.json +26 -8
  205. package/translations/it.json +27 -6
  206. package/translations/nl.json +18 -0
  207. package/translations/pt.json +18 -0
  208. package/translations/sk.json +18 -0
@@ -40,9 +40,15 @@ export const FORMATS = {
40
40
  color: '#328556',
41
41
  mimeTypes: ['x-gis/x-shapefile'],
42
42
  },
43
+ gml: {
44
+ extensions: ['gml'],
45
+ priority: 5,
46
+ color: '#c92bce',
47
+ mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
48
+ },
43
49
  kml: {
44
50
  extensions: ['kml', 'kmz'],
45
- priority: 5,
51
+ priority: 6,
46
52
  color: '#348009',
47
53
  mimeTypes: [
48
54
  'application/vnd.google-earth.kml+xml',
@@ -51,34 +57,40 @@ export const FORMATS = {
51
57
  },
52
58
  gpkg: {
53
59
  extensions: ['gpkg', 'geopackage'],
54
- priority: 6,
60
+ priority: 7,
55
61
  color: '#ea79ba',
56
62
  mimeTypes: ['application/geopackage+sqlite3'],
57
63
  },
58
64
  zip: {
59
65
  extensions: ['zip', 'tar.gz'],
60
- priority: 7,
66
+ priority: 8,
61
67
  color: '#f2bb3a',
62
68
  mimeTypes: ['application/zip', 'application/x-zip'],
63
69
  },
64
70
  pdf: {
65
71
  extensions: ['pdf'],
66
- priority: 8,
72
+ priority: 9,
67
73
  color: '#db544a',
68
74
  mimeTypes: ['application/pdf'],
69
75
  },
70
76
  jpg: {
71
77
  extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
72
- priority: 8,
78
+ priority: 9,
73
79
  color: '#673ab7',
74
80
  mimeTypes: ['image/jpg'],
75
81
  },
76
82
  svg: {
77
83
  extensions: ['svg'],
78
- priority: 9,
84
+ priority: 10,
79
85
  color: '#d98294',
80
86
  mimeTypes: ['image/svg+xml'],
81
87
  },
88
+ dxf: {
89
+ extensions: ['dxf'],
90
+ priority: 11,
91
+ color: '#de630b',
92
+ mimeTypes: ['application/x-dxf', 'image/x-dxf'],
93
+ },
82
94
  };
83
95
  export function getFormatPriority(linkFormat) {
84
96
  for (const format in FORMATS) {
@@ -95,14 +107,18 @@ export function getFormatPriority(linkFormat) {
95
107
  export function getLinkPriority(link) {
96
108
  return getFormatPriority(getFileFormat(link));
97
109
  }
98
- export function extensionToFormat(extension) {
99
- for (const format in FORMATS) {
100
- for (const alias of FORMATS[format].extensions) {
101
- if (alias === extension.toLowerCase())
102
- return format;
110
+ export function getFileFormatFromServiceOutput(serviceOutput) {
111
+ function formatMatcher(format) {
112
+ const output = serviceOutput.toLowerCase();
113
+ return (format.extensions.some((extension) => output.includes(extension)) ||
114
+ format.mimeTypes.some((mimeType) => output.includes(mimeType)));
115
+ }
116
+ for (const formatName in FORMATS) {
117
+ if (formatMatcher(FORMATS[formatName])) {
118
+ return formatName;
103
119
  }
104
120
  }
105
- return undefined;
121
+ return null;
106
122
  }
107
123
  export function getFileFormat(link) {
108
124
  if ('mimeType' in link) {
@@ -183,4 +199,4 @@ export function getLinkLabel(link) {
183
199
  export function getMimeTypeForFormat(format) {
184
200
  return format in FORMATS ? FORMATS[format.toLowerCase()].mimeTypes[0] : null;
185
201
  }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi9saW5rcy9saW5rLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUdoRSxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQTtBQUU3QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsR0FBRyxFQUFFO1FBQ0gsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ25CLFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDO0tBQzNDO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsVUFBVSxFQUFFO1lBQ1YsT0FBTztZQUNQLEtBQUs7WUFDTCxNQUFNO1lBQ04sVUFBVTtZQUNWLCtCQUErQjtTQUNoQztRQUNELFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFO1lBQ1QsMEJBQTBCO1lBQzFCLG1FQUFtRTtTQUNwRTtLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsMEJBQTBCLENBQUM7S0FDaEU7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDcEIsUUFBUSxFQUFFLENBQUM7UUFDWCxLQUFLLEVBQUUsU0FBUztRQUNoQixTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztLQUNoQztJQUNELEdBQUcsRUFBRTtRQUNILFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsa0JB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QUFLLFVBQVU7d0JBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQTt3QkFDZixNQUFLO2lCQUNSO2FBQ0Y7WUFDRCxNQUFLO1FBQ1A7WUFDRSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQy9CO0lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQzNDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBa0I7SUFDckQsT0FBTyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7IERhdGFzZXREaXN0cmlidXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbm1hcmtlcignZG93bmxvYWRzLndmcy5mZWF0dXJldHlwZS5ub3QuZm91bmQnKVxuXG5leHBvcnQgY29uc3QgRk9STUFUUyA9IHtcbiAgY3N2OiB7XG4gICAgZXh0ZW5zaW9uczogWydjc3YnXSxcbiAgICBwcmlvcml0eTogMSxcbiAgICBjb2xvcjogJyM1NTlkN2YnLFxuICAgIG1pbWVUeXBlczogWyd0ZXh0L2NzdicsICdhcHBsaWNhdGlvbi9jc3YnXSxcbiAgfSxcbiAgZXhjZWw6IHtcbiAgICBleHRlbnNpb25zOiBbXG4gICAgICAnZXhjZWwnLFxuICAgICAgJ3hscycsXG4gICAgICAneGxzeCcsXG4gICAgICAnbXMtZXhjZWwnLFxuICAgICAgJ29wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50JyxcbiAgICBdLFxuICAgIHByaW9yaXR5OiAyLFxuICAgIGNvbG9yOiAnIzBmNDM5NScsXG4gICAgbWltZVR5cGVzOiBbXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgXSxcbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIGV4dGVuc2lvbnM6IFsnZ2VvanNvbiddLFxuICAgIHByaW9yaXR5OiAzLFxuICAgIGNvbG9yOiAnIzFlNTE4MCcsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2dlbytqc29uJywgJ2FwcGxpY2F0aW9uL3ZuZC5nZW8ranNvbiddLFxuICB9LFxuICBqc29uOiB7XG4gICAgZXh0ZW5zaW9uczogWydqc29uJ10sXG4gICAgcHJpb3JpdHk6IDMsXG4gICAgY29sb3I6ICcjMWU1MTgwJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vanNvbiddLFxuICB9LFxuICBzaHA6IHtcbiAgICBleHRlbnNpb25zOiBbJ3NocCcsICdzaGFwZScsICd6aXBwZWQtc2hhcGVmaWxlJ10sXG4gICAgcHJpb3JpdHk6IDQsXG4gICAgY29sb3I6ICcjMzI4NTU2JyxcbiAgICBtaW1lVHlwZXM6IFsneC1naXMveC1zaGFwZWZpbGUnXSxcbiAgfSxcbiAga21sOiB7XG4gICAgZXh0ZW5zaW9uczogWydrbWwnLCAna216J10sXG4gICAgcHJpb3JpdHk6IDUsXG4gICAgY29sb3I6ICcjMzQ4MDA5JyxcbiAgICBtaW1lVHlwZXM6IFtcbiAgICAgICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWwnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216JyxcbiAgICBdLFxuICB9LFxuICBncGtnOiB7XG4gICAgZXh0ZW5zaW9uczogWydncGtnJywgJ2dlb3BhY2thZ2UnXSxcbiAgICBwcmlvcml0eTogNixcbiAgICBjb2xvcjogJyNlYTc5YmEnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9nZW9wYWNrYWdlK3NxbGl0ZTMnXSxcbiAgfSxcbiAgemlwOiB7XG4gICAgZXh0ZW5zaW9uczogWyd6aXAnLCAndGFyLmd6J10sXG4gICAgcHJpb3JpdHk6IDcsXG4gICAgY29sb3I6ICcjZjJiYjNhJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vemlwJywgJ2FwcGxpY2F0aW9uL3gtemlwJ10sXG4gIH0sXG4gIHBkZjoge1xuICAgIGV4dGVuc2lvbnM6IFsncGRmJ10sXG4gICAgcHJpb3JpdHk6IDgsXG4gICAgY29sb3I6ICcjZGI1NDRhJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vcGRmJ10sXG4gIH0sXG4gIGpwZzoge1xuICAgIGV4dGVuc2lvbnM6IFsnanBnJywgJ2pwZWcnLCAnamZpZicsICdwanBlZycsICdwanAnXSxcbiAgICBwcmlvcml0eTogOCxcbiAgICBjb2xvcjogJyM2NzNhYjcnLFxuICAgIG1pbWVUeXBlczogWydpbWFnZS9qcGcnXSxcbiAgfSxcbiAgc3ZnOiB7XG4gICAgZXh0ZW5zaW9uczogWydzdmcnXSxcbiAgICBwcmlvcml0eTogOSxcbiAgICBjb2xvcjogJyNkOTgyOTQnLFxuICAgIG1pbWVUeXBlczogWydpbWFnZS9zdmcreG1sJ10sXG4gIH0sXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIEZpbGVGb3JtYXQgPSBrZXlvZiB0eXBlb2YgRk9STUFUU1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0UHJpb3JpdHkobGlua0Zvcm1hdDogRmlsZUZvcm1hdCk6IG51bWJlciB7XG4gIGZvciAoY29uc3QgZm9ybWF0IGluIEZPUk1BVFMpIHtcbiAgICBmb3IgKGNvbnN0IGV4dCBvZiBGT1JNQVRTW2Zvcm1hdF0uZXh0ZW5zaW9ucykge1xuICAgICAgaWYgKG5ldyBSZWdFeHAoYCR7ZXh0fWAsICdpJykudGVzdChsaW5rRm9ybWF0KSkge1xuICAgICAgICBpZiAoRk9STUFUU1tmb3JtYXRdLnByaW9yaXR5ID09PSAwKSByZXR1cm4gMFxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoRk9STUFUUykubGVuZ3RoIC0gRk9STUFUU1tmb3JtYXRdLnByaW9yaXR5XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rUHJpb3JpdHkobGluazogRGF0YXNldERpc3RyaWJ1dGlvbik6IG51bWJlciB7XG4gIHJldHVybiBnZXRGb3JtYXRQcmlvcml0eShnZXRGaWxlRm9ybWF0KGxpbmspKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5zaW9uVG9Gb3JtYXQoZXh0ZW5zaW9uOiBzdHJpbmcpOiBGaWxlRm9ybWF0IHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgYWxpYXMgb2YgRk9STUFUU1tmb3JtYXRdLmV4dGVuc2lvbnMpIHtcbiAgICAgIGlmIChhbGlhcyA9PT0gZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpIHJldHVybiBmb3JtYXQgYXMgRmlsZUZvcm1hdFxuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRm9ybWF0KGxpbms6IERhdGFzZXREaXN0cmlidXRpb24pOiBGaWxlRm9ybWF0IHtcbiAgaWYgKCdtaW1lVHlwZScgaW4gbGluaykge1xuICAgIGNvbnN0IG1pbWVUeXBlRm9ybWF0ID0gbWltZVR5cGVUb0Zvcm1hdChsaW5rLm1pbWVUeXBlKVxuICAgIGlmIChtaW1lVHlwZUZvcm1hdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1pbWVUeXBlRm9ybWF0XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgZm9ybWF0IGluIEZPUk1BVFMpIHtcbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIEZPUk1BVFNbZm9ybWF0XS5leHRlbnNpb25zKSB7XG4gICAgICBpZiAoY2hlY2tGaWxlRm9ybWF0KGxpbmssIGFsaWFzKSkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgICBpZiAoaXNGb3JtYXRJblF1ZXJ5UGFyYW0obGluaywgYWxpYXMpKSByZXR1cm4gZm9ybWF0IGFzIEZpbGVGb3JtYXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRm9ybWF0SW5RdWVyeVBhcmFtKFxuICBsaW5rOiBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBhbGlhczogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSBsaW5rLnVybC5zZWFyY2hQYXJhbXNcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgcXVlcnlQYXJhbXMuZW50cmllcygpKSB7XG4gICAgaWYgKGtleSA9PT0gJ2Zvcm1hdCcgfHwga2V5ID09PSAnZicpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gYWxpYXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW1lVHlwZVRvRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpOiBGaWxlRm9ybWF0IHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgbXQgb2YgRk9STUFUU1tmb3JtYXRdLm1pbWVUeXBlcykge1xuICAgICAgaWYgKG1pbWVUeXBlID09PSBtdCkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0ZpbGVGb3JtYXQoXG4gIGxpbms6IERhdGFzZXREaXN0cmlidXRpb24sXG4gIGZvcm1hdDogRmlsZUZvcm1hdFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKCduYW1lJyBpbiBsaW5rICYmIG5ldyBSZWdFeHAoYFsuL10ke2Zvcm1hdH1gLCAnaScpLnRlc3QobGluay5uYW1lKSkgfHxcbiAgICAoJ3VybCcgaW4gbGluayAmJlxuICAgICAgbmV3IFJlZ0V4cChgWy4vXSR7Zm9ybWF0fWAsICdpJykudGVzdChsaW5rLnVybC50b1N0cmluZygpKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFkZ2VDb2xvcihsaW5rRm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgYWxpYXMgb2YgRk9STUFUU1tmb3JtYXRdLmV4dGVuc2lvbnMpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGAke2FsaWFzfWAsICdpJykudGVzdChsaW5rRm9ybWF0KSlcbiAgICAgICAgcmV0dXJuIEZPUk1BVFNbZm9ybWF0XS5jb2xvclxuICAgIH1cbiAgfVxuICByZXR1cm4gJ3ZhcigtLWNvbG9yLWdyYXktNzAwKScgLy8gRGVmYXVsdCBjb2xvciA/XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rTGFiZWwobGluazogRGF0YXNldERpc3RyaWJ1dGlvbik6IHN0cmluZyB7XG4gIGxldCBmb3JtYXQgPSAnJ1xuICBzd2l0Y2ggKGxpbmsudHlwZSkge1xuICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAge1xuICAgICAgICBzd2l0Y2ggKGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sKSB7XG4gICAgICAgICAgY2FzZSAnd2ZzJzpcbiAgICAgICAgICAgIGZvcm1hdCA9ICdXRlMnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnV01TJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICd3bXRzJzpcbiAgICAgICAgICAgIGZvcm1hdCA9ICdXTVRTJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICdlc3JpUmVzdCc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnUkVTVCdcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgfVxuICBjb25zdCBsYWJlbCA9IGxpbmsuZGVzY3JpcHRpb24gfHwgbGluay5uYW1lXG4gIHJldHVybiBmb3JtYXQgPyBgJHtsYWJlbH0gKCR7Zm9ybWF0fSlgIDogbGFiZWxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pbWVUeXBlRm9yRm9ybWF0KGZvcm1hdDogRmlsZUZvcm1hdCk6IHN0cmluZyB8IG51bGwge1xuICByZXR1cm4gZm9ybWF0IGluIEZPUk1BVFMgPyBGT1JNQVRTW2Zvcm1hdC50b0xvd2VyQ2FzZSgpXS5taW1lVHlwZXNbMF0gOiBudWxsXG59XG4iXX0=
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi9saW5rcy9saW5rLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUdoRSxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQTtBQUU3QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsR0FBRyxFQUFFO1FBQ0gsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ25CLFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDO0tBQzNDO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsVUFBVSxFQUFFO1lBQ1YsT0FBTztZQUNQLEtBQUs7WUFDTCxNQUFNO1lBQ04sVUFBVTtZQUNWLCtCQUErQjtTQUNoQztRQUNELFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFO1lBQ1QsMEJBQTBCO1lBQzFCLG1FQUFtRTtTQUNwRTtLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsMEJBQTBCLENBQUM7S0FDaEU7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDcEIsUUFBUSxFQUFFLENBQUM7UUFDWCxLQUFLLEVBQUUsU0FBUztRQUNoQixTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztLQUNoQztJQUNELEdBQUcsRUFBRTtRQUNILFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsa0JB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QUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7IERhdGFzZXREaXN0cmlidXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbm1hcmtlcignZG93bmxvYWRzLndmcy5mZWF0dXJldHlwZS5ub3QuZm91bmQnKVxuXG5leHBvcnQgY29uc3QgRk9STUFUUyA9IHtcbiAgY3N2OiB7XG4gICAgZXh0ZW5zaW9uczogWydjc3YnXSxcbiAgICBwcmlvcml0eTogMSxcbiAgICBjb2xvcjogJyM1NTlkN2YnLFxuICAgIG1pbWVUeXBlczogWyd0ZXh0L2NzdicsICdhcHBsaWNhdGlvbi9jc3YnXSxcbiAgfSxcbiAgZXhjZWw6IHtcbiAgICBleHRlbnNpb25zOiBbXG4gICAgICAnZXhjZWwnLFxuICAgICAgJ3hscycsXG4gICAgICAneGxzeCcsXG4gICAgICAnbXMtZXhjZWwnLFxuICAgICAgJ29wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50JyxcbiAgICBdLFxuICAgIHByaW9yaXR5OiAyLFxuICAgIGNvbG9yOiAnIzBmNDM5NScsXG4gICAgbWltZVR5cGVzOiBbXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgXSxcbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIGV4dGVuc2lvbnM6IFsnZ2VvanNvbiddLFxuICAgIHByaW9yaXR5OiAzLFxuICAgIGNvbG9yOiAnIzFlNTE4MCcsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2dlbytqc29uJywgJ2FwcGxpY2F0aW9uL3ZuZC5nZW8ranNvbiddLFxuICB9LFxuICBqc29uOiB7XG4gICAgZXh0ZW5zaW9uczogWydqc29uJ10sXG4gICAgcHJpb3JpdHk6IDMsXG4gICAgY29sb3I6ICcjMWU1MTgwJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vanNvbiddLFxuICB9LFxuICBzaHA6IHtcbiAgICBleHRlbnNpb25zOiBbJ3NocCcsICdzaGFwZScsICd6aXBwZWQtc2hhcGVmaWxlJ10sXG4gICAgcHJpb3JpdHk6IDQsXG4gICAgY29sb3I6ICcjMzI4NTU2JyxcbiAgICBtaW1lVHlwZXM6IFsneC1naXMveC1zaGFwZWZpbGUnXSxcbiAgfSxcbiAgZ21sOiB7XG4gICAgZXh0ZW5zaW9uczogWydnbWwnXSxcbiAgICBwcmlvcml0eTogNSxcbiAgICBjb2xvcjogJyNjOTJiY2UnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9nbWwreG1sJywgJ3RleHQveG1sOyBzdWJ0eXBlPWdtbCddLFxuICB9LFxuICBrbWw6IHtcbiAgICBleHRlbnNpb25zOiBbJ2ttbCcsICdrbXonXSxcbiAgICBwcmlvcml0eTogNixcbiAgICBjb2xvcjogJyMzNDgwMDknLFxuICAgIG1pbWVUeXBlczogW1xuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbCcsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXonLFxuICAgIF0sXG4gIH0sXG4gIGdwa2c6IHtcbiAgICBleHRlbnNpb25zOiBbJ2dwa2cnLCAnZ2VvcGFja2FnZSddLFxuICAgIHByaW9yaXR5OiA3LFxuICAgIGNvbG9yOiAnI2VhNzliYScsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2dlb3BhY2thZ2Urc3FsaXRlMyddLFxuICB9LFxuICB6aXA6IHtcbiAgICBleHRlbnNpb25zOiBbJ3ppcCcsICd0YXIuZ3onXSxcbiAgICBwcmlvcml0eTogOCxcbiAgICBjb2xvcjogJyNmMmJiM2EnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi96aXAnLCAnYXBwbGljYXRpb24veC16aXAnXSxcbiAgfSxcbiAgcGRmOiB7XG4gICAgZXh0ZW5zaW9uczogWydwZGYnXSxcbiAgICBwcmlvcml0eTogOSxcbiAgICBjb2xvcjogJyNkYjU0NGEnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9wZGYnXSxcbiAgfSxcbiAganBnOiB7XG4gICAgZXh0ZW5zaW9uczogWydqcGcnLCAnanBlZycsICdqZmlmJywgJ3BqcGVnJywgJ3BqcCddLFxuICAgIHByaW9yaXR5OiA5LFxuICAgIGNvbG9yOiAnIzY3M2FiNycsXG4gICAgbWltZVR5cGVzOiBbJ2ltYWdlL2pwZyddLFxuICB9LFxuICBzdmc6IHtcbiAgICBleHRlbnNpb25zOiBbJ3N2ZyddLFxuICAgIHByaW9yaXR5OiAxMCxcbiAgICBjb2xvcjogJyNkOTgyOTQnLFxuICAgIG1pbWVUeXBlczogWydpbWFnZS9zdmcreG1sJ10sXG4gIH0sXG4gIGR4Zjoge1xuICAgIGV4dGVuc2lvbnM6IFsnZHhmJ10sXG4gICAgcHJpb3JpdHk6IDExLFxuICAgIGNvbG9yOiAnI2RlNjMwYicsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL3gtZHhmJywgJ2ltYWdlL3gtZHhmJ10sXG4gIH0sXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIEZpbGVGb3JtYXQgPSBrZXlvZiB0eXBlb2YgRk9STUFUU1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0UHJpb3JpdHkobGlua0Zvcm1hdDogRmlsZUZvcm1hdCk6IG51bWJlciB7XG4gIGZvciAoY29uc3QgZm9ybWF0IGluIEZPUk1BVFMpIHtcbiAgICBmb3IgKGNvbnN0IGV4dCBvZiBGT1JNQVRTW2Zvcm1hdF0uZXh0ZW5zaW9ucykge1xuICAgICAgaWYgKG5ldyBSZWdFeHAoYCR7ZXh0fWAsICdpJykudGVzdChsaW5rRm9ybWF0KSkge1xuICAgICAgICBpZiAoRk9STUFUU1tmb3JtYXRdLnByaW9yaXR5ID09PSAwKSByZXR1cm4gMFxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoRk9STUFUUykubGVuZ3RoIC0gRk9STUFUU1tmb3JtYXRdLnByaW9yaXR5XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rUHJpb3JpdHkobGluazogRGF0YXNldERpc3RyaWJ1dGlvbik6IG51bWJlciB7XG4gIHJldHVybiBnZXRGb3JtYXRQcmlvcml0eShnZXRGaWxlRm9ybWF0KGxpbmspKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUZvcm1hdEZyb21TZXJ2aWNlT3V0cHV0KFxuICBzZXJ2aWNlT3V0cHV0OiBzdHJpbmdcbik6IEZpbGVGb3JtYXQgfCBudWxsIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWF0Y2hlcihmb3JtYXQ6IHR5cGVvZiBGT1JNQVRTW0ZpbGVGb3JtYXRdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gc2VydmljZU91dHB1dC50b0xvd2VyQ2FzZSgpXG4gICAgcmV0dXJuIChcbiAgICAgIGZvcm1hdC5leHRlbnNpb25zLnNvbWUoKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgICBvdXRwdXQuaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgICAgKSB8fFxuICAgICAgZm9ybWF0Lm1pbWVUeXBlcy5zb21lKChtaW1lVHlwZTogc3RyaW5nKSA9PiBvdXRwdXQuaW5jbHVkZXMobWltZVR5cGUpKVxuICAgIClcbiAgfVxuICBmb3IgKGNvbnN0IGZvcm1hdE5hbWUgaW4gRk9STUFUUykge1xuICAgIGlmIChmb3JtYXRNYXRjaGVyKEZPUk1BVFNbZm9ybWF0TmFtZV0pKSB7XG4gICAgICByZXR1cm4gZm9ybWF0TmFtZSBhcyBGaWxlRm9ybWF0XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRm9ybWF0KGxpbms6IERhdGFzZXREaXN0cmlidXRpb24pOiBGaWxlRm9ybWF0IHtcbiAgaWYgKCdtaW1lVHlwZScgaW4gbGluaykge1xuICAgIGNvbnN0IG1pbWVUeXBlRm9ybWF0ID0gbWltZVR5cGVUb0Zvcm1hdChsaW5rLm1pbWVUeXBlKVxuICAgIGlmIChtaW1lVHlwZUZvcm1hdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1pbWVUeXBlRm9ybWF0XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgZm9ybWF0IGluIEZPUk1BVFMpIHtcbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIEZPUk1BVFNbZm9ybWF0XS5leHRlbnNpb25zKSB7XG4gICAgICBpZiAoY2hlY2tGaWxlRm9ybWF0KGxpbmssIGFsaWFzKSkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgICBpZiAoaXNGb3JtYXRJblF1ZXJ5UGFyYW0obGluaywgYWxpYXMpKSByZXR1cm4gZm9ybWF0IGFzIEZpbGVGb3JtYXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRm9ybWF0SW5RdWVyeVBhcmFtKFxuICBsaW5rOiBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBhbGlhczogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSBsaW5rLnVybC5zZWFyY2hQYXJhbXNcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgcXVlcnlQYXJhbXMuZW50cmllcygpKSB7XG4gICAgaWYgKGtleSA9PT0gJ2Zvcm1hdCcgfHwga2V5ID09PSAnZicpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gYWxpYXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW1lVHlwZVRvRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpOiBGaWxlRm9ybWF0IHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgbXQgb2YgRk9STUFUU1tmb3JtYXRdLm1pbWVUeXBlcykge1xuICAgICAgaWYgKG1pbWVUeXBlID09PSBtdCkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0ZpbGVGb3JtYXQoXG4gIGxpbms6IERhdGFzZXREaXN0cmlidXRpb24sXG4gIGZvcm1hdDogRmlsZUZvcm1hdFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKCduYW1lJyBpbiBsaW5rICYmIG5ldyBSZWdFeHAoYFsuL10ke2Zvcm1hdH1gLCAnaScpLnRlc3QobGluay5uYW1lKSkgfHxcbiAgICAoJ3VybCcgaW4gbGluayAmJlxuICAgICAgbmV3IFJlZ0V4cChgWy4vXSR7Zm9ybWF0fWAsICdpJykudGVzdChsaW5rLnVybC50b1N0cmluZygpKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFkZ2VDb2xvcihsaW5rRm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgYWxpYXMgb2YgRk9STUFUU1tmb3JtYXRdLmV4dGVuc2lvbnMpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGAke2FsaWFzfWAsICdpJykudGVzdChsaW5rRm9ybWF0KSlcbiAgICAgICAgcmV0dXJuIEZPUk1BVFNbZm9ybWF0XS5jb2xvclxuICAgIH1cbiAgfVxuICByZXR1cm4gJ3ZhcigtLWNvbG9yLWdyYXktNzAwKScgLy8gRGVmYXVsdCBjb2xvciA/XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rTGFiZWwobGluazogRGF0YXNldERpc3RyaWJ1dGlvbik6IHN0cmluZyB7XG4gIGxldCBmb3JtYXQgPSAnJ1xuICBzd2l0Y2ggKGxpbmsudHlwZSkge1xuICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAge1xuICAgICAgICBzd2l0Y2ggKGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sKSB7XG4gICAgICAgICAgY2FzZSAnd2ZzJzpcbiAgICAgICAgICAgIGZvcm1hdCA9ICdXRlMnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnV01TJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICd3bXRzJzpcbiAgICAgICAgICAgIGZvcm1hdCA9ICdXTVRTJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICdlc3JpUmVzdCc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnUkVTVCdcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgfVxuICBjb25zdCBsYWJlbCA9IGxpbmsuZGVzY3JpcHRpb24gfHwgbGluay5uYW1lXG4gIHJldHVybiBmb3JtYXQgPyBgJHtsYWJlbH0gKCR7Zm9ybWF0fSlgIDogbGFiZWxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pbWVUeXBlRm9yRm9ybWF0KGZvcm1hdDogRmlsZUZvcm1hdCk6IHN0cmluZyB8IG51bGwge1xuICByZXR1cm4gZm9ybWF0IGluIEZPUk1BVFMgPyBGT1JNQVRTW2Zvcm1hdC50b0xvd2VyQ2FzZSgpXS5taW1lVHlwZXNbMF0gOiBudWxsXG59XG4iXX0=
@@ -74,6 +74,13 @@ export class ThemeService {
74
74
  }
75
75
  return chroma.hsl(hue % 360, saturation, lightness).css();
76
76
  }
77
+ static setFavicon(faviconPath) {
78
+ const link = document.querySelector("link[rel*='icon']") ||
79
+ document.createElement('link');
80
+ link['rel'] = 'icon';
81
+ link['href'] = faviconPath;
82
+ document.getElementsByTagName('head')[0].appendChild(link);
83
+ }
77
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
78
85
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
79
86
  }
@@ -83,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
83
90
  providedIn: 'root',
84
91
  }]
85
92
  }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBOztBQUs5QixNQUFNLE9BQU8sWUFBWTtJQUN2Qix1RkFBdUY7SUFDdkYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQzdCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUUvQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDaEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwRCxZQUFZLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDOUQsUUFBUSxJQUFJLE9BQU8sU0FBUyxZQUFZLE9BQU8scUJBQXFCLEtBQUs7aUJBQ3RFLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNwQixHQUFHLEVBQUUsSUFBSSxDQUFBO1lBRVosUUFBUSxJQUFJLGFBQWEsU0FBUyxZQUFZLE9BQU8sNEJBQTRCLEtBQUs7aUJBQ25GLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNwQixHQUFHLEVBQUUsSUFBSSxDQUFBO1lBQ1osT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ04sUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUN0QixZQUFvQixFQUNwQixjQUFzQixFQUN0QixTQUFpQixFQUNqQixlQUF1QixFQUN2QixRQUFpQixFQUNqQixTQUFrQixFQUNsQixrQkFBMkI7UUFFM0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDNUUsQ0FBQyxDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3QixVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1FBQzNDLFVBQVUsQ0FDUixpQkFBaUIsRUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDckQsQ0FBQTtRQUNELFVBQVUsQ0FDUixrQkFBa0IsRUFDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDckQsQ0FBQTtRQUNELFVBQVUsQ0FDUixlQUFlLEVBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDdEQsQ0FBQTtRQUNELFVBQVUsQ0FDUixnQkFBZ0IsRUFDaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDckQsQ0FBQTtRQUNELFVBQVUsQ0FDUixpQkFBaUIsRUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDckQsQ0FBQTtRQUNELFVBQVUsQ0FDUixlQUFlLEVBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDdEQsQ0FBQTtRQUNELFVBQVUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDL0MsVUFBVSxDQUNSLG1CQUFtQixFQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLG9CQUFvQixFQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLGlCQUFpQixFQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN4RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLGtCQUFrQixFQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLG1CQUFtQixFQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLGlCQUFpQixFQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN4RCxDQUFBO1FBQ0QsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxVQUFVLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO1FBRWpELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckUsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLFFBQVEsRUFBRTtZQUNaLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtTQUMzRTtRQUNELElBQUksU0FBUyxFQUFFO1lBQ2IsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUN4QyxxQkFBcUIsRUFDckIsU0FBUyxDQUNWLENBQUE7U0FDRjtRQUVELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFBO1lBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFBO1lBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQzNCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FDdkIsS0FBYSxFQUNiLFVBQWtCLEVBQ2xCLFNBQWlCO1FBRWpCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQzNELENBQUM7OEdBdklVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgY2hyb21hIGZyb20gJ2Nocm9tYS1qcydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIC8vIEZJWE1FOiB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHRoZSBhcHAgY29uZmlnIHNob3VsZCBiZSByZWFkIGluc3RlYWQsIHRvIHJlbW92ZVxuICBzdGF0aWMgZ2V0Q29sb3IobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGAtLWNvbG9yLSR7bmFtZX1gKVxuICB9XG5cbiAgc3RhdGljIGdlbmVyYXRlQmdPcGFjaXR5Q2xhc3NlcyhcbiAgICBjb2xvck5hbWUsXG4gICAgY29sb3JWYWx1ZSxcbiAgICBvcGFjaXRpZXMgPSBbMCwgMTAsIDI1LCA1MCwgNzVdXG4gICkge1xuICAgIGNvbnN0IGNvbG9yID0gY2hyb21hKGNvbG9yVmFsdWUpXG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBvcGFjaXRpZXMucmVkdWNlKChjc3NSdWxlcywgb3BhY2l0eSkgPT4ge1xuICAgICAgY3NzUnVsZXMgKz0gYC5iZy0ke2NvbG9yTmFtZX0tb3BhY2l0eS0ke29wYWNpdHl9e2JhY2tncm91bmQtY29sb3I6JHtjb2xvclxuICAgICAgICAuYWxwaGEob3BhY2l0eSAvIDEwMClcbiAgICAgICAgLmNzcygpfTt9YFxuXG4gICAgICBjc3NSdWxlcyArPSBgLmhvdmVyLWJnLSR7Y29sb3JOYW1lfS1vcGFjaXR5LSR7b3BhY2l0eX06aG92ZXIge2JhY2tncm91bmQtY29sb3I6JHtjb2xvclxuICAgICAgICAuYWxwaGEob3BhY2l0eSAvIDEwMClcbiAgICAgICAgLmNzcygpfTt9YFxuICAgICAgcmV0dXJuIGNzc1J1bGVzXG4gICAgfSwgJycpXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4gIH1cblxuICBzdGF0aWMgYXBwbHlDc3NWYXJpYWJsZXMoXG4gICAgcHJpbWFyeUNvbG9yOiBzdHJpbmcsXG4gICAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZyxcbiAgICBtYWluQ29sb3I6IHN0cmluZyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyxcbiAgICBtYWluRm9udD86IHN0cmluZyxcbiAgICB0aXRsZUZvbnQ/OiBzdHJpbmcsXG4gICAgZm9udHNTdHlsZXNoZWV0VXJsPzogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IGFwcGx5Q29sb3IgPSAobmFtZTogc3RyaW5nLCBjb2xvcikgPT4ge1xuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGAtLWNvbG9yLSR7bmFtZX1gLCBjb2xvci5jc3MoKSlcbiAgICB9XG5cbiAgICBjb25zdCBibGFjayA9IGNocm9tYSgnYmxhY2snKVxuICAgIGNvbnN0IHdoaXRlID0gY2hyb21hKCd3aGl0ZScpXG4gICAgYXBwbHlDb2xvcigncHJpbWFyeScsIGNocm9tYShwcmltYXJ5Q29sb3IpKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAncHJpbWFyeS1saWdodGVyJyxcbiAgICAgIGNocm9tYS5zY2FsZShbcHJpbWFyeUNvbG9yLCB3aGl0ZV0pLm1vZGUoJ2xhYicpKDAuMylcbiAgICApXG4gICAgYXBwbHlDb2xvcihcbiAgICAgICdwcmltYXJ5LWxpZ2h0ZXN0JyxcbiAgICAgIGNocm9tYS5zY2FsZShbcHJpbWFyeUNvbG9yLCB3aGl0ZV0pLm1vZGUoJ2xhYicpKDAuNilcbiAgICApXG4gICAgYXBwbHlDb2xvcihcbiAgICAgICdwcmltYXJ5LXdoaXRlJyxcbiAgICAgIGNocm9tYS5zY2FsZShbcHJpbWFyeUNvbG9yLCB3aGl0ZV0pLm1vZGUoJ2xhYicpKDAuODUpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAncHJpbWFyeS1kYXJrZXInLFxuICAgICAgY2hyb21hLnNjYWxlKFtwcmltYXJ5Q29sb3IsIGJsYWNrXSkubW9kZSgnbGFiJykoMC4zKVxuICAgIClcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3ByaW1hcnktZGFya2VzdCcsXG4gICAgICBjaHJvbWEuc2NhbGUoW3ByaW1hcnlDb2xvciwgYmxhY2tdKS5tb2RlKCdsYWInKSgwLjYpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAncHJpbWFyeS1ibGFjaycsXG4gICAgICBjaHJvbWEuc2NhbGUoW3ByaW1hcnlDb2xvciwgYmxhY2tdKS5tb2RlKCdsYWInKSgwLjg1KVxuICAgIClcbiAgICBhcHBseUNvbG9yKCdzZWNvbmRhcnknLCBjaHJvbWEoc2Vjb25kYXJ5Q29sb3IpKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAnc2Vjb25kYXJ5LWxpZ2h0ZXInLFxuICAgICAgY2hyb21hLnNjYWxlKFtzZWNvbmRhcnlDb2xvciwgd2hpdGVdKS5tb2RlKCdsYWInKSgwLjMpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAnc2Vjb25kYXJ5LWxpZ2h0ZXN0JyxcbiAgICAgIGNocm9tYS5zY2FsZShbc2Vjb25kYXJ5Q29sb3IsIHdoaXRlXSkubW9kZSgnbGFiJykoMC42KVxuICAgIClcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3NlY29uZGFyeS13aGl0ZScsXG4gICAgICBjaHJvbWEuc2NhbGUoW3NlY29uZGFyeUNvbG9yLCB3aGl0ZV0pLm1vZGUoJ2xhYicpKDAuODUpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAnc2Vjb25kYXJ5LWRhcmtlcicsXG4gICAgICBjaHJvbWEuc2NhbGUoW3NlY29uZGFyeUNvbG9yLCBibGFja10pLm1vZGUoJ2xhYicpKDAuMylcbiAgICApXG4gICAgYXBwbHlDb2xvcihcbiAgICAgICdzZWNvbmRhcnktZGFya2VzdCcsXG4gICAgICBjaHJvbWEuc2NhbGUoW3NlY29uZGFyeUNvbG9yLCBibGFja10pLm1vZGUoJ2xhYicpKDAuNilcbiAgICApXG4gICAgYXBwbHlDb2xvcihcbiAgICAgICdzZWNvbmRhcnktYmxhY2snLFxuICAgICAgY2hyb21hLnNjYWxlKFtzZWNvbmRhcnlDb2xvciwgYmxhY2tdKS5tb2RlKCdsYWInKSgwLjg1KVxuICAgIClcbiAgICBhcHBseUNvbG9yKCdtYWluJywgY2hyb21hKG1haW5Db2xvcikpXG4gICAgYXBwbHlDb2xvcignYmFja2dyb3VuZCcsIGNocm9tYShiYWNrZ3JvdW5kQ29sb3IpKVxuXG4gICAgY29uc3Qgc2NhbGUgPSBjaHJvbWEuc2NhbGUoW2JhY2tncm91bmRDb2xvciwgbWFpbkNvbG9yXSkubW9kZSgnbHJnYicpXG4gICAgYXBwbHlDb2xvcignZ3JheS01MCcsIHNjYWxlKDAuMDUpKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktMTAwJywgc2NhbGUoMC4xKSlcbiAgICBhcHBseUNvbG9yKCdncmF5LTIwMCcsIHNjYWxlKDAuMikpXG4gICAgYXBwbHlDb2xvcignZ3JheS0zMDAnLCBzY2FsZSgwLjMpKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktNDAwJywgc2NhbGUoMC40KSlcbiAgICBhcHBseUNvbG9yKCdncmF5LTUwMCcsIHNjYWxlKDAuNSkpXG4gICAgYXBwbHlDb2xvcignZ3JheS02MDAnLCBzY2FsZSgwLjYpKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktNzAwJywgc2NhbGUoMC43KSlcbiAgICBhcHBseUNvbG9yKCdncmF5LTgwMCcsIHNjYWxlKDAuOCkpXG4gICAgYXBwbHlDb2xvcignZ3JheS05MDAnLCBzY2FsZSgwLjkpKVxuXG4gICAgaWYgKG1haW5Gb250KSB7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYC0tZm9udC1mYW1pbHktbWFpbmAsIG1haW5Gb250KVxuICAgIH1cbiAgICBpZiAodGl0bGVGb250KSB7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIGAtLWZvbnQtZmFtaWx5LXRpdGxlYCxcbiAgICAgICAgdGl0bGVGb250XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKGZvbnRzU3R5bGVzaGVldFVybCkge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKVxuICAgICAgbGluay5ocmVmID0gZm9udHNTdHlsZXNoZWV0VXJsXG4gICAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0J1xuICAgICAgbGluay50eXBlID0gJ3RleHQvY3NzJ1xuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmQobGluaylcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2VuZXJhdGVMYWJlbENvbG9yKFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgc2F0dXJhdGlvbjogbnVtYmVyLFxuICAgIGxpZ2h0bmVzczogbnVtYmVyXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGh1ZSA9IDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhYmVsLmxlbmd0aDsgaSsrKSB7XG4gICAgICBodWUgKz0gbGFiZWwuY2hhckNvZGVBdChpKVxuICAgIH1cbiAgICByZXR1cm4gY2hyb21hLmhzbChodWUgJSAzNjAsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcykuY3NzKClcbiAgfVxufVxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBOztBQUs5QixNQUFNLE9BQU8sWUFBWTtJQUN2Qix1RkFBdUY7SUFDdkYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQzdCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUUvQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDaEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwRCxZQUFZLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDOUQsUUFBUSxJQUFJLE9BQU8sU0FBUyxZQUFZLE9BQU8scUJBQXFCLEtBQUs7aUJBQ3RFLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNwQixHQUFHLEVBQUUsSUFBSSxDQUFBO1lBRVosUUFBUSxJQUFJLGFBQWEsU0FBUyxZQUFZLE9BQU8sNEJBQTRCLEtBQUs7aUJBQ25GLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNwQixHQUFHLEVBQUUsSUFB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QixFQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLG1CQUFtQixFQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RCxDQUFBO1FBQ0QsVUFBVSxDQUNSLGlCQUFpQixFQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN4RCxDQUFBO1FBQ0QsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxVQUFVLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO1FBRWpELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckUsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLFFBQVEsRUFBRTtZQUNaLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQTtTQUMzRTtRQUNELElBQUksU0FBUyxFQUFFO1lBQ2IsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUN4QyxxQkFBcUIsRUFDckIsU0FBUyxDQUNWLENBQUE7U0FDRjtRQUVELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFBO1lBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFBO1lBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQzNCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FDdkIsS0FBYSxFQUNiLFVBQWtCLEVBQ2xCLFNBQWlCO1FBRWpCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQW1CO1FBQ25DLE1BQU0sSUFBSSxHQUNSLFFBQVEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUM7WUFDM0MsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUE7UUFDMUIsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1RCxDQUFDOzhHQWhKVSxZQUFZO2tIQUFaLFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IGNocm9tYSBmcm9tICdjaHJvbWEtanMnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVNlcnZpY2Uge1xuICAvLyBGSVhNRTogdGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCB0aGUgYXBwIGNvbmZpZyBzaG91bGQgYmUgcmVhZCBpbnN0ZWFkLCB0byByZW1vdmVcbiAgc3RhdGljIGdldENvbG9yKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShgLS1jb2xvci0ke25hbWV9YClcbiAgfVxuXG4gIHN0YXRpYyBnZW5lcmF0ZUJnT3BhY2l0eUNsYXNzZXMoXG4gICAgY29sb3JOYW1lLFxuICAgIGNvbG9yVmFsdWUsXG4gICAgb3BhY2l0aWVzID0gWzAsIDEwLCAyNSwgNTAsIDc1XVxuICApIHtcbiAgICBjb25zdCBjb2xvciA9IGNocm9tYShjb2xvclZhbHVlKVxuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgICBzdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gb3BhY2l0aWVzLnJlZHVjZSgoY3NzUnVsZXMsIG9wYWNpdHkpID0+IHtcbiAgICAgIGNzc1J1bGVzICs9IGAuYmctJHtjb2xvck5hbWV9LW9wYWNpdHktJHtvcGFjaXR5fXtiYWNrZ3JvdW5kLWNvbG9yOiR7Y29sb3JcbiAgICAgICAgLmFscGhhKG9wYWNpdHkgLyAxMDApXG4gICAgICAgIC5jc3MoKX07fWBcblxuICAgICAgY3NzUnVsZXMgKz0gYC5ob3Zlci1iZy0ke2NvbG9yTmFtZX0tb3BhY2l0eS0ke29wYWNpdHl9OmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiR7Y29sb3JcbiAgICAgICAgLmFscGhhKG9wYWNpdHkgLyAxMDApXG4gICAgICAgIC5jc3MoKX07fWBcbiAgICAgIHJldHVybiBjc3NSdWxlc1xuICAgIH0sICcnKVxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KVxuICB9XG5cbiAgc3RhdGljIGFwcGx5Q3NzVmFyaWFibGVzKFxuICAgIHByaW1hcnlDb2xvcjogc3RyaW5nLFxuICAgIHNlY29uZGFyeUNvbG9yOiBzdHJpbmcsXG4gICAgbWFpbkNvbG9yOiBzdHJpbmcsXG4gICAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcsXG4gICAgbWFpbkZvbnQ/OiBzdHJpbmcsXG4gICAgdGl0bGVGb250Pzogc3RyaW5nLFxuICAgIGZvbnRzU3R5bGVzaGVldFVybD86IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBhcHBseUNvbG9yID0gKG5hbWU6IHN0cmluZywgY29sb3IpID0+IHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgLS1jb2xvci0ke25hbWV9YCwgY29sb3IuY3NzKCkpXG4gICAgfVxuXG4gICAgY29uc3QgYmxhY2sgPSBjaHJvbWEoJ2JsYWNrJylcbiAgICBjb25zdCB3aGl0ZSA9IGNocm9tYSgnd2hpdGUnKVxuICAgIGFwcGx5Q29sb3IoJ3ByaW1hcnknLCBjaHJvbWEocHJpbWFyeUNvbG9yKSlcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3ByaW1hcnktbGlnaHRlcicsXG4gICAgICBjaHJvbWEuc2NhbGUoW3ByaW1hcnlDb2xvciwgd2hpdGVdKS5tb2RlKCdsYWInKSgwLjMpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAncHJpbWFyeS1saWdodGVzdCcsXG4gICAgICBjaHJvbWEuc2NhbGUoW3ByaW1hcnlDb2xvciwgd2hpdGVdKS5tb2RlKCdsYWInKSgwLjYpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAncHJpbWFyeS13aGl0ZScsXG4gICAgICBjaHJvbWEuc2NhbGUoW3ByaW1hcnlDb2xvciwgd2hpdGVdKS5tb2RlKCdsYWInKSgwLjg1KVxuICAgIClcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3ByaW1hcnktZGFya2VyJyxcbiAgICAgIGNocm9tYS5zY2FsZShbcHJpbWFyeUNvbG9yLCBibGFja10pLm1vZGUoJ2xhYicpKDAuMylcbiAgICApXG4gICAgYXBwbHlDb2xvcihcbiAgICAgICdwcmltYXJ5LWRhcmtlc3QnLFxuICAgICAgY2hyb21hLnNjYWxlKFtwcmltYXJ5Q29sb3IsIGJsYWNrXSkubW9kZSgnbGFiJykoMC42KVxuICAgIClcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3ByaW1hcnktYmxhY2snLFxuICAgICAgY2hyb21hLnNjYWxlKFtwcmltYXJ5Q29sb3IsIGJsYWNrXSkubW9kZSgnbGFiJykoMC44NSlcbiAgICApXG4gICAgYXBwbHlDb2xvcignc2Vjb25kYXJ5JywgY2hyb21hKHNlY29uZGFyeUNvbG9yKSlcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3NlY29uZGFyeS1saWdodGVyJyxcbiAgICAgIGNocm9tYS5zY2FsZShbc2Vjb25kYXJ5Q29sb3IsIHdoaXRlXSkubW9kZSgnbGFiJykoMC4zKVxuICAgIClcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3NlY29uZGFyeS1saWdodGVzdCcsXG4gICAgICBjaHJvbWEuc2NhbGUoW3NlY29uZGFyeUNvbG9yLCB3aGl0ZV0pLm1vZGUoJ2xhYicpKDAuNilcbiAgICApXG4gICAgYXBwbHlDb2xvcihcbiAgICAgICdzZWNvbmRhcnktd2hpdGUnLFxuICAgICAgY2hyb21hLnNjYWxlKFtzZWNvbmRhcnlDb2xvciwgd2hpdGVdKS5tb2RlKCdsYWInKSgwLjg1KVxuICAgIClcbiAgICBhcHBseUNvbG9yKFxuICAgICAgJ3NlY29uZGFyeS1kYXJrZXInLFxuICAgICAgY2hyb21hLnNjYWxlKFtzZWNvbmRhcnlDb2xvciwgYmxhY2tdKS5tb2RlKCdsYWInKSgwLjMpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAnc2Vjb25kYXJ5LWRhcmtlc3QnLFxuICAgICAgY2hyb21hLnNjYWxlKFtzZWNvbmRhcnlDb2xvciwgYmxhY2tdKS5tb2RlKCdsYWInKSgwLjYpXG4gICAgKVxuICAgIGFwcGx5Q29sb3IoXG4gICAgICAnc2Vjb25kYXJ5LWJsYWNrJyxcbiAgICAgIGNocm9tYS5zY2FsZShbc2Vjb25kYXJ5Q29sb3IsIGJsYWNrXSkubW9kZSgnbGFiJykoMC44NSlcbiAgICApXG4gICAgYXBwbHlDb2xvcignbWFpbicsIGNocm9tYShtYWluQ29sb3IpKVxuICAgIGFwcGx5Q29sb3IoJ2JhY2tncm91bmQnLCBjaHJvbWEoYmFja2dyb3VuZENvbG9yKSlcblxuICAgIGNvbnN0IHNjYWxlID0gY2hyb21hLnNjYWxlKFtiYWNrZ3JvdW5kQ29sb3IsIG1haW5Db2xvcl0pLm1vZGUoJ2xyZ2InKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktNTAnLCBzY2FsZSgwLjA1KSlcbiAgICBhcHBseUNvbG9yKCdncmF5LTEwMCcsIHNjYWxlKDAuMSkpXG4gICAgYXBwbHlDb2xvcignZ3JheS0yMDAnLCBzY2FsZSgwLjIpKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktMzAwJywgc2NhbGUoMC4zKSlcbiAgICBhcHBseUNvbG9yKCdncmF5LTQwMCcsIHNjYWxlKDAuNCkpXG4gICAgYXBwbHlDb2xvcignZ3JheS01MDAnLCBzY2FsZSgwLjUpKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktNjAwJywgc2NhbGUoMC42KSlcbiAgICBhcHBseUNvbG9yKCdncmF5LTcwMCcsIHNjYWxlKDAuNykpXG4gICAgYXBwbHlDb2xvcignZ3JheS04MDAnLCBzY2FsZSgwLjgpKVxuICAgIGFwcGx5Q29sb3IoJ2dyYXktOTAwJywgc2NhbGUoMC45KSlcblxuICAgIGlmIChtYWluRm9udCkge1xuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGAtLWZvbnQtZmFtaWx5LW1haW5gLCBtYWluRm9udClcbiAgICB9XG4gICAgaWYgKHRpdGxlRm9udCkge1xuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBgLS1mb250LWZhbWlseS10aXRsZWAsXG4gICAgICAgIHRpdGxlRm9udFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChmb250c1N0eWxlc2hlZXRVcmwpIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJylcbiAgICAgIGxpbmsuaHJlZiA9IGZvbnRzU3R5bGVzaGVldFVybFxuICAgICAgbGluay5yZWwgPSAnc3R5bGVzaGVldCdcbiAgICAgIGxpbmsudHlwZSA9ICd0ZXh0L2NzcydcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKGxpbmspXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdlbmVyYXRlTGFiZWxDb2xvcihcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIHNhdHVyYXRpb246IG51bWJlcixcbiAgICBsaWdodG5lc3M6IG51bWJlclxuICApOiBzdHJpbmcge1xuICAgIGxldCBodWUgPSAwXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYWJlbC5sZW5ndGg7IGkrKykge1xuICAgICAgaHVlICs9IGxhYmVsLmNoYXJDb2RlQXQoaSlcbiAgICB9XG4gICAgcmV0dXJuIGNocm9tYS5oc2woaHVlICUgMzYwLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpLmNzcygpXG4gIH1cblxuICBzdGF0aWMgc2V0RmF2aWNvbihmYXZpY29uUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbGluayA9XG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibGlua1tyZWwqPSdpY29uJ11cIikgfHxcbiAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKVxuICAgIGxpbmtbJ3JlbCddID0gJ2ljb24nXG4gICAgbGlua1snaHJlZiddID0gZmF2aWNvblBhdGhcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGxpbmspXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ function normalize(input) {
2
+ return input
3
+ .toLowerCase()
4
+ .normalize('NFD') // explode composite chars (e.g. é) into multiple chars
5
+ .replace(/[\u0300-\u036f]/g, '') // remove accents
6
+ .replace(/œ/g, 'oe') // remove accents
7
+ .replace(/[^a-z0-9\s]/g, ' '); // replace special characters with space
8
+ }
9
+ function asNormalizedParts(input) {
10
+ return normalize(input)
11
+ .split(/\s+/)
12
+ .map((part) => part.trim())
13
+ .filter((part) => part.length > 0);
14
+ }
15
+ /**
16
+ * This creates a filter function based on a pattern (typically a user-input
17
+ * search text).
18
+ * @param pattern
19
+ */
20
+ export function createFuzzyFilter(pattern) {
21
+ const patternParts = asNormalizedParts(pattern);
22
+ return (input) => {
23
+ const inputParts = asNormalizedParts(input);
24
+ return patternParts.every((patternPart) => inputParts.some((part) => part.includes(patternPart)));
25
+ };
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMvbGliL3V0aWxzL2Z1enp5LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxTQUFTLFNBQVMsQ0FBQyxLQUFhO0lBQzlCLE9BQU8sS0FBSztTQUNULFdBQVcsRUFBRTtTQUNiLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyx1REFBdUQ7U0FDeEUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtTQUNqRCxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtTQUNyQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFBLENBQUMsd0NBQXdDO0FBQzFFLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDWixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDdEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsT0FBZTtJQUMvQyxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvQyxPQUFPLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0MsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDeEMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN0RCxDQUFBO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRnV6enlGaWx0ZXIgPSAoaW5wdXQ6IHN0cmluZykgPT4gYm9vbGVhblxuXG5mdW5jdGlvbiBub3JtYWxpemUoaW5wdXQ6IHN0cmluZykge1xuICByZXR1cm4gaW5wdXRcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5ub3JtYWxpemUoJ05GRCcpIC8vIGV4cGxvZGUgY29tcG9zaXRlIGNoYXJzIChlLmcuIMOpKSBpbnRvIG11bHRpcGxlIGNoYXJzXG4gICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKSAvLyByZW1vdmUgYWNjZW50c1xuICAgIC5yZXBsYWNlKC/Fky9nLCAnb2UnKSAvLyByZW1vdmUgYWNjZW50c1xuICAgIC5yZXBsYWNlKC9bXmEtejAtOVxcc10vZywgJyAnKSAvLyByZXBsYWNlIHNwZWNpYWwgY2hhcmFjdGVycyB3aXRoIHNwYWNlXG59XG5cbmZ1bmN0aW9uIGFzTm9ybWFsaXplZFBhcnRzKGlucHV0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBub3JtYWxpemUoaW5wdXQpXG4gICAgLnNwbGl0KC9cXHMrLylcbiAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LnRyaW0oKSlcbiAgICAuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0Lmxlbmd0aCA+IDApXG59XG5cbi8qKlxuICogVGhpcyBjcmVhdGVzIGEgZmlsdGVyIGZ1bmN0aW9uIGJhc2VkIG9uIGEgcGF0dGVybiAodHlwaWNhbGx5IGEgdXNlci1pbnB1dFxuICogc2VhcmNoIHRleHQpLlxuICogQHBhcmFtIHBhdHRlcm5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZ1enp5RmlsdGVyKHBhdHRlcm46IHN0cmluZyk6IEZ1enp5RmlsdGVyIHtcbiAgY29uc3QgcGF0dGVyblBhcnRzID0gYXNOb3JtYWxpemVkUGFydHMocGF0dGVybilcbiAgcmV0dXJuIChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgaW5wdXRQYXJ0cyA9IGFzTm9ybWFsaXplZFBhcnRzKGlucHV0KVxuICAgIHJldHVybiBwYXR0ZXJuUGFydHMuZXZlcnkoKHBhdHRlcm5QYXJ0KSA9PlxuICAgICAgaW5wdXRQYXJ0cy5zb21lKChwYXJ0KSA9PiBwYXJ0LmluY2x1ZGVzKHBhdHRlcm5QYXJ0KSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
@@ -5,4 +5,5 @@ export * from './geojson';
5
5
  export * from './sort-by';
6
6
  export * from './url';
7
7
  export * from './event';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLE9BQU8sQ0FBQTtBQUNyQixjQUFjLFNBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFyc2UnXG5leHBvcnQgKiBmcm9tICcuL3N0cmlwLWh0bWwnXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZS13aGl0ZXNwYWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW9qc29uJ1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0LWJ5J1xuZXhwb3J0ICogZnJvbSAnLi91cmwnXG5leHBvcnQgKiBmcm9tICcuL2V2ZW50J1xuIl19
8
+ export * from './fuzzy-filter';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLE9BQU8sQ0FBQTtBQUNyQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXJzZSdcbmV4cG9ydCAqIGZyb20gJy4vc3RyaXAtaHRtbCdcbmV4cG9ydCAqIGZyb20gJy4vcmVtb3ZlLXdoaXRlc3BhY2UnXG5leHBvcnQgKiBmcm9tICcuL2dlb2pzb24nXG5leHBvcnQgKiBmcm9tICcuL3NvcnQtYnknXG5leHBvcnQgKiBmcm9tICcuL3VybCdcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQnXG5leHBvcnQgKiBmcm9tICcuL2Z1enp5LWZpbHRlcidcbiJdfQ==
@@ -16,20 +16,20 @@
16
16
  "chart.type.line": "Liniendiagramm",
17
17
  "chart.type.lineSmooth": "Geglättes Liniendiagramm",
18
18
  "chart.type.pie": "Kreisdiagramm",
19
- "dashboard.labels.mySpace": "",
20
- "dashboard.records.all": "",
21
- "dashboard.records.myDraft": "",
22
- "dashboard.records.myLibrary": "",
23
- "dashboard.records.myOrg": "",
24
- "dashboard.records.myRecords": "",
25
- "dashboard.records.noRecord": "",
26
- "dashboard.records.noUser": "",
27
- "dashboard.records.publishedRecords": "",
28
- "dashboard.records.search": "",
29
- "dashboard.records.userDetail": "",
30
- "dashboard.records.userEmail": "",
31
- "dashboard.records.username": "",
32
- "dashboard.records.users": "",
19
+ "dashboard.labels.mySpace": "Mein Bereich",
20
+ "dashboard.records.all": "Katalog",
21
+ "dashboard.records.myDraft": "Meine Entwürfe",
22
+ "dashboard.records.myLibrary": "Meine Bibliothek",
23
+ "dashboard.records.myOrg": "Meine Organisation",
24
+ "dashboard.records.myRecords": "Meine Datensätze",
25
+ "dashboard.records.noRecord": "Kein Datensatz für diese Organisation",
26
+ "dashboard.records.noUser": "Keine Benutzer für diese Organisation",
27
+ "dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
28
+ "dashboard.records.search": "Suche nach \"{searchText}\"",
29
+ "dashboard.records.userDetail": "Name",
30
+ "dashboard.records.userEmail": "E-Mail",
31
+ "dashboard.records.username": "Benutzername",
32
+ "dashboard.records.users": "{count, plural, =1{Benutzer} other{Benutzer}}",
33
33
  "datafeeder.analysisProgressBar.illustration.fileFormatDetection": "Dateiformat-Erkennung",
34
34
  "datafeeder.analysisProgressBar.illustration.gatheringDatasetInformation": "Sammeln von Datensatzinformationen",
35
35
  "datafeeder.analysisProgressBar.illustration.samplingData": "Datenauswahl",
@@ -43,7 +43,7 @@
43
43
  "datafeeder.form.datepicker": "Wissen Sie, wann der Datensatz erstellt wurde?",
44
44
  "datafeeder.form.description": "Beschreiben Sie abschließend den Prozess, der zur Erstellung des Datensatzes verwendet wurde",
45
45
  "datafeeder.form.dropdown": "Für welche Skala wurde er erstellt?",
46
- "datafeeder.form.tags": "Wählen Sie einen oder mehrere Tags aus, die zu Ihrem Datensatz passen",
46
+ "datafeeder.form.tags": "Wählen Sie einen oder mehrere Tage aus, die zu Ihrem Datensatz passen",
47
47
  "datafeeder.form.title": "Geben Sie Ihrem Datensatz den besten Titel",
48
48
  "datafeeder.formsPage.title": "Erzählen Sie uns mehr über Ihren Datensatz",
49
49
  "datafeeder.month.april": "April",
@@ -58,16 +58,16 @@
58
58
  "datafeeder.month.november": "November",
59
59
  "datafeeder.month.october": "Oktober",
60
60
  "datafeeder.month.september": "September",
61
- "datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist",
62
- "datafeeder.publish.illustration.title": "Ein weiterer Datensatz zum Veröffentlichen?",
61
+ "datafeeder.publish.hint": "Sie können diese Seite sicher verlassen. Sie werden benachrichtigt, wenn der Vorgang abgeschlossen ist.",
62
+ "datafeeder.publish.illustration.title": "Ein weiterer Datensatz \n zum Veröffentlichen?",
63
63
  "datafeeder.publish.subtitle": "Das Veröffentlichen kann einige Minuten dauern.",
64
- "datafeeder.publish.title": "Vielen Dank! Ihr Datensatz wird veröffentlicht",
64
+ "datafeeder.publish.title": "Vielen Dank! \n Ihr Datensatz wird veröffentlicht",
65
65
  "datafeeder.publish.upload": "Jetzt hochladen",
66
66
  "datafeeder.publishSuccess.geonetworkRecord": "Metadatensatz",
67
67
  "datafeeder.publishSuccess.illustration.title": "Erledigt, alles ist gut!",
68
68
  "datafeeder.publishSuccess.mapViewer": "Kartenviewer",
69
69
  "datafeeder.publishSuccess.subtitle": "Zeigen Sie Ihre Daten an in:",
70
- "datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! Ihr Datensatz wurde veröffentlicht",
70
+ "datafeeder.publishSuccess.title": "Herzlichen Glückwunsch! \n Ihr Datensatz wurde veröffentlicht",
71
71
  "datafeeder.publishSuccess.uploadAnotherData": "Ein weiteren Datensatz hochladen",
72
72
  "datafeeder.summarizePage.illustration": "Kein Fehler? Los geht's!",
73
73
  "datafeeder.summarizePage.previous": "Zurück",
@@ -75,11 +75,11 @@
75
75
  "datafeeder.summarizePage.title": "Sie sind fast fertig...",
76
76
  "datafeeder.upload.acceptedFormats": "Akzeptierte Dateiformate:",
77
77
  "datafeeder.upload.checkboxLabel": "Ich besitze die Rechte zur Veröffentlichung dieses Datensatzes",
78
- "datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geospatialen Datensatz enthält",
78
+ "datafeeder.upload.error.subtitle.analysis": "Überprüfen Sie, ob die Datei einen gültigen geografischen Datensatz enthält",
79
79
  "datafeeder.upload.error.subtitle.cantOpenFile": "Bitte überprüfen Sie, ob die Datei gültig ist",
80
80
  "datafeeder.upload.error.subtitle.fileFormat": "Beachten Sie: Nur SHP-Dateien",
81
- "datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximal {size} MB",
82
- "datafeeder.upload.error.title.analysis": "Fehler bei der Datensatzanalyse",
81
+ "datafeeder.upload.error.subtitle.fileSize": "Beachten Sie: Maximale Dateigröße {size} MB",
82
+ "datafeeder.upload.error.title.analysis": "Fehler während der Datensatzanalyse",
83
83
  "datafeeder.upload.error.title.cantOpenFile": "Fehler beim Öffnen der Datei",
84
84
  "datafeeder.upload.error.title.fileFormat": "Das ausgewählte Dateiformat wird nicht unterstützt",
85
85
  "datafeeder.upload.error.title.fileHasntSelected": "Keine Datei ausgewählt",
@@ -87,19 +87,19 @@
87
87
  "datafeeder.upload.error.title.noRightsToSendData": "Sie dürfen diesen Datensatz nicht veröffentlichen",
88
88
  "datafeeder.upload.illustration.enrichment": "Anreicherung",
89
89
  "datafeeder.upload.illustration.import": "Import",
90
- "datafeeder.upload.illustration.title": "Das Hinzufügen von Daten war noch nie einfacher",
90
+ "datafeeder.upload.illustration.title": "Das Hinzufügen von Daten \n war noch nie so einfach",
91
91
  "datafeeder.upload.illustration.validation": "Validierung",
92
- "datafeeder.upload.illustration.verification": "Verifizierung",
92
+ "datafeeder.upload.illustration.verification": "Überprüfung",
93
93
  "datafeeder.upload.inputLabel": "Importieren Sie Ihre Datei",
94
94
  "datafeeder.upload.maxFileSize": "Maximale Dateigröße beträgt {size} MB",
95
95
  "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
96
96
  "datafeeder.upload.uploadButton": "Hochladen",
97
- "datafeeder.validation.encoding": "Kodierung",
97
+ "datafeeder.validation.encoding": "Codierung",
98
98
  "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
99
99
  "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
100
100
  "datafeeder.validation.projection": "Raumbezugssystem:",
101
- "datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem",
102
- "datafeeder.validation.sample.title": "Und eine Beispieleinheit aus dem Datensatz",
101
+ "datafeeder.validation.projection.unknown": "Wählen Sie ein Raumbezugssystem aus",
102
+ "datafeeder.validation.sample.title": "Und eine Beispielentität aus dem Datensatz",
103
103
  "datafeeder.wizard.emptyRequiredValuesMessage": "Bitte füllen Sie die obligatorischen Felder aus",
104
104
  "datafeeder.wizardSummarize.createdAt": "Erstellt am",
105
105
  "datafeeder.wizardSummarize.scale": "Maßstab",
@@ -109,16 +109,20 @@
109
109
  "datahub.header.news": "Startseite",
110
110
  "datahub.header.organisations": "Organisationen",
111
111
  "datahub.header.popularRecords": "Die beliebtesten",
112
- "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten von meiner Organisation</div>",
112
+ "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
113
+ "datahub.news.contact.contactus": "Kontaktieren Sie uns",
114
+ "datahub.news.contact.html": "<p>Brauchen Sie Daten, die derzeit nicht auf der Plattform vorhanden sind?</p><p>Unsere Teams stehen Ihnen zur Verfügung.</p>",
115
+ "datahub.news.contact.title": "Ein spezielles Bedürfnis?",
113
116
  "datahub.news.feed": "Nachrichtenfeed",
114
117
  "datahub.news.figures": "Indikatoren",
115
- "datahub.search.back": "Zurück zu den Ergebnissen",
118
+ "datahub.record.addToFavorites": "Zu Favoriten hinzufügen",
119
+ "datahub.search.back": "Zurück",
116
120
  "datahub.search.filter.all": "Alle",
117
- "datahub.search.filter.generatedByWfs": "Generiert durch API",
121
+ "datahub.search.filter.generatedByWfs": "Generiert durch eine API",
118
122
  "datahub.search.filter.others": "Andere",
119
123
  "dataset.error.http": "Die Daten konnten aufgrund eines HTTP-Fehlers nicht geladen werden: \"{ info }\"",
120
124
  "dataset.error.network": "Die Daten konnten aufgrund eines Netzwerkfehlers oder CORS-Beschränkungen nicht geladen werden: \"{ info }\"",
121
- "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht geparst werden: \"{ info }\"",
125
+ "dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
122
126
  "dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
123
127
  "dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
124
128
  "domain.record.status.completed": "Abgeschlossen",
@@ -126,18 +130,18 @@
126
130
  "domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
127
131
  "domain.record.status.removed": "Entfernt",
128
132
  "domain.record.status.under_development": "In Erstellung",
129
- "domain.record.updateFrequency.asNeeded": "Bei Bedarf",
130
- "domain.record.updateFrequency.continual": "Kontinuierlich",
133
+ "domain.record.updateFrequency.asNeeded": "Nach Bedarf",
134
+ "domain.record.updateFrequency.continual": "Fortlaufend",
131
135
  "domain.record.updateFrequency.day": "{count, plural, =0{0} one{Ein} other{{count}}} mal am Tag",
132
- "domain.record.updateFrequency.irregular": "Unregelmässig",
136
+ "domain.record.updateFrequency.irregular": "Unregelmäßig",
133
137
  "domain.record.updateFrequency.month": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Monat",
134
138
  "domain.record.updateFrequency.notPlanned": "Nicht geplant",
135
- "domain.record.updateFrequency.periodic": "Regelmässig",
139
+ "domain.record.updateFrequency.periodic": "Regelmäßig",
136
140
  "domain.record.updateFrequency.unknown": "Unbekannt",
137
141
  "domain.record.updateFrequency.week": "{count, plural, =0{0} one{Ein} other{{count}}} mal in der Woche",
138
142
  "domain.record.updateFrequency.year": "{count, plural, =0{0} one{Ein} other{{count}}} mal im Jahr",
139
143
  "downloads.format.unknown": "unbekannt",
140
- "downloads.wfs.featuretype.not.found": "Die Schicht wurde nicht gefunden",
144
+ "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
141
145
  "dropFile": "Datei ablegen",
142
146
  "externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
143
147
  "facets.block.title.OrgForResource": "Organisation",
@@ -172,10 +176,18 @@
172
176
  "map.add.layer.file": "Aus einer Datei",
173
177
  "map.add.layer.wfs": "Aus WFS",
174
178
  "map.add.layer.wms": "Aus WMS",
179
+ "map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
180
+ "map.geocoding.placeholder": "",
181
+ "map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
182
+ "map.layer.add": "Hinzufügen",
183
+ "map.layers.available": "Verfügbare Layer",
175
184
  "map.layers.list": "Ebenen",
176
185
  "map.loading.data": "Kartendaten werden geladen...",
186
+ "map.loading.service": "Dienst wird geladen...",
177
187
  "map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
178
188
  "map.select.layer": "Datenquelle",
189
+ "map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
190
+ "map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
179
191
  "multiselect.filter.placeholder": "Suche",
180
192
  "nav.back": "Zurück",
181
193
  "next": "weiter",
@@ -191,56 +203,61 @@
191
203
  "pagination.pageOf": "von",
192
204
  "previous": "zurück",
193
205
  "record.action.download": "Herunterladen",
194
- "record.action.view": "Ansehen",
206
+ "record.action.view": "Anzeigen",
195
207
  "record.externalViewer.open": "In externem Kartenviewer öffnen",
196
208
  "record.metadata.about": "Beschreibung",
197
209
  "record.metadata.api": "API",
198
- "record.metadata.api.form.closeButton": "",
199
- "record.metadata.api.form.closeForm": "",
200
- "record.metadata.api.form.create": "",
201
- "record.metadata.api.form.customUrl": "",
202
- "record.metadata.api.form.limit": "",
203
- "record.metadata.api.form.limit.all": "",
204
- "record.metadata.api.form.offset": "",
205
- "record.metadata.api.form.openForm": "",
206
- "record.metadata.api.form.reset": "",
207
- "record.metadata.api.form.title": "",
208
- "record.metadata.api.form.type": "",
209
- "record.metadata.author": "",
210
+ "record.metadata.api.form.closeButton": "Schließen",
211
+ "record.metadata.api.form.closeForm": "Formular schließen",
212
+ "record.metadata.api.form.create": "Ihre Anfrage erstellen",
213
+ "record.metadata.api.form.customUrl": "Benutzerdefinierte URL",
214
+ "record.metadata.api.form.limit": "Anzahl der Datensätze",
215
+ "record.metadata.api.form.limit.all": "Alle",
216
+ "record.metadata.api.form.offset": "Anzahl des ersten Datensatzes",
217
+ "record.metadata.api.form.openForm": "Formular öffnen",
218
+ "record.metadata.api.form.reset": "Zurücksetzen",
219
+ "record.metadata.api.form.title": "Benutzerdefinierte URL generieren",
220
+ "record.metadata.api.form.type": "Ausgabeformat",
221
+ "record.metadata.author": "Autor",
210
222
  "record.metadata.catalog": "Katalog",
211
223
  "record.metadata.contact": "Kontakt",
212
224
  "record.metadata.createdOn": "Erstellt am",
213
- "record.metadata.details": "Details",
225
+ "record.metadata.details": "Technische Informationen",
214
226
  "record.metadata.download": "Downloads",
215
- "record.metadata.formats": "",
227
+ "record.metadata.formats": "Formate",
216
228
  "record.metadata.isOpenData": "Open Data",
217
229
  "record.metadata.keywords": "Stichworte",
230
+ "record.metadata.lastUpdate": "Zuletzt aktualisiert am",
218
231
  "record.metadata.links": "Links",
219
- "record.metadata.noUsage": "Für diesen Datensatz sind keine Verwendungsbedingungen angegeben.",
232
+ "record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
220
233
  "record.metadata.origin": "Über die Daten",
234
+ "record.metadata.owner": "",
221
235
  "record.metadata.preview": "Vorschau",
222
236
  "record.metadata.publications": "Veröffentlichungen",
223
- "record.metadata.quality": "",
224
- "record.metadata.quality.contact.failed": "",
225
- "record.metadata.quality.contact.success": "",
226
- "record.metadata.quality.description.failed": "",
227
- "record.metadata.quality.description.success": "",
228
- "record.metadata.quality.details": "",
229
- "record.metadata.quality.keywords.failed": "",
230
- "record.metadata.quality.keywords.success": "",
231
- "record.metadata.quality.legalConstraints.failed": "",
232
- "record.metadata.quality.legalConstraints.success": "",
233
- "record.metadata.quality.organisation.failed": "",
234
- "record.metadata.quality.organisation.success": "",
235
- "record.metadata.quality.title.failed": "",
236
- "record.metadata.quality.title.success": "",
237
- "record.metadata.quality.topic.failed": "",
238
- "record.metadata.quality.topic.success": "",
239
- "record.metadata.quality.updateFrequency.failed": "",
240
- "record.metadata.quality.updateFrequency.success": "",
237
+ "record.metadata.quality": "Metadatenqualität",
238
+ "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
239
+ "record.metadata.quality.contact.success": "Kontakt angegeben",
240
+ "record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
241
+ "record.metadata.quality.description.success": "Beschreibung angegeben",
242
+ "record.metadata.quality.details": "Details",
243
+ "record.metadata.quality.keywords.failed": "Schlagwörter nicht angegeben",
244
+ "record.metadata.quality.keywords.success": "Schlagwörter angegeben",
245
+ "record.metadata.quality.legalConstraints.failed": "Rechtliche Beschränkungen nicht angegeben",
246
+ "record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
247
+ "record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
248
+ "record.metadata.quality.organisation.success": "Organisation angegeben",
249
+ "record.metadata.quality.title.failed": "Titel nicht angegeben",
250
+ "record.metadata.quality.title.success": "Titel angegeben",
251
+ "record.metadata.quality.topic.failed": "Thema nicht angegeben",
252
+ "record.metadata.quality.topic.success": "Thema angegeben",
253
+ "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
254
+ "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
241
255
  "record.metadata.related": "Ähnliche Datensätze",
242
- "record.metadata.sheet": "Weitere Informationen erhalten Sie unter :",
256
+ "record.metadata.sheet": "Weitere Informationen verfügbar unter:",
257
+ "record.metadata.themes": "Kategorien",
243
258
  "record.metadata.title": "Titel",
259
+ "record.metadata.type": "Geographischer Datensatz",
260
+ "record.metadata.uniqueId": "Eindeutige Kennung",
244
261
  "record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
245
262
  "record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
246
263
  "record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
@@ -252,23 +269,23 @@
252
269
  "record.was.created.time": "erstellte diesen Datensatz {time}",
253
270
  "records": "Datensätze",
254
271
  "results.layout.selectOne": "Layout auswählen",
255
- "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{auf {hits} insgesamt angezeigt.}}",
256
- "results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie andere Wörter</li><li>Geben Sie weniger Wörter ein</li></ul>",
272
+ "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
273
+ "results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie es mit anderen Worten</li><li>Beschränken Sie die Suchwörter</li></ul>",
257
274
  "results.records.hits.found": "{hits, plural, =0{Keine Dokumente entsprechen der angegebenen Suche.} one{1 Datensatz gefunden.} other{{hits} Datensätze gefunden.}}",
258
- "results.records.hits.selected": "",
275
+ "results.records.hits.selected": "{ amount } ausgewählt",
259
276
  "results.showMore": "Mehr Ergebnisse anzeigen...",
260
- "results.sortBy.dateStamp": "Letzte Aktualisierungen",
277
+ "results.sortBy.dateStamp": "Neueste",
261
278
  "results.sortBy.popularity": "Beliebtheit",
262
- "results.sortBy.qualityScore": "",
279
+ "results.sortBy.qualityScore": "Qualitätsbewertung",
263
280
  "results.sortBy.relevancy": "Relevanz",
264
281
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
265
282
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
266
- "search.error.receivedError": "Ein Fehler wurde empfangen",
283
+ "search.error.receivedError": "Ein Fehler ist aufgetreten",
267
284
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
268
- "search.field.any.placeholder": "Suche nach Datensätzen ...",
285
+ "search.field.any.placeholder": "Suche Datensätze ...",
269
286
  "search.field.sortBy": "Sortieren nach:",
270
287
  "search.filters.clear": "Zurücksetzen",
271
- "search.filters.contact": "Kontakt",
288
+ "search.filters.contact": "Kontakte",
272
289
  "search.filters.format": "Formate",
273
290
  "search.filters.inspireKeyword": "INSPIRE-Schlüsselwort",
274
291
  "search.filters.isSpatial": "Ist räumliche Daten",
@@ -286,13 +303,13 @@
286
303
  "search.filters.license.unknown": "Unbekannt oder nicht vorhanden",
287
304
  "search.filters.maximize": "Erweitern",
288
305
  "search.filters.minimize": "Minimieren",
289
- "search.filters.myRecords": "",
290
- "search.filters.myRecordsHelp": "",
291
- "search.filters.otherRecords": "",
306
+ "search.filters.myRecords": "Nur meine Datensätze anzeigen",
307
+ "search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Datensätze angezeigt; Datensätze, die von anderen erstellt wurden, werden nicht angezeigt.",
308
+ "search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
292
309
  "search.filters.publicationYear": "Veröffentlichungsjahr",
293
310
  "search.filters.publisher": "Organisationen",
294
- "search.filters.representationType": "",
295
- "search.filters.resourceType": "",
311
+ "search.filters.representationType": "Repräsentationstyp",
312
+ "search.filters.resourceType": "Ressourcentyp",
296
313
  "search.filters.standard": "Standard",
297
314
  "search.filters.title": "Ergebnisse filtern",
298
315
  "search.filters.topic": "Thema",
@@ -304,6 +321,7 @@
304
321
  "table.object.count": "Objekte in diesem Datensatz",
305
322
  "table.select.data": "Datenquelle",
306
323
  "tooltip.html.copy": "HTML kopieren",
324
+ "tooltip.id.copy": "",
307
325
  "tooltip.url.copy": "URL kopieren",
308
326
  "tooltip.url.open": "URL öffnen",
309
327
  "ui.readLess": "Weniger lesen",