From 61c7e476efadfee43566c77072174081459e47dc Mon Sep 17 00:00:00 2001 From: Jeroen Ticheler Date: Thu, 14 Dec 2023 10:16:49 +0100 Subject: [PATCH 01/16] Update CONTRIBUTING.md Updated with a reference to a deprecation process --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93a66e2617b..2ae045a912f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,7 +25,7 @@ Thank you for contributing to GeoNetwork: * Rebase / Squash and merge: No merge commits with current branch, use Rebase or Squash and merge! -* API Change: Please identify any API change or behavior changes in commit messages. +* API Change: Please identify any API change or behavior changes in commit messages. Also make sure that a [process for deprecation](PROCESS_FOR_DEPRECATION.md) of a feature is carefully dealt with. * Review: Review is required by another person, or more than one! Don't be shy asking for help or reviewing. From 5bae9085ff43a5da04e3f0de8dfee69cdb02b99f Mon Sep 17 00:00:00 2001 From: Jeroen Ticheler Date: Thu, 14 Dec 2023 10:44:08 +0100 Subject: [PATCH 02/16] Create PROCESS_FOR_DEPRECATION.md First step to write a process of deprecation of a feature --- PROCESS_FOR_DEPRECATION.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 PROCESS_FOR_DEPRECATION.md diff --git a/PROCESS_FOR_DEPRECATION.md b/PROCESS_FOR_DEPRECATION.md new file mode 100644 index 00000000000..a7715b357f5 --- /dev/null +++ b/PROCESS_FOR_DEPRECATION.md @@ -0,0 +1,6 @@ +* Proposal for a Process for Deprecation (draft) + +# Feature deprecation porcess + +This page describes considerations and steps to take when removing a product feature. This is the process of depreciation or 'deprecating a feature'. + From 40e4ab2775e56a97e0911ef4a8f1251fefd43b5f Mon Sep 17 00:00:00 2001 From: Jeroen Ticheler Date: Thu, 14 Dec 2023 10:47:54 +0100 Subject: [PATCH 03/16] Update PROCESS_FOR_DEPRECATION.md --- PROCESS_FOR_DEPRECATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROCESS_FOR_DEPRECATION.md b/PROCESS_FOR_DEPRECATION.md index a7715b357f5..f80f7086c3f 100644 --- a/PROCESS_FOR_DEPRECATION.md +++ b/PROCESS_FOR_DEPRECATION.md @@ -1,6 +1,6 @@ * Proposal for a Process for Deprecation (draft) -# Feature deprecation porcess +# Feature deprecation process This page describes considerations and steps to take when removing a product feature. This is the process of depreciation or 'deprecating a feature'. From 87ec40d004024a6f1f16dcd068c080b1b134e5ff Mon Sep 17 00:00:00 2001 From: Ian Date: Thu, 14 Dec 2023 06:32:19 -0400 Subject: [PATCH 04/16] Add ownerId to geonet:info (#7547) It is a more reliable way to identify the exact user. --- core/src/main/java/org/fao/geonet/constants/Edit.java | 1 + .../fao/geonet/kernel/datamanager/base/BaseMetadataManager.java | 1 + 2 files changed, 2 insertions(+) diff --git a/core/src/main/java/org/fao/geonet/constants/Edit.java b/core/src/main/java/org/fao/geonet/constants/Edit.java index d3e6faecc26..5f9560f75e9 100644 --- a/core/src/main/java/org/fao/geonet/constants/Edit.java +++ b/core/src/main/java/org/fao/geonet/constants/Edit.java @@ -74,6 +74,7 @@ public static final class Elem { public static final String TITLE = "title"; public static final String IS_HARVESTED = "isHarvested"; public static final String HARVEST_INFO = "harvestInfo"; + public static final String OWNERID = "ownerId"; public static final String OWNERNAME = "ownername"; public static final String GROUPOWNERNAME = "groupOwnerName"; public static final String POPULARITY = "popularity"; diff --git a/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java b/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java index 61ba2251061..1593554bdcc 100644 --- a/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java +++ b/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java @@ -867,6 +867,7 @@ private Element buildInfoElem(ServiceContext context, String id, String version) // add owner name java.util.Optional user = userRepository.findById(Integer.parseInt(owner)); if (user.isPresent()) { + addElement(info, Edit.Info.Elem.OWNERID, user.get().getId()); String ownerName = user.get().getName(); addElement(info, Edit.Info.Elem.OWNERNAME, ownerName); } From c99efbb134ed7db1680a7e786e13ed241d889a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Garc=C3=ADa?= Date: Wed, 6 Dec 2023 11:08:17 +0100 Subject: [PATCH 05/16] Elasticsearch index creation - log the exception when a parsing error of the index configuration file occurs --- .../geonet/kernel/search/EsSearchManager.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java b/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java index 43017e4112f..d009c08291b 100644 --- a/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java +++ b/core/src/main/java/org/fao/geonet/kernel/search/EsSearchManager.java @@ -35,6 +35,7 @@ import jeeves.server.context.ServiceContext; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; +import org.elasticsearch.ElasticsearchParseException; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; @@ -271,11 +272,11 @@ private void createIndex(String indexId, String indexName, boolean dropIndexFirs DeleteIndexRequest request = new DeleteIndexRequest(indexName); AcknowledgedResponse deleteIndexResponse = client.getClient().indices().delete(request, RequestOptions.DEFAULT); if (deleteIndexResponse.isAcknowledged()) { - LOGGER.debug("Index '{}' removed.", new Object[]{indexName}); + LOGGER.debug("Index '{}' removed.", indexName); } } catch (Exception e) { // index does not exist ? - LOGGER.debug("Error during index '{}' removal. Error is: {}", new Object[]{indexName, e.getMessage()}); + LOGGER.debug("Error during index '{}' removal. Error is: {}", indexName, e.getMessage()); } } @@ -304,7 +305,7 @@ private void createIndex(String indexId, String indexName, boolean dropIndexFirs CreateIndexResponse createIndexResponse = client.getClient().indices().create(createIndexRequest, RequestOptions.DEFAULT); if (createIndexResponse.isAcknowledged()) { - LOGGER.debug("Index '{}' created", new Object[]{indexName}); + LOGGER.debug("Index '{}' created", indexName); } else { final String message = String.format("Index '%s' was not created. Error is: %s", indexName, createIndexResponse.toString()); LOGGER.error(message); @@ -317,10 +318,13 @@ private void createIndex(String indexId, String indexName, boolean dropIndexFirs indexName)); } } + } catch (ElasticsearchParseException ex) { + LOGGER.error(ex.getMessage(), ex); + throw new IOException(ex.getMessage()); } catch (Exception cnce) { final String message = String.format("Could not connect to index '%s'. Error is %s. Is the index server up and running?", defaultIndex, cnce.getMessage()); - LOGGER.error(message); + LOGGER.error(message, cnce); throw new IOException(message); } } @@ -444,7 +448,7 @@ private void sendDocumentsToIndex() { } catch (Exception e) { LOGGER.error( "An error occurred while indexing {} documents in current indexing list. Error is {}.", - new Object[]{listOfDocumentsToIndex.size(), e.getMessage()}); + listOfDocumentsToIndex.size(), e.getMessage()); } finally { // TODO: Trigger this async ? documents.keySet().forEach(uuid -> overviewFieldUpdater.process(uuid)); @@ -489,14 +493,14 @@ private void checkIndexResponse(BulkResponse bulkItemResponses, // TODO: Report the JSON which was causing the error ? LOGGER.error("Document with error #{}: {}.", - new Object[]{e.getId(), e.getFailureMessage()}); + e.getId(), e.getFailureMessage()); LOGGER.error(failureDoc); try { listErrorOfDocumentsToIndex.put(e.getId(), mapper.writeValueAsString(docWithErrorInfo)); } catch (JsonProcessingException e1) { LOGGER.error("Generated document for the index is not properly formatted. Check document #{}: {}.", - new Object[]{e.getId(), e1.getMessage()}); + e.getId(), e1.getMessage()); } } }); @@ -505,7 +509,7 @@ private void checkIndexResponse(BulkResponse bulkItemResponses, BulkResponse response = client.bulkRequest(defaultIndex, listErrorOfDocumentsToIndex); if (response.status().getStatus() != 201) { LOGGER.error("Failed to save error documents {}.", - new Object[]{Arrays.toString(errorDocumentIds.toArray())}); + Arrays.toString(errorDocumentIds.toArray())); } } } @@ -638,7 +642,7 @@ public ObjectNode documentToJson(Element xml) { mapper.readTree(node.getText())); } catch (IOException e) { LOGGER.error("Parsing invalid JSON node {} for property {}. Error is: {}", - new Object[]{node.getTextNormalize(), propertyName, e.getMessage()}); + node.getTextNormalize(), propertyName, e.getMessage()); } } else { arrayNode.add( @@ -657,7 +661,7 @@ public ObjectNode documentToJson(Element xml) { doc.set("geom", mapper.readTree(nodeElements.get(0).getTextNormalize())); } catch (IOException e) { LOGGER.error("Parsing invalid geometry for JSON node {}. Error is: {}", - new Object[]{nodeElements.get(0).getTextNormalize(), e.getMessage()}); + nodeElements.get(0).getTextNormalize(), e.getMessage()); } continue; } @@ -670,7 +674,7 @@ public ObjectNode documentToJson(Element xml) { )); } catch (IOException e) { LOGGER.error("Parsing invalid JSON node {} for property {}. Error is: {}", - new Object[]{nodeElements.get(0).getTextNormalize(), propertyName, e.getMessage()}); + nodeElements.get(0).getTextNormalize(), propertyName, e.getMessage()); } } else { doc.put(propertyName, From 419f11f4776c22ea77d1ea67fed9ca489616adca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Garc=C3=ADa?= Date: Wed, 6 Dec 2023 11:45:47 +0100 Subject: [PATCH 06/16] Metadata indexing - create an organisation name field that tracks the organisations of the different types of contacts --- .../WEB-INF/data/config/index/records.json | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/web/src/main/webResources/WEB-INF/data/config/index/records.json b/web/src/main/webResources/WEB-INF/data/config/index/records.json index 5f9835d9b8f..94fe7576c53 100644 --- a/web/src/main/webResources/WEB-INF/data/config/index/records.json +++ b/web/src/main/webResources/WEB-INF/data/config/index/records.json @@ -1054,31 +1054,31 @@ "properties": { "default": { "type": "keyword", - "copy_to": ["any.default"] + "copy_to": ["any.default", "organisationName.default"] }, "langeng": { "type": "keyword", - "copy_to": ["any.langeng"] + "copy_to": ["any.langeng", "organisationName.langeng"] }, "langfre": { "type": "keyword", - "copy_to": ["any.langfre"] + "copy_to": ["any.langfre", "organisationName.langfre"] }, "langger": { "type": "keyword", - "copy_to": ["any.langger"] + "copy_to": ["any.langger", "organisationName.langger"] }, "langita": { "type": "keyword", - "copy_to": ["any.langita"] + "copy_to": ["any.langita", "organisationName.langita"] }, "langdut": { "type": "keyword", - "copy_to": ["any.langdut"] + "copy_to": ["any.langdut", "organisationName.langdut"] }, "langspa": { "type": "keyword", - "copy_to": ["any.langspa"] + "copy_to": ["any.langspa", "organisationName.langspa"] }, "link": { "type": "keyword" @@ -2017,6 +2017,32 @@ } } } + }, + "organisationName": { + "type": "object", + "properties": { + "default": { + "type": "keyword" + }, + "langeng": { + "type": "keyword" + }, + "langfre": { + "type": "keyword" + }, + "langger": { + "type": "keyword" + }, + "langita": { + "type": "keyword" + }, + "langdut": { + "type": "keyword" + }, + "langspa": { + "type": "keyword" + } + } } } } From e4e49d6325c9f9e292c1b7df9d8f2daf01799498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20Gabri=C3=ABl?= Date: Fri, 15 Dec 2023 14:42:23 +0100 Subject: [PATCH 07/16] Restructure the 'composed of' block on the detail page (#7480) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Restructure the 'composed of' block on the detail page. * Restructure the layout of the `ComposedOf` block * Record view / Series statistics / Display filters in same order as aggregation config * Update web-ui/src/main/resources/catalog/views/default/templates/recordView/type-series.html Co-authored-by: François Prunayre --------- Co-authored-by: François Prunayre --- .../metadataactions/RelatedDirective.js | 7 ++- .../partials/recordsFilters.html | 39 +++++-------- .../main/resources/catalog/locales/en-v4.json | 3 +- .../views/default/less/gn_card_default.less | 5 +- .../templates/recordView/type-series.html | 56 ++++++++++--------- 5 files changed, 57 insertions(+), 53 deletions(-) diff --git a/web-ui/src/main/resources/catalog/components/metadataactions/RelatedDirective.js b/web-ui/src/main/resources/catalog/components/metadataactions/RelatedDirective.js index 9ef7f90ebe5..725b7b7e742 100644 --- a/web-ui/src/main/resources/catalog/components/metadataactions/RelatedDirective.js +++ b/web-ui/src/main/resources/catalog/components/metadataactions/RelatedDirective.js @@ -568,7 +568,8 @@ module.directive("gnRecordsFilters", [ "$rootScope", - function ($rootScope) { + "gnGlobalSettings", + function ($rootScope, gnGlobalSettings) { return { restrict: "A", templateUrl: function (elem, attrs) { @@ -588,6 +589,8 @@ scope.showTypes = !angular.isDefined(scope.type); scope.type = scope.type || "blocks"; scope.criteria = { p: {} }; + scope.relatedFacetConfig = + gnGlobalSettings.gnCfg.mods.recordview.relatedFacetConfig; function removeEmptyFilters(filters, agg) { var cleanFilterPos = []; @@ -612,7 +615,7 @@ } // Remove the filters without values - scope.filtersToProcess = scope.filters || Object.keys(scope.agg); + scope.filtersToProcess = scope.filters || Object.keys(scope.relatedFacetConfig); scope.agg && removeEmptyFilters(scope.filtersToProcess, scope.agg); reset(); diff --git a/web-ui/src/main/resources/catalog/components/metadataactions/partials/recordsFilters.html b/web-ui/src/main/resources/catalog/components/metadataactions/partials/recordsFilters.html index 2a65be2af36..3a5ecdd4632 100644 --- a/web-ui/src/main/resources/catalog/components/metadataactions/partials/recordsFilters.html +++ b/web-ui/src/main/resources/catalog/components/metadataactions/partials/recordsFilters.html @@ -1,28 +1,19 @@
-
-
-

{{title}}

-
-
-
-
-
{{('facet-' + filter) | facetKeyTranslator}}
-
-
-
- -
-
-
+

{{title}}

+

filterHelp

+
+ +
+
diff --git a/web-ui/src/main/resources/catalog/locales/en-v4.json b/web-ui/src/main/resources/catalog/locales/en-v4.json index 9d3c3f33b16..7ad7b1dd174 100644 --- a/web-ui/src/main/resources/catalog/locales/en-v4.json +++ b/web-ui/src/main/resources/catalog/locales/en-v4.json @@ -415,5 +415,6 @@ "lastCreatedRecords": "Last created records", "associationType": "Association type", "initiativeType": "Initiative type", - "associatedTo": "Associated " + "associatedTo": "Associated ", + "filterHelp": "Please click on one of the buttons below to activate the filter" } diff --git a/web-ui/src/main/resources/catalog/views/default/less/gn_card_default.less b/web-ui/src/main/resources/catalog/views/default/less/gn_card_default.less index ad68ae349e0..49093f04588 100644 --- a/web-ui/src/main/resources/catalog/views/default/less/gn_card_default.less +++ b/web-ui/src/main/resources/catalog/views/default/less/gn_card_default.less @@ -453,7 +453,10 @@ table.gn-resultview { .gn-card { min-width: 150px; width: calc(~"(100% / 4) - 20px"); - @media (max-width: @screen-sm-min) { + @media (max-width: 1440px) { + width: calc(~"(100% / 3) - 20px"); + } + @media (max-width: @screen-lg-min) { width: calc(~"(100% / 2) - 20px"); } @media (max-width: @screen-xs) { diff --git a/web-ui/src/main/resources/catalog/views/default/templates/recordView/type-series.html b/web-ui/src/main/resources/catalog/views/default/templates/recordView/type-series.html index 6454af9d4d7..5dcfd18da20 100644 --- a/web-ui/src/main/resources/catalog/views/default/templates/recordView/type-series.html +++ b/web-ui/src/main/resources/catalog/views/default/templates/recordView/type-series.html @@ -29,9 +29,11 @@
-
+ +
- -
+
- -
+ +
+ + +
+
From 4bbf88e6f0d456cb0105144cda63d242e17a9063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Garc=C3=ADa?= Date: Fri, 15 Dec 2023 16:03:25 +0100 Subject: [PATCH 08/16] Documentation / Update Elasticsearch installation page typos and remove the old elastic search documentation. Fixes #7551 (#7555) --- .../docs/install-guide/installing-index.md | 6 +- docs/manual/docs/maintainer-guide/index.md | 1 - .../statistics/img/content-indexing.png | Bin 7469 -> 0 bytes .../statistics/img/kibana-index-1.png | Bin 56234 -> 0 bytes .../statistics/img/kibana-index-2.png | Bin 27474 -> 0 bytes .../img/search-statistics-dashboards.png | Bin 25515 -> 0 bytes .../statistics/img/search-statistics.png | Bin 7379 -> 0 bytes .../docs/maintainer-guide/statistics/index.md | 16 ----- .../statistics/setup-elasticsearch.md | 39 ------------ .../statistics/setup-geonetwork.md | 56 ------------------ .../statistics/setup-kibana.md | 38 ------------ docs/manual/mkdocs.yml | 5 -- 12 files changed, 3 insertions(+), 158 deletions(-) delete mode 100644 docs/manual/docs/maintainer-guide/statistics/img/content-indexing.png delete mode 100644 docs/manual/docs/maintainer-guide/statistics/img/kibana-index-1.png delete mode 100644 docs/manual/docs/maintainer-guide/statistics/img/kibana-index-2.png delete mode 100644 docs/manual/docs/maintainer-guide/statistics/img/search-statistics-dashboards.png delete mode 100644 docs/manual/docs/maintainer-guide/statistics/img/search-statistics.png delete mode 100644 docs/manual/docs/maintainer-guide/statistics/index.md delete mode 100644 docs/manual/docs/maintainer-guide/statistics/setup-elasticsearch.md delete mode 100644 docs/manual/docs/maintainer-guide/statistics/setup-geonetwork.md delete mode 100644 docs/manual/docs/maintainer-guide/statistics/setup-kibana.md diff --git a/docs/manual/docs/install-guide/installing-index.md b/docs/manual/docs/install-guide/installing-index.md index 86154d779b2..7369f99540f 100644 --- a/docs/manual/docs/install-guide/installing-index.md +++ b/docs/manual/docs/install-guide/installing-index.md @@ -4,7 +4,7 @@ The GeoNetwork search engine is built on top of Elasticsearch. The platform is u ## Manual installation -Download Elasticsearch from and unzip the file. +Download Elasticsearch 7.x (at least `7.9.2`) from and unzip the file. ``` shell wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2.tar.gz @@ -20,7 +20,7 @@ elasticsearch-7.9.2/bin/elasticsearch Stop Elasticsearch using ``` shell -elasticsearch-7.6.2/bin/elasticsearch stop +elasticsearch-7.9.2/bin/elasticsearch stop ``` GeoNetwork will start even if Elasticsearch index is down. A warning will be displayed. Once the Elasticsearch index is up, indices are created if they do not exist. @@ -60,7 +60,7 @@ Access Elasticsearch admin page from . ## Configure connection -Update Elasticsearch connection details in `` `WEB-INF/config.properties ```` and restart the application (see :code:\`web/src/main/webResources/WEB-INF/config.properties``): +Update Elasticsearch connection details in ```WEB-INF/config.properties``` and restart the application: ``` shell es.protocol=http diff --git a/docs/manual/docs/maintainer-guide/index.md b/docs/manual/docs/maintainer-guide/index.md index 9dfe5bcdec8..3b829b3d8a2 100644 --- a/docs/manual/docs/maintainer-guide/index.md +++ b/docs/manual/docs/maintainer-guide/index.md @@ -4,6 +4,5 @@ For installation instructions, please refer to the [Installation guide](../insta - [Installation](../install-guide/index.md) - [Setup](../administrator-guide/index.md) -- [Setting up search/content statistics](statistics/index.md) - [Production Use](production-use/index.md) - [Updating the application](updating/index.md) diff --git a/docs/manual/docs/maintainer-guide/statistics/img/content-indexing.png b/docs/manual/docs/maintainer-guide/statistics/img/content-indexing.png deleted file mode 100644 index da425d56212df7c1b5a7268386643d26b3e2b0a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7469 zcmds6XH=8hwnarn1f`{A@p99CPk25g$N`-0O?H(AWe|o73l&;P(trbdJ_)P zK{|vkB@kY~bMNt;ci+GF>t&22d#|*Rh|uK9*hBuWN7}6?vS}e!v=ba>rTqDI5pqF4^V#8cu3DH4e^=LWrKBo1uof zxHZg)&(a2FWy|O3K(s~x`} z7!2kY5aJgS;>AYr!o8qwmY%#&ILogj|H`9i3%7QKIJ-e$P~c@=ODmYWn-nwiCDFfM zf7R*a{BI&C{I6AE*T?T^>C7+4C&2%oKyHv{f0y^)P?w(n6=v%R`Cnj{o?o!5X8fvA z65CO64VVq&nU|uao2|5vfS?$!0EkyWNKa5$TmU5gKunVVA2ENg@CvQqYHR5RbJc^v z9Hq4(p0u@zlW{KNcD)YHHH(xU&u{BHaw!0YHAOi+&ud#55H~&B)Xr@kWRZ?q z*F(GzSwkBtLhb^*auBK{y7IeIF?_jqwO7neTKyQaEL3Nb!Di4iM_!q;CFp=G^b|4} z<(2uMY1te4!r+CaMus^V7=#M?laa|fBDhy3_Ka|WN?FOaM_uKEbzgE~6SSp30<7-Hh< z^0IgYsez>%FXJKofY18i$G;edIe=f*4xXxMT~P@T6Q?lTTD8)-biR?k7W@Cx6(omY zFctjO?^C-_q@G zDRS`ny5kZEzoABoxgEX$nXeXCa3_W|Dal%d*^2vHB>34xp$5MBf>W1GadFt%$gfS0 zq`L-8#N56fRH5Z!(g~Ns+(B2|%NT0G^KZO}?2tQ4Rb^El0Y%OS z0L5-6%C#jdbK%4&zmHzDkfJ6CUYOcx&czIEfcOT%fF^*-C-<6|jhe`_YR2#pKfcNg zCXC{DjY-MYVGx2Ms-ZyokqJ~`|Aeg1c;Nmf3WZ|4IPRQEw9C@3ZS*)lJ+wm}!MxC0 zNS4?xnE!rSLqh{*Yi+af0)w_oKm6`cMla(pnE}5&zB2euq1I!Ic6G{G?5tm6`$IId zep_bTA3>-0YR(s9WTZVd|D4F*o~+&e)X9MUR_1>=l7(^WjHc&rIJV-Ul&GcSO?%+9 zzPUNo7;w?xhn7YvoJM8&?tT6K#Q}Y^!m`_ZoACg))_5`Fvn?VjdIYPc{@K^b7~q>N zmZE1pWT;8x=i5i9X$kKG`<`-t%zjo5UP3}bStI6jv`}}}b1~}d?Cf!l^3d^*w_3}~ z%kTYser}%ZwBF0t%8K5@>?JiSs;tuB7w+}Uw}uX7Y)vAyG9|sR3Hj@GTAE+p{z{qU zxp2qd^%OoJ)mg3own*m*5kPF`U_=W}nK}5@uOp`28qn9%!va@np-%DWPZhGoXR)}s zbv!ZPU+J>gvAfvGQgz%r^oXw-w|2V$jVjVFc20)Ol^|zoetvfVw~flry8c^w^l?u9ZzgO)b^oF>!%Yvej*j?acrPIdUBPsM| zg_M+3dwV;7{Q)V##`=1t<3zb-E8@|LnUS$^&zz^3nOT2bSD68}VT^Ic*xM&r&{`*3 z;9xZ;#thyklAD{Gj`u0a+@IzM4-nCaIV?j$r}06`_Apo{o2wZ)Bf0F2oB3y`7mbVB z`uY?^fvG(PI!3_@!gv`j+kK+5ZQg!MGd(F1*1vBb4CHDM8iqmr`% zUQLvU#^ZK=BO@c{@}{Zl2}Msxp?uYm89kHLZ!yhq+opr-Os9k6wFKbGlwUl#!q5y`E?cm19XwO&yHy z;crYgrjqL%bRRbjO>`MxDQ9KlBso1^FD{!2xH$i89Y2Js+wbq_=umJE)l3%)A|8x# zB>yT)7<&(7g*iI`F$Z^@euj+v+?tJf&SO$VoZIAO!i-N~89x!GyvM-K1W;zB2?Ec( z3uTb^!tRg`=~p^vRS;3>V(HTg_DofPr1MVN>=`>BQwDArC)wWTwGnEk-Gz1>rYt4G zGGn*t`}~dNjwj_J#pCuh4Uk1;ocGD1v%bRbJ4RcMapk+z{W%Y(s^LT3sj0MWsn7^Y z-e7Jim&k$?r7$A)s@qM&Lpd^qg<$VZPPNI9J7j|o%QtV{rOd7tYh?`ym8!3wHZ@I; zHb@^H8@m;v6hZZF?`96Zr%?-M(jD!>iHP&t44#3I8)Sdp6k{-RX{RvB>o4t>fu6GH zl3V#rIw6~hla47W0c?~t^K=Zs5gv#I{ObWL{TaT`vP17}?q8d;4n)$;%;H?|qbC@~ z_Cu>y1wVcY+l_sQ%Q`!Yq?t~_R#sjt4iUeX+1;bP2O%bKrBfMk5f+-YlT zOR;#r>o$MwX8A;g9Sb9??FZ{sDlnIyJrlaPw6tL@FYS#Fkqbu-i&DE1o{EyvO)0gv zf+2Y2vomAS0N_G_Olp@@jIb&xmoWXHPzXXWmPzq-Vm!q-9HO|n3NEXmt^LsZD3Q-H zbPe~ZrEFVj=nYckVY7a=B~}~BX3=0v!5uKXj@fV_z-0Nat z9VJLE4+B;rzmTkz=k|Dp1<6czS?;C`iqRve>$k>?NxFSd)wh?Vybm~qnPrWPjjB20 zp~=Pe&2~6K9P>BRRV-;vQz1>O_Q1LcYSNFKPeBBXDT z>O~&O#q_M437@w5)Yow*Bph(aA^UNWsWp1lDMXLMByAu^nOA8gM`A}gOIUnxVIq|~ zDeJqvr9{qT;mh?4^FQY!`|BiizZ~EFT)jeT((XgFQMz0>aCURgu>i5;zx;DC+Dg{{ ziN?qG3+l8z6#@{F*Ma!?!{Q99UbccuDl52Nd@;ZZW5t)mD#NHRW+=Tpa1J zuT4Zc5sBgm$=GO!B`v$kS3sgxt3T0;-kAHjzTtUDf6e zEM=eb6x?GPln;>1mvWEKa_klC5)=yYNsnea9W>K3)Jquk4(8_O`8eH}(T}hmp&yg)5bca3*snOBSSC#NxTPC#+&gIE>|?O6 z2h#5y%4R+b!1TP;RmjJbZGhXwZ%LI0-pxVSDUQxcA|L-@2p_VVY0Pk%{uY@XtNQ~C z*y{Xnfv3`INd^P@8-_^)GeH=d#=Ns`7z?rYrBCI4MtZssC>VC z?X{*6J|yS$W}r<&E*qQueF%AMtQJ!(CyN@$Yd3jM5IO5FF|F; z(Zc7hu1Fm5Ba@TpdY=j#Ykr<<#r{&h z1_<0I?xBA%)f`@>Ar$SHtD{G%K8g!|=H0~iSok(Ekua_q(?J3Ejo~ax8&EF7jfIj_ zAu{f*5FT&xvm6<;#XDJbZPxs@VABpBdehgCoj4dnVVPYMh3Lm@VbZKUfDBXM4a2q* zJ^i49Yf2x|m5#Xvg4Db0H(pcRcfPT;_|P)GxNS-vh@*n4cK-0=N28&NI!%xr@D>w3 zso5waZF;m1=i1&vJSU?kXkV<={>_h5 z`EY@EFTUv;xRB5183ngWmS<0ky{uXUE08R!PPvty%K8f@xVwAg^3BWo_1kY7U+{-7 z_tj|mIfp*mmz<{RHr)%M+7Om!tKVo?e3d3OlAq?Uqm&5Q;Q79=Hn9KEW&CNvBWB|) zy@4RUt={hF#}D|AQUf;8J7}m%$usIqdcywGN)eZ*v){M9KY7H^W%MgQ2MxgAXVUjq zZ^C>Rmygb8k0fhVUYLICB=CmH@0(C0rR|s)AF)xrp=qvbzo48(4ojCC5e9R7?dKpf zRDKfCnGm>+xcKlWFPA3Ij%C9$29kide;*M<0r;8j+0EAbbm^{dLIjI(Kz7W*-fvzj1ef$G3Xf(La)OUqZ3`Yn-NxKNj^p0ww|o_Ra_-qBa!F28>mp?)ZhA1_&@G%7h13sD3pl50`y5vbTN1 zoUs4AqNx`>#8bPWy|BYgdt(GOw$D9<@~(vx2dq0a#I2zsVQlN;Mr4U=?}YfrC}ehS z=hr_FJI~z7+s^vPpnWu~!Gi1+J$&$*$y>8}_Ldia$%EP;SYSCH&ds zp3k1J&AEpT2a?k=+-B%F*pz&Q^TWEIw&aW@ZfGO5o%1B$m$?hxGh+P1v}Hac5$;7X zF^xch6NYlrv3gc#SPSVi0b6RN7)Rxa-BceaCset1ny@>i&PDTR-gA0GdB*eN1D(kI zS*J+{ZI6Lu`_{>m_o%+6NZ9HLg;^Ds89H^P;4~1$KGpE-Sy0mf8WfPpK)Z-Y zBl~iHw_9ezOjs{3g-Z?@RlY8}bQtEcxig92|8c)Kdh5cR1=NvR1%ORAqFPBHdpae9Bv;8Fm|?#)Pxcly<0 zL!WuYHX4o#?xdDl4V`-hJ-v6@(W?QNCQo*K3r*fd9D6kchIlw$-o}Ag>IVJO^-9%->t;J$*0|IbA*}W64E9$3IL` zvj_Vc@KU%@j<;n^j6C^s%N7_FV(iM!%hA*nS*sC{se!Ij$q6;!$f5>GX;UYk=Z}Rb zg?I1EYbkGh2@>}a4)E5d{3#QIzp%H%tn{K#d9T7)bA zl%zJN|FbKc%9p=p1&M(m9h&9MF`j)?VOxHJ?TY?HigRw$9@#|0e7Jm|pu0yX2TsWq z!I@q``F7~BVtITl9_+-@vsI>jV?0N3>{!WcKoEJ9Ob6Yi(E1Vsb!I6UqSu<-@<}I? zsI!mot~pw&i6yI{7>0Ki2%+-R9vy<~4prv+WCoe(8(i-8#zA78WY#8k>W}B$Qz<^P z^SF~)B9YB&Mab@AGL1BA^pjh50X-WI(NHwMNTl}*6~CY?z0i!+AbmeN%#8G>9-d@Z zad3N3mx@gIc*%Q3lpBMKcMQBs6lDYwKm95k%d6$RJF{9!#Z1?@tt{bdU8X4RBYI&s zi@qR+c@A)=r<#P!P|u=+^}R~Q{d(^rYw9~ocE|05tdtb=-F2h|1kWCvH8+ZvpnHdD zo-DmT4id#TQ+C&a9p~MvPVsfJ=BC=K9NvHt#qX* zK_Oq%9XMRH;jaak(Oq4d%4AVS83IOl8`yr-NJW{|-Aw}FvmlhdDb|zgyE}CX_=eqVpv`qPHh99D_DeAENdSJhrmoy|R^$Q(jr6;Qwzvzz~UGx)ul0MX; z;{cU*>n;4N|8;PMhjgp0I?FjpoL^Q|j0-aP3AregQj!3Zk5iPjSUPTVKre95} zAs-DU#9&^g`1(BaOm|q){&v{n6qIswGhfC+pI51hjH6PQ><{Cks)t&B4Z9IHMxZe$ z@BS{XJ7ySz=K!|z^=V)`^QN}7kR`F^UcLEn zO=019Tz5e;ou-7crUoyY*tvg;pf4D@@4;DU7u~N=Ba_wbV?Sfwd9T!?HfE*&LSouH zoBjF(Rw(PTxK7gmjA;|hTZydXreuwF(krq#Jzp%7lgg>hbTNAV@jVTu$kyy5N6pdA zGGw?sZ{d4CU$R46^Lg^nZ}bfS^C3O)9lpnEbWfeKlT%+#H>Al|Ojqf@AoYe;Pgk)G zRZY&6kE__mZ+oSJBcgl};dw;pYhO{Sw1pyqd>#!CjQw8)No^-53&?5RO_vMGLJ?d$u!tG z$}3L{`*}?Ai4M2$D221T9J}XO6p3Jr7=(bt#XcGI7j3!Ez8u4-9_exDWlAj>2#_=oM4;pZSfOke(8u}rj=cCufMn}4HGP60nqZU%$DaEK%%Jl8U*boM_yeta&BfuL> z`-R9|RiBC{;jH8PTah4~N2>$@u|=$J?%r1}eb}UXcTcm#y7hgLdsV!N>Khl?lFBD# zm_LC%LwZ^qr9uwoVeK5xP3OKQIP0-k6%xgB#l76u05A#`ePJ#XCm>^ECy&XtOZ+QeLnn@h&`H zXHxJwvlRt&<=yl$rwmQ!$3=uSt#KSM(ZaeyhulTKlTMtZ$4VIa@!mXCh}WIvR*VHH zoWC~7PxLBi%q*&mH_-_I4rl<(>=AR|1~{U)b#J>yIXa?V8-8QAR;F0G%Peew0DmPESaW0keBwDqyF z{L^6it7LJN1J#SWWHgut-rfLPUl1Hg4kV(mTzEm2 z9B(wE!JC?|Z(L0yk^;L9+I_azT(K9jGHwu4BBa7Cv0wC|O)cl0KfVtbh_AdSFb$@> zPW7gVcs%b$lJ7KhVjcuj!?^b`W!~Te-l93}A)E72ur%yB$DLh*St88OHHs)6{w+pUfo-isdOyMdLgPoyA-uPYW;j$eh#3}t% zkC=Z+@uy_ODJU(4pV)Q~U#C%#wGm(B3m0R()Z|ySWNm6>2q&m6b#@y-keq*gy9RVm zsx`7U^NMpq2`7dAgL-j*Y`2SIUd6^faOhHEcljmL!`Y2HZnFMjDUS{u&8tAgJ(Rsn zMTM<&vnG=?3QPI)l5&Hu5En}+>v36H=?2$T8h32b|96nNi)-pXXul_=_hA1h!NE~e L(o`&!w+Q|(Fv7Gd diff --git a/docs/manual/docs/maintainer-guide/statistics/img/kibana-index-1.png b/docs/manual/docs/maintainer-guide/statistics/img/kibana-index-1.png deleted file mode 100644 index ea5a99b3f437c11bf0a7a6431619d86c55c47255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56234 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 diff --git a/docs/manual/docs/maintainer-guide/statistics/img/kibana-index-2.png b/docs/manual/docs/maintainer-guide/statistics/img/kibana-index-2.png deleted file mode 100644 index 3a313fe5d2bb9541f61fcfa5c27cc43e0657af16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27474 zcmZ^}1C(UV)+SuGZ5vr;mu+>~wz_O|*|u$Wxy!a~+xFl6-aGT%|ISRVm6>sN>}TUS zJJyLfYlkVwiNnL-zyJXO!AnYrC;-hqYVVa#2KS%wUois-(LX9qR=gzYvI<1Pb`B;)YyegOBMBc25fKrOgRv>M zl8D&9;eW1pNz9#`?70~jTwPrOt}FmM2QvmHE-o$xMrH|Lw@u@!whf$&bO!z@C8# zz{v1_136ik{!e)SKh)ou|0m4E&Eo$7`#bY5*gs_aD@L9_jB?A`8C#gTix@bW@G&zo zandug(latEGqG?pvU0Pq@-Y0D&i`ci4_es4#K6hULD|mEnoq&P&BWT~?}ih zzvfkJEu8rNMD&k~{}TTPAL*Z^!w2){mj170$Oj__efVe53IIup2r9b)pLamI84o#AtTwmX9c6;za2fga z?29PL^@HDdjP zH&JW^oJTHCq#37>A*PkjwS_5@hEq5#D=M5vCGE!`LbH`ps}hgO`dT@4!>G3MXY|sT zS{6i*{$Lu_>;X(g{&qr6M-6pC0S3>FNb=@Zxh8BemoUu7+o;FnI^ExPfI<)8gr`(5DQYiIh zIKQ(2Uv0BS(#Urd;+ihSv{5Aq0BU@XNawhr)my zb1N0SR78@=PSYfgblPNdV~Lqc(+=~Qgi#FhUk}Gp=B^EzfWw^y7cikIgSt_x9yl1h zNKCIVJi%J?w%N*rb4#T>On9w6!gULwO!IV{CJ4e!18t|FjhS_S_D23}%vikgz~f5u zHU%2B+ktx3QQ?ZJ5auE!ci)O&vK7b4RNC}2M#-7V11V9O?Pag=qePTWA(`UaUlTcK zcOxEIP+18>JGsnOdH3EIn#3a-_Y`|8`MLmej$siHz^KQO6>sWp?Q)z<5Aq0+X&g;+ zE(yKmdW}aysa$qGJd6Rin#{g=Y}^C|N*ak^Euw2_NV1SeYppUMRPPQFR@kJy z7&(SIYyQZCgg=1rWV*^Ne&YcK%`~BKVdiPQ)@UX{Bt?J_R3qN~RoGiByf{YoZCq+6 zpnT7Z{3ncxcJs@>7 zkM`58|K|QfmJS11@^D&>2?+?520APcCk&GrElN?l1SM~4@J1ko^u#a=CP2=^ooPGV zG-ufamBRYsLKe;Ktkdl~2#+lh+!+3Z2k8oz z-fhGa+i&j6&MuujxS|Qmn>)2d#9vl!+J^l&hY9`j9%!YQV~QxiCoxAz0MuLU9k^hP z2*ID5k9FS3Z`{tu;8=Cdy2p46`tcKKKl*iX968E@s?`NY_v)dAC=RpI9x~8-A=~cx zv9-S%rXHu-4dwag%M-7&Tg@xJN4To*Qb=5o(tNDHcTn6SLt7AdvAx&3(g3%6E5_>7T29R`Qz^sAp_JQ;-Hb zJ|L3LrZI}8b3?&;52Itdii`-{pM*fCajq5aGyA~~?Mw?_0g4-CqI|8_c6wTtuoln* zQ6)h`bhPn9;O--9RnZE{EoD@ZETnWvlJPpbeV1_}{cwqYH6L_d}# zO2y#Bn5TjvZd^%V1uGa5CDK%ZBG7`rh$<~=U*#ppwbs#$lb;Uf?aFfW8>irO_~sjRFUAzLD#XeSf$SfwyGKQ}KXHL8z~ zvV$$(-$vpcF!a&uwnay#5@agF=qI#`wXw#e4oy&WhxOg*8g%!ic3tdWIRsX|59zS| zXfQ3ubtJ@;iBx`(O2n>)yfE3sBr9HkINHP+l@`1v%5?PD6>|!^2TI_w5Y5IGL4LHG zw8sIc6)O0-`2yOVga)6mSXfp{u1pY>a7sr#uiRF3ss(DW6|a+$0tDqRS3;W!%(Acd zhBAJ)dSSqB$Xt+dHuGqZ7XqagPznizsh9q{SNvX-$;@KJWh!YV`AWZh^)fxPPln`T zc|tYBcjYqe8WSvBV>DN~02k0MxBxC?8hwjuiABsY`&K$e3;Q|s`r2c;L)iIEReIxS z-}X}_Nw-kw)Je1xuO6t>>gcC$POGvcOSS^QlN?KtB2u)m=OC=KoEkVMh<|=drwG!=J7{H2KIGB^~aYx zd1chZq0>=~S~M6sn{et%2XeZ)kcR;~30R_3G6}kxH5k(1>-Z1h+MV;3i9!N?_rQwC z_)rCP6I7sfl#EqM7WME;2|!0+}Ui}}dyq#Eys5k*rQOV)@bvQo%oH5gfN zp?)a3I$>~t5blY3{0Awgrg9=L+L>~1gpaG`KwPESGK;N3QUqdf-Ut152+~Sz3RY&H z2)S^nvLc=W?c8KoKik+RL9ozj0bxc&_6!?kp(fHoFO;kdVI&&}>OejsXk&xzc}*hc zLamY{m`EwXuxi$mLM(PTU_1IbF{oPPi^lD6Y0=d7VMdA>k|@o(Q2C!h0)-xhOQAC= zRI?XiX_DlLVb6|}En=fr^;B&W^)yuH7K^_!3cI-_iigF?cPdQ08kKXAZb?ph2L^}= z%f;U!1(Xa6h*U&cb;6+Z=u(1nL+}c5zsNzl;f>YN;5dX~^X$35da_ItjqRxm6K)WH zS)!p7OFl3gFpCqTPh%`E*(jEhdld+gq1gMylZDu*hW(zQ)9=_Ix?rWn>tRhL6iqP! zsn=lW39MA4?J)-ND%v2kni+c!(+<#GHAyZ=lX7ZRByECZOhUf0Rf^y!JUQ!jYqumC zM;*)0p&jr_LIXoKKky3k3nA{_a}a>6g_LpXE`>#l;`?5Mnvq13s6dVmrzPwWR69on zKD>(xw5wb_eDvdy-Kx9wh<8NXRUn%(o$dY`nVnNju$G*nW4B_?Hk>q< zLBjKyfXRkvPEL$Ktouz1Geh|Tl#gi)3Hg-*DlUPvJ_AndVv|(XZ$K}R$K87Hg+tbg zGK8RE@3m~RTe*R$^#n3!XhOauzCOToNxhtg;Zx(?H24rFZ*P&fjXhIMS;_8d?Y0Vj zX_gx;UCmvoUJ%`KC(LAmPMAzN0ofjQ8tb0c_bB)DRgp1q_E%+Fa^WIPZU&n%D`#;C z9UAmtjpeD&F1H>r#n`$ChSNA`yQEo~ekU&LAdNK+%&}+*8CA&02)u~h2OFZqGJHUm zrBGnz^EjE%@1QI|GI(DfG)hS~T{q)yD(QnjV5rqT2&Bk{3?OutiZP1pzX=4Puv-6Y zUs=!!QIF-q4`32muxf`P%gQBZDu8>Cz}-sW1c_jQb6~?DrO+8sL<*!MTe=O3`Qg-n z`27e#nZa5pTlCX56{c-!k=ZH2tTEI(V~0e+esKkU&Q~S*@h^9SX#pX zOJiQBhKE@2^Bz<~^2tYbj*A&N6CM{q+Q4x(iXP{Iug`Q%0wS-fzGA&DgWBN8ICmusY%udw_ETu3J@>o`mC1h$;DB4A zxlvLp1f2Yr5t~S(ZHly;h}+FB+m-Xz%^HWQ;J@hWF-iZ^!`Z6bKqQ_`f@10AHLxl5 zD~O7hoQQRFjFdpgjn%~6qkKd9AAh~Q3sDK!X#& z*j7D>z*ry<&fpQ*uKaNp%Ku5=N*4yGNSYHTOdlLnFgza)0+dv03!`|eBdId!_rC*v zQUW4jewU>{m26&%@|3xM@Zc?X#I<-`lwwACuFC7`C+3_zNNI6u%>Oql%>_Vm_y!G* zTzDsHgR<-yRn^FyY%-v^KZxijz1nrEyCMxZi$FqXb~3|ol)sqS<*Q`=p(+Ng1yx2Z z=-8?5zW4mKkYmu4rDX^&aJZ7U^9G;uPZ>QAMzpsJ-%fldy95k0)unvUBh@c}Z(q19cW<|^nPh_RxaFhu&%IVJ$St*`(JK^mx2J(*__fNC11)rmLI|Y=Fu@khe#jnDww*R` zmf-@?Bm3IwJz=^uH;xRnqS!ZrpcRjrtnWBy1GJoIszPHNZD4WZ=@q{09kb$Pi30si z`}0Oav?e@=5#x}9$`AceL&uV$x$l;u?|tgmdJTxzq{8&stk8w>N~Ot5>|ectUNGW` z2)%ynHG@oV#ZJ&Zzp_7+fiL~5Qm>d{tZ8Mplo7EMg|j=mMp`Q5U}Ne&jW5G_pK}Kk zq{wr$?p)^=z7+M&!Z~c`hmVDPW;2#ID&>pfNy;*F>%&N9a?x}(vDYZnX{yS;RRc0`o-PpMSDQvT$QhJ``};m5W@|{VhG8AS%C=-$Q$n zWbvtq!j-?PY?G1C?M2#@4cXHqZ{c}FG*gE<$m?=7x3}-N=rz9AnY$PiD-GLta>Mfk zri>LX5?!A3SzOq?K#R0gNZ{tPevkJ^k^yY*wCq9@8TTV&IJDHsOlA#VS?sK=0}!Qs z1V-=bk3Gl{-7FI&-&Z2}<4zl}6nDjvj9Fs=Do~A~nd-OYk*jZ74^{-O+WDuf=4fQ! zq#PQ`dcEm`mul!|tuqOxRt;tlG_%5(OC*q-Q3Q#yGUb%Ayj3@1=7^j)$#E0fgMx`Z#>stNkAx$-=40{ z)>=`EAs3!scn;s~;OB-Dx_&Tm?d2)MydS@%-6;O#`T(MJYxY7Oy3k*Z(Mw8 zIgh?#GjqgpQW`6RX3^+JC}pw{*TRw=oXo9OIBQHUhVC9D#Htc6Y3xOSEK_v*G8)NI z9Y4Zzlc`BTB1D}|lbxl(w=?18uBXMFR_F#orAbDIF+$pk)`%Ax#o6bL;hnD#k6C7( zM>VL3(M;81r*)*M|98p$Zl(q*6$S6xv9FVeBZGck4G+YPu~Qe^M)s8a*@L8$4~-RW zZ~?!2xq(eY#5|1`M_dbCPS?Z7geXh41AQ|r^bL9^g9k}!V=@| zV?d-pyZ^k}KqdKI5V9wF-{FU^d7k#{7&-_^9oDE5jxr4}2VTrXi?>IZf(VLL9%Glx zjrx7JX0Gs{t4JSf3T=?Hey75)iLgao>QJ`Rv!N(A3fzw}6b>y3blBhMcqTd-vXlzy!J=!zfU7qSzx%LwQb6T_uy;Ky(`mXAc1b)+Eic@ z>p9cu^TV@bktI^)Qji2DCsNmv-4?E`W>pU)eP{vW;`e8yQ5*>q#lG??@a3U=2G$U5 ztUE;Z{0R?`PzatMVko$Ckc$f<;qGvhoYp@@ZjB*E;>>9J%qfMi`FHz<-N#RcjMyY; zgowYM#lTYC1M`{W!E*Fr{D&7DYSk^)cN^da<}}tDU__UT87=c+dOZ7*1KsZ)0bZ4( znX19n+I2@-t6E@WDSho+4Kyxt@H|%w1Yj}+0*p*kCM;j~4Vb=XuH0}^5XE-8n;d38 z+K*@`y4>y?oBDDa->3Wr$Qk!u3p~Mn}V$l@>%@tqu}*rn@xRlvM0b zCjf!gONDw-H5chgQc8B(=i`|7e9rOG-*SR{Gs4lamF`vGz_ICIyKWtCeJ5=FsCAo* z>$EDc$em{1tkG_uS)aDjvB`)%6SQ2x&{c~u9zO#mJ}sd<3cEB3FGn}6y@M+6Q`su# z=)Aq3lm;Fx@OmTfBUKp-uA1WWT0kh`P(;c1N?jF+c0;?DqDSaGvDEo?y?6Buq++0G zWM*kn8>vht=lyvI&a!oi&-H#^fLo34eH-%e!dzQZH-uQEvb$l5P$i8% z%vg$Qo6@jTP0xLSP?Dqh{9`%fDx|p-zHzBTwH%{M%wJCj2534^sBXk~v$a8<4udjb z#GW%=s;IoSDQh<`d@nXv&-cSwVlIaFartDf#LUdB>+_*z>zBi`=_oS{5=Ovw;LcbV z<;hkAuomF3Ph3wX(5Gv5tn*H_5t2L<~r9a1|2LAu8S<=4B>>67nX-PPy8Q|IS} zUBj+iEs1#^1R#d@CX3(kCg*d5 z@MDSJLB8{oa_jZ+>GM@fIr#K)OY2eN>$B$TR4@DEEsuqPpdII9qvoScJN0wy>z&^z zgm2a0@Z&%a(f1zK*Z$=>W|9HpYb+&OTe@ycACnDyc+GZIvsaH72Iwa+gr7x}nD_BC zu|8|}({LQAT8%EKI;a3g?rv~ta}XbgvAqjPoZs{M#s)n~*yH7f79BlG(+}O;?|9Pv@o=<~T21pXRd(wkgsl67fh< zWch~v#iQ1rcAt-PF?_WQwQl63Gd?@g@)lh8A^i3n;&J~K=wp2ho1J&FW&Y~3y_fJ(RdeJ`3VH#2ffbEl>`RfyOggp>}yauea4sh>c6}D7AqKi5fBw7)CZ3amk@jcVc>PU zG@P>BgCJNk^P-gGWVvh}_tSZ5f}Eip<~>x-Nr4v|up3-#yWFnQBH8ukjFN@97oI-U z%MXvUpPQc9SEFbu;Q{3qT_0Loub1Vt4ehNrSDklRGjWc-Pc{6K^`S}t6p1^R`(IVn z6D2g2h7?{q@5}z;1V~D{YE%;S8eHK*6FZf-W8LZ?QPopESDwE7%wB)W9QXWqV{T?~ zmw^BE^+kH>-FIselT{YPa`n{C%I3jS^|wW3eXm1;VR8&Dx~Q;p>-oFy*QL0b-bc?} zO?Fba#M(HyR;1hQPQX&JY5f36L3Fv!KYMsrv{IN+AoEJ>>dMM&ZtvIelZNi~iTMSn zj2JCDAXt0jycu(!t0$kUIB^1hBJhX%$<8blX~f?q_V4U{H*NFd6fboRLnJj_saQOO zUN=LnMcC|meoUPYsIHDvFNYjm?p8dBaAK4)(3@wNn$?!V{-dgA(k2OaV~>ycyl;r- zWgODd}1^W?IN7MBQsBKFk&l zd1_{F609iX(EKGuJ(A+&(zJ$Q29g z5>^ioRLBm$ojN?@=!H(9x_(Ukk?mI%Dzw_>MAwh$Oou$6HP1~54iRC-v)*IUg;F#X z5g%=Y+a4To?5zP(DF@P$)vbRH#jr5iZBE##*c?sG*3rFdg&>x$&dz+#+W}b5SOfN) ziDQS1v395r$wXwp*(B(Xm5EB!Lph&6W^ByHxfqk}Ch~AX@mXIoZ|h>Py54h|4nyb} zhKC5Rg@=CP)&>q1ivjChCrgKdRcMohLmzs|uw5xHRBah`6R;2RthCz(BTzs*s#L+^ z!rKR+vm}{0`kiJhh}z)@1~HGsE(s$XEhgu>82y~@lFJ> z+BJ%1%MXq%W~P@!ZnAcCPvLh80<*s5qYRHi9KSWafYD7l~ah%OMYrIi)0Z5$WKn)py&|jp1%FbuR$7!I1t#J z*0C;maSV3ta9c~E%Ql6^(0`xxGpK>k`&U<2kB^Tt0=6bmoe&g+82|tT1O$?`qa0s? zlKym=VtUQ<<^&ry`0dYbf6zZW&MpD$he^f>FHEa=^&Ywq8+30^u2>_~AO}fpiheq| zbj?>{@wVo1+S+G$dry&exrPCo%;Es_trr+{6E7kgD#=ZsC@X5Kf4z-@hk5quwDUgG zs;HMGqQ0R9EeU(w1X4A9;u-0Y7F8v`At^~} z(rUPpGikw0CgL&7NaE6gh8<2JhhwDP`%kRPT5P^>roLIXK?NN!M^2`g217!K7n>eB zu9T7@HDke3z4pEv$I&K3H>b~S*ci|T4JU;K3Gtyyn<~S+h%skweSaYJX--?mu`~Ix zdwxJ{Mns~5OO9*$GfC=kce}JlDF$$?oq1m(Z5cFwrGDeFi<4z(g)pFmd??hg6bvPb zzwWX%pH^-NZseyS#s79nohMS3%<{I)Q6rVc{WcntDJq#DIAM6;bA8?b;@z&=+m~Hh zJ|o=22GA^%C-@{JG+0T%ev_eLofteR4v3j# zUt9vFOBK!iriUw8&idQ2UvGRZYRX;JRJ-SwoM*?KwO3Xn9|y){-8{_7{Jgz?foiDa zIp&JyyPw@fV~U;zq8V3G;sid&mifxWPlGOCb0+VHbOj5v>&^0Aj(Aa$xV@q1f+_tg zow;bp&d0_r?%&NrrdqN^%-0RU)eF<>B8ki|hG|SBrrHlI9mva3QE+}*#sMFYFU&W~ zd-C-pa(X0Fd&;9;5177p(jt83uHeAn0zmsB=n?SW5YA66NhFE0rlz(RC(ILq*hzWtd02Xo#oIbA#WeqG0Q@AwB zAf&`0AmtQ-i;HR;=0G>U1Fm7evTJSqJQc%pf;jx5pRt8^Bc06JvkN+j(uT?wFxE*$ zx5#MMOfs9)3GJViN-EEkk}{Txv3VWc&o9~p;lQu+v$J%XPstnin3#P|x?!_(?4Z`q z=wju}oJcuv*bMS#v5r%sMsJXsaTNX@b;wN|W0Zlb<@6kJ^Wf{Yb5Q&`m{f4!hqWG%gEuoL)6u5 zEg7hsKSlXGuxen>l5;lDuQd}t+MOS6oH3{#RkBk!a-=TrEq1Kip(Q1+mZ^$OWZCI@ zDe0O>dbxQ>vknv5o zf@ye}U^WROQa^*r-+3w-CK)G2`#R+Ns{3=-@z^kHL_edGoyVlg&YI4ophP}9Y_3pl zP*1O^tyd63bYe;dQHP6w4wqZ@rx7I}3=Qi%--}O$s*dKR|N7cKk7RKeY;h&*u1`3O zq-!9b*Y%K9zFdYvSR1f)rC|b#<^>pPV0X1}>NRgNPUs1{2@?p0NUWrv(#9ch4iU1c z`nHTc<=Xj%hz_vxwwbhql}v(ZRcB=J890qv%!n-AE?V;CX2twg+a+B!6UYlIoG@k@ zWo_*>I=kM+=xpQiV~}txNr{f2#O>x5iTZm*A&K9`{qc4s%e?-4wVV!anr>a{JZS*v zr}9i?oV*^klW2rk05`TnW(R98ri2?_XDVG5H!qR0l{PA-9=~g2L4l2hhdFO-Im>AZ zMRnA;43~Bs??=b+jPBd+%g#t!ut$xv*CfU?u5(!IRvYUCI(4x)K-AGXOH2|oUR>{G zXE|J&21$w>C8aM(X26Uxm{dckMkR=6OjxZX()mH#GzT1>faeU#sNrmVxX7ZSy}C2H zkA~7PJ8lHLPNtR5*LfwSTTb(Bbbk9;Nw{Ez{oC*G2APL8k!dEo#(IgJ+3|(2yb8K9 zG4caLqSA?nbs^*J-hqb&lj{1(d^PzAI9UenG4k*s3cuf(QZDpZ-=&}L=JvG1s+&tl z2^;8JPax>sU)M#0diqDjqH{Wwa~l|V?!3a0sQR^w#P)tgPpy*D{5Uvo1#VIxK1iO- z>=L1AG_<{$9k`pplcr7KOeyJz1B)DqCh$fFO)f{$`@E=m#t3HSv8hNzrG+KrbO7pm zU*fyN&Hv>(a)23r|HOYUAsqlflO^!kjx%joy}CiCYOAjD-0C5H!skMAl;gPa=_fL| zbMnslxb}u^p#6A5fF7<_uu+s;)~<6{$`)?-^nAqUlXWS6Ge zx4YPMKF&kD=NPe>?Dme~8Ks%Q&(cYgDffM{rNNgw7+sh8F%<0+&~xna_B(pOiUk&; z0sP}pHM5P{_*-gcz-+(_Z2(vQinGfMrN_7QbF0tf$3bg~KGg6X@0_5EeJ2Bxk--G) zv#5NSjGV9*IRx!*x5K2|I(ep!yxcJ|Bu?BHFpb%eM`B=@o~QN{ z&*$^?P1PDThZq*@gocQ)N2H1R+6eXx7_fMNLTr+ZF<3A!niPLGz5H;HI4~QCMbUV? zWgccJY&?qS4l*9V}=!)T^hhYkxoYT7|frPDPEMGvkU;2Epe~SLV!_vWJtG z2Z%o&dP$Etjqvg+?neMjUgdC4JpPUWV8!7ngN?%-KHt-x7AG zHds;u78JOVqM*fXVAICk`TQ|5QuDrZH9RId^j>+knwHesk&pn3g3QEd_R+=vb-cR1 z-1T`r!2em}d)>VC9(=iN_KU8IRw0ihTF&t#iSY9RopNn`*|^7`|E4>f6kk`vYGsAp zW9MM^^P^yI%n)OM`aquG3tHX~kI#2ep~Tx}hdikICV}vbPLT^I!@gnDF+j~7yqTYL zccs^uo0W%cX-UV`);@V6AVe7JwIKudzG+}&k^AyyObxN=TFmU6JIGRu?BvS!;I0Uf zcb*pc`w}1rTJ+8V{pi6_vO$oa?b<`o07YfiitC_+(8~Q}AcZvNRXT><35)DF( zVv?+2r?#Wvt7q&;t_^nm?Q}TL(QFaLgt<$JMnttb+J*O)xTW@&dmouRZPFb>=C=wI z=x-j}m1@!QFQb<3*Co;s=>Fw`J=yR*aTK)sx?Jw(x78s8_A+`r{Ftf{V`(r4gdN75 z&qN(=7QFHDE75f(IhXyC;-b2a1*Z1q*Pm~fT@Eii#@?-R%{=Vg`6vk~5NxvWm;ia6 z*Xd6O?r1TYZD*Gvea*BHaai%B1BhV zL6rr4q;CitL(*$Jzv?EyMu@&KH4LMM-5UZ%%BJbkwdCO7v|}-Ze*F@pCNf9pnkm#t z#fJ{+oosv%=fCw&7>bE|#i)|^V8!qRmUXZE$U zMRteR7`d_<(vXkv`)a54PgBv)=aUj&QUW-_)-PbbkYBLitxm5!l$YO}^wqdC*6N-F z%lx?Pf{IawAeQ*P&g8*$e3E25_D7~Ls5^yP%?8qC21(kl_`%!@YPuQ(B=F~sev+$L zWue@*$PgdcSWC^DKYX;im;_`yg)PiAHo!Tdl#(-#eAj!0NuhD#XePhA7w5lY`kGyT zA1;E?3iKZLeUNAPlyCHUJT;drG`F##R#X-R+T#!dYQuK9+)YECv2zvN>CI&g76#z` zzJ8?^XKX!$Y3bNxDVdt6@}L3ZPm$Ec#=-v0Oc-?t&>Q^a72`5EVI5T~k>F zpr-?L_YjR;X@@{w#+?j!0a(0lde7HSUr@y%8MNIVSA2DAJxzzi#Y)T;)zkpGSh||p zt@e-W+l@CeVS|R0F~WnOk9(AIfy z=9fVpC3M`bGgTG$9654%1Bz6|62msLvmmedkM(j|IBl=iR$xsjl&}_im7%=X_-177Cib~q$#}96b z(mUE+tF>`;)qjvmF7K)Lx?VV1*R{2k60;!c=sVryd4!nvrBwidpd ztX8$Yo-iTV+uO6Eg|&@IVTd6rKl>{YY7x!b%=_h43v>Maz= zTNs`j`7Kr!ptIV##~{Y+6wz9iS2tokT}x9ZzzSc3n^nbmBn(a;B0?AJOYZNN5q-3m zXH13%aBT4c$kW6xA6Ac7dAzwg4<#2v0(7?>lIWu_9EB4!27auhoK3(_F0|TbZzo4s zhn>4u#1csv1QKnc#l37s^C-F-;*BGZ~JYIz^rNLsL zdc&KUc&xLY-A+eIi@U#ac)3uvVAc{{v&LvJWitMHTC~JPig}}CIZd^`YH89<4 z8GEF@@aJuByiO&@)rqw!x*I*lz)M3wp%Sa3jo8w18S24e0c%bIaUe{Ds+@`hb&1pM z?QDVgYjO3&`crqFG^p9FXqM_oy2dY87uG(bk>aR*dMQM)!beYDlp@`NeNUd5M+!%( zH1yu5aFNR7h!*lD8M}EZlRGsCd``#a*#1=1QaCRRH9*2q#7*)ddyzT~(Th@6tE+g7 zT#;c)!=$|uXgF_E$DWim*DdgA2z>gK8m#z)IlrcS6oU2v_b6(+294NSa6+6u{8z=F*HIbRddp z$EcOoUH|**AU?c@3Jvyz()EB;`l(Eu-`4C5>3&j5%Hfzcc6+>9#+pVeBlX;^q=vYs znzVF)Iu)nyYomU$30c`3W=Ih8#H7o_tWs`sR|Hx((U;WoN_hRB&eQ%uIbGsH=B8=n zq4#x%^5K{BA-?^lNjQe;M|^h$AyL{wp}e{Ct&J;0u(v0E0n@#J6tnjkiSK4P+45w} z?p1ZR;$~J9_>$kPp>!bA)6q)k{zps^+AHZCUk zzBGdeC}}x|H!Bw`o>|FbB{b8|j6N$n<&N$uUyRB=KfR%^q&RgjV(}`)$WRp>g{`8u zo6=>g1r%!7kjc7A>{13Q^|UnLTeZXJT(>R>s5q(|8&0exi{iK!mq2IGCcDsP!HujS z4@ZjX3!9ru@+SZE#r`C2X3*vOJ$Ad7!~0Y>#h0XwtK}m4{Y6{v3J_mRf3Z8u5KSD&Kn*lLPkd% zQBlegw@v+Jzin<$Lu2t*KITYZdNAlm#|vX&P0P3andW;f*7{hZ5!}dN!@A&X@1OxD z%&M1dP|w;_bl5kwB^`7G!cM08RuIK;2{wvkf$+Tk1eiJZbWxK55@bdaTpqGBn{ihKpAbi^V#_QcsIvddaH zKT??JyJG}j7z&**)-^a${2(c@W0oi_>aKo@2oRusVIGtg0 zUP+x*1-v=;t=>C+LnrWNiQM0(&lE7P^!c&`cD!JiV&yR82NID9_XC>a|}!hkvr= zo15B1-+pJjx)*8x)^-Yj%VulFKdwxvQMa+w8QUY|;qke--@Y&JSr;&QA6s;m7Phkr zNM}G>vl)ZW;$<<5q4j){E`@m?tJ{;aizkgWP6&(FwYj{s9U1sNG&#X{f1SN!MCrf- zEKgN2ohHFamCWJw$U;bG?6@A)7i zL}^o>U1-_&A>>PI_D60><7TN!<(jou9tokw*Vfl-ytV=g$HmJjCf}uc6HMZ(M*+ea zc9{_J*&KTL{;fxlgG!d}o@;xAHFHXI1*=$9dYplD(NE`<;u($HACg7imD2F6YAY&S z;)F`R=gOxD`wYeCalZB-@-A!v!!rXDw%DJFU^?=|{Ys5m#p@X?9+V18mIwq+$s!Te zYz&rnpem1LNLn#T78sr?Vj(Gm`yj)H7yUkc)Qg)_D{~;(2?a}5ZU37(o+Qb^5Hj?27R!6} zn9Do`Vo_xZRNK(~4ynIjwhJq@e-5#+{*ofT_1Mr>s+@yb!sp9s6{JV?+(5vPH=Hdi zlbJodx40K$72$$ZkUo*2pw4Nyyq#ZIFzcJtuV0^C#6$EzJ;~q9O$g6>Fg3|1F5zE{ z>>+#*kD!zAI8l}&i_0gmZKoG^OvgQA`U31TPdYEX_p^ydKQ&Hy>mT=@fvfCgXKiRU z(&R){uYGJ6Fe9r595*&P=c(rLLyL}51kY$i;GLs>_3Sy z+g#9x<=k*t}Ry+fWjLEvc_H&&lUPFRAkHJ!$mF3`08+_#r1irhM* zk8^;gy!#;ReC`k7U)a)!X$46ZK6l|zqhiCJzm5_-Lito*%w58qWAY_in4c9R7cSFQ z%u@;v+%+D?AFDITcOXi)u(m+`K|@Qc>MvrakZ^`jBV-qEP!uzO0RvvKSXATvaYkO* zq)G!4R_rS7Nu86Op00>}miJ97Eh8@o2D@f=AW)#%(!z#XKRQ8X)X5Z(l%}N%Q2K?U zOM^>KTtkZ`>GJqk93a=u4@iO1z^h&{9~Wdwj2v-tW>w`el#~$$pH@$z4jHPMJ;@!I zFxfQ$Dau28<-T?)@$MKV`L>pxd1mDYTSIC73u_J;%Go}r|79oUGe#*74Mwz@4L3YO z^yjzSyTghLZ3Y|2ITb|r$VE_Lr0mNu2jIQ$6o+r`25C}7iZo*bl~b6dwRIdiX_4aY zhS;o&*WP-?%t(pb_Y4^_CNPQGfP-Fv{8YJOT4xFy?xf%bjyQFtVt)b=zOW>mCb<&H zej)4179@K)5z~0=01bX7rx9F+i?uFXThUl4qC^2lcs78Fp?**q2 zWPjCSMsxPP`uLH4Xn;kiP{k4rx~pOOnu+(&wR!(hgz=hIdK&1@tKo#JRN0Gz_Dqn2 z-P3y6N+w+8dCuX{B2?FVokl%&iG};TW+bBzWZ9lud;xMjxslF_?H*u5~Nd0wag|8xdTW=-_@> zWBnoTQ|sOL2$DUi*syrxztd!LRZZ6`m^@$ygG^h;4?wDEL}BCrJA$ZNCW+e%7Tob) z+mQUf)VJ$FXRd&uHwk1|2wSQL2MkF@ClZq;QZbocp^J4xyO-;1+}KyBP(f0!;nxzQ zZi(SRtz|6dqeg-ydlR#nR+kk@NttJ@!I+725e$QP_%Ns!arduh+7ux|pN73idxI%D zalXW8f_-pXnb_GvgRX$1vAs8=rt*}>!3@T@IP4IM(}e!j(Bo!Ct>3)XbrWR=2I4Op zb@1)&qx}O1X-l8c>&kO$?!?J8<52APh5l>R3uA5M2$*gv$7j7?IxeOWLiakefYzYH zB`#)WqpA@jlshjLGEl+ukbUWCBXBLp=9Yvbsc36H^C>c-(ubJ!ARcl%aoU?@JT5fH zCNtK=@3K$9G~4xnJY~{t*Rc!J<*p(4zNqr^9fZ~Z0|BsYhiwq#Aa8L%Y^c7;Y?xt~ z0?oF*%Nndp0q3}PMUMjs0dWgR+J4&utHaL@_(0^;Phkh@B${a?n+b#{xF5l=^6Pdg zT-UO}ApuWYpETm62Ax=oPD}KQX_-Gb5mH95&x*E}_Pd(tG@NlJyDrrp7Y%=+l>%dM z*?K=D6CXd?EvPVl(twxuyNwx#y0Zv!cs%1nwa6lGKV}EBz80%)0#2(4H*in`Y=y^r z$6c(h*`KfiIkZ1jjmYY<6R78V5H6!nZqOT6-tXt+b2xv1%wknf^mI<7e3Ay_c-=~t zqL$AdF%;t2Z8T3urN-3~R~p(O1XHC4A*TweJ*(3g8^DPFytii0Hy8!7NZ0QH;d zut6CdIdwuvA3+(KH?nW<2lfiqS!V64ft*(NkL^-~Nmf6@ECW0*V#G9o$DtP$T*gn> zJgfvs?zFgWqSwcd`d!x+)`#Q^O1~r#9(v?NvqMa77rgk+EPNIj?A+y%@4rO)&DpO` zNz@e#^!R)=SEgMBX1qiGzW`n+q1PmfQ`dB@yD+Cl9MCNtb6mW1Rc&r=Z|i^&D+19% z(^I2rm?Y>$g_w74EwX!0A9yvUlhtgCx%9&P{Eq#HwnN{|uczXHG%Yk?dG~ggcO8c6 zYt3EVJKEZzP)3woHZ?sz-@WUwoW}|~mqIyVZ%->U;}uebBP(y0$J-1m7Sq_dASQWq zAu&9*_~3nqx68=8I-lWcy4oz;Mc6*P?7%v3W5aE`K#59U8=GWvg>`1tnk&4kcc)}y z8_s5KG&(?$D5k>{OQ6%gY5USeTi<1E*Fn2 z2V#7&s70rMLKNz9C`C^#I)ka~{zm;Ci;e-5ZNM6@z^DL!xNiQ&ufX&6mL8})Jo}Se zzhm|2@zbjg*W~y(ROaPGs8Ff61OD}y*;(sa++#a4G}h76n{cmR7`RmC34*Sbk;x@2 zOxf3coKhUdc?z{|Z19|IJvcUTan+aW>umDcmrtHLlYn7cCU9ZkvdYxJC-Ub`9e0G{ z^Rv^gNCpcFgF{zInaa03IXbsW$9+f74k}ctD+6a^xr*7O%|v|1UOVbbmq;pd=Im*Q zE3Oog!-E4hcLKh^T}u-u&(B~9=kob;o^ZxoX9oD+wl!~9df+XV3F&gFFf~6};VHdq z6Tw*O(%`AlnH8f^V_#erOC`3Y30kBR(2?){^ZQ!F?$?ISU71E8l8H1a$c{M+vgV}@zA-`rxW@7#D!z84A1P_xrfAZ>}T){3@gsJs~=S~ht#KNm11F(J5 z$jE_{FHf$9n;MMs(?h2QuE_Of@BG!F$w`q!^!m}C2I9p`#Qyr3i}r9@F5%kd9f|n* z`H^w0&MXxPuyFmi7nbhtZFMYJzjxL3V4HD#YGKTuu9K2yrosRc zDiubeiDV)(xVV1R8N!sy=k>fkW%DKqOAp{#2&!$ZO7@aNZ@vs9=C_-4V5{gUxvi$ur5YZkWhUwTQerd39oTu~^FH zNEtTBgd=Y3jA*S>Tpk!VSenx5^|keg##rCd+8D4~?Vdzmr)7H9*VEH*@#M>kE8Y?< zsN_S}uFYtbDzQicBcbyb&sl@(ZF0HP2?mbw} z#!56V77VEM4cU~fD6tsiLS}*CmOgL;rkNL*M?tsZvM&X~(SUW`<8|On1Cv7Nb=W;F ze|>{xVeBH$*rk=0r)E}m_3c<38&-Dj53S8}rCPaEFm!o<;EEmgwGvkl^DSSUm`TUu z;ZP8U+`}UmmOME@B_xv9Yb2G)CFgzn`+|W$+m0Pxr#Ba}4vx)6LqW011jCVmW5)#M z&K86C(zUtP_8!mbd@P%ZM^l|ms%MX$EM#&^YwiOF_a^*np}e@OT{k&rl~8#s==)Rj zj*iylg^94ox4dGTpId0`J18p028W00+V;S9RiKcud9wX`ck(OoAN}wjlbQU?{91ee zo{(*LddUN)T9F(F_H)>BpzGWrE`(z_ext?U^R9^vJ$2&3y3IAefUW1YWQnI$2|W&% zR3SHO`LU9qud@vkm|Vnp=JI4u-%hu5;{CTHoM^T`W!1o z7+Q$gi!%#NZEbv3f+cTgYcM$$XSD6z{FrAoQ7%MWPM4k3w>QaHqcc|L@|ervSP$WZ zVTUzBzyHVq5nte49A6EWO(s}DM0JV^*2Z17wa$*l<(Wyldwt3teCW`DY}g}ES^7HK zh;nXvZUvjt0dY3ssicLkagji+|B8y8nxbSj!Al$eVI z*6jlWquG4g>J07Ox63v==1CEHrC{RfwOBIfj+74W?seG~^CdbGNhtWNbRJyLp|%*q zv3y%wCznoLxHMEOb78vT38dOungfpctJ5oRB|JQ7z3=d0I3Y;0G)4_S7{vU|-h1E> zpH9Dc;?myzN8Br;1G6jmh*EFSh$}=5FlkpQPVWWt%6ioJ6)b4ON8%@&^ zS+jt(5Q$@3S;P||6mk=XUUo-{RFTAn7K*#WtS%JtqgEI8q?N=H6SoX84Y1N_kj3&; z8*HS6JYe*kFXD=)N9;bVcr~dN%t*Xtoc@Z#^!Ae(5Qb5UVRN4l$IqAyb#2W}Vv?ON zS7On4Jf1)D;ZHWpi4|{LXVk$FiK4mtGar55(#$kp-Sk^u`|6&~Ml_8|UH|#t{ObOm zdPu1n25aRKo)9v6g)T}YvT~^ibExLFMiC#|5lb{|jpZt>0!F18iAMjMU-@c(tBMe5 zcXqYF22-YxlU&~WpZLsIKJ^hCzm6R$JfReN6PVPQTUueMP8Tb?4?XrfU;UCwz$Jw+ zdlO+1QH*W%%$nluMd__=&nR`U-pJQ+O><%t)$cWy7vB$f8vuL`P7H6o_|4D z-={4CxPwh~I*vf3GiVhem;y>WySo))b|RT;?b-9|zy4Hv6Jxbg%oHq*EgFTiK=Uk? zCNYPM<|uPRyH?7T%S|8p$VWc@#3N9YO5|#oG_^JM@*_()C%Ln|1@<%b4InkPvy}E9 zdEm=m`hr;@0LO)*s=ldN&VzL%-(WUNg=9IOVe>T)Kk;jy`}m^^7tbl``|8x z16voO!ft74kqG&6xvIOpL#H55AAO0X>}YSROQ#EJjj64(lgA~%s|LmwyARwi;So?U z^Z1G#J36uJ%&1mRTskSM+u70xQV`gJ0$LH6n&tlg_OAT7ZSzbMBmfcw2p%9Q9wK$i zl4V=IlQgj#$8p?DH)*ol>9o_`&HmPZqyNS354$^?>Fl&S-E^DgXp<(ksi}!oq=PC6J?EU#K-a9hbozLY9^_ty< zydg8S3xNQb^=eyAHkfqeC4Ze0D`|ceNqsy?KAAwRBe(+~-E7 zSlT^&-ulTq@0|J} zBKIU&FCa$@nTXZ$u~*-;5ZSN4z7AQ;O1bWIbab^_lp2;KD(5duzkK+JL5eao1iS0y zmku*(lF<-nKL5W0*L9@b*5=;-^EZxs{>eFlN1m9GRH~2wCnBxB!|m=K_{G~NZhd`j zF_hlB`|x}J{4cfW^qJA%3$Gl^7ZR+_(B0V$Iv0zhtIcd^5OiPPZkti7Xpm-yz&P2hfLaHrHa6dTj1475EwVC2Ax}A5mCf7 zz%-T1Dh!x)QYf-oS;{Dm^*g|40zccID7tON#b6|ut?qT%-+gIl&~7LpItm37g4p8_ ze)aMmy;l7~hs~c5$Nf>*=uO?R_ujob{qy?XbTew)GHnC`jx2}VHl5y}V|cyLW}2Ct z-Mx1x>7CD1nd8TgM#BMQq?Z%Hu{%qLkDVCmFph%mpu>%OpvP^#HFm3i-zx?pcV{j< z*w+~jgshJC4wv=TjjQduj_m7oY8VD@M!eBnO$BBHnSsG>!N@xVD5AUN;)J{>83*MJbz7~vz5ANBwIDT~@n%lSU zP{8LKJao#JUwm~wBT~BuyOA$kFXaC6$p=bP_mSc5cq-r5)j_EFYB71`@+dE$s(>83 zJ(Vx>KYso2$k~sUQw3yuTG~5^O1`erIUUwyDujonK~*O8&T7ejKz)11k$74d+o?&3pOWUk!gFB^G^Hnvk@>@Vl8DXUczub-ZoF*@B&v*FU!oBe~s z8oF`m<~T}CwXEyZ>%-SaE(Ic`zW#n4tE=ae7p{(kJ;6h-ovIa=Klu3k{vRB-Y8oiZ zq8n9{!=|W&uHRY|%y`(Fk&u4%+O_%Hqk^Sfqb`n5dV6;5)-ozJXVjo*5|&R%_$EiH zv=X!Cj`mJQRk?KW@}f7O7c7v}G^!d?lhX|&4HtBFdRC>gqgrI@`URcYXzSd=i^&hq zT-Bl22SHeo_&=Vbm%WHpol1MFqj0gc7A$g zI#t}?>q42VvVqDwUPshJ`9dI7aUONW)m{82Dl z>b43v1#Ubf6xOPBPa=yc=>u*HC(YJ=PlF#D1wGc8Foo}Vud+CRl%7>mC4CdT2K)jk zkr0!6_yQjgk%TWSd6`Hs#H_zGe=MaC;vo3q*cmhO(u5%L7BR~NmKNzNY{vv3l8hze z*h(hBykavM4{y(CquCnN&83VwGr4LF&_|Ag!{;j-4Y6oYig_oy3zcTgu8>bv*%xi7;w=WR=eE#`a$DUW*>f|k7 z@y*wdVFRGdD{vNUt&>x(x}y!*4@_*Y8D;NgBZuKIo779XbdC%T|DyQz^p&<%CX~Z1`hYzlRxc4oS~eKemWa@=g1I_xi&JTG8qqb+i=_5+sjZq z{N-fekVAhbD*pJ;0JDia9O;#vAiVLckyY#PRQz^>57EEpf7gu?@*Zra?>}}adm8q4 z13P&CW1soA-!jwa4J>t|9twCATES*AZ1bNB9w~U3rJ~+QUeVv_E)`JNRpU{+h+p|O zyS?wd(7+fE<76}pz7A(cHv(L(yR`KeF4y#ohc%e{dpadAU~>z?T1XLCo|~g|g2QG) zr6edH{HhO&h&)$3V0U$@pSL50VB8R1fD0{rF)x4lrkljO}zA2&1Lfn3bou) zp5nbAV?rw!O+<>-ZmUVpY?#G(Z?p2}RRkW%Oe6WO<@VzKZ$xp-0@GNCGDqv341 zyWJ(_Z#F0CVCq^9cx&g?9&E!8Yt8gF?4sNy837rA?+pSQnd$rGO~cN@I@imEYgaA` zU3;lQY-%Na{FS4=**i<|!oFVfCtsdDaP)+kQ%~N$Ht$IwCfdm7SiKI}`1L~K=Ixc2 ze)t2PA*B*dd65y25s(p(5!ey}>&NckW+J|cViuYrCvJ|#D@JYEf5V^dv(lga=}%KD zF%w6Oj864g`>iH=V&>M&O3Z2Hu3Q{hSoWop>G`ospP#=*5aP9~SJj}Dx+i?RrB2ER z$q2{@$OwFY5!l$9Zo0tItQ|>~K>3VRt41Z4RnjD><4i6)hw2Y8mra05s;1C7kaD99 zg=R})W_lXz_#}Al1L4GLCr^6)0l{d()1WyA`5XX^;2M_aprdjZw;uv{`^029{%yam z$vt|G5xCD3B9!Z3TZw!wH9Nm#Z+C&(IFTy4I$a>z&}u2MQbq9wvVg(2&>%H>H3?EW zqMly{CuCO_$OFSk5lP3{e9qDCLdqTH8Ma&SV@+(j6@Nz|56tv7q<2ArDiU3`VaFcv z=MTWa6Yz+QY?H(B6GDy?SXH-4f8=gFUkGd=HZ5g3z>sk|)6t_A1VEHF8|KrIMTe2Y z-P9`yht-D9_-SH6VjL)vaY#pZlRS`sgpx$g1j1jGU`x9_CxBrruo~OY8dhsyYut_< zd&CQiT+tn4rU3=YpdJwr`EVJ5H3)1R^tihtNQ@+9CaKU!`n$S(drjJmI<)5B)-K=L zxwYwe`3p*#CF9PdNAwJ%7$gRl;$Oy;?$Ovp10ohD% z89Mnu837pq8G)yPfNZ9p2Fmg|WCUacWCXU1fNZ889=hgyshEuX=Kc3S_`^s3K(y6F zqf(q6y&4Qguv#iazPxa8HNuTpcR|d9DZfx@;}9`m#&Saa$>;e&qIP+E&+H}7xMdk-VLV^rCBs7(PQVrv(*ei z5I-R;Zf@+Wk(&$u_)q)P8dW?nb75rWwUe(x5?jgHgV(P5q6@LSHXQPPeQo@Oqc6H_ zf_M7HorT=4fx-X&pa1e{2V8p9x$C2E{`jY6UU}}bKbq_=8>d3K=H`hkHo7pd_ehis zrgCnVtC)?)GDVwJ$fQ!x%_3FmLN@D*LO2|hcl5~kgu7>tm81N@2z2i$qU>D>B;u)# zKID_t!O|QT8~tVt6csS8Sg!203(0KOpf`GBp+qb}sML{gFp(A=4kxdr;*nskR8MD$ z4u^edX$g!Dm0Vfd*^U(AdpRFA>h=S-mkK$bFGz9*aMvw+JQQbWGjiEn(ZFl7Vv#15 z(O4W@owTYNh-TeRM=}vf?e)sk*A+v~Y`yUcFYC^aO_b-N<0wZj49|gihY!c}HL! zGY!^`NF)OKU5U73=Pno=82Z}VojRTF;YJD0qXwv(xfhQeHJeqVmoIp|VQYu!cOU%q z@Ic$b*tsn0>@v`|=ECFGFY=5<3Esw1$s6!nJNKVE_o+(THqgcfmb{^vr7wxk-hA`4 z)k;qif*brzM&CV_9thQvtw;W19i9DN$F9b4s`t1H-C=dG3M4D7( ziaAC@k!odaetMy%BB!QiRmuvZGeY3L0j-p#Qkq~k;Jv`_S%_pyteTw6Wm)LnFU?a7 z_}rDTbiwBrX{`xq=8!$h6!I)@jEhLY6kyfW8ZIA;K?jTh&-{i`hnpH|>*?iL@Foh? zc8;H4n6D9Z+P{*CYgBcDqb*@@V3xAJtfF6|o|^IW_6{!3Pk|ep0wr`=G1zTWD(N<} zrCQ3Ta}5(ir85nK!1)$u;w5D)k+<8p$;H_2Uf0}`$Lw%|ss>c)xop{N)8oy-?$k#n z7xhMaG7v*16K;x~d{=Dhg2+2PZ3NbuX}lyN**O-EVL>s))9%jGIv<9K%xGln3W5n{ z8mkX=_rZ)YEDK=(kWXcE@nye<6_^f}9mM#VOxEglboICl(>I28@B8o%A5waopl8eF zhM-nWgd$p&zI=P~^}T~b$4_-M;`5QXQP0Jik%Z>xrMH+Z!vGV)uv)uaSPaF>i~{0P zX2BQ=r!CHQ5IZlg)Ziz=%OWA(cv#CX-&!m8%u8Sa#Z=u|Z^u8G+Z#dqW1Jz|j<*F<^yN)KbNAxl*ry%(h9z zg_gEHoE8qPHw?SWo}8QxhU28FZg*PB%3>r_P?H)dfKja~s|vTHozawN4P!IwW6PCz zQZ$=%93yGzYG_)=YDy(h62)Ydv|7zF+E^qTPZJ$3Tcut#LE*}7t%&KR0ET0s86}hg z)M_f37mGzG9zbUmcM1Vq2J=BI}0Z0JAMN;uZeTV8_y*Y%&}u6l#c0#G)Z@Fs@*<3{=lm5H;qgdT?YUdO~B$aU9_cZ9_d3b{%LqIS0&9!KVRPY|OiWI|n_i_RXju+P(G@iR z_^raw!c{_y4jlZI8f0zZb;G5BTKL^x@mfnP*>~)XX)*|bLx1{No9dP~jaT)3d-qwb z)|NNjdfq@U3O$rMx#1$+sSx(ARtXhkf(VtWE-o&I1e-%kDJiuk9gCz&RjWmSf?P6R z?QlslREfaKjmd>$ufEEt>X^IJXc&mE=POE<6fcY}oH}`eR6KyrUo40;G~4gjF{#G@ zIiJsiWS`fuP`wfnc3>HaXM(`Rs`$OWXtuI@pp%2=Su8@)UCY3s&O$Q=VovFF2Bwu| z7`#Y9i3(R3t>Lm(%Eerv$g&(9TZ$xe*(};;pg~f|;}^kkEVgG7m^3W9oox`3;y7J6 z=u>efyNTZr#pV~lyih1?rn*{+Di?~3mV@#hWM3f9#%j?4u~@2T(E+q3=}|!VrI-`T zJg+Mi^6=_89S6T21IH5;0e3`|z>f|nve|-8$BOw}T}82K8u}EJlE~$93Ka$6SKJlR zNH8f9olcX~8mC=aSkyyJ&Y-*hqkZ$kxj!uOx8F|$HYyf>u$h+pU)WZP4tggdHU2<% zd!bmO;5t=nq_QzScB^}6m{(LL?o4+NAJ8cAeke(|C<#eOrK!UrokH@<2~{5H0n6FF z`@3wa_bxV8%tYeib zNmCCP42Hd3hx6F+ksEvx2yA4g@8dHzy8&mBP}Zy2OBc^A_@n&?Uz!=aIx_1&d|>eU zwbA{DUy4UU^ULAALw&K3ZzUM9xH|=&xHUfI?%nGa$g^Kx=^7Z0hi0LYS<9qW{BhpU zcIL0Qm0H)a7Z1Y9OCI^!ILeb4{FGc&~CQ_ zi~N+;vFQmq7EI9nwf zWV%#=Ts)`a)orCvIHKo_lv2s*jI~^RetvTvrxEPgRA(N2ryVw& zM+Zc1;jtjFp_y*Ajwunfx~b5tR_mZwTdx}hOEYDo;bL`21ArrpePF4P4CUl_q;g=* z>9pemsngqe0}eq`NXDjF-p=W zJ;pY-LsJNU<+8c$(38i~haEPY$AXF6$afLIjjYjV^m-{1_kqg>W*WXUes0Y&hqX;K zWdX1e=^SgmT3x?OPw{O^>bqONd*GUOp28}|N1&DvnJC|}dfRsH3yI8vAV_aHJ8OYE zy^{vD!-li7erwxnG@E~sT*pkqsYD*D!C=_IRfw>4$RvL5bVGLX71>^QklY&?fo+7q zS~CqBjR;0}mz3JPlY)lpLry4KzH=+wvHm{tRv7^q0U3d3iojYk-RcYi$JKgu#~Uxa zYoo;Znc^>>Tt+}fKt|vJ2&`|W*F9)8E2H&cb+xtg>gu}RuG`@D+=!a^d@hf^?f9qE z_QYTAm5jg^5Wpl8-i#TBS-owcSYIp_S68>t<`X?cN~X|)YGzYqQyZIUlwma~!SdPk zmpA5K93C|C;G|T7y8}#*q@tcHR6we*TKZf;$um~!4REJ3q%vQsf_4Wy3D41lS8F;E zoF160+a!EX^g_yw%LvE_YzBeW6m$t(hE94sP4&9Q3e7AGDbV$@*p* z!7dKGJ5jNXuAlYiPIp@v(14P4$Xm=u^IdJmWHK$1 zYL{AhCm|l`0(+*m+NeKw1uVF0zDN%U4 zz81H7c(=a~_<#Lk@oyp+@PrA%q+<>X+|8A!vR)Zq35exdT@=0X!XcMct*H3GQd|>9 z17W3xRhLsY!x@mTPlq$CvaUpKG|v80M%j@F@k5gtZ$}a zo+bN==M(6p5&fXSlU}=#C|OD6pKmW;2<4#O;f#TS1a zxiPx1=!wT86E{X9ktn3|Hg^JfFBt(Dfv1W9%IR?H76McM`tScyu9gCGw`OOi&R@C= zKHEy6aQ&-`9-nt{+Eb}WjwKfFO)|eat|nEG zZX$kZ;z3&se^Vm&eGV%!@R-HZ1x~clVC?GZvREu*V`II2y?A^fWwDS+G-zsIpg)t1 z`@`{aQJlVgV`3?A`i;}Rshg1^`O3=&XGgE3s@$oQ$AMDwvG>HUrF;Sz0U3dH5rFFj zYc}bbo1d6m^rzGfL zm#*h)#drT<7@Ew#|IdFb8(n>S22a0uO5<;9p-E_Y zQW{#V=QL^xVnvLB)u>5|=NN`k^Exe7wImJAP(n%SIYx)-aqn zLp_;H#o@F;CW53j4x2+wGe(oJYgZ4%+M>Z3+GxY{8!tF{mW;;or+;+XM5>K#?FNpk zHX1J;Kgl<;sYF^)X9-pH@GB>GIW*(b(^*1eW2scWpdu>0dtc~t+a&{X*V#>_Qt!Y2 zejpGyapD9-NLm9&57A+omXwlK7t}?=uf^;lzQX(`%d*nkA4&c{_?WA#hI}iQ00000 LNkvXXu0mjf8xvRw diff --git a/docs/manual/docs/maintainer-guide/statistics/img/search-statistics-dashboards.png b/docs/manual/docs/maintainer-guide/statistics/img/search-statistics-dashboards.png deleted file mode 100644 index b45f3bd40b198ff675a4f975a7c233cd6a41535a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25515 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 A*8l(j diff --git a/docs/manual/docs/maintainer-guide/statistics/img/search-statistics.png b/docs/manual/docs/maintainer-guide/statistics/img/search-statistics.png deleted file mode 100644 index e853154aba7247c95ca59c803f779f1821e2fdb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7379 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 diff --git a/docs/manual/docs/maintainer-guide/statistics/index.md b/docs/manual/docs/maintainer-guide/statistics/index.md deleted file mode 100644 index fa8a5070973..00000000000 --- a/docs/manual/docs/maintainer-guide/statistics/index.md +++ /dev/null @@ -1,16 +0,0 @@ -# Setting up search/content statistics {#statistics} - -Since GeoNetwork 3.4 search and content statistics are stored in [Elasticsearch](https://www.elastic.co/products/elasticsearch/) using [Kibana](https://www.elastic.co/products/kibana) dashboards to visualize them in the GeoNetwork administration application. - -This guide describes the configuration required to integrate Elasticsearch/Kibana in GeoNetwork to store and visualize the search and content statistics. - -GeoNetwork 3.8.x supports Elasticsearch/Kibana 7.2, other versions may not work properly. - -!!! note - - This guide doesn't provide a production level setup for Elasticsearch/Kibana. Please refer to the Elasticsearch/Kibana documentation to do a proper setup/configuration for a production environment. - - -- [Setup Elasticsearch](setup-elasticsearch.md) -- [Setup Kibana](setup-kibana.md) -- [Setup GeoNetwork](setup-geonetwork.md) diff --git a/docs/manual/docs/maintainer-guide/statistics/setup-elasticsearch.md b/docs/manual/docs/maintainer-guide/statistics/setup-elasticsearch.md deleted file mode 100644 index cdc8074bb97..00000000000 --- a/docs/manual/docs/maintainer-guide/statistics/setup-elasticsearch.md +++ /dev/null @@ -1,39 +0,0 @@ -# Setup Elasticsearch {#statistics_es} - -This section describes how to setup Elasticsearch to be used in GeoNetwork to store the search/content statistics. Note that Geonetwork must have been built with the `es` profile for Elasticsearch to be used. See for details. - -## Installation - -Elasticsearch can be installed manually, or for some operating systems packages are available. - -!!! note - - If installed manually, Elasticsearch must be configured as a service to ensure it starts automatically when the server is started. This is beyond the scope of this guide. - - -To install manually: - -- Download Elasticsearch from . For Geonetwork 3.8.x version 7.2.x is recommended. - -- Unzip the file and copy it, for example, to ``/opt/elasticsearch`` - -- Execute Elastic Search: - - ``` shell - $ cd /opt/elasticsearch/bin - $ ./elasticsearch & - ``` - -- Verify in a browser that Elasticsearch is running: - -## Load indexes - -``` shell -$ cd /tmp -$ curl -O https://raw.githubusercontent.com/geonetwork/core-geonetwork/3.4.x/es/config/features.json -$ curl -X PUT http://localhost:9200/gn-features -d @features.json -$ curl -O https://raw.githubusercontent.com/geonetwork/core-geonetwork/3.4.x/es/config/records.json -$ curl -X PUT http://localhost:9200/gn-records -d @records.json -$ curl -O https://raw.githubusercontent.com/geonetwork/core-geonetwork/3.4.x/es/config/searchlogs.json -$ curl -X PUT http://localhost:9200/gn-searchlogs -d @searchlogs.json -``` diff --git a/docs/manual/docs/maintainer-guide/statistics/setup-geonetwork.md b/docs/manual/docs/maintainer-guide/statistics/setup-geonetwork.md deleted file mode 100644 index c23f21c8a3a..00000000000 --- a/docs/manual/docs/maintainer-guide/statistics/setup-geonetwork.md +++ /dev/null @@ -1,56 +0,0 @@ -# Setup GeoNetwork {#statistics_geonetwork} - -!!! note - - GeoNetwork package should be build using the Maven `es` profile in order to be able to configure the search/content statistics to use Elasticsearch/Kibana: - - ``` shell - $ cd GN_SOURCES/ - $ mvn clean install -Penv-prod,es - ``` - - If you're using a development environment, can use the following command from the Geonetwork sources folder: - - ``` shell - $ cd GN_SOURCES/web - $ mvn jetty:run -Penv-dev,es - ``` - - -To setup the search/content statistics in GeoNetwork, do the following steps: - -- Start GeoNetwork. - -- Login as an `or` user and load the templates (). - -- Create some metadata records (optionally you can load the samples). - -- Enable search statistics in the Settings page (). - - ![](img/search-statistics.png) - -- Do some searches in GeoNetwork. - -- Go to `us` in and select Search Statistics`. - - The first time you're prompted to select the Kibana default index. Select `.dashboards`: - - ![](img/kibana-index-1.png) - - and set as default to get it working. - - ![](img/kibana-index-2.png) - -- Reload the page and check the dashboards. - - ![](img/search-statistics-dashboards.png) - -## Content statistics/validation - -Content and validation status statistics are available also from to `us` in , but require to index manually the content in Elasticsearch. This will be improved in future versions. - -- To index the content and validation status in Elasticsearch, go to and select the following option: - - ![](img/content-indexing.png) - -- Access the `cs` and `on` in `us` () diff --git a/docs/manual/docs/maintainer-guide/statistics/setup-kibana.md b/docs/manual/docs/maintainer-guide/statistics/setup-kibana.md deleted file mode 100644 index 77026847255..00000000000 --- a/docs/manual/docs/maintainer-guide/statistics/setup-kibana.md +++ /dev/null @@ -1,38 +0,0 @@ -# Setup Kibana {#statistics_kibana} - -This section describes how to setup Kibana to be used in GeoNetwork to visualize the search/content statistics: - -- Download Kibana from . For Geonetwork 3.8.x version 7.2.x is recommended. - -- Unzip the file, for example to ``/opt/kibana`` - -- Configure Kibana to use it in GeoNetwork: - - ``` shell - $ cd opt/kibana - $ vi config/kibana.yml - server.basePath: "/geonetwork/dashboards" - kibana.index: “.dashboards" - ``` - -- Execute Kibana: - - ``` shell - $ cd /opt/kibana/bin - $ ./kibana & - ``` - - !!! note - - Usually you'll want to configure Kibana to start automatically when the server is startup, this is not covered in this guide. - - -- Verify in a browser that Kibana is running: - -- Kibana should also be visible in Geonetwork at - -## Load Kibana data - -Visit Kibana in a browser using one of the above links and go to 'Saved Objects'. - -Import export.json from diff --git a/docs/manual/mkdocs.yml b/docs/manual/mkdocs.yml index e8e5d5ef2ce..f418b887e91 100644 --- a/docs/manual/mkdocs.yml +++ b/docs/manual/mkdocs.yml @@ -326,11 +326,6 @@ nav: - install-guide/logging.md - install-guide/map-print-setup.md - install-guide/loading-samples.md - - 'Setting up search/content statistics': - - maintainer-guide/statistics/index.md - - maintainer-guide/statistics/setup-elasticsearch.md - - maintainer-guide/statistics/setup-kibana.md - - maintainer-guide/statistics/setup-geonetwork.md - maintainer-guide/production-use/index.md - 'Updating the application': maintainer-guide/updating/index.md - 'API': From 0969b1408190fb3b3a3da86a479e83c984f10f86 Mon Sep 17 00:00:00 2001 From: Jeroen Ticheler Date: Sat, 16 Dec 2023 20:25:46 +0100 Subject: [PATCH 09/16] Update authors.md Added Jody Garnett and David Blasby as committers --- docs/manual/docs/overview/authors.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/manual/docs/overview/authors.md b/docs/manual/docs/overview/authors.md index 1623ec8417d..18cd0e7cd4c 100644 --- a/docs/manual/docs/overview/authors.md +++ b/docs/manual/docs/overview/authors.md @@ -42,6 +42,8 @@ Committers list is available [here for the core team](https://github.com/orgs/ge - Paul van Genuchten - Antonio Cerciello - Michel Gabriel +- Jody Garnett +- David Blasby ## Contributors From 0badd8970e732b5557f3cbc7b645cbe7fdb68b53 Mon Sep 17 00:00:00 2001 From: Jeroen Ticheler Date: Sun, 17 Dec 2023 20:20:02 +0100 Subject: [PATCH 10/16] Update authors.md --- docs/manual/docs/overview/authors.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/manual/docs/overview/authors.md b/docs/manual/docs/overview/authors.md index 18cd0e7cd4c..60099cdf93a 100644 --- a/docs/manual/docs/overview/authors.md +++ b/docs/manual/docs/overview/authors.md @@ -8,21 +8,21 @@ In brief the committee votes on proposals on the geonetwork-dev mailinglist. Pro ### Members of the Project Steering Committee -- Florent Gravin -- Francois Prunayre -- Jeroen Ticheler - Chair -- Jo Cook -- Jose Garcia -- Paul van Genuchten -- Simon Pigot +- Jeroen Ticheler (jeroen ticheler * geocat net) [GeoCat](https://www.geocat.net) - Chair +- Francois Prunayre [Titellus](https://titellus.net) +- Simon Pigot [CSIRO](https://www.csiro.au) +- Florent Gravin [CamptoCamp](https://camptocamp.com) +- Jose Garcia [GeoCat](https://www.geocat.net) +- Jo Cook [Astun Technology](https://www.astuntechnology.com) +- Paul van Genuchten [ISRIC](https://www.isric.org) ### Former members of the PSC -- Andrea Carboni -- Archie Warnock -- Patrizia Monteduro +- Patrizia Monteduro (Patrizia Monteduro * fao org) [FAO-UN](https://www.fao.org) +- Emanuele Tajariol (e tajariol * mclink it - GeoSolutions) - Jesse Eichar -- Emanuele Tajariol +- Andrea Carboni (acarboni * crisalis-tech com - Independent consultant) +- Archie Warnock (warnock * awcubed com) [A/WWW Enterprises](https://www.awcubed.com) ## Committers From 805ad3164f3246b11644c3dd9cae9a8941189b00 Mon Sep 17 00:00:00 2001 From: Joachim Nielandt Date: Fri, 8 Dec 2023 15:05:55 +0100 Subject: [PATCH 11/16] Visual fix for icon text circles (firefox) --- .../resources/catalog/components/utility/UtilityDirective.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js b/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js index 425d33df4b6..209be1bb394 100644 --- a/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js +++ b/web-ui/src/main/resources/catalog/components/utility/UtilityDirective.js @@ -1355,7 +1355,7 @@ " " + ' ' + ' {{hasIcon ? '' : org.substr(0, 1).toUpperCase()}}" + "", scope: { From 7ed17927b043fa13cc15767613645ccde96f7045 Mon Sep 17 00:00:00 2001 From: Joachim Nielandt Date: Wed, 6 Dec 2023 14:05:32 +0100 Subject: [PATCH 12/16] cryptic parse exception --- .../org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java | 2 +- .../fao/geonet/kernel/harvest/harvester/geoPREST/Aligner.java | 2 +- .../fao/geonet/kernel/harvest/harvester/geonet/Aligner.java | 4 ++-- .../fao/geonet/kernel/harvest/harvester/geonet20/Aligner.java | 2 +- .../fao/geonet/kernel/harvest/harvester/oaipmh/Harvester.java | 2 +- .../fao/geonet/kernel/harvest/harvester/webdav/Harvester.java | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java index 3efac1ba79c..7a04ec617d5 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/csw/Aligner.java @@ -529,7 +529,7 @@ private Element retrieveMetadata(String uuid) { try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, response, groupIdVal); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geoPREST/Aligner.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geoPREST/Aligner.java index 23600da91b1..0a3c5b7bd9d 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geoPREST/Aligner.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geoPREST/Aligner.java @@ -291,7 +291,7 @@ private Element retrieveMetadata(String uuid) { try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, response, groupIdVal); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet/Aligner.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet/Aligner.java index b7f4ac58be3..9cf652b1b1b 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet/Aligner.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet/Aligner.java @@ -465,7 +465,7 @@ private String addMetadata(RecordInfo ri, Element md, Element info, boolean loca try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, md, groupIdVal); @@ -746,7 +746,7 @@ private void updateMetadata(RecordInfo ri, String id, Element md, try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, md, groupIdVal); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet20/Aligner.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet20/Aligner.java index 94cf7c6fa38..93f48ff9a48 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet20/Aligner.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/geonet20/Aligner.java @@ -369,7 +369,7 @@ private Element getRemoteMetadata(XmlRequest req, String id) throws Exception { try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, md, groupIdVal); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/oaipmh/Harvester.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/oaipmh/Harvester.java index f9d015b0446..e22b3dc96be 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/oaipmh/Harvester.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/oaipmh/Harvester.java @@ -472,7 +472,7 @@ private Element retrieveMetadata(XmlRequest transport, RecordInfo ri) { try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, md, groupIdVal); diff --git a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java index 2a0ec92c883..789cbc44ba2 100644 --- a/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java +++ b/harvesters/src/main/java/org/fao/geonet/kernel/harvest/harvester/webdav/Harvester.java @@ -351,7 +351,7 @@ private Element retrieveMetadata(RemoteFile rf) { try { Integer groupIdVal = null; if (StringUtils.isNotEmpty(params.getOwnerIdGroup())) { - groupIdVal = Integer.parseInt(params.getOwnerIdGroup()); + groupIdVal = getGroupOwner(); } params.getValidate().validate(dataMan, context, md, groupIdVal); From 21d22ddd502952df4401a3522d0157e24496074b Mon Sep 17 00:00:00 2001 From: Joachim Nielandt Date: Wed, 6 Dec 2023 10:16:02 +0100 Subject: [PATCH 13/16] add icon to static pages, configurable --- .../java/org/fao/geonet/domain/page/Page.java | 13 +++++++++++- .../fao/geonet/api/pages/PageProperties.java | 10 ++++++++++ .../org/fao/geonet/api/pages/PagesAPI.java | 19 ++++++++++-------- .../fao/geonet/api/pages/PagesApiTest.java | 2 ++ .../components/pages/partials/menu-page.html | 20 +++++++++++++++++++ .../main/resources/catalog/locales/en-v4.json | 2 ++ .../admin/settings/static-pages.html | 17 ++++++++++++++++ .../sql/migrate/v442/migrate-default.sql | 2 ++ 8 files changed, 76 insertions(+), 9 deletions(-) diff --git a/domain/src/main/java/org/fao/geonet/domain/page/Page.java b/domain/src/main/java/org/fao/geonet/domain/page/Page.java index 12c8edadc5a..fb3247a4308 100644 --- a/domain/src/main/java/org/fao/geonet/domain/page/Page.java +++ b/domain/src/main/java/org/fao/geonet/domain/page/Page.java @@ -58,12 +58,13 @@ public class Page extends GeonetEntity implements Serializable { private PageStatus status; private String label; + private String icon; public Page() { } - public Page(PageIdentity pageIdentity, byte[] data, String link, PageFormat format, List sections, PageStatus status, String label) { + public Page(PageIdentity pageIdentity, byte[] data, String link, PageFormat format, List sections, PageStatus status, String label, String icon) { super(); this.pageIdentity = pageIdentity; this.data = data; @@ -72,6 +73,7 @@ public Page(PageIdentity pageIdentity, byte[] data, String link, PageFormat form this.sections = sections; this.status = status; this.label = label; + this.icon = icon; } public enum PageStatus { @@ -139,6 +141,11 @@ public String getLabel() { return label; } + @Column + public String getIcon() { + return icon; + } + public void setPageIdentity(PageIdentity pageIdentity) { this.pageIdentity = pageIdentity; } @@ -167,6 +174,10 @@ public void setLabel(String label) { this.label = label; } + public void setIcon(String icon) { + this.icon = icon; + } + @Override public String toString() { return String.format("Entity of type %s with id: %s", this.getClass().getName(), getPageIdentity().getLinkText()); diff --git a/services/src/main/java/org/fao/geonet/api/pages/PageProperties.java b/services/src/main/java/org/fao/geonet/api/pages/PageProperties.java index 14ce1da943c..227908a4082 100644 --- a/services/src/main/java/org/fao/geonet/api/pages/PageProperties.java +++ b/services/src/main/java/org/fao/geonet/api/pages/PageProperties.java @@ -19,6 +19,7 @@ public class PageProperties implements Serializable { private String link; private String content; private String label; + private String icon; private Page.PageFormat format; private Page page; @@ -34,6 +35,7 @@ public PageProperties(Page p) { sections = p.getSections(); status = p.getStatus(); label = p.getLabel(); + icon = p.getIcon(); } @Override @@ -104,4 +106,12 @@ public String getLabel() { public void setLabel(String label) { this.label = label; } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } } diff --git a/services/src/main/java/org/fao/geonet/api/pages/PagesAPI.java b/services/src/main/java/org/fao/geonet/api/pages/PagesAPI.java index 678310239ab..491c04878e2 100644 --- a/services/src/main/java/org/fao/geonet/api/pages/PagesAPI.java +++ b/services/src/main/java/org/fao/geonet/api/pages/PagesAPI.java @@ -172,8 +172,8 @@ private ResponseEntity createPage(PageProperties pageProperties, Optional page = pageRepository.findById(new PageIdentity(language, pageId)); - if (!page.isPresent()) { - Page newPage = getEmptyHiddenDraftPage(pageProperties.getLanguage(), pageProperties.getPageId(), pageProperties.getLabel(), format); + if (page.isEmpty()) { + Page newPage = getEmptyHiddenDraftPage(pageProperties.getLanguage(), pageProperties.getPageId(), pageProperties.getLabel(), pageProperties.getIcon(), format); fillContent(data, link, content, newPage); if (section != null) { @@ -201,6 +201,7 @@ private ResponseEntity updatePageInternal(@NotNull String language, String newPageId = pageProperties.getPageId(); Page.PageFormat format = pageProperties.getFormat(); String newLabel = pageProperties.getLabel(); + String newIcon = pageProperties.getIcon(); checkValidLanguage(language); @@ -214,7 +215,7 @@ private ResponseEntity updatePageInternal(@NotNull String language, Optional page = pageRepository.findById(new PageIdentity(language, pageId)); - if (!page.isPresent()) { + if (page.isEmpty()) { throw new ResourceNotFoundException("Can't update non existing page " + pageId + "."); } Page pageToUpdate = page.get(); @@ -238,7 +239,8 @@ private ResponseEntity updatePageInternal(@NotNull String language, format != null ? format : pageToUpdate.getFormat(), pageProperties.getSections() != null ? pageProperties.getSections() : pageToUpdate.getSections(), pageProperties.getStatus() != null ? pageProperties.getStatus() : pageToUpdate.getStatus(), - newLabel != null ? newLabel : pageToUpdate.getLabel()); + newLabel != null ? newLabel : pageToUpdate.getLabel(), + newIcon != null ? newIcon : pageToUpdate.getIcon()); pageRepository.save(pageCopy); pageRepository.delete(pageToUpdate); @@ -248,6 +250,7 @@ private ResponseEntity updatePageInternal(@NotNull String language, pageToUpdate.setSections(pageProperties.getSections() != null ? pageProperties.getSections() : pageToUpdate.getSections()); pageToUpdate.setStatus(pageProperties.getStatus() != null ? pageProperties.getStatus() : pageToUpdate.getStatus()); pageToUpdate.setLabel(newLabel); + pageToUpdate.setIcon(newIcon); pageRepository.save(pageToUpdate); } @@ -339,7 +342,7 @@ public ResponseEntity getPageContent( final Optional page = pageRepository.findById(new PageIdentity(language, pageId)); - if (!page.isPresent()) { + if (page.isEmpty()) { return ResponseEntity.notFound().build(); } @@ -522,7 +525,7 @@ private Page searchPage(final String language, final String pageId, final PageRe throws ResourceNotFoundException { final Optional page = pageRepository.findById(new PageIdentity(language, pageId)); - if (!page.isPresent()) { + if (page.isEmpty()) { throw new ResourceNotFoundException("Page " + pageId + " not found"); } return page.get(); @@ -531,9 +534,9 @@ private Page searchPage(final String language, final String pageId, final PageRe /** * @return An empty hidden draft Page */ - protected Page getEmptyHiddenDraftPage(final String language, final String pageId, final String label, final Page.PageFormat format) { + protected Page getEmptyHiddenDraftPage(final String language, final String pageId, final String label, final String icon, final Page.PageFormat format) { final List sections = new ArrayList<>(); - return new Page(new PageIdentity(language, pageId), null, null, format, sections, Page.PageStatus.HIDDEN, label); + return new Page(new PageIdentity(language, pageId), null, null, format, sections, Page.PageStatus.HIDDEN, label, icon); } /** diff --git a/services/src/test/java/org/fao/geonet/api/pages/PagesApiTest.java b/services/src/test/java/org/fao/geonet/api/pages/PagesApiTest.java index a77f0f1f3c1..8a3709e7223 100644 --- a/services/src/test/java/org/fao/geonet/api/pages/PagesApiTest.java +++ b/services/src/test/java/org/fao/geonet/api/pages/PagesApiTest.java @@ -109,6 +109,7 @@ public void putPage() throws Exception { newPage.setPageId(pageId); newPage.setLink(link + "updated"); newPage.setLabel(pageId + "updated"); + newPage.setIcon("dummy-icon"); newPage.getSections().add(Page.PageSection.FOOTER); MockHttpServletRequestBuilder updatePageBuilder = put("/srv/api/pages/eng/license") .content(gson.toJson(newPage)) @@ -123,6 +124,7 @@ public void putPage() throws Exception { Assert.assertTrue(page.isPresent()); Assert.assertEquals(link + "updated", page.get().getLink()); Assert.assertEquals(pageId + "updated", page.get().getLabel()); + Assert.assertEquals("dummy-icon", page.get().getIcon()); Assert.assertTrue(page.get().getSections().contains(Page.PageSection.TOP)); Assert.assertTrue(page.get().getSections().contains(Page.PageSection.FOOTER)); diff --git a/web-ui/src/main/resources/catalog/components/pages/partials/menu-page.html b/web-ui/src/main/resources/catalog/components/pages/partials/menu-page.html index 6d0218463fa..2f86ca3658e 100644 --- a/web-ui/src/main/resources/catalog/components/pages/partials/menu-page.html +++ b/web-ui/src/main/resources/catalog/components/pages/partials/menu-page.html @@ -7,6 +7,10 @@ aria-haspopup="true" aria-expanded="true" > + {{page.label}} @@ -23,6 +27,10 @@ href="{{page.link}}" target="{{page.link.indexOf('http') === 0 ? '_blank' : '_self'}}" > + {{page.label}} + {{page.label}} @@ -42,6 +54,10 @@ href="{{page.link}}" target="_blank" > + {{page.label}} + {{page.label}} diff --git a/web-ui/src/main/resources/catalog/locales/en-v4.json b/web-ui/src/main/resources/catalog/locales/en-v4.json index 7ad7b1dd174..eeff4b00804 100644 --- a/web-ui/src/main/resources/catalog/locales/en-v4.json +++ b/web-ui/src/main/resources/catalog/locales/en-v4.json @@ -293,6 +293,8 @@ "pageContent": "Page content", "pageContentFile": "Page content file", "pageLabel": "Page label", + "pageIcon": "Page icon", + "pageIcon-help": "Optionally, define a font-awesome icon. Example: 'fa-wrench'.", "pageSection": "Page section", "pageApiLink": "Page API link", "uiRestorePrevious": "Restore last saved", diff --git a/web-ui/src/main/resources/catalog/templates/admin/settings/static-pages.html b/web-ui/src/main/resources/catalog/templates/admin/settings/static-pages.html index 68a57886080..f10816f2e2a 100644 --- a/web-ui/src/main/resources/catalog/templates/admin/settings/static-pages.html +++ b/web-ui/src/main/resources/catalog/templates/admin/settings/static-pages.html @@ -143,6 +143,23 @@

+
+ + +
+ +
+ +
+

pageIcon-help

+
+
+
diff --git a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v442/migrate-default.sql b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v442/migrate-default.sql index cad7c3546bb..08631d86040 100644 --- a/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v442/migrate-default.sql +++ b/web/src/main/webapp/WEB-INF/classes/setup/sql/migrate/v442/migrate-default.sql @@ -1,2 +1,4 @@ UPDATE Settings SET value='4.4.2' WHERE name='system/platform/version'; UPDATE Settings SET value='SNAPSHOT' WHERE name='system/platform/subVersion'; + +ALTER TABLE public.spg_page ADD icon varchar NULL; From 065f88c11b1eed8742fd43a9dffd5121b7e7cf3a Mon Sep 17 00:00:00 2001 From: Pietro d'Orio Date: Mon, 18 Dec 2023 15:51:12 +0100 Subject: [PATCH 14/16] Update iso19139 csw-full.xsl (#7558) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update iso19139 csw-full.xsl This fix resolves ticket #6742 , allowing full compatibility of iso19139-rndt metadata to be displayed via QGIS * Update schemas/iso19139/src/main/plugin/iso19139/present/csw/csw-full.xsl * Update schemas/iso19139/src/main/plugin/iso19139/present/csw/csw-full.xsl --------- Co-authored-by: Jose García --- .../src/main/plugin/iso19139/present/csw/csw-full.xsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schemas/iso19139/src/main/plugin/iso19139/present/csw/csw-full.xsl b/schemas/iso19139/src/main/plugin/iso19139/present/csw/csw-full.xsl index c52ab55abec..90ff2e96b56 100644 --- a/schemas/iso19139/src/main/plugin/iso19139/present/csw/csw-full.xsl +++ b/schemas/iso19139/src/main/plugin/iso19139/present/csw/csw-full.xsl @@ -28,6 +28,7 @@ xmlns:dct="http://purl.org/dc/terms/" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmd="http://www.isotc211.org/2005/gmd" + xmlns:gmx="http://www.isotc211.org/2005/gmx" xmlns:srv="http://www.isotc211.org/2005/srv" xmlns:geonet="http://www.fao.org/geonetwork" xmlns:ows="http://www.opengis.net/ows" @@ -278,10 +279,9 @@ - + - From 2c779ae56755050983c32a3f92589f83ed25ab3d Mon Sep 17 00:00:00 2001 From: Ian Date: Wed, 20 Dec 2023 03:09:11 -0400 Subject: [PATCH 15/16] Remove ?debug from link to admin dashboard. (#7564) --- .../catalog/components/utility/partials/indexerrorpanel.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web-ui/src/main/resources/catalog/components/utility/partials/indexerrorpanel.html b/web-ui/src/main/resources/catalog/components/utility/partials/indexerrorpanel.html index e40fd16ac37..19e95e03437 100644 --- a/web-ui/src/main/resources/catalog/components/utility/partials/indexerrorpanel.html +++ b/web-ui/src/main/resources/catalog/components/utility/partials/indexerrorpanel.html @@ -6,7 +6,7 @@

indexNotAvailable

status From 0c8c74edce3df0e789f022f6ebd0d07bd4c08fdd Mon Sep 17 00:00:00 2001 From: Jody Garnett Date: Tue, 19 Dec 2023 23:33:52 -0800 Subject: [PATCH 16/16] Fix PULL_REQUEST_TEMPLATE.md link to contribution guidelines --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 79c4ed02a0c..b9c2036d589 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,7 +6,7 @@ Ask in a comment if you have troubles with any of them. --> # Checklist -- [ ] I have read the [contribution guidelines](https://github.com/geonetwork/core-geonetwork/blob/main/CONTRIBUTING.md +- [ ] I have read the [contribution guidelines](https://github.com/geonetwork/core-geonetwork/blob/main/CONTRIBUTING.md) - [ ] *Pull request* provided for `main` branch, backports managed with label - [ ] *Good housekeeping* of code, cleaning up comments, tests, and documentation - [ ] *Clean commit history* broken into understandable chucks, avoiding big commits with hundreds of files, cautious of reformatting and whitespace changes