From fb3d36c4f3f75ff77ca9ce098893b954a2bcbabf Mon Sep 17 00:00:00 2001 From: Lucio Date: Fri, 10 Jun 2022 17:06:28 +0200 Subject: [PATCH] first commit --- CHANGELOG.md | 8 + LICENSE.md | 312 ++++++++++ README.md | 73 +++ pom.xml | 64 ++ .../is/legacy/LegacyISPublisher.java | 109 ++++ .../core/publisher/is/legacy/Registry.java | 70 +++ .../publisher/is/legacy/RegistryCache.java | 45 ++ .../is/legacy/RegistryNotFoundException.java | 29 + .../ApplicationProfileBuilder.java | 72 +++ .../container/ContainerProfileBuilder.java | 377 ++++++++++++ .../container/LinuxDistributionInfo.java | 93 +++ .../is/legacy/stubs/RegistryConstants.java | 35 ++ .../is/legacy/stubs/RegistryStub.java | 66 ++ .../legacy/stubs/fault/CreateException.java | 27 + .../stubs/fault/InvalidResourceException.java | 32 + .../stubs/fault/PublisherException.java | 32 + .../legacy/stubs/fault/RemoveException.java | 26 + .../fault/ResourceDoesNotExistException.java | 26 + .../fault/ResourceNotAcceptedException.java | 28 + .../legacy/stubs/fault/UpdateException.java | 27 + .../resources/gcore/ResourceMediator.java | 43 ++ .../antrun/build-printOutputDirectories.xml | 8 + target/antrun/build-seOuttputDirectories.xml | 16 + target/apidocs/allclasses-frame.html | 36 ++ target/apidocs/allclasses-noframe.html | 36 ++ target/apidocs/constant-values.html | 190 ++++++ target/apidocs/deprecated-list.html | 126 ++++ target/apidocs/help-doc.html | 231 +++++++ target/apidocs/index-all.html | 390 ++++++++++++ target/apidocs/index.html | 76 +++ .../is/legacy/LegacyISPublisher.html | 341 +++++++++++ .../core/publisher/is/legacy/Registry.html | 309 ++++++++++ .../publisher/is/legacy/RegistryCache.html | 382 ++++++++++++ .../is/legacy/RegistryNotFoundException.html | 302 +++++++++ .../ApplicationProfileBuilder.html | 273 +++++++++ .../class-use/ApplicationProfileBuilder.html | 126 ++++ .../is/legacy/application/package-frame.html | 21 + .../legacy/application/package-summary.html | 144 +++++ .../is/legacy/application/package-tree.html | 139 +++++ .../is/legacy/application/package-use.html | 126 ++++ .../legacy/class-use/LegacyISPublisher.html | 126 ++++ .../is/legacy/class-use/Registry.html | 126 ++++ .../is/legacy/class-use/RegistryCache.html | 126 ++++ .../class-use/RegistryNotFoundException.html | 170 ++++++ .../container/ContainerProfileBuilder.html | 331 ++++++++++ .../container/LinuxDistributionInfo.html | 383 ++++++++++++ .../class-use/ContainerProfileBuilder.html | 126 ++++ .../class-use/LinuxDistributionInfo.html | 126 ++++ .../is/legacy/container/package-frame.html | 22 + .../is/legacy/container/package-summary.html | 148 +++++ .../is/legacy/container/package-tree.html | 140 +++++ .../is/legacy/container/package-use.html | 126 ++++ .../publisher/is/legacy/package-frame.html | 27 + .../publisher/is/legacy/package-summary.html | 167 +++++ .../publisher/is/legacy/package-tree.html | 162 +++++ .../core/publisher/is/legacy/package-use.html | 159 +++++ .../is/legacy/stubs/RegistryConstants.html | 366 +++++++++++ .../is/legacy/stubs/RegistryStub.html | 293 +++++++++ .../stubs/class-use/RegistryConstants.html | 126 ++++ .../legacy/stubs/class-use/RegistryStub.html | 192 ++++++ .../legacy/stubs/fault/CreateException.html | 284 +++++++++ .../stubs/fault/InvalidResourceException.html | 292 +++++++++ .../stubs/fault/PublisherException.html | 311 ++++++++++ .../legacy/stubs/fault/RemoveException.html | 284 +++++++++ .../fault/ResourceDoesNotExistException.html | 279 +++++++++ .../fault/ResourceNotAcceptedException.html | 279 +++++++++ .../legacy/stubs/fault/UpdateException.html | 284 +++++++++ .../fault/class-use/CreateException.html | 167 +++++ .../class-use/InvalidResourceException.html | 173 ++++++ .../fault/class-use/PublisherException.html | 180 ++++++ .../fault/class-use/RemoveException.html | 167 +++++ .../ResourceDoesNotExistException.html | 167 +++++ .../ResourceNotAcceptedException.html | 173 ++++++ .../fault/class-use/UpdateException.html | 168 +++++ .../is/legacy/stubs/fault/package-frame.html | 27 + .../legacy/stubs/fault/package-summary.html | 181 ++++++ .../is/legacy/stubs/fault/package-tree.html | 160 +++++ .../is/legacy/stubs/fault/package-use.html | 206 +++++++ .../is/legacy/stubs/package-frame.html | 25 + .../is/legacy/stubs/package-summary.html | 163 +++++ .../is/legacy/stubs/package-tree.html | 143 +++++ .../is/legacy/stubs/package-use.html | 182 ++++++ .../resources/gcore/ResourceMediator.html | 318 ++++++++++ .../gcore/class-use/ResourceMediator.html | 126 ++++ .../common/resources/gcore/package-frame.html | 21 + .../resources/gcore/package-summary.html | 144 +++++ .../common/resources/gcore/package-tree.html | 139 +++++ .../common/resources/gcore/package-use.html | 126 ++++ target/apidocs/overview-frame.html | 27 + target/apidocs/overview-summary.html | 160 +++++ target/apidocs/overview-tree.html | 190 ++++++ target/apidocs/package-list | 6 + target/apidocs/script.js | 30 + target/apidocs/serialized-form.html | 239 ++++++++ target/apidocs/stylesheet.css | 574 ++++++++++++++++++ target/classes/META-INF/LICENSE.md | 312 ++++++++++ .../is/legacy/LegacyISPublisher$1.class | Bin 0 -> 2065 bytes .../is/legacy/LegacyISPublisher$2.class | Bin 0 -> 2073 bytes .../is/legacy/LegacyISPublisher.class | Bin 0 -> 6344 bytes .../core/publisher/is/legacy/Registry$1.class | Bin 0 -> 1318 bytes .../core/publisher/is/legacy/Registry.class | Bin 0 -> 5128 bytes .../publisher/is/legacy/RegistryCache.class | Bin 0 -> 1629 bytes .../is/legacy/RegistryNotFoundException.class | Bin 0 -> 879 bytes .../ApplicationProfileBuilder.class | Bin 0 -> 5990 bytes .../container/ContainerProfileBuilder.class | Bin 0 -> 19350 bytes .../container/LinuxDistributionInfo.class | Bin 0 -> 3736 bytes .../is/legacy/stubs/RegistryConstants.class | Bin 0 -> 2475 bytes .../is/legacy/stubs/RegistryStub.class | Bin 0 -> 1387 bytes .../legacy/stubs/fault/CreateException.class | Bin 0 -> 654 bytes .../fault/InvalidResourceException.class | Bin 0 -> 813 bytes .../stubs/fault/PublisherException.class | Bin 0 -> 889 bytes .../legacy/stubs/fault/RemoveException.class | Bin 0 -> 654 bytes .../fault/ResourceDoesNotExistException.class | Bin 0 -> 664 bytes .../fault/ResourceNotAcceptedException.class | Bin 0 -> 660 bytes .../legacy/stubs/fault/UpdateException.class | Bin 0 -> 654 bytes .../resources/gcore/ResourceMediator.class | Bin 0 -> 2651 bytes .../javadoc-options-javadoc-resources.xml | 10 + target/javadoc-bundle-options/package-list | 203 +++++++ ...cy-is-publisher-1.0.0-SNAPSHOT-javadoc.jar | Bin 0 -> 139600 bytes ...cy-is-publisher-1.0.0-SNAPSHOT-sources.jar | Bin 0 -> 17583 bytes target/legacy-is-publisher-1.0.0-SNAPSHOT.jar | Bin 0 -> 38409 bytes target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 20 + .../compile/default-compile/inputFiles.lst | 17 + .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 126 files changed, 15268 insertions(+) create mode 100644 CHANGELOG.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/Registry.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryCache.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.java create mode 100644 src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.java create mode 100644 src/main/java/org/gcube/common/resources/gcore/ResourceMediator.java create mode 100644 target/antrun/build-printOutputDirectories.xml create mode 100644 target/antrun/build-seOuttputDirectories.xml create mode 100644 target/apidocs/allclasses-frame.html create mode 100644 target/apidocs/allclasses-noframe.html create mode 100644 target/apidocs/constant-values.html create mode 100644 target/apidocs/deprecated-list.html create mode 100644 target/apidocs/help-doc.html create mode 100644 target/apidocs/index-all.html create mode 100644 target/apidocs/index.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/Registry.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryCache.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/application/class-use/ApplicationProfileBuilder.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-frame.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-summary.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-tree.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-use.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/LegacyISPublisher.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/Registry.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryCache.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryNotFoundException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/ContainerProfileBuilder.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/LinuxDistributionInfo.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-frame.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-summary.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-tree.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-use.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/package-frame.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/package-summary.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/package-tree.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/package-use.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryConstants.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryStub.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/CreateException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/InvalidResourceException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/PublisherException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/RemoveException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceDoesNotExistException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceNotAcceptedException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/UpdateException.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-frame.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-summary.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-tree.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-use.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-frame.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-summary.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-tree.html create mode 100644 target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-use.html create mode 100644 target/apidocs/org/gcube/common/resources/gcore/ResourceMediator.html create mode 100644 target/apidocs/org/gcube/common/resources/gcore/class-use/ResourceMediator.html create mode 100644 target/apidocs/org/gcube/common/resources/gcore/package-frame.html create mode 100644 target/apidocs/org/gcube/common/resources/gcore/package-summary.html create mode 100644 target/apidocs/org/gcube/common/resources/gcore/package-tree.html create mode 100644 target/apidocs/org/gcube/common/resources/gcore/package-use.html create mode 100644 target/apidocs/overview-frame.html create mode 100644 target/apidocs/overview-summary.html create mode 100644 target/apidocs/overview-tree.html create mode 100644 target/apidocs/package-list create mode 100644 target/apidocs/script.js create mode 100644 target/apidocs/serialized-form.html create mode 100644 target/apidocs/stylesheet.css create mode 100644 target/classes/META-INF/LICENSE.md create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher$1.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher$2.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/Registry$1.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/Registry.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/RegistryCache.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.class create mode 100644 target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.class create mode 100644 target/classes/org/gcube/common/resources/gcore/ResourceMediator.class create mode 100644 target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml create mode 100644 target/javadoc-bundle-options/package-list create mode 100644 target/legacy-is-publisher-1.0.0-SNAPSHOT-javadoc.jar create mode 100644 target/legacy-is-publisher-1.0.0-SNAPSHOT-sources.jar create mode 100644 target/legacy-is-publisher-1.0.0-SNAPSHOT.jar create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..42c1dec --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +# Changelog for Gcube security + +## [v1.0.0-SNAPSHOT] - 2022-05-23 + +- First Release + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..3af0507 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,312 @@ +# European Union Public Licence V. 1.1 + + +EUPL © the European Community 2007 + + +This European Union Public Licence (the “EUPL”) applies to the Work or Software +(as defined below) which is provided under the terms of this Licence. Any use of +the Work, other than as authorised under this Licence is prohibited (to the +extent such use is covered by a right of the copyright holder of the Work). + +The Original Work is provided under the terms of this Licence when the Licensor +(as defined below) has placed the following notice immediately following the +copyright notice for the Original Work: + +Licensed under the EUPL V.1.1 + +or has expressed by any other mean his willingness to license under the EUPL. + + + +## 1. Definitions + +In this Licence, the following terms have the following meaning: + +- The Licence: this Licence. + +- The Original Work or the Software: the software distributed and/or + communicated by the Licensor under this Licence, available as Source Code and + also as Executable Code as the case may be. + +- Derivative Works: the works or software that could be created by the Licensee, + based upon the Original Work or modifications thereof. This Licence does not + define the extent of modification or dependence on the Original Work required + in order to classify a work as a Derivative Work; this extent is determined by + copyright law applicable in the country mentioned in Article 15. + +- The Work: the Original Work and/or its Derivative Works. + +- The Source Code: the human-readable form of the Work which is the most + convenient for people to study and modify. + +- The Executable Code: any code which has generally been compiled and which is + meant to be interpreted by a computer as a program. + +- The Licensor: the natural or legal person that distributes and/or communicates + the Work under the Licence. + +- Contributor(s): any natural or legal person who modifies the Work under the + Licence, or otherwise contributes to the creation of a Derivative Work. + +- The Licensee or “You”: any natural or legal person who makes any usage of the + Software under the terms of the Licence. + +- Distribution and/or Communication: any act of selling, giving, lending, + renting, distributing, communicating, transmitting, or otherwise making + available, on-line or off-line, copies of the Work or providing access to its + essential functionalities at the disposal of any other natural or legal + person. + + + +## 2. Scope of the rights granted by the Licence + +The Licensor hereby grants You a world-wide, royalty-free, non-exclusive, +sub-licensable licence to do the following, for the duration of copyright vested +in the Original Work: + +- use the Work in any circumstance and for all usage, reproduce the Work, modify +- the Original Work, and make Derivative Works based upon the Work, communicate +- to the public, including the right to make available or display the Work or +- copies thereof to the public and perform publicly, as the case may be, the +- Work, distribute the Work or copies thereof, lend and rent the Work or copies +- thereof, sub-license rights in the Work or copies thereof. + +Those rights can be exercised on any media, supports and formats, whether now +known or later invented, as far as the applicable law permits so. + +In the countries where moral rights apply, the Licensor waives his right to +exercise his moral right to the extent allowed by law in order to make effective +the licence of the economic rights here above listed. + +The Licensor grants to the Licensee royalty-free, non exclusive usage rights to +any patents held by the Licensor, to the extent necessary to make use of the +rights granted on the Work under this Licence. + + + +## 3. Communication of the Source Code + +The Licensor may provide the Work either in its Source Code form, or as +Executable Code. If the Work is provided as Executable Code, the Licensor +provides in addition a machine-readable copy of the Source Code of the Work +along with each copy of the Work that the Licensor distributes or indicates, in +a notice following the copyright notice attached to the Work, a repository where +the Source Code is easily and freely accessible for as long as the Licensor +continues to distribute and/or communicate the Work. + + + +## 4. Limitations on copyright + +Nothing in this Licence is intended to deprive the Licensee of the benefits from +any exception or limitation to the exclusive rights of the rights owners in the +Original Work or Software, of the exhaustion of those rights or of other +applicable limitations thereto. + + + +## 5. Obligations of the Licensee + +The grant of the rights mentioned above is subject to some restrictions and +obligations imposed on the Licensee. Those obligations are the following: + +Attribution right: the Licensee shall keep intact all copyright, patent or +trademarks notices and all notices that refer to the Licence and to the +disclaimer of warranties. The Licensee must include a copy of such notices and a +copy of the Licence with every copy of the Work he/she distributes and/or +communicates. The Licensee must cause any Derivative Work to carry prominent +notices stating that the Work has been modified and the date of modification. + +Copyleft clause: If the Licensee distributes and/or communicates copies of the +Original Works or Derivative Works based upon the Original Work, this +Distribution and/or Communication will be done under the terms of this Licence +or of a later version of this Licence unless the Original Work is expressly +distributed only under this version of the Licence. The Licensee (becoming +Licensor) cannot offer or impose any additional terms or conditions on the Work +or Derivative Work that alter or restrict the terms of the Licence. + +Compatibility clause: If the Licensee Distributes and/or Communicates Derivative +Works or copies thereof based upon both the Original Work and another work +licensed under a Compatible Licence, this Distribution and/or Communication can +be done under the terms of this Compatible Licence. For the sake of this clause, +“Compatible Licence” refers to the licences listed in the appendix attached to +this Licence. Should the Licensee’s obligations under the Compatible Licence +conflict with his/her obligations under this Licence, the obligations of the +Compatible Licence shall prevail. + +Provision of Source Code: When distributing and/or communicating copies of the +Work, the Licensee will provide a machine-readable copy of the Source Code or +indicate a repository where this Source will be easily and freely available for +as long as the Licensee continues to distribute and/or communicate the Work. + +Legal Protection: This Licence does not grant permission to use the trade names, +trademarks, service marks, or names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the copyright notice. + + + +## 6. Chain of Authorship + +The original Licensor warrants that the copyright in the Original Work granted +hereunder is owned by him/her or licensed to him/her and that he/she has the +power and authority to grant the Licence. + +Each Contributor warrants that the copyright in the modifications he/she brings +to the Work are owned by him/her or licensed to him/her and that he/she has the +power and authority to grant the Licence. + +Each time You accept the Licence, the original Licensor and subsequent +Contributors grant You a licence to their contributions to the Work, under the +terms of this Licence. + + + +## 7. Disclaimer of Warranty + +The Work is a work in progress, which is continuously improved by numerous +contributors. It is not a finished work and may therefore contain defects or +“bugs” inherent to this type of software development. + +For the above reason, the Work is provided under the Licence on an “as is” basis +and without warranties of any kind concerning the Work, including without +limitation merchantability, fitness for a particular purpose, absence of defects +or errors, accuracy, non-infringement of intellectual property rights other than +copyright as stated in Article 6 of this Licence. + +This disclaimer of warranty is an essential part of the Licence and a condition +for the grant of any rights to the Work. + + + +## 8. Disclaimer of Liability + +Except in the cases of wilful misconduct or damages directly caused to natural +persons, the Licensor will in no event be liable for any direct or indirect, +material or moral, damages of any kind, arising out of the Licence or of the use +of the Work, including without limitation, damages for loss of goodwill, work +stoppage, computer failure or malfunction, loss of data or any commercial +damage, even if the Licensor has been advised of the possibility of such +damage. However, the Licensor will be liable under statutory product liability +laws as far such laws apply to the Work. + + + +## 9. Additional agreements + +While distributing the Original Work or Derivative Works, You may choose to +conclude an additional agreement to offer, and charge a fee for, acceptance of +support, warranty, indemnity, or other liability obligations and/or services +consistent with this Licence. However, in accepting such obligations, You may +act only on your own behalf and on your sole responsibility, not on behalf of +the original Licensor or any other Contributor, and only if You agree to +indemnify, defend, and hold each Contributor harmless for any liability incurred +by, or claims asserted against such Contributor by the fact You have accepted +any such warranty or additional liability. + + + +## 10. Acceptance of the Licence + +The provisions of this Licence can be accepted by clicking on an icon “I agree” +placed under the bottom of a window displaying the text of this Licence or by +affirming consent in any other similar way, in accordance with the rules of +applicable law. Clicking on that icon indicates your clear and irrevocable +acceptance of this Licence and all of its terms and conditions. + +Similarly, you irrevocably accept this Licence and all of its terms and +conditions by exercising any rights granted to You by Article 2 of this Licence, +such as the use of the Work, the creation by You of a Derivative Work or the +Distribution and/or Communication by You of the Work or copies thereof. + + + +## 11. Information to the public + +In case of any Distribution and/or Communication of the Work by means of +electronic communication by You (for example, by offering to download the Work +from a remote location) the distribution channel or media (for example, a +website) must at least provide to the public the information requested by the +applicable law regarding the Licensor, the Licence and the way it may be +accessible, concluded, stored and reproduced by the Licensee. + + + +## 12. Termination of the Licence + +The Licence and the rights granted hereunder will terminate automatically upon +any breach by the Licensee of the terms of the Licence. + +Such a termination will not terminate the licences of any person who has +received the Work from the Licensee under the Licence, provided such persons +remain in full compliance with the Licence. + + + +## 13. Miscellaneous + +Without prejudice of Article 9 above, the Licence represents the complete +agreement between the Parties as to the Work licensed hereunder. + +If any provision of the Licence is invalid or unenforceable under applicable +law, this will not affect the validity or enforceability of the Licence as a +whole. Such provision will be construed and/or reformed so as necessary to make +it valid and enforceable. + +The European Commission may publish other linguistic versions and/or new +versions of this Licence, so far this is required and reasonable, without +reducing the scope of the rights granted by the Licence. New versions of the +Licence will be published with a unique version number. + +All linguistic versions of this Licence, approved by the European Commission, +have identical value. Parties can take advantage of the linguistic version of +their choice. + + + +## 14. Jurisdiction + +Any litigation resulting from the interpretation of this License, arising +between the European Commission, as a Licensor, and any Licensee, will be +subject to the jurisdiction of the Court of Justice of the European Communities, +as laid down in article 238 of the Treaty establishing the European Community. + +Any litigation arising between Parties, other than the European Commission, and +resulting from the interpretation of this License, will be subject to the +exclusive jurisdiction of the competent court where the Licensor resides or +conducts its primary business. + + + +## 15. Applicable Law + +This Licence shall be governed by the law of the European Union country where +the Licensor resides or has his registered office. + +This licence shall be governed by the Belgian law if: + +- a litigation arises between the European Commission, as a Licensor, and any +- Licensee; the Licensor, other than the European Commission, has no residence +- or registered office inside a European Union country. + + + +## Appendix + + + +“Compatible Licences” according to article 5 EUPL are: + + +- GNU General Public License (GNU GPL) v. 2 + +- Open Software License (OSL) v. 2.1, v. 3.0 + +- Common Public License v. 1.0 + +- Eclipse Public License v. 1.0 + +- Cecill v. 2.0 + diff --git a/README.md b/README.md new file mode 100644 index 0000000..b57cf41 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# GCube secrets + +A core gCube library which empower authorization + +## Built With + +* [OpenJDK](https://openjdk.java.net/) - The JDK used +* [Maven](https://maven.apache.org/) - Dependency Management + +## Documentation + +[SmartGears](https://wiki.gcube-system.org/gcube/gCubeSecurity) + +## Change log + +See [Releases](https://code-repo.d4science.org/gCubeSystem/gcube-secrets/releases). + +## Authors + +* **Luca Frosini** ([ORCID](https://orcid.org/0000-0003-3183-2291)) - [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience) +* **Lucio Lelii** - [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience) + + +## How to Cite this Software + +Tell people how to cite this software. +* Cite an associated paper? +* Use a specific BibTeX entry for the software? + + + @Manual{, + title = {Common Smartgears}, + author = {{Frosini, Luca}, {Lelii, Lucio}}, + organization = {{ISTI - CNR}, {FAO}}, + address = {{Pisa, Italy}, {Roma, Italy}}, + year = 2022, + url = {http://www.gcube-system.org/} + } + +## License + +This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md](LICENSE.md) file for details. + + +## About the gCube Framework +This software is part of the [gCubeFramework](https://www.gcube-system.org/ "gCubeFramework"): an +open-source software toolkit used for building and operating Hybrid Data +Infrastructures enabling the dynamic deployment of Virtual Research Environments +by favouring the realisation of reuse oriented policies. + +The projects leading to this software have received funding from a series of European Union programmes including: + +- the Sixth Framework Programme for Research and Technological Development + - DILIGENT (grant no. 004260). +- the Seventh Framework Programme for research, technological development and demonstration + - D4Science (grant no. 212488); + - D4Science-II (grant no.239019); + - ENVRI (grant no. 283465); + - iMarine(grant no. 283644); + - EUBrazilOpenBio (grant no. 288754). +- the H2020 research and innovation programme + - SoBigData (grant no. 654024); + - PARTHENOS (grant no. 654119); + - EGIEngage (grant no. 654142); + - ENVRIplus (grant no. 654182); + - BlueBRIDGE (grant no. 675680); + - PerformFish (grant no. 727610); + - AGINFRAplus (grant no. 731001); + - DESIRA (grant no. 818194); + - ARIADNEplus (grant no. 823914); + - RISIS2 (grant no. 824091); + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..55fa93b --- /dev/null +++ b/pom.xml @@ -0,0 +1,64 @@ + + 4.0.0 + org.gcube.common.core + legacy-is-publisher + 1.0.0-SNAPSHOT + Legacy is publisher + + + maven-parent + org.gcube.tools + 1.1.0 + + + + + + org.gcube.distribution + gcube-smartgears-bom + 3.0.0-SNAPSHOT + pom + import + + + + + + + org.slf4j + slf4j-api + + + org.gcube.common + common-security + + + org.gcube.core + common-smartgears + + + org.gcube.core + common-gcore-stubs + + + org.gcube.resources.discovery + ic-client + + + + org.gcube.resources + common-gcore-resources + [1.0.0,2.0.0-SNAPSHOT) + + + javax.servlet + javax.servlet-api + 4.0.1 + provided + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.java new file mode 100644 index 0000000..98593b5 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.java @@ -0,0 +1,109 @@ +package org.gcube.common.core.publisher.is.legacy; + +import java.io.StringWriter; +import java.util.Set; + +import org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder; +import org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder; +import org.gcube.common.resources.gcore.GCoreEndpoint; +import org.gcube.common.resources.gcore.HostingNode; +import org.gcube.common.resources.gcore.Resource; +import org.gcube.common.resources.gcore.ResourceMediator; +import org.gcube.common.resources.gcore.Resources; +import org.gcube.common.security.AuthorizedTasks; +import org.gcube.smartgears.context.application.ApplicationContext; +import org.gcube.smartgears.context.container.ContainerContext; +import org.gcube.smartgears.publishing.Publisher; +import org.gcube.smartgears.publishing.SmartgearsProfilePublisher; +import org.gcube.smartgears.security.AuthorizationProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@SmartgearsProfilePublisher +public class LegacyISPublisher implements Publisher{ + + + private static Logger logger = LoggerFactory.getLogger(LegacyISPublisher.class); + + private Registry registry = new Registry(); + + + + @Override + public boolean publishContainer(ContainerContext container, Set contexts) { + ContainerProfileBuilder cpb = new ContainerProfileBuilder(container); + HostingNode hostingNode = cpb.create(); + + for (String context: contexts) + ResourceMediator.setScope(hostingNode, context); + + AuthorizationProvider provider = container.configuration().authorizationProvider(); + for (String context : provider.getContexts()) + try { + AuthorizedTasks.executeSafely(new Runnable() { + + @Override + public void run() { + try { + registry.getStubs().create(toXml(hostingNode), hostingNode.type().toString()); + }catch (Exception e) { + throw new RuntimeException(e); + } + + } + }, provider.getSecretForContext(context)); + }catch (Throwable e) { + logger.error("error publishing container in context {}", context, e); + } + + return true; + } + + @Override + public boolean publishApplication(ApplicationContext application, Set contexts) { + ApplicationProfileBuilder cpb = new ApplicationProfileBuilder(application); + GCoreEndpoint enpoint = cpb.create(); + for (String context: contexts) + ResourceMediator.setScope(enpoint, context); + + AuthorizationProvider provider = application.container().configuration().authorizationProvider(); + for (String context : provider.getContexts()) + try { + AuthorizedTasks.executeSafely(new Runnable() { + + @Override + public void run() { + try { + registry.getStubs().create(toXml(enpoint), enpoint.type().toString()); + }catch (Exception e) { + throw new RuntimeException(e); + } + + } + }, provider.getSecretForContext(context)); + }catch (Throwable e) { + logger.error("error publisshing application profile in context {}", context, e); + } + + return true; + } + + @Override + public boolean unpublishContainer(ContainerContext container, Set contexts) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean unpublishApplication(ApplicationContext application, Set contexts) { + // TODO Auto-generated method stub + return false; + } + + private String toXml(Resource resource){ + StringWriter writer = new StringWriter(); + Resources.marshal(resource, writer); + return writer.toString(); + } + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/Registry.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/Registry.java new file mode 100644 index 0000000..9377ba8 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/Registry.java @@ -0,0 +1,70 @@ +package org.gcube.common.core.publisher.is.legacy; + +import static org.gcube.common.clients.stubs.jaxws.StubFactory.stubFor; +import static org.gcube.resources.discovery.icclient.ICFactory.queryFor; + +import java.net.URI; +import java.util.List; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants; +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; +import org.gcube.common.resources.gcore.GCoreEndpoint; +import org.gcube.common.security.providers.SecretManagerProvider; +import org.gcube.resources.discovery.client.api.DiscoveryClient; +import org.gcube.resources.discovery.client.api.ResultParser; +import org.gcube.resources.discovery.client.impl.DelegateClient; +import org.gcube.resources.discovery.client.queries.api.SimpleQuery; +import org.gcube.resources.discovery.icclient.ICClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Registry { + + private RegistryCache cache = new RegistryCache(10); + private List endpoints; + private static final Logger log = LoggerFactory.getLogger(Registry.class); + + + + public List getEndPoints(){ + String scope=SecretManagerProvider.instance.get().getContext(); + + endpoints=(List)cache.get(scope); + if(endpoints==null){ + SimpleQuery query = queryFor(GCoreEndpoint.class); + ResultParser uriParser =new ResultParser() { + + @Override + public URI parse(String result) throws Exception { + return new URI(result.replaceAll("\n", "")); + } + + }; + DiscoveryClient client = new DelegateClient(uriParser, new ICClient()); + query.addCondition("$resource/Profile/ServiceClass/text() eq '"+RegistryConstants.service_class+"'") + .addCondition("$resource/Profile/ServiceName/text() eq '"+RegistryConstants.service_name+"'") + .setResult("$resource/Profile/AccessPoint/RunningInstanceInterfaces/Endpoint[string(@EntryName) eq '"+RegistryConstants.service_entrypoint+"']/string()"); + endpoints = client.submit(query); + if (endpoints.size()==0){ + throw new IllegalArgumentException("No registry endpoint founded"); + } +// able/disable cache + cache.put(scope, endpoints); + } + return endpoints; + } + + public RegistryStub getStubs() throws RegistryNotFoundException{ + URI endpoint=null; + //use another method to cache epr + endpoint = getEndPoints().get(0); + log.debug("get stubs from endpoint: "+ endpoint); + return stubFor(RegistryConstants.registry).at(endpoint); + } + + public RegistryStub getStubs(URI endpoint) throws RegistryNotFoundException{ + log.debug("get stubs from endpoint: "+ endpoint); + return stubFor(RegistryConstants.registry).at(endpoint); + } + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryCache.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryCache.java new file mode 100644 index 0000000..8b7ce25 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryCache.java @@ -0,0 +1,45 @@ +package org.gcube.common.core.publisher.is.legacy; + +import java.net.URI; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public class RegistryCache extends LinkedHashMap>{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + private final int capacity; + private long accessCount = 0; + private long hitCount = 0; + + public RegistryCache(int capacity){ + super(capacity + 1, 1.1f, true); + this.capacity = capacity; + } + + public List get(String key){ + accessCount++; + if (containsKey(key)){ + hitCount++; + } + List value = super.get(key); + return value; + } + + protected boolean removeEldestEntry(Map.Entry eldest){ + return size() > capacity; + } + + public long getAccessCount(){ + return accessCount; + } + + public long getHitCount(){ + return hitCount; + } +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.java new file mode 100644 index 0000000..c88e873 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.java @@ -0,0 +1,29 @@ +package org.gcube.common.core.publisher.is.legacy; + +public class RegistryNotFoundException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -8265959805049300612L; + + public RegistryNotFoundException() { + super(); + } + + public RegistryNotFoundException(String arg0, Throwable arg1) { + super(arg0, arg1); + } + + public RegistryNotFoundException(String arg0) { + super(arg0); + } + + public RegistryNotFoundException(Throwable arg0) { + super(arg0); + } + + + + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.java new file mode 100644 index 0000000..732c03c --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.java @@ -0,0 +1,72 @@ +package org.gcube.common.core.publisher.is.legacy.application; + +import java.net.URI; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; + +import javax.servlet.ServletRegistration; + +import org.gcube.common.resources.gcore.GCoreEndpoint; +import org.gcube.smartgears.configuration.application.ApplicationConfiguration; +import org.gcube.smartgears.configuration.container.ContainerConfiguration; +import org.gcube.smartgears.context.application.ApplicationContext; + +public class ApplicationProfileBuilder { + + private static List servletExcludes = Arrays.asList("default","jsp"); + + // private static final Logger log = LoggerFactory.getLogger(ProfileBuilder.class); + + private ApplicationContext context; + + public ApplicationProfileBuilder(ApplicationContext context) { + this.context = context; + } + + public GCoreEndpoint create() { + + GCoreEndpoint endpoint = new GCoreEndpoint(); + + ApplicationConfiguration configuration = context.configuration(); + ContainerConfiguration container = context.container().configuration(); + + + endpoint.profile() + .description(configuration.description()) + .serviceName(configuration.name()) + .serviceClass(configuration.serviceClass()) + .version(configuration.version()) + .serviceId(configuration.name() + configuration.serviceClass() + configuration.version()) + .ghnId(context.id()); + + endpoint.profile().newDeploymentData() + .activationTime(Calendar.getInstance()) + .status((context.lifecycle().state().remoteForm())); + + endpoint.profile().endpoints().clear(); + + String baseAddress; + if (configuration.proxied()){ + String protocol = configuration.proxyAddress().getProtocol(); + String port = configuration.proxyAddress().getPort()!=null?":"+configuration.proxyAddress().getPort():""; + + baseAddress=String.format("%s://%s%s%s", protocol , configuration.proxyAddress().getHostname(), port,context.application().getContextPath()); + } else { + String protocol = container.protocol(); + int port = container.port(); + + baseAddress=String.format("%s://%s:%d%s", protocol , container.hostname(), port,context.application().getContextPath()); + } + + for (ServletRegistration servlet : context.application().getServletRegistrations().values()) + if (!servletExcludes.contains(servlet.getName())) + for (String mapping : servlet.getMappings()) { + String address = baseAddress+(mapping.endsWith("*")?mapping.substring(0,mapping.length()-2):mapping); + endpoint.profile().endpoints().add().nameAndAddress(servlet.getName(),URI.create(address)); + } + + return endpoint; + } + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.java new file mode 100644 index 0000000..2628ecb --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.java @@ -0,0 +1,377 @@ +package org.gcube.common.core.publisher.is.legacy.container; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.math.BigDecimal; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.gcube.common.resources.gcore.HostingNode; +import org.gcube.common.resources.gcore.HostingNode.Profile.NodeDescription.GHNType; +import org.gcube.common.resources.gcore.HostingNode.Profile.NodeDescription.Processor; +import org.gcube.common.resources.gcore.HostingNode.Profile.NodeDescription.Variable; +import org.gcube.common.resources.gcore.utils.Group; +import org.gcube.smartgears.configuration.container.ContainerConfiguration; +import org.gcube.smartgears.configuration.library.SmartGearsConfiguration; +import org.gcube.smartgears.context.container.ContainerContext; +import org.gcube.smartgears.provider.ProviderFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Fabio Simeoni + * @author Luca Frosini (ISTI - CNR) + * + */ +public class ContainerProfileBuilder { + + private static Logger log = LoggerFactory.getLogger(ContainerProfileBuilder.class); + + private ContainerContext context; + + public ContainerProfileBuilder(ContainerContext context) { + this.context = context; + } + + public HostingNode create() { + + HostingNode node = new HostingNode(); + + ContainerConfiguration cfg = context.configuration(); + + node.newProfile().infrastructure(cfg.infrastructure()); + + node.setId(context.id()); + + addSiteTo(node); + + String ip = "not resolved"; + try { + ip = InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + log.warn("unable to detect the IP address of the host"); + } + + node.profile().newDescription().activationTime(Calendar.getInstance()).name(cfg.hostname() + ":" + cfg.port()); + + node.profile().description().networkAdapters().add().mtu(0).name("local-adapter").ipAddress(ip).inboundIP("") + .outboundIP(""); + + node.profile().description().newOperatingSystem().name(System.getProperty("os.name")) + .version(System.getProperty("os.version")).release(""); + + node.profile().description().newArchitecture().platformType(System.getProperty("os.arch")).smpSize(0) + .smtSize(0); + + node.profile().newSite().domain("It").country("It").location("Rome").latitude("1").longitude("1"); + + ArrayList> info = cpuInfo(); + + Group processors = node.profile().description().processors(); + + for (HashMap map : info) + + processors.add().bogomips(new BigDecimal(map.get("bogomips"))) + .clockSpeedMhz(new BigDecimal(map.get("cpu_MHz"))).family(map.get("cpu_family")) + .modelName(map.get("model_name")).model(map.get("model")).vendor(map.get("vendor_id")) + .cacheL1(new Integer(map.get("cache_size"))).cacheL1D(0).cacheL1I(0).cacheL2(0); + + addVariablesTo(node); + + update(node,false); + + node.profile().description().type(GHNType.Static); + // String type = (String) context.getProperty(GHNContext.GHN_TYPE, false); + // if (type.compareToIgnoreCase(Type.DYNAMIC.toString()) == 0) description.setType(Description.Type.Dynamic); + // else if (type.compareToIgnoreCase(Type.STATIC.toString()) == 0) description.setType(Description.Type.Static); + // else if (type.compareToIgnoreCase(Type.SELFCLEANING.toString()) == 0) + // description.setType(Description.Type.Selfcleaning); + // + // file system + node.profile().description().localFileSystems().add().name("").type("").readOnly(false) + .root("/"); + + return node; + } + + @SuppressWarnings("all") + private ArrayList> cpuInfo() { + + ArrayList> map = new ArrayList>(); + + File file = new File("/proc/cpuinfo"); + + if (!file.exists()) { + log.warn("cannot acquire CPU info (no /proc/cpuinfo)"); + return map; + } + + BufferedReader input = null; + + try { + input = new BufferedReader(new FileReader(file)); + + String line = null; + + HashMap currentProcessor = null; + + while ((line = input.readLine()) != null) { + + if ((line.startsWith("processor"))) { // add the current processor to the map + + if (currentProcessor != null) + map.add((HashMap) currentProcessor.clone()); + + currentProcessor = new HashMap(); + } + + try { + if (line.contains("vendor_id")) + currentProcessor.put("vendor_id", line.split(":")[1].trim()); + } catch (Exception ex) { + } + try { + if (line.contains("cpu family")) + currentProcessor.put("cpu_family", line.split(":")[1].trim()); + } catch (Exception ex) { + } + try { + if ((line.contains("model\t")) || (line.contains("model\b"))) + currentProcessor.put("model", line.split(":")[1].trim()); + } catch (Exception ex) { + } + try { + if (line.contains("model name")) + currentProcessor.put("model_name", line.split(":")[1].trim()); + } catch (Exception ex) { + } + try { + if (line.contains("cpu MHz")) + currentProcessor.put("cpu_MHz", line.split(":")[1].trim()); + } catch (Exception ex) { + } + try { + if (line.contains("cache size")) + currentProcessor.put("cache_size", line.split(":")[1].trim().split(" ")[0]); + } catch (Exception ex) { + } + try { + if (line.contains("bogomips")) + currentProcessor.put("bogomips", line.split(":")[1].trim()); + } catch (Exception ex) { + } + } + + if (currentProcessor != null) + map.add(currentProcessor); + + } catch (Exception e) { + + log.warn("unable to acquire CPU info", e); + + } finally { + + if (input != null) + try { + input.close(); + } catch (IOException e) { + log.warn("unable to close stream", e); + } + } + return map; + } + + private long getFreeSpace() { + long free = 0; + try { + free = context.configuration().persistence().getFreeSpace()/1024; + } catch (Exception ioe) { + log.warn("unable to detect the free space on the disk", ioe); + } + return free; + } + + public void update(HostingNode node,boolean onLoad) { + + ContainerConfiguration cfg = context.configuration(); + + if (onLoad) { + + log.info("updating ghn profile"); + + node.profile().description().activationTime(Calendar.getInstance()).name(cfg.hostname() + ":" + cfg.port()); + + addVariablesTo(node); + + addSiteTo(node); + + } + + node.profile().description().status(context.lifecycle().state().remoteForm()); + + Map mem = memoryUsage(); + + node.profile().description().newMainMemory().ramAvailable(mem.get("MemoryAvailable")) + .ramSize(mem.get("MemoryTotalSize")).virtualAvailable(mem.get("VirtualAvailable")) + .virtualSize(mem.get("VirtualSize")); + + node.profile().description().localAvailableSpace(getFreeSpace()); + + node.profile().description().uptime(uptime()); + + node.profile().description().lastUpdate(Calendar.getInstance()); + + Map loads = loadStatistics(); + + node.profile().description().newLoad().lastMin(loads.get("1min") == null ? 0 : loads.get("1min")) + .last5Mins(loads.get("5mins") == null ? 0 : loads.get("5mins")) + .last15Mins(loads.get("15mins") == null ? 0 : loads.get("15mins")); + + } + + private void addSiteTo(HostingNode node) { + + ContainerConfiguration cfg = context.configuration(); + + node.profile().newSite().country(cfg.site().getCountry()).location(cfg.site().getLocation()) + .latitude(cfg.site().getLatitude()).longitude(cfg.site().getLongitude()).domain(domainIn(cfg.hostname())); + } + + private void addVariablesTo(HostingNode node) { + + ContainerConfiguration cfg = context.configuration(); + + Group variables = node.profile().description().environmentVariables(); + + // Cleaning variables to avoid duplicates + variables.removeAll(node.profile().description().environmentVariables()); + + Map map = new HashMap(); + map.putAll(cfg.properties()); + map.putAll(System.getenv()); + + for (Map.Entry entry : map.entrySet()) { + String varname = entry.getKey(); + if ((varname.compareToIgnoreCase("CLASSPATH") == 0) || (varname.compareToIgnoreCase("PATH") == 0) + || (varname.contains("SSH")) || (varname.contains("MAIL")) + || (varname.compareToIgnoreCase("LS_COLORS") == 0)) + continue; + variables.add().keyAndValue(entry.getKey(), entry.getValue()); + } + + /* The following code is useless can be removed + Map envvars = new HashMap(); + for (String varname : envvars.keySet()) { + + // a bit of filtering + if ((varname.compareToIgnoreCase("CLASSPATH") == 0) || (varname.compareToIgnoreCase("PATH") == 0) + || (varname.contains("SSH")) || (varname.contains("MAIL")) + || (varname.compareToIgnoreCase("LS_COLORS") == 0)) + continue; + + variables.add().keyAndValue(varname, envvars.get(varname)); + } + */ + + + String osVersion = System.getProperty("os.name"); + if(osVersion.compareToIgnoreCase("Linux")==0) { + LinuxDistributionInfo linuxDistributionInfo = new LinuxDistributionInfo(); + Map info = linuxDistributionInfo.getInfo(); + for(String key : info.keySet()) { + variables.add().keyAndValue(key, info.get(key)); + } + } + + variables.add().keyAndValue("Java", System.getProperty("java.version")); + + SmartGearsConfiguration config = ProviderFactory.provider().smartgearsConfiguration(); + variables.add().keyAndValue("SmartGears",config.version()); + + variables.add().keyAndValue("ghn-update-interval-in-secs", String.valueOf(cfg.publicationFrequency())); + + } + + public String uptime() { + String lines = "", linetemp = null; + try { + Process p = Runtime.getRuntime().exec("uptime"); + p.waitFor(); + BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); + while ((linetemp = input.readLine()) != null) + lines += linetemp; + input.close(); + p.destroy(); + lines = lines.split(",")[0].split("up")[1].trim(); + } catch (Exception e) { + log.warn("unable to detect the uptime of this machine", e); + lines = "unable to detect"; + } + return lines; + } + + public Map loadStatistics() { + + Map result = new HashMap(); + try { + File loadadv = new File("/proc/loadavg"); + if (loadadv.exists()) { + Reader reader = new FileReader(loadadv); + int c; + StringBuilder content = new StringBuilder(); + while ((c = reader.read()) != -1) + content.append((char) c); + reader.close(); + Pattern p = Pattern.compile("^(.*?)\\s{1}(.*?)\\s{1}(.*?)\\s{1}(.*)$"); + Matcher matcher = p.matcher(content.toString()); + if ((matcher.matches()) && (matcher.groupCount() > 3)) { + result.put("1min", new Double(matcher.group(1))); + result.put("5mins", new Double(matcher.group(2))); + result.put("15mins", new Double(matcher.group(3).split("\\s")[0])); + } + } + } catch (Exception ioe) { + log.warn("unable to detect the load values of this machine", ioe); + } + return result; + } + + @SuppressWarnings("all") + public Map memoryUsage() { + Map map = new HashMap(); + java.lang.management.OperatingSystemMXBean mxbean = java.lang.management.ManagementFactory + .getOperatingSystemMXBean(); + com.sun.management.OperatingSystemMXBean sunmxbean = (com.sun.management.OperatingSystemMXBean) mxbean; + long freeMemory = sunmxbean.getFreePhysicalMemorySize() / 1048576; // in MB + long availableMemory = sunmxbean.getTotalPhysicalMemorySize() / 1048576; // in MB + map.put("MemoryAvailable", freeMemory); + map.put("MemoryTotalSize", availableMemory); + long ramVirtualAvailable = Runtime.getRuntime().freeMemory() / 1048576; // in MB + long ramVirtualSize = Runtime.getRuntime().totalMemory() / 1048576; // in MB + map.put("VirtualAvailable", ramVirtualAvailable); + map.put("VirtualSize", ramVirtualSize); + return map; + } + + private String domainIn(String hostname) { + Pattern pattern = Pattern.compile("([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})"); + java.util.regex.Matcher regexMatcher = pattern.matcher(hostname); + if (regexMatcher.matches()) //it's an IP address, nothing to trim + return hostname; + String[] tokens = hostname.split("\\."); + if (tokens.length < 2) + return hostname; + else + return tokens[tokens.length-2]+ "." + tokens[tokens.length-1]; + } +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.java new file mode 100644 index 0000000..b7f3862 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.java @@ -0,0 +1,93 @@ +package org.gcube.common.core.publisher.is.legacy.container; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Luca Frosini (ISTI-CNR) + */ +public class LinuxDistributionInfo { + + private static final Logger logger = LoggerFactory.getLogger(LinuxDistributionInfo.class); + + public static final String LSB_RELEASE_COMMAND = "lsb_release -a"; + public static final String OS_RELEASE_FILE_PATH = "/etc/os-release"; + + protected Map info; + + protected Map getInfoViaLsbReleaseCommand() throws IOException { + logger.trace("Going to exec {}", LSB_RELEASE_COMMAND); + Process process = Runtime.getRuntime().exec(LSB_RELEASE_COMMAND); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); + Map map = parseBufferedReader(bufferedReader); + bufferedReader.close(); + return map; + } + + private Map parseBufferedReader(BufferedReader bufferedReader) throws IOException { + Map map = new HashMap<>(); + String line = ""; + while ((line = bufferedReader.readLine()) != null) { + String[] nameValue = parseLine(line); + map.put(nameValue[0], nameValue[1]); + } + return map; + } + + private String[] parseLine(String line) { + String[] splitted = line.split("="); + if (splitted.length < 2) { + splitted = line.split(":"); + } + String[] ret = new String[2]; + ret[0] = splitted[0].trim(); + ret[1] = splitted[1].trim().replace("\"", ""); + return ret; + } + + private Map getInfoViaFile(File file) throws IOException { + logger.trace("Going to read file {}", file.getAbsolutePath()); + BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); + Map map = parseBufferedReader(bufferedReader); + bufferedReader.close(); + return map; + + } + + protected Map getInfoViaOsReleaseFile() throws IOException { + File osReleaseFile = new File(OS_RELEASE_FILE_PATH); + return getInfoViaFile(osReleaseFile); + } + + private Map retriveInfo() { + try { + return getInfoViaLsbReleaseCommand(); + } catch (IOException e) { + + } + + try { + return getInfoViaOsReleaseFile(); + }catch (IOException e) { + + } + + return null; + } + + public Map getInfo() { + if (info == null) { + info = retriveInfo(); + } + return info; + } + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.java new file mode 100644 index 0000000..9721dcd --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.java @@ -0,0 +1,35 @@ +package org.gcube.common.core.publisher.is.legacy.stubs; + +import static org.gcube.common.clients.stubs.jaxws.GCoreServiceBuilder.*; + +import javax.xml.namespace.QName; + +import org.gcube.common.clients.stubs.jaxws.GCoreService; + +/** + * Stub-related constants. + * + * @author Fabio Simeoni + * + */ +public class RegistryConstants { + + //public constants + public static final String namespace = "http://gcube-system.org/namespaces/informationsystem/registry/resourceregistration/service"; + public static final String localname = "ResourceRegistrationService"; + public static final QName name = new QName(namespace,localname); + + public static String service_class="InformationSystem"; + public static String service_name="IS-Registry"; + public static String service_entrypoint="gcube/informationsystem/registry/ResourceRegistration"; + + //package-private constants for JAXWS interface annotations + static final String target_namespace = "http://gcube-system.org/namespaces/informationsystem/registry/resourceregistration"; + static final String portType = "ResourceRegistrationPortType"; + static final String port = "ResourceRegistrationPortTypePort"; + + public final static GCoreService registry = service().withName(name). + coordinates(service_class, service_name). + andInterface(RegistryStub.class); + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.java new file mode 100644 index 0000000..b7c3a38 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.java @@ -0,0 +1,66 @@ +package org.gcube.common.core.publisher.is.legacy.stubs; + +import static org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants.*; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebResult; +import javax.jws.WebService; + +import org.gcube.common.core.publisher.is.legacy.stubs.fault.CreateException; +import org.gcube.common.core.publisher.is.legacy.stubs.fault.InvalidResourceException; +import org.gcube.common.core.publisher.is.legacy.stubs.fault.RemoveException; +import org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceDoesNotExistException; +import org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceNotAcceptedException; +import org.gcube.common.core.publisher.is.legacy.stubs.fault.UpdateException; + +/** + * A local interface to the resource discovery service. + * + * + */ +@WebService(name=portType,targetNamespace=target_namespace) +public interface RegistryStub { + + /** + * + * @param profile the profile in xml + * @param type the type of the resource to store + * + * @throws InvalidResourceException if the profile is not valid + * @throws ResourceNotAcceptedException if some filter is applied registry side + * @throws CreateException if something goes wrong on creation + */ + @WebMethod(operationName="create") + @WebResult() + void create(@WebParam(name="profile") String profile, @WebParam(name="type") String type ) throws InvalidResourceException, + ResourceNotAcceptedException, CreateException; + /** + * + * @param id the id of the resource to update + * @param type the type of the resource to update + * @param profile the profile in xml + * + * @throws InvalidResourceException if the profile is not valid + * @throws ResourceNotAcceptedException if some filter is applied registry side + * @throws UpdateException if something goes wrong on update + */ + @WebMethod(operationName="update") + @WebResult() + void update(@WebParam(name="uniqueID") String id, @WebParam(name="type") String type, @WebParam(name="xmlProfile") String profile ) throws InvalidResourceException, + ResourceNotAcceptedException, UpdateException; + /** + * + * @param id the id of the resource to remove + * @param type the type of the resource to remove + * + * @throws ResourceDoesNotExistException if the resource is not stored on the Collector + * @throws RemoveException if something goes wrong during deletion + */ + @WebMethod(operationName="remove") + @WebResult() + void remove(@WebParam(name="uniqueID") String id, @WebParam(name="type") String type) throws ResourceDoesNotExistException, + RemoveException; + + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.java new file mode 100644 index 0000000..4c1c921 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.java @@ -0,0 +1,27 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + + +import javax.xml.ws.WebFault; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; + +/** + * Thrown by {@link RegistryStub#create(String, String)} when something is failed on creation + */ +@WebFault(name = "CreateFault") +public class CreateException extends PublisherException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Creates an instance with a given message and an {@link AxisFaultInfo} payload + * @param message the message + * @param info the payload + */ + public CreateException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.java new file mode 100644 index 0000000..089ea07 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.java @@ -0,0 +1,32 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + +import javax.xml.ws.WebFault; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; + +/** + * Thrown by {@link RegistryStub#create(String, String)} when the resource type is invalid + * service. + */ +@WebFault(name = "InvalidResourceFault") +public class InvalidResourceException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Creates an instance with a given message and an {@link AxisFaultInfo} payload + * @param message the message + * @param info the payload + */ + public InvalidResourceException(String message) { + super(message); + } + + public InvalidResourceException(Exception e1) { + super(e1); + } +} + diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.java new file mode 100644 index 0000000..86ac59f --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.java @@ -0,0 +1,32 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + +public abstract class PublisherException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public PublisherException() { + super(); + // TODO Auto-generated constructor stub + } + + public PublisherException(String arg0, Throwable arg1) { + super(arg0, arg1); + // TODO Auto-generated constructor stub + } + + public PublisherException(String arg0) { + super(arg0); + // TODO Auto-generated constructor stub + } + + public PublisherException(Throwable arg0) { + super(arg0); + // TODO Auto-generated constructor stub + } + + + +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.java new file mode 100644 index 0000000..c058190 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.java @@ -0,0 +1,26 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + +import javax.xml.ws.WebFault; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; + +/** + * Thrown by {@link RegistryStub#remove(String, String)} when something is failed on remove + */ +@WebFault(name = "RemoveFault") +public class RemoveException extends PublisherException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Creates an instance with a given message and an {@link AxisFaultInfo} payload + * @param message the message + * @param info the payload + */ + public RemoveException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.java new file mode 100644 index 0000000..b598ff8 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.java @@ -0,0 +1,26 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + +import javax.xml.ws.WebFault; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; + +/** + * Thrown by {@link RegistryStub#remove(String, String)} when the resource does not exist in the collector + */ +@WebFault(name = "ResourceDoesNotExistFault") +public class ResourceDoesNotExistException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Creates an instance with a given message and an {@link AxisFaultInfo} payload + * @param message the message + * @param info the payload + */ + public ResourceDoesNotExistException(String message) { + super(message); + } +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.java new file mode 100644 index 0000000..9ee2899 --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.java @@ -0,0 +1,28 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + + + +import javax.xml.ws.WebFault; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; + +/** + * Thrown by {@link RegistryStub#create(String, String)} when the resource is not accepted cause it doesn't satisfy a requirement + */ +@WebFault(name = "ResourceNotAcceptedFault") +public class ResourceNotAcceptedException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Creates an instance with a given message and an {@link AxisFaultInfo} payload + * @param message the message + * @param info the payload + */ + public ResourceNotAcceptedException(String message) { + super(message); + } +} diff --git a/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.java b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.java new file mode 100644 index 0000000..40989ac --- /dev/null +++ b/src/main/java/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.java @@ -0,0 +1,27 @@ +package org.gcube.common.core.publisher.is.legacy.stubs.fault; + + +import javax.xml.ws.WebFault; + +import org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub; + +/** + * Thrown by {@link RegistryStub#update(String, String)} when something is failed on update + */ +@WebFault(name = "UpdateFault") +public class UpdateException extends PublisherException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Creates an instance with a given message and an {@link AxisFaultInfo} payload + * @param message the message + * @param info the payload + */ + public UpdateException(String message) { + super(message); + } +} diff --git a/src/main/java/org/gcube/common/resources/gcore/ResourceMediator.java b/src/main/java/org/gcube/common/resources/gcore/ResourceMediator.java new file mode 100644 index 0000000..d306766 --- /dev/null +++ b/src/main/java/org/gcube/common/resources/gcore/ResourceMediator.java @@ -0,0 +1,43 @@ +package org.gcube.common.resources.gcore; + + +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ResourceMediator { + + private static final Logger log = LoggerFactory.getLogger(ResourceMediator.class); + + public static void setId(Resource resource, String id) { + resource.setId(id); + log.debug(id+"new id resource: "+resource.id()); + } + + public static void setScope(Resource resource, String scope){ + resource.scopes().add(scope); + } + public static void removeScope(Resource resource, String scope){ + resource.scopes().remove(scope); + } + + public static Resource cleanAllScopes(Resource resource){ + log.debug("removing scopes from resource: "+resource.id()); + List toRemove= new ArrayList(); + int count=0; + for (String scope :resource.scopes()){ + System.out.println("found scope "+scope+" "); + toRemove.add(scope); + + } + for(String scope: toRemove){ + log.debug("removing scope "+scope+" "); + resource.removeScope(scope); + count++; + } + log.debug("removed "+count+" scopes"); + return resource; + } +} diff --git a/target/antrun/build-printOutputDirectories.xml b/target/antrun/build-printOutputDirectories.xml new file mode 100644 index 0000000..9976ea5 --- /dev/null +++ b/target/antrun/build-printOutputDirectories.xml @@ -0,0 +1,8 @@ + + + + ******** Displaying value of *.outputDirectory properties ******** + project.metainf.outputDirectory=${project.metainf.outputDirectory} + project.webinf.outputDirectory=${project.webinf.outputDirectory} + + diff --git a/target/antrun/build-seOuttputDirectories.xml b/target/antrun/build-seOuttputDirectories.xml new file mode 100644 index 0000000..efbfe80 --- /dev/null +++ b/target/antrun/build-seOuttputDirectories.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/target/apidocs/allclasses-frame.html b/target/apidocs/allclasses-frame.html new file mode 100644 index 0000000..1785c55 --- /dev/null +++ b/target/apidocs/allclasses-frame.html @@ -0,0 +1,36 @@ + + + + + + +All Classes (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

All Classes

+ + + diff --git a/target/apidocs/allclasses-noframe.html b/target/apidocs/allclasses-noframe.html new file mode 100644 index 0000000..c03d0c6 --- /dev/null +++ b/target/apidocs/allclasses-noframe.html @@ -0,0 +1,36 @@ + + + + + + +All Classes (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

All Classes

+ + + diff --git a/target/apidocs/constant-values.html b/target/apidocs/constant-values.html new file mode 100644 index 0000000..fc2f350 --- /dev/null +++ b/target/apidocs/constant-values.html @@ -0,0 +1,190 @@ + + + + + + +Constant Field Values (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.gcube.*

+ +
    +
  • + + + + + + + + + + + + + + + + + + + +
    org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants 
    Modifier and TypeConstant FieldValue
    + +public static final Stringlocalname"ResourceRegistrationService"
    + +public static final Stringnamespace"http://gcube-system.org/namespaces/informationsystem/registry/resourceregistration/service"
    +
  • +
+
+ +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/deprecated-list.html b/target/apidocs/deprecated-list.html new file mode 100644 index 0000000..a6d1d3a --- /dev/null +++ b/target/apidocs/deprecated-list.html @@ -0,0 +1,126 @@ + + + + + + +Deprecated List (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/help-doc.html b/target/apidocs/help-doc.html new file mode 100644 index 0000000..5cfb301 --- /dev/null +++ b/target/apidocs/help-doc.html @@ -0,0 +1,231 @@ + + + + + + +API Help (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/index-all.html b/target/apidocs/index-all.html new file mode 100644 index 0000000..9e69e3b --- /dev/null +++ b/target/apidocs/index-all.html @@ -0,0 +1,390 @@ + + + + + + +Index (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
A C G I L M N O P R S U  + + +

A

+
+
ApplicationProfileBuilder - Class in org.gcube.common.core.publisher.is.legacy.application
+
 
+
ApplicationProfileBuilder(ApplicationContext) - Constructor for class org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder
+
 
+
+ + + +

C

+
+
cleanAllScopes(Resource) - Static method in class org.gcube.common.resources.gcore.ResourceMediator
+
 
+
ContainerProfileBuilder - Class in org.gcube.common.core.publisher.is.legacy.container
+
 
+
ContainerProfileBuilder(ContainerContext) - Constructor for class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+
 
+
create() - Method in class org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder
+
 
+
create() - Method in class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+
 
+
create(String, String) - Method in interface org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub
+
 
+
CreateException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
+
Thrown by RegistryStub.create(String, String) when something is failed on creation
+
+
CreateException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.CreateException
+
+
Creates an instance with a given message and an AxisFaultInfo payload
+
+
+ + + +

G

+
+
get(String) - Method in class org.gcube.common.core.publisher.is.legacy.RegistryCache
+
 
+
getAccessCount() - Method in class org.gcube.common.core.publisher.is.legacy.RegistryCache
+
 
+
getEndPoints() - Method in class org.gcube.common.core.publisher.is.legacy.Registry
+
 
+
getHitCount() - Method in class org.gcube.common.core.publisher.is.legacy.RegistryCache
+
 
+
getInfo() - Method in class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
getInfoViaLsbReleaseCommand() - Method in class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
getInfoViaOsReleaseFile() - Method in class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
getStubs() - Method in class org.gcube.common.core.publisher.is.legacy.Registry
+
 
+
getStubs(URI) - Method in class org.gcube.common.core.publisher.is.legacy.Registry
+
 
+
+ + + +

I

+
+
info - Variable in class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
InvalidResourceException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
+
Thrown by RegistryStub.create(String, String) when the resource type is invalid + service.
+
+
InvalidResourceException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.InvalidResourceException
+
+
Creates an instance with a given message and an AxisFaultInfo payload
+
+
InvalidResourceException(Exception) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.InvalidResourceException
+
 
+
+ + + +

L

+
+
LegacyISPublisher - Class in org.gcube.common.core.publisher.is.legacy
+
 
+
LegacyISPublisher() - Constructor for class org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
+
 
+
LinuxDistributionInfo - Class in org.gcube.common.core.publisher.is.legacy.container
+
 
+
LinuxDistributionInfo() - Constructor for class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
loadStatistics() - Method in class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+
 
+
localname - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
LSB_RELEASE_COMMAND - Static variable in class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
+ + + +

M

+
+
memoryUsage() - Method in class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+
 
+
+ + + +

N

+
+
name - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
namespace - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
+ + + +

O

+
+
org.gcube.common.core.publisher.is.legacy - package org.gcube.common.core.publisher.is.legacy
+
 
+
org.gcube.common.core.publisher.is.legacy.application - package org.gcube.common.core.publisher.is.legacy.application
+
 
+
org.gcube.common.core.publisher.is.legacy.container - package org.gcube.common.core.publisher.is.legacy.container
+
 
+
org.gcube.common.core.publisher.is.legacy.stubs - package org.gcube.common.core.publisher.is.legacy.stubs
+
 
+
org.gcube.common.core.publisher.is.legacy.stubs.fault - package org.gcube.common.core.publisher.is.legacy.stubs.fault
+
 
+
org.gcube.common.resources.gcore - package org.gcube.common.resources.gcore
+
 
+
OS_RELEASE_FILE_PATH - Static variable in class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+
 
+
+ + + +

P

+
+
publishApplication(ApplicationContext, Set<String>) - Method in class org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
+
 
+
publishContainer(ContainerContext, Set<String>) - Method in class org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
+
 
+
PublisherException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
 
+
PublisherException() - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.PublisherException
+
 
+
PublisherException(String, Throwable) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.PublisherException
+
 
+
PublisherException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.PublisherException
+
 
+
PublisherException(Throwable) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.PublisherException
+
 
+
+ + + +

R

+
+
Registry - Class in org.gcube.common.core.publisher.is.legacy
+
 
+
Registry() - Constructor for class org.gcube.common.core.publisher.is.legacy.Registry
+
 
+
registry - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
RegistryCache - Class in org.gcube.common.core.publisher.is.legacy
+
 
+
RegistryCache(int) - Constructor for class org.gcube.common.core.publisher.is.legacy.RegistryCache
+
 
+
RegistryConstants - Class in org.gcube.common.core.publisher.is.legacy.stubs
+
+
Stub-related constants.
+
+
RegistryConstants() - Constructor for class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
RegistryNotFoundException - Exception in org.gcube.common.core.publisher.is.legacy
+
 
+
RegistryNotFoundException() - Constructor for exception org.gcube.common.core.publisher.is.legacy.RegistryNotFoundException
+
 
+
RegistryNotFoundException(String, Throwable) - Constructor for exception org.gcube.common.core.publisher.is.legacy.RegistryNotFoundException
+
 
+
RegistryNotFoundException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.RegistryNotFoundException
+
 
+
RegistryNotFoundException(Throwable) - Constructor for exception org.gcube.common.core.publisher.is.legacy.RegistryNotFoundException
+
 
+
RegistryStub - Interface in org.gcube.common.core.publisher.is.legacy.stubs
+
+
A local interface to the resource discovery service.
+
+
remove(String, String) - Method in interface org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub
+
 
+
removeEldestEntry(Map.Entry) - Method in class org.gcube.common.core.publisher.is.legacy.RegistryCache
+
 
+
RemoveException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
+
Thrown by RegistryStub.remove(String, String) when something is failed on remove
+
+
RemoveException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.RemoveException
+
+
Creates an instance with a given message and an AxisFaultInfo payload
+
+
removeScope(Resource, String) - Static method in class org.gcube.common.resources.gcore.ResourceMediator
+
 
+
ResourceDoesNotExistException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
+
Thrown by RegistryStub.remove(String, String) when the resource does not exist in the collector
+
+
ResourceDoesNotExistException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceDoesNotExistException
+
+
Creates an instance with a given message and an AxisFaultInfo payload
+
+
ResourceMediator - Class in org.gcube.common.resources.gcore
+
 
+
ResourceMediator() - Constructor for class org.gcube.common.resources.gcore.ResourceMediator
+
 
+
ResourceNotAcceptedException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
+
Thrown by RegistryStub.create(String, String) when the resource is not accepted cause it doesn't satisfy a requirement
+
+
ResourceNotAcceptedException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceNotAcceptedException
+
+
Creates an instance with a given message and an AxisFaultInfo payload
+
+
+ + + +

S

+
+
service_class - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
service_entrypoint - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
service_name - Static variable in class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+
 
+
setId(Resource, String) - Static method in class org.gcube.common.resources.gcore.ResourceMediator
+
 
+
setScope(Resource, String) - Static method in class org.gcube.common.resources.gcore.ResourceMediator
+
 
+
+ + + +

U

+
+
unpublishApplication(ApplicationContext, Set<String>) - Method in class org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
+
 
+
unpublishContainer(ContainerContext, Set<String>) - Method in class org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
+
 
+
update(HostingNode, boolean) - Method in class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+
 
+
update(String, String, String) - Method in interface org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub
+
 
+
UpdateException - Exception in org.gcube.common.core.publisher.is.legacy.stubs.fault
+
+
Thrown by RegistryStub#update(String, String) when something is failed on update
+
+
UpdateException(String) - Constructor for exception org.gcube.common.core.publisher.is.legacy.stubs.fault.UpdateException
+
+
Creates an instance with a given message and an AxisFaultInfo payload
+
+
uptime() - Method in class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+
 
+
+A C G I L M N O P R S U 
+ +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/index.html b/target/apidocs/index.html new file mode 100644 index 0000000..bbae2ed --- /dev/null +++ b/target/apidocs/index.html @@ -0,0 +1,76 @@ + + + + + + +Legacy is publisher 1.0.0-SNAPSHOT API + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.html new file mode 100644 index 0000000..25b7136 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher.html @@ -0,0 +1,341 @@ + + + + + + +LegacyISPublisher (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy
+

Class LegacyISPublisher

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    org.gcube.smartgears.publishing.Publisher
    +
    +
    +
    +
    public class LegacyISPublisher
    +extends Object
    +implements org.gcube.smartgears.publishing.Publisher
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        LegacyISPublisher

        +
        public LegacyISPublisher()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        publishContainer

        +
        public boolean publishContainer(org.gcube.smartgears.context.container.ContainerContext container,
        +                                Set<String> contexts)
        +
        +
        Specified by:
        +
        publishContainer in interface org.gcube.smartgears.publishing.Publisher
        +
        +
      • +
      + + + +
        +
      • +

        publishApplication

        +
        public boolean publishApplication(org.gcube.smartgears.context.application.ApplicationContext application,
        +                                  Set<String> contexts)
        +
        +
        Specified by:
        +
        publishApplication in interface org.gcube.smartgears.publishing.Publisher
        +
        +
      • +
      + + + +
        +
      • +

        unpublishContainer

        +
        public boolean unpublishContainer(org.gcube.smartgears.context.container.ContainerContext container,
        +                                  Set<String> contexts)
        +
        +
        Specified by:
        +
        unpublishContainer in interface org.gcube.smartgears.publishing.Publisher
        +
        +
      • +
      + + + +
        +
      • +

        unpublishApplication

        +
        public boolean unpublishApplication(org.gcube.smartgears.context.application.ApplicationContext application,
        +                                    Set<String> contexts)
        +
        +
        Specified by:
        +
        unpublishApplication in interface org.gcube.smartgears.publishing.Publisher
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/Registry.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/Registry.html new file mode 100644 index 0000000..8fda7ab --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/Registry.html @@ -0,0 +1,309 @@ + + + + + + +Registry (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy
+

Class Registry

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.gcube.common.core.publisher.is.legacy.Registry
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Registry
    +extends Object
    +
  • +
+
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryCache.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryCache.html new file mode 100644 index 0000000..f12d8ef --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryCache.html @@ -0,0 +1,382 @@ + + + + + + +RegistryCache (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy
+

Class RegistryCache

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RegistryCache

        +
        public RegistryCache(int capacity)
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.html new file mode 100644 index 0000000..16c08ea --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/RegistryNotFoundException.html @@ -0,0 +1,302 @@ + + + + + + +RegistryNotFoundException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy
+

Class RegistryNotFoundException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RegistryNotFoundException

        +
        public RegistryNotFoundException()
        +
      • +
      + + + +
        +
      • +

        RegistryNotFoundException

        +
        public RegistryNotFoundException(String arg0,
        +                                 Throwable arg1)
        +
      • +
      + + + +
        +
      • +

        RegistryNotFoundException

        +
        public RegistryNotFoundException(String arg0)
        +
      • +
      + + + +
        +
      • +

        RegistryNotFoundException

        +
        public RegistryNotFoundException(Throwable arg0)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.html new file mode 100644 index 0000000..92522de --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.html @@ -0,0 +1,273 @@ + + + + + + +ApplicationProfileBuilder (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.application
+

Class ApplicationProfileBuilder

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ApplicationProfileBuilder
    +extends Object
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ApplicationProfileBuilder

        +
        public ApplicationProfileBuilder(org.gcube.smartgears.context.application.ApplicationContext context)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        create

        +
        public org.gcube.common.resources.gcore.GCoreEndpoint create()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/class-use/ApplicationProfileBuilder.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/class-use/ApplicationProfileBuilder.html new file mode 100644 index 0000000..a5b11bd --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/class-use/ApplicationProfileBuilder.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder

+
+
No usage of org.gcube.common.core.publisher.is.legacy.application.ApplicationProfileBuilder
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-frame.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-frame.html new file mode 100644 index 0000000..7396d48 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.application (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

org.gcube.common.core.publisher.is.legacy.application

+
+

Classes

+ +
+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-summary.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-summary.html new file mode 100644 index 0000000..dba3b82 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-summary.html @@ -0,0 +1,144 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.application (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Package org.gcube.common.core.publisher.is.legacy.application

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-tree.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-tree.html new file mode 100644 index 0000000..0d197bf --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-tree.html @@ -0,0 +1,139 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.application Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Hierarchy For Package org.gcube.common.core.publisher.is.legacy.application

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-use.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-use.html new file mode 100644 index 0000000..612b977 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/application/package-use.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Package org.gcube.common.core.publisher.is.legacy.application (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Package
org.gcube.common.core.publisher.is.legacy.application

+
+
No usage of org.gcube.common.core.publisher.is.legacy.application
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/LegacyISPublisher.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/LegacyISPublisher.html new file mode 100644 index 0000000..91e3ca2 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/LegacyISPublisher.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.LegacyISPublisher (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.LegacyISPublisher

+
+
No usage of org.gcube.common.core.publisher.is.legacy.LegacyISPublisher
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/Registry.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/Registry.html new file mode 100644 index 0000000..c0eaee4 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/Registry.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.Registry (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.Registry

+
+
No usage of org.gcube.common.core.publisher.is.legacy.Registry
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryCache.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryCache.html new file mode 100644 index 0000000..c37a1d9 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryCache.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.RegistryCache (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.RegistryCache

+
+
No usage of org.gcube.common.core.publisher.is.legacy.RegistryCache
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryNotFoundException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryNotFoundException.html new file mode 100644 index 0000000..af83093 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/class-use/RegistryNotFoundException.html @@ -0,0 +1,170 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.RegistryNotFoundException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.RegistryNotFoundException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.html new file mode 100644 index 0000000..5caad11 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.html @@ -0,0 +1,331 @@ + + + + + + +ContainerProfileBuilder (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.container
+

Class ContainerProfileBuilder

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ContainerProfileBuilder
    +extends Object
    +
    +
    Author:
    +
    Fabio Simeoni, Luca Frosini (ISTI - CNR)
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ContainerProfileBuilder

        +
        public ContainerProfileBuilder(org.gcube.smartgears.context.container.ContainerContext context)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        create

        +
        public org.gcube.common.resources.gcore.HostingNode create()
        +
      • +
      + + + +
        +
      • +

        update

        +
        public void update(org.gcube.common.resources.gcore.HostingNode node,
        +                   boolean onLoad)
        +
      • +
      + + + +
        +
      • +

        uptime

        +
        public String uptime()
        +
      • +
      + + + + + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.html new file mode 100644 index 0000000..a28ea5d --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.html @@ -0,0 +1,383 @@ + + + + + + +LinuxDistributionInfo (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.container
+

Class LinuxDistributionInfo

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class LinuxDistributionInfo
    +extends Object
    +
    +
    Author:
    +
    Luca Frosini (ISTI-CNR)
    +
    +
  • +
+
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/ContainerProfileBuilder.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/ContainerProfileBuilder.html new file mode 100644 index 0000000..c81299c --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/ContainerProfileBuilder.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder

+
+
No usage of org.gcube.common.core.publisher.is.legacy.container.ContainerProfileBuilder
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/LinuxDistributionInfo.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/LinuxDistributionInfo.html new file mode 100644 index 0000000..8eadfb1 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/class-use/LinuxDistributionInfo.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo

+
+
No usage of org.gcube.common.core.publisher.is.legacy.container.LinuxDistributionInfo
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-frame.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-frame.html new file mode 100644 index 0000000..adbca81 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-frame.html @@ -0,0 +1,22 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.container (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

org.gcube.common.core.publisher.is.legacy.container

+ + + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-summary.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-summary.html new file mode 100644 index 0000000..12512df --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-summary.html @@ -0,0 +1,148 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.container (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Package org.gcube.common.core.publisher.is.legacy.container

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-tree.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-tree.html new file mode 100644 index 0000000..e5de5b4 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-tree.html @@ -0,0 +1,140 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.container Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Hierarchy For Package org.gcube.common.core.publisher.is.legacy.container

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-use.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-use.html new file mode 100644 index 0000000..fcc79a0 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/container/package-use.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Package org.gcube.common.core.publisher.is.legacy.container (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Package
org.gcube.common.core.publisher.is.legacy.container

+
+
No usage of org.gcube.common.core.publisher.is.legacy.container
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-frame.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-frame.html new file mode 100644 index 0000000..50a6865 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-frame.html @@ -0,0 +1,27 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

org.gcube.common.core.publisher.is.legacy

+ + + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-summary.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-summary.html new file mode 100644 index 0000000..c6b22e3 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-summary.html @@ -0,0 +1,167 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Package org.gcube.common.core.publisher.is.legacy

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-tree.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-tree.html new file mode 100644 index 0000000..00e2830 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-tree.html @@ -0,0 +1,162 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Hierarchy For Package org.gcube.common.core.publisher.is.legacy

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-use.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-use.html new file mode 100644 index 0000000..a858a1d --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/package-use.html @@ -0,0 +1,159 @@ + + + + + + +Uses of Package org.gcube.common.core.publisher.is.legacy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Package
org.gcube.common.core.publisher.is.legacy

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.html new file mode 100644 index 0000000..cb1a466 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.html @@ -0,0 +1,366 @@ + + + + + + +RegistryConstants (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs
+

Class RegistryConstants

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class RegistryConstants
    +extends Object
    +
    Stub-related constants.
    +
    +
    Author:
    +
    Fabio Simeoni
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + + + + + +
        +
      • +

        name

        +
        public static final QName name
        +
      • +
      + + + +
        +
      • +

        service_class

        +
        public static String service_class
        +
      • +
      + + + +
        +
      • +

        service_name

        +
        public static String service_name
        +
      • +
      + + + +
        +
      • +

        service_entrypoint

        +
        public static String service_entrypoint
        +
      • +
      + + + +
        +
      • +

        registry

        +
        public static final org.gcube.common.clients.stubs.jaxws.GCoreService<RegistryStub> registry
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RegistryConstants

        +
        public RegistryConstants()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.html new file mode 100644 index 0000000..9b6526d --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.html @@ -0,0 +1,293 @@ + + + + + + +RegistryStub (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs
+

Interface RegistryStub

+
+
+
+
    +
  • +
    +
    +
    public interface RegistryStub
    +
    A local interface to the resource discovery service.
    +
  • +
+
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryConstants.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryConstants.html new file mode 100644 index 0000000..6f42b9a --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryConstants.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants

+
+
No usage of org.gcube.common.core.publisher.is.legacy.stubs.RegistryConstants
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryStub.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryStub.html new file mode 100644 index 0000000..38773b5 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/class-use/RegistryStub.html @@ -0,0 +1,192 @@ + + + + + + +Uses of Interface org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Interface
org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.html new file mode 100644 index 0000000..43e9f6b --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/CreateException.html @@ -0,0 +1,284 @@ + + + + + + +CreateException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class CreateException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CreateException

        +
        public CreateException(String message)
        +
        Creates an instance with a given message and an AxisFaultInfo payload
        +
        +
        Parameters:
        +
        message - the message
        +
        info - the payload
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.html new file mode 100644 index 0000000..6d0a226 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/InvalidResourceException.html @@ -0,0 +1,292 @@ + + + + + + +InvalidResourceException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class InvalidResourceException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        InvalidResourceException

        +
        public InvalidResourceException(String message)
        +
        Creates an instance with a given message and an AxisFaultInfo payload
        +
        +
        Parameters:
        +
        message - the message
        +
        info - the payload
        +
        +
      • +
      + + + +
        +
      • +

        InvalidResourceException

        +
        public InvalidResourceException(Exception e1)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.html new file mode 100644 index 0000000..18d45d3 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.html @@ -0,0 +1,311 @@ + + + + + + +PublisherException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class PublisherException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PublisherException

        +
        public PublisherException()
        +
      • +
      + + + +
        +
      • +

        PublisherException

        +
        public PublisherException(String arg0,
        +                          Throwable arg1)
        +
      • +
      + + + +
        +
      • +

        PublisherException

        +
        public PublisherException(String arg0)
        +
      • +
      + + + +
        +
      • +

        PublisherException

        +
        public PublisherException(Throwable arg0)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.html new file mode 100644 index 0000000..7be3a3b --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.html @@ -0,0 +1,284 @@ + + + + + + +RemoveException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class RemoveException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RemoveException

        +
        public RemoveException(String message)
        +
        Creates an instance with a given message and an AxisFaultInfo payload
        +
        +
        Parameters:
        +
        message - the message
        +
        info - the payload
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.html new file mode 100644 index 0000000..d7cb432 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceDoesNotExistException.html @@ -0,0 +1,279 @@ + + + + + + +ResourceDoesNotExistException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class ResourceDoesNotExistException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ResourceDoesNotExistException

        +
        public ResourceDoesNotExistException(String message)
        +
        Creates an instance with a given message and an AxisFaultInfo payload
        +
        +
        Parameters:
        +
        message - the message
        +
        info - the payload
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.html new file mode 100644 index 0000000..3dcde76 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.html @@ -0,0 +1,279 @@ + + + + + + +ResourceNotAcceptedException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class ResourceNotAcceptedException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ResourceNotAcceptedException

        +
        public ResourceNotAcceptedException(String message)
        +
        Creates an instance with a given message and an AxisFaultInfo payload
        +
        +
        Parameters:
        +
        message - the message
        +
        info - the payload
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.html new file mode 100644 index 0000000..5f6cebf --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.html @@ -0,0 +1,284 @@ + + + + + + +UpdateException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.core.publisher.is.legacy.stubs.fault
+

Class UpdateException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        UpdateException

        +
        public UpdateException(String message)
        +
        Creates an instance with a given message and an AxisFaultInfo payload
        +
        +
        Parameters:
        +
        message - the message
        +
        info - the payload
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/CreateException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/CreateException.html new file mode 100644 index 0000000..5fb7b5d --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/CreateException.html @@ -0,0 +1,167 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.CreateException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.CreateException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/InvalidResourceException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/InvalidResourceException.html new file mode 100644 index 0000000..c38d941 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/InvalidResourceException.html @@ -0,0 +1,173 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.InvalidResourceException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.InvalidResourceException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/PublisherException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/PublisherException.html new file mode 100644 index 0000000..0ade7f8 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/PublisherException.html @@ -0,0 +1,180 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.PublisherException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.PublisherException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/RemoveException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/RemoveException.html new file mode 100644 index 0000000..5d40a1d --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/RemoveException.html @@ -0,0 +1,167 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.RemoveException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.RemoveException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceDoesNotExistException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceDoesNotExistException.html new file mode 100644 index 0000000..c3a3033 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceDoesNotExistException.html @@ -0,0 +1,167 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceDoesNotExistException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceDoesNotExistException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceNotAcceptedException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceNotAcceptedException.html new file mode 100644 index 0000000..1481d04 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/ResourceNotAcceptedException.html @@ -0,0 +1,173 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceNotAcceptedException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.ResourceNotAcceptedException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/UpdateException.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/UpdateException.html new file mode 100644 index 0000000..2b27197 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/class-use/UpdateException.html @@ -0,0 +1,168 @@ + + + + + + +Uses of Class org.gcube.common.core.publisher.is.legacy.stubs.fault.UpdateException (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.core.publisher.is.legacy.stubs.fault.UpdateException

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-frame.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-frame.html new file mode 100644 index 0000000..cb4e40b --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-frame.html @@ -0,0 +1,27 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.stubs.fault (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

org.gcube.common.core.publisher.is.legacy.stubs.fault

+ + + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-summary.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-summary.html new file mode 100644 index 0000000..83e42d2 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-summary.html @@ -0,0 +1,181 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.stubs.fault (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Package org.gcube.common.core.publisher.is.legacy.stubs.fault

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-tree.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-tree.html new file mode 100644 index 0000000..cad0c30 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-tree.html @@ -0,0 +1,160 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.stubs.fault Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Hierarchy For Package org.gcube.common.core.publisher.is.legacy.stubs.fault

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-use.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-use.html new file mode 100644 index 0000000..92a48ee --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/fault/package-use.html @@ -0,0 +1,206 @@ + + + + + + +Uses of Package org.gcube.common.core.publisher.is.legacy.stubs.fault (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Package
org.gcube.common.core.publisher.is.legacy.stubs.fault

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-frame.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-frame.html new file mode 100644 index 0000000..d8e79db --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-frame.html @@ -0,0 +1,25 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.stubs (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

org.gcube.common.core.publisher.is.legacy.stubs

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-summary.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-summary.html new file mode 100644 index 0000000..c8cf067 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-summary.html @@ -0,0 +1,163 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.stubs (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Package org.gcube.common.core.publisher.is.legacy.stubs

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    RegistryStub +
    A local interface to the resource discovery service.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    RegistryConstants +
    Stub-related constants.
    +
    +
  • +
+
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-tree.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-tree.html new file mode 100644 index 0000000..db8a440 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-tree.html @@ -0,0 +1,143 @@ + + + + + + +org.gcube.common.core.publisher.is.legacy.stubs Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Hierarchy For Package org.gcube.common.core.publisher.is.legacy.stubs

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+
    +
  • org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub
  • +
+
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-use.html b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-use.html new file mode 100644 index 0000000..1fdbfc3 --- /dev/null +++ b/target/apidocs/org/gcube/common/core/publisher/is/legacy/stubs/package-use.html @@ -0,0 +1,182 @@ + + + + + + +Uses of Package org.gcube.common.core.publisher.is.legacy.stubs (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Package
org.gcube.common.core.publisher.is.legacy.stubs

+
+
+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/resources/gcore/ResourceMediator.html b/target/apidocs/org/gcube/common/resources/gcore/ResourceMediator.html new file mode 100644 index 0000000..bb71460 --- /dev/null +++ b/target/apidocs/org/gcube/common/resources/gcore/ResourceMediator.html @@ -0,0 +1,318 @@ + + + + + + +ResourceMediator (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + + +
+
org.gcube.common.resources.gcore
+

Class ResourceMediator

+
+
+ +
+
    +
  • +
    +
    +
    public class ResourceMediator
    +extends Object
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ResourceMediator

        +
        public ResourceMediator()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setId

        +
        public static void setId(org.gcube.common.resources.gcore.Resource resource,
        +                         String id)
        +
      • +
      + + + +
        +
      • +

        setScope

        +
        public static void setScope(org.gcube.common.resources.gcore.Resource resource,
        +                            String scope)
        +
      • +
      + + + +
        +
      • +

        removeScope

        +
        public static void removeScope(org.gcube.common.resources.gcore.Resource resource,
        +                               String scope)
        +
      • +
      + + + +
        +
      • +

        cleanAllScopes

        +
        public static org.gcube.common.resources.gcore.Resource cleanAllScopes(org.gcube.common.resources.gcore.Resource resource)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/resources/gcore/class-use/ResourceMediator.html b/target/apidocs/org/gcube/common/resources/gcore/class-use/ResourceMediator.html new file mode 100644 index 0000000..314f16c --- /dev/null +++ b/target/apidocs/org/gcube/common/resources/gcore/class-use/ResourceMediator.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Class org.gcube.common.resources.gcore.ResourceMediator (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Class
org.gcube.common.resources.gcore.ResourceMediator

+
+
No usage of org.gcube.common.resources.gcore.ResourceMediator
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/resources/gcore/package-frame.html b/target/apidocs/org/gcube/common/resources/gcore/package-frame.html new file mode 100644 index 0000000..350574c --- /dev/null +++ b/target/apidocs/org/gcube/common/resources/gcore/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +org.gcube.common.resources.gcore (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + +

org.gcube.common.resources.gcore

+
+

Classes

+ +
+ + diff --git a/target/apidocs/org/gcube/common/resources/gcore/package-summary.html b/target/apidocs/org/gcube/common/resources/gcore/package-summary.html new file mode 100644 index 0000000..4da246f --- /dev/null +++ b/target/apidocs/org/gcube/common/resources/gcore/package-summary.html @@ -0,0 +1,144 @@ + + + + + + +org.gcube.common.resources.gcore (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Package org.gcube.common.resources.gcore

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    ResourceMediator 
    +
  • +
+
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/resources/gcore/package-tree.html b/target/apidocs/org/gcube/common/resources/gcore/package-tree.html new file mode 100644 index 0000000..0043213 --- /dev/null +++ b/target/apidocs/org/gcube/common/resources/gcore/package-tree.html @@ -0,0 +1,139 @@ + + + + + + +org.gcube.common.resources.gcore Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Hierarchy For Package org.gcube.common.resources.gcore

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/org/gcube/common/resources/gcore/package-use.html b/target/apidocs/org/gcube/common/resources/gcore/package-use.html new file mode 100644 index 0000000..67912a3 --- /dev/null +++ b/target/apidocs/org/gcube/common/resources/gcore/package-use.html @@ -0,0 +1,126 @@ + + + + + + +Uses of Package org.gcube.common.resources.gcore (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + + + + +
+

Uses of Package
org.gcube.common.resources.gcore

+
+
No usage of org.gcube.common.resources.gcore
+ + + + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/overview-frame.html b/target/apidocs/overview-frame.html new file mode 100644 index 0000000..58a9b05 --- /dev/null +++ b/target/apidocs/overview-frame.html @@ -0,0 +1,27 @@ + + + + + + +Overview List (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + +

 

+ + diff --git a/target/apidocs/overview-summary.html b/target/apidocs/overview-summary.html new file mode 100644 index 0000000..414c18e --- /dev/null +++ b/target/apidocs/overview-summary.html @@ -0,0 +1,160 @@ + + + + + + +Overview (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

Legacy is publisher 1.0.0-SNAPSHOT API

+
+ + +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/overview-tree.html b/target/apidocs/overview-tree.html new file mode 100644 index 0000000..d9a6d82 --- /dev/null +++ b/target/apidocs/overview-tree.html @@ -0,0 +1,190 @@ + + + + + + +Class Hierarchy (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+
    +
  • org.gcube.common.core.publisher.is.legacy.stubs.RegistryStub
  • +
+
+ +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/package-list b/target/apidocs/package-list new file mode 100644 index 0000000..58903c9 --- /dev/null +++ b/target/apidocs/package-list @@ -0,0 +1,6 @@ +org.gcube.common.core.publisher.is.legacy +org.gcube.common.core.publisher.is.legacy.application +org.gcube.common.core.publisher.is.legacy.container +org.gcube.common.core.publisher.is.legacy.stubs +org.gcube.common.core.publisher.is.legacy.stubs.fault +org.gcube.common.resources.gcore diff --git a/target/apidocs/script.js b/target/apidocs/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/target/apidocs/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/target/apidocs/serialized-form.html b/target/apidocs/serialized-form.html new file mode 100644 index 0000000..ce4c6cd --- /dev/null +++ b/target/apidocs/serialized-form.html @@ -0,0 +1,239 @@ + + + + + + +Serialized Form (Legacy is publisher 1.0.0-SNAPSHOT API) + + + + + + + + +
+ + + + + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + + + + + + +
+ + +

Copyright © 2022. All Rights Reserved.

+ + diff --git a/target/apidocs/stylesheet.css b/target/apidocs/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/target/apidocs/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/target/classes/META-INF/LICENSE.md b/target/classes/META-INF/LICENSE.md new file mode 100644 index 0000000..3af0507 --- /dev/null +++ b/target/classes/META-INF/LICENSE.md @@ -0,0 +1,312 @@ +# European Union Public Licence V. 1.1 + + +EUPL © the European Community 2007 + + +This European Union Public Licence (the “EUPL”) applies to the Work or Software +(as defined below) which is provided under the terms of this Licence. Any use of +the Work, other than as authorised under this Licence is prohibited (to the +extent such use is covered by a right of the copyright holder of the Work). + +The Original Work is provided under the terms of this Licence when the Licensor +(as defined below) has placed the following notice immediately following the +copyright notice for the Original Work: + +Licensed under the EUPL V.1.1 + +or has expressed by any other mean his willingness to license under the EUPL. + + + +## 1. Definitions + +In this Licence, the following terms have the following meaning: + +- The Licence: this Licence. + +- The Original Work or the Software: the software distributed and/or + communicated by the Licensor under this Licence, available as Source Code and + also as Executable Code as the case may be. + +- Derivative Works: the works or software that could be created by the Licensee, + based upon the Original Work or modifications thereof. This Licence does not + define the extent of modification or dependence on the Original Work required + in order to classify a work as a Derivative Work; this extent is determined by + copyright law applicable in the country mentioned in Article 15. + +- The Work: the Original Work and/or its Derivative Works. + +- The Source Code: the human-readable form of the Work which is the most + convenient for people to study and modify. + +- The Executable Code: any code which has generally been compiled and which is + meant to be interpreted by a computer as a program. + +- The Licensor: the natural or legal person that distributes and/or communicates + the Work under the Licence. + +- Contributor(s): any natural or legal person who modifies the Work under the + Licence, or otherwise contributes to the creation of a Derivative Work. + +- The Licensee or “You”: any natural or legal person who makes any usage of the + Software under the terms of the Licence. + +- Distribution and/or Communication: any act of selling, giving, lending, + renting, distributing, communicating, transmitting, or otherwise making + available, on-line or off-line, copies of the Work or providing access to its + essential functionalities at the disposal of any other natural or legal + person. + + + +## 2. Scope of the rights granted by the Licence + +The Licensor hereby grants You a world-wide, royalty-free, non-exclusive, +sub-licensable licence to do the following, for the duration of copyright vested +in the Original Work: + +- use the Work in any circumstance and for all usage, reproduce the Work, modify +- the Original Work, and make Derivative Works based upon the Work, communicate +- to the public, including the right to make available or display the Work or +- copies thereof to the public and perform publicly, as the case may be, the +- Work, distribute the Work or copies thereof, lend and rent the Work or copies +- thereof, sub-license rights in the Work or copies thereof. + +Those rights can be exercised on any media, supports and formats, whether now +known or later invented, as far as the applicable law permits so. + +In the countries where moral rights apply, the Licensor waives his right to +exercise his moral right to the extent allowed by law in order to make effective +the licence of the economic rights here above listed. + +The Licensor grants to the Licensee royalty-free, non exclusive usage rights to +any patents held by the Licensor, to the extent necessary to make use of the +rights granted on the Work under this Licence. + + + +## 3. Communication of the Source Code + +The Licensor may provide the Work either in its Source Code form, or as +Executable Code. If the Work is provided as Executable Code, the Licensor +provides in addition a machine-readable copy of the Source Code of the Work +along with each copy of the Work that the Licensor distributes or indicates, in +a notice following the copyright notice attached to the Work, a repository where +the Source Code is easily and freely accessible for as long as the Licensor +continues to distribute and/or communicate the Work. + + + +## 4. Limitations on copyright + +Nothing in this Licence is intended to deprive the Licensee of the benefits from +any exception or limitation to the exclusive rights of the rights owners in the +Original Work or Software, of the exhaustion of those rights or of other +applicable limitations thereto. + + + +## 5. Obligations of the Licensee + +The grant of the rights mentioned above is subject to some restrictions and +obligations imposed on the Licensee. Those obligations are the following: + +Attribution right: the Licensee shall keep intact all copyright, patent or +trademarks notices and all notices that refer to the Licence and to the +disclaimer of warranties. The Licensee must include a copy of such notices and a +copy of the Licence with every copy of the Work he/she distributes and/or +communicates. The Licensee must cause any Derivative Work to carry prominent +notices stating that the Work has been modified and the date of modification. + +Copyleft clause: If the Licensee distributes and/or communicates copies of the +Original Works or Derivative Works based upon the Original Work, this +Distribution and/or Communication will be done under the terms of this Licence +or of a later version of this Licence unless the Original Work is expressly +distributed only under this version of the Licence. The Licensee (becoming +Licensor) cannot offer or impose any additional terms or conditions on the Work +or Derivative Work that alter or restrict the terms of the Licence. + +Compatibility clause: If the Licensee Distributes and/or Communicates Derivative +Works or copies thereof based upon both the Original Work and another work +licensed under a Compatible Licence, this Distribution and/or Communication can +be done under the terms of this Compatible Licence. For the sake of this clause, +“Compatible Licence” refers to the licences listed in the appendix attached to +this Licence. Should the Licensee’s obligations under the Compatible Licence +conflict with his/her obligations under this Licence, the obligations of the +Compatible Licence shall prevail. + +Provision of Source Code: When distributing and/or communicating copies of the +Work, the Licensee will provide a machine-readable copy of the Source Code or +indicate a repository where this Source will be easily and freely available for +as long as the Licensee continues to distribute and/or communicate the Work. + +Legal Protection: This Licence does not grant permission to use the trade names, +trademarks, service marks, or names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the copyright notice. + + + +## 6. Chain of Authorship + +The original Licensor warrants that the copyright in the Original Work granted +hereunder is owned by him/her or licensed to him/her and that he/she has the +power and authority to grant the Licence. + +Each Contributor warrants that the copyright in the modifications he/she brings +to the Work are owned by him/her or licensed to him/her and that he/she has the +power and authority to grant the Licence. + +Each time You accept the Licence, the original Licensor and subsequent +Contributors grant You a licence to their contributions to the Work, under the +terms of this Licence. + + + +## 7. Disclaimer of Warranty + +The Work is a work in progress, which is continuously improved by numerous +contributors. It is not a finished work and may therefore contain defects or +“bugs” inherent to this type of software development. + +For the above reason, the Work is provided under the Licence on an “as is” basis +and without warranties of any kind concerning the Work, including without +limitation merchantability, fitness for a particular purpose, absence of defects +or errors, accuracy, non-infringement of intellectual property rights other than +copyright as stated in Article 6 of this Licence. + +This disclaimer of warranty is an essential part of the Licence and a condition +for the grant of any rights to the Work. + + + +## 8. Disclaimer of Liability + +Except in the cases of wilful misconduct or damages directly caused to natural +persons, the Licensor will in no event be liable for any direct or indirect, +material or moral, damages of any kind, arising out of the Licence or of the use +of the Work, including without limitation, damages for loss of goodwill, work +stoppage, computer failure or malfunction, loss of data or any commercial +damage, even if the Licensor has been advised of the possibility of such +damage. However, the Licensor will be liable under statutory product liability +laws as far such laws apply to the Work. + + + +## 9. Additional agreements + +While distributing the Original Work or Derivative Works, You may choose to +conclude an additional agreement to offer, and charge a fee for, acceptance of +support, warranty, indemnity, or other liability obligations and/or services +consistent with this Licence. However, in accepting such obligations, You may +act only on your own behalf and on your sole responsibility, not on behalf of +the original Licensor or any other Contributor, and only if You agree to +indemnify, defend, and hold each Contributor harmless for any liability incurred +by, or claims asserted against such Contributor by the fact You have accepted +any such warranty or additional liability. + + + +## 10. Acceptance of the Licence + +The provisions of this Licence can be accepted by clicking on an icon “I agree” +placed under the bottom of a window displaying the text of this Licence or by +affirming consent in any other similar way, in accordance with the rules of +applicable law. Clicking on that icon indicates your clear and irrevocable +acceptance of this Licence and all of its terms and conditions. + +Similarly, you irrevocably accept this Licence and all of its terms and +conditions by exercising any rights granted to You by Article 2 of this Licence, +such as the use of the Work, the creation by You of a Derivative Work or the +Distribution and/or Communication by You of the Work or copies thereof. + + + +## 11. Information to the public + +In case of any Distribution and/or Communication of the Work by means of +electronic communication by You (for example, by offering to download the Work +from a remote location) the distribution channel or media (for example, a +website) must at least provide to the public the information requested by the +applicable law regarding the Licensor, the Licence and the way it may be +accessible, concluded, stored and reproduced by the Licensee. + + + +## 12. Termination of the Licence + +The Licence and the rights granted hereunder will terminate automatically upon +any breach by the Licensee of the terms of the Licence. + +Such a termination will not terminate the licences of any person who has +received the Work from the Licensee under the Licence, provided such persons +remain in full compliance with the Licence. + + + +## 13. Miscellaneous + +Without prejudice of Article 9 above, the Licence represents the complete +agreement between the Parties as to the Work licensed hereunder. + +If any provision of the Licence is invalid or unenforceable under applicable +law, this will not affect the validity or enforceability of the Licence as a +whole. Such provision will be construed and/or reformed so as necessary to make +it valid and enforceable. + +The European Commission may publish other linguistic versions and/or new +versions of this Licence, so far this is required and reasonable, without +reducing the scope of the rights granted by the Licence. New versions of the +Licence will be published with a unique version number. + +All linguistic versions of this Licence, approved by the European Commission, +have identical value. Parties can take advantage of the linguistic version of +their choice. + + + +## 14. Jurisdiction + +Any litigation resulting from the interpretation of this License, arising +between the European Commission, as a Licensor, and any Licensee, will be +subject to the jurisdiction of the Court of Justice of the European Communities, +as laid down in article 238 of the Treaty establishing the European Community. + +Any litigation arising between Parties, other than the European Commission, and +resulting from the interpretation of this License, will be subject to the +exclusive jurisdiction of the competent court where the Licensor resides or +conducts its primary business. + + + +## 15. Applicable Law + +This Licence shall be governed by the law of the European Union country where +the Licensor resides or has his registered office. + +This licence shall be governed by the Belgian law if: + +- a litigation arises between the European Commission, as a Licensor, and any +- Licensee; the Licensor, other than the European Commission, has no residence +- or registered office inside a European Union country. + + + +## Appendix + + + +“Compatible Licences” according to article 5 EUPL are: + + +- GNU General Public License (GNU GPL) v. 2 + +- Open Software License (OSL) v. 2.1, v. 3.0 + +- Common Public License v. 1.0 + +- Eclipse Public License v. 1.0 + +- Cecill v. 2.0 + diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher$1.class b/target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c37ae0beb3f32878aec019692e56c0b4827cb113 GIT binary patch literal 2065 zcmbtVTT|0O6#ljpLQA-ahzSHq)XH2l+-lWz zG>`jk%`>=9XxHP~qb7Zxp+i(GKapXW3UdbJtF^Li`4#SImao~|)QvT*7=XFb)5e_? zG-)}OxWnKi4<#wg{4WPm&l#eH!1dmu zCjuCdYCBAFLs$9jbk>ArYb7r7sh5;D-JrJe6WI*)kKZb~-g^6wNu`ijlh9D_|OlU+QBct&Ca8U>cVR!Q{)u$N+tXVN7 z;Za+VEu*1u?B;Koel$76+A6hNbU6UIy<)MOzo9=NdGZRL(#-v@(m$9e{=(h1m|=i) z?%~H|NaSBjDV!6U#fHaqL7ojK!_vbTIkJXYDVHmr`&PDKUS6d_#{4ZPI8V=64`@~) z($^spmQ6+-t@=@SbB5=k@ObY)&s)hw0007=s6ssbueJ= z#R;6E6EOuMY0ly_&eR2dAaPPfF8vAYGoqVlmpl3+pV1+~CX`KdenG4aAJJX>hOQSQ zTTp+j2bvNXMx10w-GgYSHG>4k37bWdp5QF5?bwn;3};DkMLk7_8Tt7SvLRx literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher$2.class b/target/classes/org/gcube/common/core/publisher/is/legacy/LegacyISPublisher$2.class new file mode 100644 index 0000000000000000000000000000000000000000..ede00e304bdc4fba06be429a9b80ef66f57e1a9e GIT binary patch literal 2073 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 RcJsfTt4n#6e~XHj{{h|HD}?|6 literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/Registry$1.class b/target/classes/org/gcube/common/core/publisher/is/legacy/Registry$1.class new file mode 100644 index 0000000000000000000000000000000000000000..dfa20139e215fc5c2bb74bdd109bc7dc8be285fb GIT binary patch literal 1318 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 literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.class b/target/classes/org/gcube/common/core/publisher/is/legacy/application/ApplicationProfileBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..20154fcb58444b4f2841a367714e8ff4a3e7f636 GIT binary patch literal 5990 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 literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.class b/target/classes/org/gcube/common/core/publisher/is/legacy/container/ContainerProfileBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..aa3f1f056ac79c563e6599a794bdcf6a2cc61a51 GIT binary patch literal 19350 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 HF;wt>ftIpx literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.class b/target/classes/org/gcube/common/core/publisher/is/legacy/container/LinuxDistributionInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..8ae2a26e22d1f1ae6f98f0658a12579964ad9738 GIT binary patch literal 3736 zcmb_fX;&N98Gc3@dBiXVTYznhgRzTaA;4-W)QNH2VvJ)F0SA&dz==R(@BQY|##~=EE(Y^1!JnuWh-~auWHvmlH zcREH<>VS%J8tWRYG&VX>!KMxy*Tv&m4UUGYjv8DYI_f$)@SIK!Pn>)WfsO+xrO^=g z8-nwJPTa(;G(M=KAJ3=pAq^iE$B(4(QStk+G(N851U{kRlRA#$QyN}K<3&OGw9x;I zczjmF=fv;lMRZ>fr!VUG627eAD+=~GZlz**3Ni)PtK@xWWAb{wAZgPIdJ4shYs+(m zxtZeJ+U(N8!p!0&A$r}sVdfpPR>>Cw&#qM{x_{QK`GHvrR!pa1Dd=4)wlpu#7v|Qk z&Rn~qK(%Wdu7d8+L?f`B{DN7hen-)+)XbpaQFp4Hdw#dS-INQovG2THvx5r?lG%|J z`kHmuX|20p*Q~`xwPbnM%#uS2b1j?Bis{+n9ud`G)AkiSDeF)vH%eB%>{hF8jX$21 zuQy7L?QdFM-uCm3RWZxA$fyM-jeB{zXxzMH`>aNZNx8Lorpbr~DpnwlE4EqiOUssH znZ7kkvu15w!NKfEd#2RT>YiJ+d`8j}OY&++B)_ZF*x0Z3o9WW~TNKTE*Ko@w|h=Rv{JgSvX)lsaTe0yhdyN7mzTAK5d=v|o4ZAh6ik zq-O;ho?yFn0C3qB*gL)xtRPJ9u7CwF)!q$NLsWEk6ixBcG9 zEIj*$B@oOdLU2Z^3exAxY>6B;z34W)vK5**y5}UE5evh>+i=#v7{(PGc--aM7z*4W z>!wv6dY)aJ7yIY`GIy-H%RHhlL zsDBuwi0hXMj5vpDFmDCryz7rgbrDj(GVo5U75Zs~frI{z>`Z5zA#&*1VTBEn znWf5(>oc3QXll4>dYjf`U=VAZ0VsGRvLbm=g<^>`Yqp!jvdhK9nsAz{oMO+aJF*X# z;x=bDO|NJ@*RX13YdU78jUKJ5_5i!tkeQP2I*q`(Y6hF)%@!J9nFKCn!hLaP(PkIr zIeafpE}P}R^=|Q-fOf-g5e28>+Ov-7`&^y(YEJXRN9BhY_&h2$4Nv_zgFF&N!pS(x=Od&DO%5?qxos%Fmm-hyxla-g;vCOLD1d34=S>yE zgrroyO?N73lYc-Wlgy-E!@eY5g_cQeAziqOj@7%+S4X$dxea3*`xkO!+vr*x+d}vF z9qJ_^d>y4XV1Ry(p$`usi$SJzoM8`1|GCgdK^wz(lJuQaLf#a41$r`&_!l}gENECfu`9VHN^ud>qUdd_J)@aJ zTR6Nh_D1S9^wG=_aY?<7{>Aa+SaMKckD`n546?q%1Z$R16#xzalxtNzho|u_MmN|3(C{t*g_OMj zw8|dxr4hv}fRvz*19x#^HFI(sZz|*%=&(RYLLx+${EPgLXjVpZD3p()(dqda8O>fm zCwnT64PssiaojGockv}6Vt~-O=#ae*1)tFB=YqYaG rdSkwlP`X=A(pYP)q7%{u(2-GJMedJCh;^jM8iwnrhqw2WmVo(Rzv*6t literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.class b/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/RegistryConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..496412fade6468fb1dee715af869d2b83fd76583 GIT binary patch literal 2475 zcmb_edv_B>6#q@yW;e+~VZmA`NI{eqZC9mLB%xRW#b_+htyS<*H=7}yp3QE~%m&(z zW%CDC&hZ2Ip*-H%Jf%52a!gM4&Yih)@9#c0fB*C6UjUZyTNbDBnSpBtmP{<0_&kdg zzQ|w<*G+t>=?xQkO$#P&YPyoeEqs;3DsJac#2o{7b6CSYefG715<@2R>RdHEpEKCy zUGJ&q1YTHk+*pdRmS;Ftj6xNAVZ7x9O%lokk?#fi7Q=X(%p~{roV|MB^wc>I*GWbz zP+UG0KHv5OPbmhg%eODvU6zNj+;2o8j2TYEo~-eByQj^>HwoIlJE8Gv(YXMv}X2Tm&)WidyK! zO-Vkfx7Sb@a)tCejbqbrK^EII@ zPjxZ(gco(SSeU~+!x_CES^*5JM^o}<(dk)Yc)SzGjT=rovkPip#k{_#_4X=6IU;-# z$+{N{D%eE8>DC1;RN_i!Bav}Bg~u?n(K+t8m>hSiL;Lrgg)=zIaI)05;3gI<%wUQk zS8^A+;jwT|Z!NcL@D-Sb8MSa8QwG*8+{cE2O$*=S2LnG^c!ZxA3Zq6+*O`HzE&PIC zEnLP2)MEW!zhBwqK6Ty3{~u(AbHn_6&}n3b*;gHFF@`I1N9WSf9o;t9kH+UU&40To zf-08`Mz0#OdTtd1uc@f&tx_0rNt{w#x7ghLkS2SLjXQ4na$jfOz&69Jw?_J3E!3ya zM7*QbQYwp4B&&iZSPyr#9kZbwnIF-Im#xsSxI2;?FDs%3@_Qaol(V{AyBVmxS@uUu zOWzPVGg?miDyUk#uv!XZE}tat)3rh9Nezt>dP24|N|Aa{rpW3W#i!cL)uQ`#znwt9)QgTi#295_V* vnx^l0Tp+u%Sf&u(q;(3PkW31n;vvzq6xLO^c#zJ}Un&<{MAwKuPG|lF2Uy;# literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.class b/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/RegistryStub.class new file mode 100644 index 0000000000000000000000000000000000000000..22ba4cb3d60eb9027ffa45c79203db74a3bb87d2 GIT binary patch literal 1387 zcmbu9%W@Jy6oyX&GBFwnF$qTF4KIlc(;GJ$Hz|WvsZvaV#&yqd7@C@y9=m%GUd@FM z;6quS>2TMD;-afB{QdR+9}fKZ`RzLZynsUw9(eGOK{?PUEHXGaeAgEP!6T7`ylu5i z!sFjho?S3lZwv!WtyGEepzgsV4<0kvYh{U*FdJ^7DcMm< zQ#ngJF8Is83jU{3c<_Y5T9(K!8J?X|VTN&ZK6$3BF;)Zg;Hd`(^jTYFI>5KiLbZjV zG**w=HuI12vNPCSwBJTOkO5MFeJX>yJHF)Vb*{Ai=yFu7&>`BqfF>0IC2RGpOy z2APk~&B$1ckCYC1UJ0i$Tqa$mXdszSOGFHdjZ{8=J3x8WUPW_k#(uBV+lXDpU5y zIxU2mAGu5#X=x|;o@~W469_va=W~^3Rmv)JW$CO0&+4K|3lq-RD-%?~xz4Uth*cWY zPhAyJ4L$3~Ta%10qS#+2bV?3E=S{z7{s`S8SNV*$P3>smN%>k`K$a`Xd7N#V&1tsXnj%w4g_Jr9KE|J*&y!spTtI3&`wcD_LsT^QN@X}ot-e6Xc ZyL+@p*xnbiNd2QRhk&uBx2nPn4t(Cqn@wJyq}k1cOB1QRi-jJOQqgUSz*C05?D zvSRSH8Sv)!0=k$_;Su5J|IUoipU&w@_#fvp13MjicbTq{uN>RB#V?9q2l|*pn{$V& z47Yjlz%b8ofjfI#XPnzlo_+;=Y4$8~>^9vVpY7ug*Y|$!!V;Fb;{8~`Dq|$9yZ^$< eX0Zm0wRHp58rB&jW0s_G1Dl+a!XB@F!2MshWyy~K literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.class b/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/PublisherException.class new file mode 100644 index 0000000000000000000000000000000000000000..5d745b7003a1997f17c843948d2f1c6e0e9f6d77 GIT binary patch literal 889 zcmb`F!EVz)5QhJ4oESnvLrR)76xwnsDPoJ@7Su}t(JDfSmfY87aTYn=YHic@u{cHI zzyt75h#4m|QCe=;(!aYiv)}$Z_OIVRegb%j$5m9Y$?}lp5zCg3Z67-VjZ{0M;-Pk_ zvB{^S*8<{LpnhnRG*d}7RB^7$#NkH>R9>0HWCsGJ-6ul<@6dkM0;>a)==b?J(C$

=ZwF=i8R)~J3m>;=yiKbWRN>K_jFH}@$O{?;jpg11;(JlDN?N5-;0_hn z(V$svT7-LO(ux6VqzpJhiC)0(?LD1fWf{>R7tI2(JuRCdXanw}RbYLrqfG}gwll*X v(3&k&dV3R;mZ>eeUAv&JPpht|l^K;;8#l4MWmcD1oBw3BiNQVO-aYsOKu5At literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.class b/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/RemoveException.class new file mode 100644 index 0000000000000000000000000000000000000000..1d4f4e6039a74e736dd589319ae26ece6bc7c409 GIT binary patch literal 654 zcmb_aO-~y!5Ph?RL?loGB_yGz-ufZcm)<}~6(oEpLRDzfvv)gPT zi%&YvgxQ?9L>g&nC-{zRgbU*dM-x}1Dox6mRpRp8SqTNJc^PNMUvQy}R~e@|xmG@u zu~*-8nFTfF++Ff$k?=f-{ar#UXYX}d_j}}z&^~u%k?`15j@LYmR1R?)D?xZl1f(RRgxQj#-%b|<(%pCkMf~P zy!xT5Jg5`)t}0WWIQGXb94w5Nkn(wuVfG1e!QShvQGeu?(3v&eho<)T_P>Yi)$N4A zNo9j6cy7FrDLz~4g0976i0x(}3$-Y6_1mj&oE+9B#YW5OLKFs1DKs@}SV4y{dxk9# zh7Xh9xxZf#-XN0OAb%D^w6H9>Ehs`PUsRitxGKy@xJYvQ!|o;MqN!Pv*lE}u=^S8P haR0UnFVGbv_1M5mIU~ZRpa@%dC3#htp1ggJ?SE?9v{3*6 literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.class b/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/ResourceNotAcceptedException.class new file mode 100644 index 0000000000000000000000000000000000000000..724ebf76b8e26e176ce9acff926fd173f275822f GIT binary patch literal 660 zcmb_aO>fgc5Pf6PL?jJuL({a$sW(0(_R?EWr79&7D9Rye)AQOL+(q_o1KnSF0&_s7Gx?*L9PYU2qGTR3WANZ9pU7@e)S@W$E8_vZxq zK19l4EX;;7j&g1Eez^$tkpWt)V)_%98W8Y;-X=7E&_*t5vWtP@f2;s;{T6; zF#O&2#`~}N;24p-1i4iV(ZH6(rl1Hd`J>8{>>XiFg^MIMU%mbc`cmg?%igZpp;V60 i6@2hB3(v44Nb<3ZJvk#nPf&#C*q7K5rZ3-t$KVk|x3X0L literal 0 HcmV?d00001 diff --git a/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.class b/target/classes/org/gcube/common/core/publisher/is/legacy/stubs/fault/UpdateException.class new file mode 100644 index 0000000000000000000000000000000000000000..c690c5c2e5a0240430354bfe6904b5604963c362 GIT binary patch literal 654 zcmb_a$xg#C5PcI$D_Zuw<;0Ce!WV8JB*cy?gjmYi2_`j4>?(Gkd=@7p4txL~g_wlp z05^msd;Fee-aId_Z_h6P*0E5>0Oo6G*3cr1JC$jfbX4ZFHJ3-b1Ue>+>{#QxG`=H~ zTn%zzF^Evz)JFR)!pu_pR^CaGNE3^5pJ@|sEO!W%9eb?^V{L8JNuGu(yO3eR%w*d} z+(>de#-C)xceNuNv~3oPILbpMBAcexaLAPC-S7kywk*HWk55oC8bmB(li5Hi> zYw6WqKTT(vfnR%g!;M7vqd_l5KKj3nPqYKe8~2F-Dw^aZIpA TfJsIHrZCO1!ORTLS%5Ru1P9cuNB53Cu}oBY}bfQ^h=r3N8yY*-lX) zm3Q1?&a>x-7IJx~STx-cftFFLZ24pK$qbwqh#z+fra*h%Dw|W)(wym@)8}liaI>M? z=XKYTcC;AxFI%3#;Q+X3ROif`;gm{FIp><5Q*{l~%M}gBHFMLEecCKoy6?!y&7SE` z76guE9)0^renG#g=WM-P%+2_&RW6RmtP?BY1hN|d6Np(%Ak_#;NM<)|EaRd`YC?RLj1Am=x%# zm1(iEBGsO{eWQ&@FRH5`Pap#n$2+ZtSnNpG+f6uf&M@ewm~}3$V<<=PH7#Az~&%uK-akI>Wh*y4U2e(g=u&f?`e1+ACTAj z1Qp!S@F6}D(B{c+A&ihF&1nT6Yxo2<>EThSO@WCI;bzd1vRMkWOZZeki82&8Bv0Xn z4vT`%G<=RPYO*{tw_qAny=|>PSsUAVZDG%>ULt(h)3wVCT9HmRPt(3f(uY8OnaM_F)^zKwSLLK` zu$vYIl10-GKOq8p*GD^U>z+3f3RUx^!7hFcck>e|uuWbGoV9Syn}Xxxv~qk3KAQ*c zKzz?h44KFYP%*%{7CK-MSz1Y6FZ-j-1vJqg$P8we5W9`0dx&4WgJxPSDTTw}5)ynY zA-N1ShBf>)?gYQL&FEknok5(Q5DN#Gl>B9Q7ad}xB%WN2I6)s7Q6+LK!)UW>m}>B* zi~il~@YGd26^A3dq5s9()PUDZye$vGdkRm7jEJvUS2OebYmJOlTO$$o&`zE@@=Zr& z9ZTq(+P{pHz&AL;$!39H(KQ^ujqZrhR1Yz>#yO;VLq3Ag#{NM|Fd0Vz$LJe2`z}7^ ZFPTc;#jYRFB%4Qqho>S09;X$<#J}McjCue7 literal 0 HcmV?d00001 diff --git a/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml b/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml new file mode 100644 index 0000000..8b89c97 --- /dev/null +++ b/target/javadoc-bundle-options/javadoc-options-javadoc-resources.xml @@ -0,0 +1,10 @@ + + + + + + + + + src/main/javadoc + diff --git a/target/javadoc-bundle-options/package-list b/target/javadoc-bundle-options/package-list new file mode 100644 index 0000000..42c9b95 --- /dev/null +++ b/target/javadoc-bundle-options/package-list @@ -0,0 +1,203 @@ +java.applet +java.awt +java.awt.color +java.awt.datatransfer +java.awt.dnd +java.awt.event +java.awt.font +java.awt.geom +java.awt.im +java.awt.im.spi +java.awt.image +java.awt.image.renderable +java.awt.print +java.beans +java.beans.beancontext +java.io +java.lang +java.lang.annotation +java.lang.instrument +java.lang.management +java.lang.ref +java.lang.reflect +java.math +java.net +java.nio +java.nio.channels +java.nio.channels.spi +java.nio.charset +java.nio.charset.spi +java.rmi +java.rmi.activation +java.rmi.dgc +java.rmi.registry +java.rmi.server +java.security +java.security.acl +java.security.cert +java.security.interfaces +java.security.spec +java.sql +java.text +java.text.spi +java.util +java.util.concurrent +java.util.concurrent.atomic +java.util.concurrent.locks +java.util.jar +java.util.logging +java.util.prefs +java.util.regex +java.util.spi +java.util.zip +javax.accessibility +javax.activation +javax.activity +javax.annotation +javax.annotation.processing +javax.crypto +javax.crypto.interfaces +javax.crypto.spec +javax.imageio +javax.imageio.event +javax.imageio.metadata +javax.imageio.plugins.bmp +javax.imageio.plugins.jpeg +javax.imageio.spi +javax.imageio.stream +javax.jws +javax.jws.soap +javax.lang.model +javax.lang.model.element +javax.lang.model.type +javax.lang.model.util +javax.management +javax.management.loading +javax.management.modelmbean +javax.management.monitor +javax.management.openmbean +javax.management.relation +javax.management.remote +javax.management.remote.rmi +javax.management.timer +javax.naming +javax.naming.directory +javax.naming.event +javax.naming.ldap +javax.naming.spi +javax.net +javax.net.ssl +javax.print +javax.print.attribute +javax.print.attribute.standard +javax.print.event +javax.rmi +javax.rmi.CORBA +javax.rmi.ssl +javax.script +javax.security.auth +javax.security.auth.callback +javax.security.auth.kerberos +javax.security.auth.login +javax.security.auth.spi +javax.security.auth.x500 +javax.security.cert +javax.security.sasl +javax.sound.midi +javax.sound.midi.spi +javax.sound.sampled +javax.sound.sampled.spi +javax.sql +javax.sql.rowset +javax.sql.rowset.serial +javax.sql.rowset.spi +javax.swing +javax.swing.border +javax.swing.colorchooser +javax.swing.event +javax.swing.filechooser +javax.swing.plaf +javax.swing.plaf.basic +javax.swing.plaf.metal +javax.swing.plaf.multi +javax.swing.plaf.synth +javax.swing.table +javax.swing.text +javax.swing.text.html +javax.swing.text.html.parser +javax.swing.text.rtf +javax.swing.tree +javax.swing.undo +javax.tools +javax.transaction +javax.transaction.xa +javax.xml +javax.xml.bind +javax.xml.bind.annotation +javax.xml.bind.annotation.adapters +javax.xml.bind.attachment +javax.xml.bind.helpers +javax.xml.bind.util +javax.xml.crypto +javax.xml.crypto.dom +javax.xml.crypto.dsig +javax.xml.crypto.dsig.dom +javax.xml.crypto.dsig.keyinfo +javax.xml.crypto.dsig.spec +javax.xml.datatype +javax.xml.namespace +javax.xml.parsers +javax.xml.soap +javax.xml.stream +javax.xml.stream.events +javax.xml.stream.util +javax.xml.transform +javax.xml.transform.dom +javax.xml.transform.sax +javax.xml.transform.stax +javax.xml.transform.stream +javax.xml.validation +javax.xml.ws +javax.xml.ws.handler +javax.xml.ws.handler.soap +javax.xml.ws.http +javax.xml.ws.soap +javax.xml.ws.spi +javax.xml.ws.wsaddressing +javax.xml.xpath +org.ietf.jgss +org.omg.CORBA +org.omg.CORBA.DynAnyPackage +org.omg.CORBA.ORBPackage +org.omg.CORBA.TypeCodePackage +org.omg.CORBA.portable +org.omg.CORBA_2_3 +org.omg.CORBA_2_3.portable +org.omg.CosNaming +org.omg.CosNaming.NamingContextExtPackage +org.omg.CosNaming.NamingContextPackage +org.omg.Dynamic +org.omg.DynamicAny +org.omg.DynamicAny.DynAnyFactoryPackage +org.omg.DynamicAny.DynAnyPackage +org.omg.IOP +org.omg.IOP.CodecFactoryPackage +org.omg.IOP.CodecPackage +org.omg.Messaging +org.omg.PortableInterceptor +org.omg.PortableInterceptor.ORBInitInfoPackage +org.omg.PortableServer +org.omg.PortableServer.CurrentPackage +org.omg.PortableServer.POAManagerPackage +org.omg.PortableServer.POAPackage +org.omg.PortableServer.ServantLocatorPackage +org.omg.PortableServer.portable +org.omg.SendingContext +org.omg.stub.java.rmi +org.w3c.dom +org.w3c.dom.bootstrap +org.w3c.dom.events +org.w3c.dom.ls +org.xml.sax +org.xml.sax.ext +org.xml.sax.helpers \ No newline at end of file diff --git a/target/legacy-is-publisher-1.0.0-SNAPSHOT-javadoc.jar b/target/legacy-is-publisher-1.0.0-SNAPSHOT-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..aba5e7ed228bd629b5003aca62158b099e4e55d4 GIT binary patch literal 139600 zcmbTe1C(t~k~dnmZQrtuTgENhwr$(CZQHhO-m-01z1!V0^G(0`-v4#aS!bWU*V>W4 z6R|U6M`T21$Vvc%Kmq*iLmE1+`1gzd_<{U$mJ(LvrxBADp_Ba&G6;Ylf5`S?p4(0S z-1ho&p!|0-DSl}&5n%;IS}BoxsmTdR2^!itSP2@+>B*S}dHO}BokM$S@##@&2^s+i z@Pk6-L^P^i64$oO2zg`)c?HKT$|@8bXru%tc~np23Hkd!cf^?-#C!KRipJ7j5&TfJ zY7#ADPtn}LZijygQ=1IUr0{;FSIuMt4BxquK`#Zndlj~{RJb;{}zscjkTkmne|_a z#`C{K{8u{a-{kgR=z7+Fi(5TgTT3$oJx8;@)Ca!*HRiwa4CwzYbO%Q#{l6MV|DOE+ zKr_~JvUL25G4=1s|KBnH75O>;7xMp4T!_EF{y&7xgH-KRz*nHbUh z(O<`;NDjDO0vHevynSBG3BqImVtiq5{5R%2bu;D$b66}RBLZB(V>|;@wT_o5u)Wzf zLT=&jbYBZ6LYO%>*|=%GG)wTPU&_3XyZslpRgqc?pwpDr&jwFzrJ7=4j~ny5-cd_U&>E zw)M#SGk1EVBIKRaUUU00_@QVQ}$jg_(|j0=Y|~ zA&ck%V8F;hB4oVx$$sfB%Ms=y%GL>XRR2cZyk5)oor@L!sViG4o8*uU!HnQZ8g@hL z^+|t15qf@CZG^vg&era=*e(3&4Bmv*qs7v`*3ulv4+z!RgW!tSa)Yv$wIml<0!;lA zV}=x?UVukCIZ?-y)|~3tgZls#<)8_8Ki6CQ7pa|S3i0Cbu$~o}gB@-HTcH4D=pd;r zRN5@WQmX@MOqtUnq+ONhx;(+qcf-FoUd=(+0G8M?38{l%GBOd zfu^U5uYHhk0=@DjQmC>{tiM0bFHwDdpebqE#dL8!&EtXzK6?g*Pg-MY)Yg?}jci@)GrHQ9Z3g9dbQsuznLlhCDD)6=^;}Tt&ugJ`h4Gh%mn+Bt7VGn zF#ugT@}$LgqRJxLM}+90+uX9v@eQL}m^bSQGgopT=rBnhkZFYH%%93Jce{>8y~v)+ z0B`9|Vp*-%tW>V2UJr%nk}TcjQgj8|V*!)dV9cec+`r#ALLV_rDLcAy2IStWRe>2` z^3zm2O)~BPLJz^r^u;m({QlHmm1e@xi@%`2xD7q9w;*X{TvDMhv`RMtnn-k6X#Xwg zicKyAx$mg1BE|t^PJ!UQ*Q>! zLw$83h?|m|s?y+k_{G3X1kK2AujR^Lsjhz(}u%k|C#U%zLb@!-mxx5rHy zh;!bzQIpFQHu^pS5N-ZW9LAn+FX}jdZ@a7^32YN6bGaLaJB9&4QFf)^`k6vLIoB{5 z%{3d?Z00VXSMTj^w3!qaE|n^U>vM2fgwNN@Mn+saUx_2q#*l3OT_;r^6|fuR`PzcX zA>736f-y-`tqrSq8m|lH;;>^o}j z-$G|m+E)ep6)%dhBhI6D1jk2}1TZhuqhWOr53X38vHc%w@eu1fM|endBY1di9>n34 zYfTAU0?i{H<$;~}Trb`y-nGe8o)Z;prqugBe}rqMCLmKUhUyYBS)i=@Yxb>GP|)4b zyLB#43V?@YBR$#JZJDuS=cxZ5(;}?Zzo$jK7{x(z`!vEHY+< zfEXIVcM$_sa6MSNfBOZZP<69KRH}Z2M@+Cj-PCq^3HeaJR7QFY!ht(rZ>ZjGT%Agc z4NMvE>A!dUPB}Q@x^`0z#QiR+7qD#{$-A zEKo*=;OF12U3rFgBNS)Cx3+5Rw11T{u6G^@^{>0%LsVQyEH1&J)HIDV&H}U|npPHe zYM=N-Z;~Q}bcty8Xn%aU<~%b5Z4 z;Dl<4if7FVo`4&$%I`}A-=`i(Pf$x3IqK>I*;#pv$}Ol9u<5Spet!?*c)dz%u+`$G zMyyPh)gyTTXh&>&Fo+`MUa^|)T#@;L{%0#cUIBW}4-5c6ga815`p3%aSz7+xBQbKI zF}ByU`iG(KQqizkphxjOR>9yUa1G6}gqSs@N@@0+^(U;_9abH#`ut|6}SDAgEu) zjYX`k{qJFd&v4M%M)em&5>sPB;RTwvK4oepNO#OQ7m^QetgKD}@qCA=xns?Ia-q46 z271m2qD5>;eMhA1%tRE4S{OG!z>o3Q@+c2+^;p)>7EIm5!~)jl+Pa{lXL2=qtKR0C z{rjCP6{9xP*;6P#cYjP^u&z#D4vFSa?8HNbz9}H)a8c2IUBjqEi0XI?zLD>?vugGQyR+bmazQAA+aZdVFQDF=iG|ZDvDzW;_JLdag zIZvvjb3Ys2+1_y`)FLCLafBEMcww#@O*w4Y=F8y}lB~Uyh!S1*t$rF|y%T7UmW};Z zF>5`H(@45ovc^oIu=Jdb>>zTdXd~}*Qm>r9>M+bcP{<8ar%iH1hi!yQuoo1LV=z)9 zb?x^YnY+r_HmEYz>xkFxJ;sJ+%?p!;GCV+Dp?OT)|*hkO9}a@owP6Qu&m z+rGPSZo9$NQoC?caSD}e?ld{GtrG~FLD5s@1v<D1?I8}BpCKb7IRwsmQd7eH1w?fC4KJQ%k#~((1d*D|Obrs^2EQltkx&r(T za@p0J(a!JL2iIigI9pW^lWidm%u6vTXhyOE_q+=ahsAcXS#(VbFzZypTjcEYrSzKi=NO)k-_@z zP3&zwSP4X!ImFH+-TbVaFk2Bl^mRF?EaKM9*+4 zD#5mV6zxsA_Tl+0)=#-VB(~J z95QgPf}WxR9j3qHo6H^!Yg)#II^gaVhOVmL%TWM-KxO(}F^u}!vVKBQlamaS9lm9` z-I89kh?(od>;w!h*T=hscT7_KNLR46IZRTF#>CPDQGBFgZjLFfbz+c6Zyk+k)LPiK zYKM2FN@-YOYo1q3+h5j}$(d+gUYJG1rYGYOkJ^Zga$ihfFu2+>hZ1sWCpYWPr8mWM zAF141%?u-%BIz7x?LwU)Gb1+iN`bLQ{TY4XiOJ9z%-*Ly2=y>^>Q`p3LrZ2`yuk@v zFUHe8z{AdN#EH#=d;Z$2uk9-{cb7)8I7V9A7$rCCM~` zYo@>&vlfj8TE*cVqo|;`^A0WGUzMF7Xx&( zw>?c!MzUdq1Z`A)$#SCMK>ew>dcPyAKEGt*cR61P80Gq-0U1CUpDmrYHCTRdaUO9l z)|wtYgtG#DwjpKe6fG_Dn5grt_yzY)9GYbcq??Bm&p5FLn^7LjF0Oa3MjzWAjQX#h zD|nuR!;iwUo$Qcl;ttpcR-YwN)o3u)OH$9(g>ftJX<=^ft7%u=Av)-uCnOKN(;$TZN)3 zduXu5tpGi0SmkQ?XX6CLh*__m4>Srts5Rxm?f(+%&-;RHX(^;W=1pj1+SJj~nbP4R zL8~}?ech}h7&IW~H8Z=wFGEFrhCPYA4`0zzz)M{QZ>q)Htmj2 z_0P>sI=4}Wm^WQw(v3}7%nZW-Q|h?f_Pels(&X>;b6Q1^E&xNKW&gd0Fe5f*xYd{&2}219lFbMG;Ke{yJ$5m?!WAgN+;#_hkCaR0b^HpY zm-5XfIsAGz4rDde#Q>YD`a&LvN$dV=Hm+b$#ugc1yKJ}Dg3Z>JU{l!o5hu0cB6T&k zb5QGfX4>!87;H0;Ct(k-zp|mdj4RmU37QtZ@Z1E6L5zv+!^KYA^_C$UDIEzkJcQ2q zQ0L8Ls!DgQqdkN$l&p>(=?XI%+Ig#l<9P4_Unqj!_SLzc*sUcYM<*_w%M-kp`%8iEl|d$tQ)49V9w^ zc%#igUB{DSwZx~tvxn_QOCM!=2~WA|caQC*q|{ zx&9X#@dmBZRH^!NHg)7vCyIHvyH{7z9)6m+SBk(?k&##NbiaZG^E!SDHRs_(G~!ya z*-HH4b~HR4S3f(SOowtRIr`vg(RdCE_O)Ek5Q#d>q*+6r?0s9*8ME-|JcJJLnI;99)c_}%l?WD^Wu9kzkZMXqDAq$y5|APrJYj<$ovXn_DkMut9(+Jl z$WKMJQ+x0fz-aK|!)h=U&Frf_^c}frR+8sq!Ay{n6dsb#h({`WZKU_~n?_E)UYRn8 zAg+lGD|gxrP`ZNHp)}AmZ`IJ15ps@c=?UQ~D{ti^RX%gS7cfe0oG+Q@6!s4O{;W~l zbEHk#RwtZ6$obp_ZONJF7P#S0d8pc7;e)?L!RFI=R@;jAS9Znb8BVox)qx{|Nja>B zD=6{XuoD){iq%gBn;Vo2@)MeJLpL7ibg$uA=Hpsx4IqAmKS_fbs$wui{xs%UyPn*I zoYrf=XCg*ZN4Sp)adRHXCmq;Z?$4~5`WRn3Wxe-!&+q9R_+bUEIF4`ebsG0_pWXZs zP6PhId9oP?fOlxYhF90GOKB-745T0+KrvPqEC@6Wgv)W-@PS(zT4tv*}sSIDR z0Be?_SDC4v6<*N6FV%L|?HkD;U1W`!r|{V?DKiRdx$+yWc{OHYYY7XjoKIybSCH%C z%R})_+_J@WibX)`t2MUmVC@Gz*+E@H7V^=D_dCT^JbbN-1el83yOdxIUPZ}h2cOvo zj`xKt{8%3lOCQ+c>YGPg(7*S@;nn-$tZ06HWL1^S&za9y3|4{F;<{?D#P|wllzGEY z!wN&tFtKl2Dcr&b>M@l)aZR#leKcCwjSQfIrdY7Wj&jV;zD%(lC*NlD3|di$P`0t_ z5=K2kSY+#f)pQ8va0+D!VQ%{X{q{fTSNHupK z0f6{pY1Bw0ILWzGOR>^|grHqZ1c#?B`4wd_6FY*ogNn9bpYO0xA$6N}j`~NnE=g6u zC*pLgYCxkbo5GJv99R9bFM|ofYLPKI|d-bf4On(sx45(wcM8Hi;Pp6z!frk;USZPN!wU=TJOq%UF4FUI@q!1M^djdiMJi!Zz&7hfIEHVE#_a%!QZ>7n-*dcCM_SzpZ8`MWkoicXIz3yf4re1pR|})PH;|VHl2?mO-go7 z*BZh*Zj$V*PD1(l5!ta*pz&s7j5^b>0eLF&IhDE0qR@dnto+J*yLB(pwk0>O{9RND zX0?Rjx16DIv0`9VXiC*2+>3>py)`6zytNcp&x!G_QQp;a@6z-C8k?l3=9#m9#^o~Z zKeFV1vV{(gde)9K&U%(kMh^c-XQ;{9Y_KByNoVY!_R=vr9mYureZ%Ua*4qJgc9$+ir+- zxu9QWkluMl`fyq4dvdfo(rJSwQDTWAQ5C0!LXNa9-Nv#lak>TE+PA?Zm-xjZ|7;yl z;NGWWKo^)Jn2%H8W&iGbmJ6ZvFcgTp4(Ofa&m2rh|7E~rATE|D{gE`Rh$KbKteyvN z$WMfrUtoU2SqdXlK{g^fcp}dD;EY#b4yxqiu29xprYzU6grA!*J{IP{P>@alJX_*3 zxt4##B3x-!`PoOAhX=K#FtzYd(40CW%l<=NPRoO>^-c#{G2Kl1JhzlNjHO*a@z)9W zu0#2(T!yr0tAJ#lAyoTP6xQ`pqYpWk@{y=R{Pinpnpy>)k6tx8a{RbF|B|;J2FNmUAVKk=VVUMZEy=!Au_8hwqn)Fl17J{A#g1^f z30!s_`cZ1srJD5Z4@;h`#P+DETjxt1Wvh9BpcPBRyWELcO}S>9RruRw{T*89>hkI9 z_`S9Z&OF@tVTE~RYCN^lB~U4Cjxp(5uspjzm0B5QJdUI(WIR{FP8Tg)sV4^=tiRe( zP>^}>*E~}|Iiq3B?0jUS zK*-9HnknvC5>r@J4I>noI#suXetFR2XRHqm|B`^{R9!YFm>6FwKJ9G|1~8ZJAA`bi zBQ70!ZhlI0|J9ZcuNWyT>ClxG-`aHB0zE!mJcGgtty|%sru`)jm1`!YxNabb>Qznb z>Ndul(0L~fS5<8;nS~;m)?9hv$>mQ$maM4}$q`5_Ll1dOT$=?SfRA6xz*No!F$}L) zr>1~6;(xkT-v-tJ&kx0ZZ{pDNyQfIsDt(2OZ^=b?S&*2J@QkGfNUkW8j3hjjqc^MF zBq?^5XW+e&{`!1jc@El8{D*1oBq~;h*cm91U7#i;eXT%zDy=LpIJ})+TwdzbjwT|M zSU~3%xFqOiHjqC(w0SM$qeV{|RW9g(Ncfq4L&H9Fvm5+oFdL1s88>1n^d+X zr{?Occnj+ZE8v_A%!?vmyg-fA3nqkqi4bjE#!XS2C^L!JvLhBV5fA@61XkhnRn$wY zp)vd=T3WJNWesUjg-y(2rQ#aH+dMj^!iu)8iO!VwvsI>-|OVB9-!SFy_~N0Ybay3x;>$T)n7glYIL0#izTqq#oFo z;xx6xCJ40xHNEXcJgBqYBc{7oH`SGQZOt_mU3&okv-5q1*KvRsNh4aryoAK_+4&WX z0`~XKQc=U3qsQx??{-I*=5_k@84y#@r`DF<6_u>fO6nSov6`G@g?_xzsw3iWlrbox z3S)pCYdn$+Nfvi!Rjg%yEKq>0^346g+_CVMG3U>n|5^p{ zk958U)QYhaJODs^{y&0_X4ZyAt~7tb{r|9ixE3~h!%y#D;bn2nLgkkvRqh@x=#&DZ zv`Rn_quN_CadqG~S|i0z01@S1&mP9ZHZhQZ_vVp}*dBPtnH)1|`?oI(@GV;-kp)f>dU{5kBiHH!`ZkE(TyLXVzsAVrVTn;PRTDR{}Px_j9mj)(xOcn zzcU%KBRi|DksfP!j4XBn`0 z!Q5C~f?%CB4f-mfVIG*1dlY|_YV&-1J$nP;kJdSw$w zWe5v8x7z64mV3mLVfG4=gr7Pho_Hu;6;>H9vZsLOjQYJJ;S!3~^)y75^n6EA+hn4d z0D~a|Lslf;{h`#|UZ_gF@D;3SxkM6ENe$!65QhNB=ym2elQ6qDwC@TXl*FjXV#XIi zK`rAlg&F2jjB`+gbf<~SSBrh>F>t^Jc z6HydjFx96g;tRb0!3?#-+V|nwrF`7+hkn3iU`lXX={H~io~<%~{J=wF9B4QsR;&FH zEmqs~{6O`cSWy(9bS0P4q56$rfL;Nw&=wc-#ow&pWAPlkd0RUWK%qwZF zQX|WDJV5Et&-fx-NQqMHf>!IV>(kvge6sT0N->z__Y4 z*~LD0E%k6x<9+oeuoOojA)?*Xwq_H;8SX7=VdlL=3T5AphhWF1YPj zJny84quI?#Hl|bipD{OUsiPamDwtF`YS`|4eFsDAWwKmhgQB6q*6QiII@Ow@%;Bcc z7ZuX>&yZFRs4ZB?p)(bb8vAj2fbdL>&8YZDqIws+4YH%%*(}{$2cnw|_G@*90gESp zUh*)K;yH@8cPJk#UtEA(O~-^Y|Fj?t{AztR_c8VDCC8(!ca>5oXB%S4DS9)plfs^q z)pVd+x*lSIm;dC~TmS?`TXF2u3bSyR?;@){m3ZuKH3slj)4V5N!bfJ&G>^1WGx^yC zCkXS{7um32K?z&@L~?|$N69vKOk8<3ecxa(fRA3GH>)Hi)1*qR+_W~y=r*c?J?Avz zG+Z2Hb5v}^=lfulOQM^Di^06) zgdvLun!7t&CjIJbxCleOYS+tz=PB=JUZMBeJV=TsLLjq5@7XsP@)4QyYc&e2OQlT7 zzT(g{6E8Abl72E9)p%-K%+pjHMkqmL!a_)CinV8FQ;(={&%rX)cG79D)fDEtRlsV< z`S7Qrca-*VdDM6%r#<9Ul%@dFB~tUkPjnA@{^dIGp~M)k?=L{?Vleyt_96|{20}b| zM-wnR&VfvX@cvwKKor>=!xeMcg!x23!0b~9WqpN_+>aT#B<6fv@MgbF1&qGu5`eB9 z1nrt;cLd!f`bD(LdUxu;StFN>XB1yFW%=h7C?`BRzcLsj4oOh@VD15BO7a zQg`;1fmO!KbK zel)(jy?=OjLVM*@6GIIb$uXBlZI5_JgbrzMPLj5~=7iJr!6fz&^Kk=*H(R{>nZLHv zolKfW1S>TOS~|w`^z)5cz5#YU^ju@V<8(_d(#qrFB|XS^ecYazxQzWY>G3#9c{wLS zP3?G`xHhG@SjMfogRxJjP*0Y6x%`q0HE6aYU|6Uw*pKT1g@5uj7_P#j=5*4E$f0;d zJUnAMDU;0mXQ8Ccn#hcwSj2I|&rV**VDyo51=$-q(l84bTMwj69-pOXWpx1kug~Op zz33xmpm_jPalhX$NVzFwEz*-E-MLEn2z{sHXBA~z9tAwjwMV<80KsCSlHU1e^2H@| z3)ROH7jS5}Vs516;%a#O$!TUlS_)taAkJP${O6k`;1o~wNg+{TcdIrdYOpOf!5gPV z`W^*;jv0xeD9;Q?75OcgC>Df2^Cgy3*3o$r)U-a!4d^Mxs2z%%U4=9^kVK9t;$!A9 zlmgurfQ@KThYZq`Wv+v{s7g*{xb$_+ipr!;bwrK3^=#qgdwSLko79o%fb8~UVIvC^ znode5D+MhLu7S2~(_n|5_i2SMMp2JhXz-@{Kx--2NnI-Ip806In_34ih83zb{r1*z zlwuXN4r?4v*eb-*;or?ymtIF5(;$Nhd-fZ@EtHk|DUGS~!}DQ}ayq{_r+H{Nsq{M{ zx%JPeixR0h+B~;6Hd}^Zel>)li%P9fa~kCB-O&Ycji7Upa6zpnCXsj@muX+*DFeKq zY#rTZ&_6^H z_Dr&@JcMEwHzlzZ?w+GmY*{yWja6e)V(Cx&479Gm}nP7_86dk{*Xxww1HjhBGZq_gQa%MWq{JL|K1@3iQ3jUAoe+V^%mg4a|oD(EF6WWe7EIpddyhh zkcZze($1y*p>0VISBK-hEs6Gsd6mjBxo%%oNx5d9em<7m{UCWT3V-%o6;9;E1uR#+ zMm*GPJSUc@y4m+tTB}C!?c@KkGTM%EqXzu~>Op(?@~AIOSN4WYQ})(jf*P?w-D3=e zdRgF;piv%QBLm{%c!#W+)7xF<;PcDqashUQF8R#bzx8fS1n|7kUuSHqH|E9WyxYtK z$wP@tjwFLMPNA|~VC~d3mAJFr%U-!HEdCdmMq)nt$E@+^1mpuM#@Z0t`+NW%;|-q; z#sP@Gq}@-bkRaiZeMVMC9Q)%*tAg6LClS)bK6T5ZE9(7VRivcNvsOPt%ICOpE*ct* z0&x?(p%Np3O$i2aW4Bwr{Num_*BmBVHTz>@SZ^5{MLm3C7xA>a0^W zA{nfBjcNT8KxRYhN(1W(?2Si}@x&ht;yL&CI~$Dht~0hW!+p{WZb5X&nfmd^zgfA` z(w=!v>X3+{Dhr{85)OnC8eEmTRL&<-S6{P#)vq0gx7OFw!FBCv2)8K!fsudM%S}(_ ze)!8}8#@@bz&+_&Zv*`x90_H#C?z+Tjx&(9zXc!?Xcp}K0Zc#%qF%+79OP772@cCo zM`2@Rg>2`lzOXClztkuB2HL?L#OLh#-Q}0_XO$*Z4hPzEx!i8W=#;)syJB*K=GtA` zjt1|=9BBdrLhInBkdO8?idD9^4R_*{u4E?01@>up@@M|0TT_Mc&S31?v& z_BscUmMX9${$|SVBD^-pVic5A!cGGDdn0Ru*W$N0dT7^r^Q_JjTMP&`Y!)phrzo+S zu(_R5m_^6fG1yaVcrgwy{hLqN*XJ*wi2io~VCrs2;Pioe6kia*)F*cc!N{MBub#%U ziTx4L&k_5Gu?pa58h4|1)Rl7qpKjOYm3L$ZE6FB;+5K}Ja#y414-;*~{EE**nUgq4 z9c53k*(WVk(N{c;bqdj!8rQ%fgjt?1 z2DtOn!JU;`ON$5K;?b5I*Vt8ekK zV6Z<4&wl4+T-mOA@nsFKWQc6n9GxGvDscv~&){11Q3ud9T3Ip7YX+%=C2!V!{bqAO zdw2>f6c$Gk$<+id1tNiV=vS^B1xg4!^{ri9!DQtjG#X!Z?3>|~Kn!!B%0+nF6ikFN zI|+0(<(-Ih3j~!i+cTm}b^g?sMsU>aa{qZF0xI<-O4#c4pzoxHGC1_LeEjy`9B3QV z307THGruH% z6QR9l+T9WftoRL?0U2ty#L_0rPlUc@X^p2Ff%1qukfkmblI=|vzGX?sTu2{N;hXQ2=Csv>Z#$_B&e7mI5>N>TTDZ|^AJf= z`}t93h2O~6GS5D`Kma1)L%~{>2Jx??YtN-v6jCY>Ue^%AGNlF7;{Xh z!>T&?efifjJBGeeK~n{vPElKdwtkpOzkkDi*BdfJv5cLSfKSI2VAKkd4#vn)DA0aIqQ!SJ&V_o_n3-E-SbA59Ql3TQTH?V@XXHeDqn%Rh#H#nPr_#kmR7< z#x#cHACxhtLq@R?2+PVfU8XO&r^FeC%$lS?i8DW;Bc}x!gfdhbWjZ1Ck%aA1m^gBQ z+N8%Q)-K=d8ocICa`%r8ml35e6lei4=fe*NCXG8Sx}D8doF&%rP5M+w$ZJ&PrPx7r z%c%=}ZO0c9<^_QHJsOB{7R)`BDx0mBRp*ia_@Bd^$zl~jg*O2Go$NY=O5FWp&=`A; zH0^o3uZYr0HLGC$F-XV{Id1d#%Yqp{A3~?me%(8%?ksGG*xYj`u=>gZswv756<@c= z7WrGcSPX0W5D^gwz)^euT!dfyz-z@=){FkKGI&ELcMp)F6gv9a02?OtDF%e>|Clo= zIQy0A%>@a?{+LFh1!qY>MW#nBs}g7+7UU54sN0*yuyU$3##6e*VeKTlkK=?TrO5l` zX}>w{o`3=da9~ID1B55?%n;;u`i`8SfEE$1(F8OYiCFT8=1?U$gEZ}4nT>-9!0n2U zt2ah~hjT{HukRadt%eefMhp2@1z%w=K4f@7iOLI6@+;REjHw88O!7Z&81Synya zxuUskdP_Aulans;v_gQyXSe=^@7-uHkZ6c@@A;%Cj>9LLn*SPTOowq-1W?xSui3dp zE!=TCIQyiv4;+{>UPJ9@XZUdjy>JvnuUWbC;lkrK--}qPBUf}^_ZQle@e^A}Q&gS7 zk8n^1)+xo`Bw=m|XcLw1rvzLO9$37vPYlOl3+nS-2P|RlS&N97h2$#gJ5=Q8EU5>W zC2zNe_NO-0JDo*M5s$1R2rsspWqcZ>D)+O|YbZFgg`o+M?Dg%r{W?)kW?coE^ITY9 zdVCHYKg2Z2KZNC&VWsdj{P3&h;K}c!#0c5#uc(FRMlm*Oxo!rXO)t!{PVI;uqU#K%zb1OG^dt zZDF8HowkgGP;X)4qf(S*6Yv2ly|g>M+Oh)ZDgpM{o>mBc!q@2~p0o(1ZJz8CpxiX0 zrKM$=iSi=jWpLgrvCL)8D2lRQXzFC+`O>BV7wb6H?5weg4_(voZ#dMCkUtxVA7%4# zDa8m48i-fS!8P{w6+_AKFBost$6cRR=!PE4QCR5Vlwy+Lfq5~nJOVdT#S_D&QU+!; z&*&E&7Zx3tB+t2*PWN^AIG@jva}87r%BSFb!nkP>-73mk1X_BV$IRBdxm%Pfd(?Ek z>wOP=X`c$3nfP=lt~*WKgL;lkdi3uDXCCcUJGzq`ow-FLF~Mb}=iYppSSjgh>g_|( zwYpp4PD=0du-s;?p{ooH7;j9ztuXHzeK?^;X($q&j}A@ff_Q$SCFxOj9*d1D@#qLR zSMNO)?rr(gq{5yin7t7Frprm12x^}8)NHZ*sRX0#aKqtHD;%Zwb+(<6AJMDHUK-_MBS;V$p!wfzub-#B_LAwEas zU4!|SiRq5}I`cT>@i(A>KR_C9Sq^nOyrL=IRT}HOfQ8M?ut2CeLE3ip_9CS9c z`05cYby0@wm)`>ZZ|+XJk7xZ89qsg0={jdm0^;u}?Y*_)x#3szhAJ50LJUene_F4|Jf}1`J!ss{@Fj=2n_)6w@t!-k6ZuU7-lJ3IjoByd|m0(nWh8mpTL$FtbiGl zH)ETWPOZ9fUZzYE(&UP4Qn--OTYYSIkd3MOCK{H*H#*|=Dc7!^&|Kc?a?bO&Dx{W^ZerfuX`Z#ds&qY|sUc^C!s~j#JMC*}lb@ z@ovS9#OK+R(xvY{ZRdC^tpLLOfyF#Tv6(@Ar*sGPaAL%$XCKX(Pzat3I#L_$O1>;j z4OC3rhZ`gb77;N?kj`(hQW~e$=@vW(QN{Y^;fDcf28Ys%VCJ>o#Gt0^%5o z%d<75zTCFNs%MGc?OkQGq*})gg@664!`HbZTRzNXntugp`q_j6K2p9mDrvkG_Pbjo zHe)`;4T7&*07fV@=9x{fP7fjI_qpzY2rr&fYfrJ^$cH``w3ka z+qYRf7T0J>2?x8-w^9V_E#%F@GeAx^;Aks+nPq6tN-)n$*21UeR0CB{GKIFH!5uO? z$WP$-t2WZ#ddWS^RFLvZC}OKqlq!fkFW{h8%2CQ@m{~XPz?I|JB?b#ekhKaJgTHd-I&NyB!w{pP*@d8U4&9#i__%y8YeBb^lv6 zmSr~EiNfDe%*FnS4OnCGL5gQlhC-Bssp3K=oaL2^(5K{w4{_${X4D%XZ?55N!ywcl zWq(sv)gc?Jt^1`KBs7nLcY)~Xd8P)U3Bm~dG}}@(SNW_Ylj0*Bd=@HcuPX#%6qWrj z(3|D1f-keKZJ(8qB9w0dBX9yHhhp-$Gf0J)MA5{LgbZA~nv!-Sxx#zel6r~2c2n&))4H{yfHp^#FJn;d+z}ctB;zsNP7>t;!5PVEH5)>Oyh9zDkkC{;+8~b;x zX1lrJV&M1>Y$=#tWRDP<2|o_CxIEE=XFD*4Y!`Vr?TL&f73iVfF0L6ferd}bq#v%w zq=4QN*tLu(2I>TKqE0^g#C<_43j67Bvcgz ztFmCt8$)6Q73MffOJ{`Cn}u8dD)r&S>B1kh1Yr~i*K;O0>}gK(Wu$a`()UC0jI7>vPhz$TM1eJ z(?|!*r79)uE)Fsw)iEylhld-49Ei7TtB7^CzxacWZ=3w|WFF&l$IvvF*`OD<>SzA+ zSmRJ(<>RY6U+7d%Qi%N=&VuFdPv0*L4!XQqW(CJdhBbzYlv2#dB2{wI062!xQIn|6 z#9xX&^x-l#`WTu5KQRQpA7UC7GTxSw02qA(6^iJQ@=q2xz;dNKGN(rr!60g&QE(9R zG7`^tEJU^Px!H1cqxcgvAbvgFTj~=-l6o+xJ^4pvt`BNu`FBWCMrE&-XpUKI#qMw_ zw9DmgL)Z;9%)3z~4P}nG4Wo5anlMqO_?ZD{yU6-w*^AnwRzh+W)Q_;k+hDvIh$eVg zn!;+gnA|9@h&b;ed?I1zC)|tG!6J6Fs@G$24DSQ4YA6>~#!@p>EsO{)qkg&pdtsq# zxbqx#=Jzl@m&8e9(s@$%h2L>&uRw^6P1Quax(6p2Waz#Vy^CVl?X8}XR=0;yn9VOT zjG^o{ch+Gi8wg*Sj8?m!8KAGbYcrkoP+EIgf_^s}2rlG} z4yHB8Xw520+bX)XH2c&2K#O%JDd`@{rOUMAio~mjuV=oa7o$!s(@^PXQR00KKBdCq zMRyU=MDS;vl!aOQwM2h%w0UWr5nwpP!B-ZmgcXA8Eq!7p_tXegPZcF9)>Gx=<% ztm@LW5;6OKNIRz>OTaBlr)}G)v~AnAZQHhO+qP|0+D4^Wsma^jGdKE9$3)Le#CbRm z=kbqqHrD=D5w_|0cu6<75#d7mxK+``+5mKBX~sHl+_sKE%oO@=89S}*6}k2Zu&K- zi0TbcS?eRm+;j(VR`a~p=6J47@t%RN4XQ@(iR%ng zQ2CZwpXH@?+u~Q=*LoQgXA%nG+9?QjkVlYss!Yp$SGA2K>u@{Ib!B9h4bTHJ^VR_Wct6+^MATqLlkfR z;coq$)pK}7_72Y}HW$)Sig+5+rz|NHSmKqjb+m$s*j|^F`g&iNz*ylIj7)s}xW4Z3 zV&lx&ky*^E!qhHngI4G9*4dKw2Z{c~kjBU=UAjI93`H!?lp?N{PfUxRNd*x%_+vZ1 zwr`&w2B_jWwdkd~R@tpzq6lVT>%_>5nF9t$eOG^=6-;0c7#EN@Wg{r>DICCk6R;~^ zc!K7%#(X>e!mWmxE%KNc+6SiK4JSFM4gIPs6)qUg3qNFzAwr)~qZB^Geyyo&&fy*i z_*F5&ONdNLBZ*x+0|#lmO+kp3XEXH%Z49~!W^*4u8zeP138i(gc3!wyy+bggtU@8d zf~9f^69Y{ZW8d0OGlzu$=K55MQpyjD2y1~+ou*dx^rQo&R+aUDcnS4GyO-_6Z{QDx= zlA&3g)tiQ!0+6Vg9aXE_<3jvhIbS7sRa{xmgpKVS|1|ITCkCnZGjKj1|&CdL*9&UTLf zUPq|^)DfZxJ}+w07z7FU?I<|}GDZp^G@CKNVo27dB6-oM9Eq&D4jJ1eC;cfN*L4o#CiA1r1KE#R=>M_5bzI>^2R(sbr<9V>jUd_uCirB91 zYqL;RfQyoI2~2HX72R#r{0+d?h1;od#t>h*)%VLtCAcTtSrYQEIhq}h4>-li3|0F?3 zdI)COWB)QGfRN17Eva9cT2_(Xx~tG>TS=0*pp3yA&rHvZ>Es9tra1#+`5S6$D7dNg zT9jH7#~wLPdu+bTzkN0Adcv-Zd^M_T1p^U)gqBYESBl$P@zrfN#dN&!r}C`pj3PAAXdtJfg3pZ6Tibq!%nG63Oc{V}gUj*P4yno_$ItGLOG-J+HBGmEQ2tym4Q zY^6(L;8}*X3=Z9UOTp_{2i6om%<>&9-n1sL4(GM_H9Vpj@6G&{$8F9XrPwHoKB_bw zyZ|HlSKm4@Y8h8n*|j)li=3POTV>Dk*(F(h+-tu`TlLaEX@;J{(-*pE!afC;sxx>v zyif$yc&5O}_;v(0&}qY&@5{|gFlKC6PTQWY-#p1wEqzNvXAO0FkSVCxI9LAA@Kp-( zM%Ipt$2cCVa|Du3$*-LvZJ(ciFxp&29Ly&KVX&Giv#~@GCDOd=BWI>`&zPT|CeBU7 zvk_=^Q%#H@LP-Y2DNiehO7+mpcC=~S*j?4sbjq(8r$1b;+xo5#&|lL4y1enagY1T8 z_mFyVu-iSD)UwR~>5CDkV-n*E>;4dXy%tG|ng(4|k;i!XErs?SP*CGt`}(&TeXQpt zi(-57lwYHYj7y@c^XbODYxH$=S*PGj{|5i+GpOhL^r}ZwaF-)sHNaa9r#BAJb>TH| z#H~SAhU=~HB(WD}Dt7WTS%Zo2W%F7vYGG}#scgS0FK$ZD0z>|8ZzBR$esy7SB)PXi zm9mDwZD+X;J-KhL8U73CKkK6O6e;`U5A5!h4FKT3#6SIOQ}th~p_b3jmIUjYFK>`5 z#TA)?30PwDk}Lp~bb_@Cq>#R6>B6~kIvTKT2*wKgSKI21Z=BvqN&vs0$V?Go6gG?*D7vZjwY@Lj94}lmKeM9 zc2sOgbpk>X@@mf9>Fmc^#QOZx^;QB#Slu>#EQbRSqWVlv6TUUJ%lHQxJY=JddAyN) zc#**nQ34JF5j#DwA1R`NdOW}r`VW?9pWu1HciZE1nHP684o)7YKuUDMZV6(=s{E@h zN%Io~Zv&kN9(N@+_7TO1h&~a(=6)=B7E6^Y79=A04-MI{V6U&0dZ0Hd)C0x6Sh@od z7JiS^dyX(^IfTSR?5+Exx1$hHq{#IA7YnALU%)T1Bn!S`Z()o|E|wo}1!v9XPFQW2 zW}6zgS*@vlzp%SBmMVbMlnfoa&@G~Mz?ZVzy%4xLU$hT(%tS(!gE>lk-S)tjT=HgrFg<-^sJ_zu5}+k>ybj-Z z!qglHQ+yt9D+BHnc+(d6 z`D;K!j;e?w=SKWyGrRp@o*Rt(w}8iqzv6Sd0G{%B`}cx5%xZC9yd94iL6{TaFFb0v z;9ckvR(nKpe(&zKT_@`PIq3&@BRs*WrptA{g^8whXn~mfo6a$x3qn{Np{-qfq-QQ! znRA(9?dS-j=ojd!&sQX5(j)Fk%`R@zlufR2z({7skBLqYL2184KL7@@njD3~Po5(T z9u4C(;d6*-z$AIXnio5kPJ@GaRBgJ-Y-P`{XUsV8g$}VqTBxf| z^(b7GUZc|{_!TvMBjmS1UW*?$=5WMVBnCIbpjDyv)7%W6&fhE~T((`~E8Ev(Ox2TcW9lxxZGlT;d`5qL4W)3!~So*MiN9uZC zz+yI-RWC$@w|8GV)Uz7(KEEj~=UQG+<$*^Lpp8T$WuvQd#2!C$Zm>Hcu_u1wEqcnE zaVs$)IX050gRmlJ4#ESepyf2Ei+R-Sy0+X{Ix@{<_ow5n)b`&z$5T?${mNcyZy_Jh z2A2ydY{mi@q9n`Y&dxO5vgc^!vQ3uO*5-DnUvK8^&8>g-!6O%h=E;+(`qLPdI1Xt{ zN`mv#3+OmcSKc@#=HK=;czi4gsF!*5FqRozn@fway+pqR5q7+8xJ^T;KB|>Xz2%jx9NAke06?EP0{!)&Sl? za+hr<6Qrw6|DKuqj`(-`g1$iRXr$`wTtyl%W{?qZ`lb((W$A%dOgB(wiAi6JAHk1b z$f%sXdlGOSBIA@`g^F(hTJ??k0L3;$E5X@bOJs=3ul2#G9HWw?wYk|H>j(aBRit*e z?Ako{aKqo!eSv%8-Pvls_NDWB1m{>Xoh-aMZB6$(mN3 zsTsQMm-hAD9ubPDK9^x!;Zr!8fk7e`5DDFM-b4jiUt#t2T1&phtIzQ6jvS4Wh5L_ z9uVQHn?dg60?F{kcpyeKt9p}0frY!f!+^N*g*m#pW>|J~^E!v5j5c^L!cY`&nM)s) z;ROyE=>sjathF%F*x2B-w<_)5-~|v!oU#3dUW$fWJMI(+4Uxrf?kx=HHs}&Jne=Jq zzaBClrR|VmXAH5r`S+O^W6gvo?4T#iM6BiLAsq4}af)!y_UZjjKGrPdjl8W{$~%lV z`H%Oo*QOSRxc`Q1K$9O(x@VXCLhEWuNVC9YUh8L${jL*)JaYkeAlYwRBDiO?IqHQ- zMEf0A9@}9QizvPaqt5M$5~9Q#qOQg5lzh*h7?!I7Jd4rO&C^Bs)Pl`T$Xc#<5Z?b~ zVH6$7FUak^7!<2^6h{Hqq4WC*O`Ijn%%3y=R{Xms1p_(L%%6=!5Lea~n6AJB%$;~z z%%=XqW{;G44uCEa6qmXcu#6%X7VC=t;?i?Td~rn8>?K$JwCY2)PM%#U%eK1x zB))LA;qmlSG*H1w6fk^0h1Et)4jlnnj<`Wk$w@acEhT!pIT&`Twx85jD%NtXecBX< zK2g$Rk0)*=?BH75P0=J$G#>Be;0U4c(K$&KwB}5?rY`NmwVHP+6s#ZHREw~DL881F zx@1_xt5rFfg}HIfo9}!t#cl;S_0Lf`MPo=qQ#WJ9blpp+n??u)p2hub`E3wKRTzHEPe>}6?-;8%@r z?;ihFN^$2k?CQE;az)KXg4bDa5hR>cAgY!pOO4KY;oXt_HVuoWL4)pe7fHcuIt!J# zQtmZXqyT1ah*(|c@;!Mk29E;72fp(`X?F`hI%j_*aIus2CqItrM-L(X^1(_3{wFBNFp5H57Kb07cW#*b zv6HeTUXxGLbT6S@JtQ}Tj&;mi_yBSh%=(p~^LCe0Sydep_c1E=a2>(Cx>PAe5mt1@ z83t@b68K!w7N!FQLTfCE)Iw({eN2i7X2Mj6Vj6@Q(mbp6b8}~6@3|2_A!%Uci-C&u z*FdQ^R6$z)C9L}_Vc+K{{03Y+$~n&hfzaGq2?#UHZ(=kaO5BK;yK&*6Uyr{`en#Iw zGkTM4a6MY&uB9^7BBoibTkGhGaTvIETGM$8a-)|xY0%9>lk#vXjo#DNW1!w~dnQkb z9~rwHQqkg4mFZo^MYGtHiy*y^Vl`=lujU}kWCrF>FuK=C^d!FZyYg;oqb#}jBU>3V z+cM|ZerQrRBVmxM8Rlht9; zpQMB(Lp5n&%sr>Krp(IX&te1wuFoQ1PZ_WA7y=ccseR_(MSWq#IHU^#>=b6 zPBG#sVU>9C9c2`BQRyj?G4xiMUkX)ekZwAV7eWI#SLI_*P7SlgQroRZkJc$%-<4@? zjS7hiVn&kIKyAsWtjq0bqH6#jFJvMOH4S#eZCJp0(Ccq!tT~T8C2$4Yb9^ai`wPB0 z6Qajn#2v6Dg9JNklgidD-xm0L%>DU}JE0Z9*!)kiE&Oq_YzgEDmJqo9J~C+7MC@0m z@&fn_N$T42rZq12IbN1k$nu-=rs`C9L`;PeWl6kf4Yy>7G#TUycNM;fm)Bn&q0U4` zn$|{Z=u}B#kUb!Yf@Qq;v3n1ZKF+Ry05kK zcZY3H;$E23d^jvUe;h^TT`810djq*$#Y2`M7;{Pm_C*v_S`OZ*K?d&Sj>R`eT4 zs2I&4yfLz1Rc5K%PO*4j`kvJG2)2P~`_%d77hZ7yIb|tjh^Ac?w6*;OVRUgw^Z~ z*G)jvgt?%UwZ{j-7I)yXg4(<(b=XhQ=cc%xr;hS2u`vz(mp@#* zryv|pfqjwtQNgimW}PoZwm*wlejFS|*CmQ~AZBK}4p5J4g!p2cF^VBN$l5Y+{y!8pr!rP)&&SN3mUCci3OJEzLV90PbW z>ewP~OSS#{h3%`HMa*PQ=kvw@yq9KXc(CB=$|hVVnJ;Wu404`}%D)YIj#@8l%BxkD za*R~(&hlh5OJe*y)+npL(%XEewfIhIzKwP?8HQfC9aD6@)s$9+vb(KrD^F^5eDbY9 zG*Io;a2u-{OD^S=f_ELDX-1Kybh+VoKD?9tMhb^v>DgqhA)cv>1;uasz66icP2gnS z5=g&&SJvPEg*2FCm^YgFGxNOrAq_J8->CNwApPHmoN6|98{+>EZw8l=RPS3Xa+SI? zec51=G-ZnXy{&UzktiPjtdYy>+Jdv?Z{Ma?59s)#9bV@3N#$zk~Pr-m@@!Wj;YOO%Psrd0$_y>D4ZZYnSeKxLIyP~8GCfyPJC+0B#eL=t{AK%1W#_y zdPMnbYm{SPJS8+X$LH zmqVdyoaOzc-hlzgN@rHL*8H}gJ(sIA1PR6P`SKvKtWE*O7%{-1M3q1h&93^@_89EZ z9+yA5O{Ghz4KBMIS!01)LBe#|dbN|L2;LmoN`p4HX7+~}dnNG7U4;^yF_+J*)dJZU zz!{Szj4z7Ii&Ur_64OD;dRlZSk$JRk+u)B)p$=nUWF$R34YUKOs?@ja_-=}cTR->2j1xJ9-( zFTyg6@{^Mw7%-_B7OIu|vq@u9sqH4Yy7oN0RvV!+9pTk;{?gw+)h=D`nynC+{^IsE z6ikelw-ltt3ZWEvaP5X9dd&36l6bqz%kUG5E!5qss>8owsI6j-jD0hsBc}svOeu47 z3@^{kI0XU_|O_*xv`6z8TL|A0(PcFO}_bq3s1=we7 zNofZXzDg6SsVl`KRVr*QnrZrv9bs=U)of4(`$RSrD}R%3VT7o^L7cn7my0Egq*Fvw z_jD>xmoD<@N$Q!Fn2V)BE1c_XK20f){bEepXk6?rJkBgkgMQaL@#&eo7f>+nYSj9B zNs(RK?G{eLDt)cw#W)CbNatFMinE`Bvroe@NX0&=MMAQw!rO1pQYdh+h5qSOQSSZ3 zB+?|;LA+ZGoRedVxsHxb;;<)g3B_>n-e`4QCF@IcloFdYS>U2}Tuv$+QJ}-S1Ef%T zDWWVVOG(A%nhIKPY##Y0nBT*br8m~XLx`i9D-+s+Nh&@Y=x+>dxy?Ki888;k$24$y zG>$nh?(xfg!;uLphE7@9B=TpD`PWxiF>b;xDjy9h%h+duV^?N{YkWgiU3tVT3I5x@ zoWxrxn^3ZBW^4^&k5(XkZlv0%Eiasq5LUs&Wv%OSH<2SlI3l8-Cvp77nv!{1ZW1RKM+`oPT8+N}m=g zmh79L$+*DK$iB`5_5F)8BuQT#z2&D&r9}q-5dW`)?%(1Y{u#ya6Q=MVSqT5kF!(Rc zBLAy+bx;Xl1*BY%jI6aHf{)0drcm4zUxs~0kw>y=Dj@xFi(vetcr7H^Y}h8#QPUTS z9z~TK>pI<`@}ZENLnVj-8gU58oN$JXGiXpk?)*Fqv6J`+>S7 zFn%c)cvk)L1DCLAeL4%*Jp(7r zml}bR4z%hRSC69h@N{&uB#G1mzeEoYM9A7vX-{pBz!-DxmuUG(MBXdiRFpj^EYaJZ z)K$kiud$%Z2VaP>pr{^VLl?JOOpaJxYP^(#5;81H0d4kt5?;`39KN;Um;{mumu_=xZ72XVZ{K49BLrcbare_asnKd21_V+|8^bq=p3`}#4 z`ZTY9=%1I=>I``q63>N!AS&{M{Q9RI*cyj5g7=PwcM;~DdzyrX&_}nBct#s^S&7C& z`mMz~Pv_YNCtM1d_JX*6fLs%)%`mah)*Vnci=PJ zZ&ycemA;meARq!XWeOPC)R!|9BgIow$uh(gyv55wFt3RDm8^?YHZ>boUN#at3H~HE zaj`okUdkY7vJnP9*2I|HjbRt*op`B|1>~%L)WXqFblQ$ZSbyE3VbwLDhgRmfQfXO^ ztd7cb>GEu^(jfLfz9Ox^6yg(Fi=Tog;gARW4A0U5W9%A;S-tzqm(E>zVOf2V;wGFp9P=G(La%K?EmwUIEn7`@NPtN`O5q>h-d&4h~Dp+*`JQm4oI z^n{L@J_do2QC1XdXW|n2o6Z*8l?7&uCB2C>c8#R+Fjct}7E#A(3T5hV8J}W%b^z7u-`kvb)k)Iasa0RO?bZzYvkIC9!J4Vzy_nsI}o> zM=(M91D%bg85H!ZOk!{b%~yX8>avXc@VzqF-htII9|^GJN=<(h$Wbswtj@m_@(ZAA zXufoYI>y2lZ&U0ShfSUMAUn3^Tj_vg(GrTENxf_hhd2!=P11=~w|xpb6Egn7XhsDr z3HuYy%Hex=+9R)3+PbmO`3k6^igH$E>XQp4JrNOAQ9%+5z;2Tp-Cu(wVBiec4t;V^ zbd0{vn)MIr0sy&v>_mi|7L5=Z@|>-eDLdN?y z)R{pV4LPs%vX>cvRGdsgP*IMM8nLLXjeB671YH0;JIu9XSen z)BX!UW1vL_I(kru~? zJ%bq$0qmJS++2J}-_?yJXM3m2o&`7WSwpMnu*yAxVIt=*aHy^lLN9dTyi=kePmm}k zvQZn7j$t!MHS&tZL^Pqixpy>V$<@l`F^SDQY*_lV_u49b2AY&t`ttj{C?rPCC#ef? zpSQohxcXk;Yl&ua zwmU#dX{4)K7c{Pt9lGpc5=y?sI$aZ5AAgvxk5Chq5~EgRqvbhl6LCv1FL!F&eq1P* zk}rF*FF5(BeSqB~bTsQ_Sr-=y;@!0&)3_C~vRKcb-?3}SKiD<5U4=xGuGXezD+cRu{k6pix0kMOaJSrSSkHxSJa^ubKAsx|PqZ8rI^B3zfCSTwpNU+wgyh^io;$MD!)o&EsS~50Y%<=`S*GmI zL@r;EVo1VLsm^QOAG$ZT`e)Atf&b=%EU@T#L7~KOk_H%j{?re}5Y3Y( zMI%>(PxELisMr&VXNqqF>4AX+xfHf-|NU&x?^s^Lfb^!9ZOb1^K#nnp%~N_*0?{e4 z{9M`OwTNRPN*#)6KNCWT1i#5xARCHo9>bBe@!&9nUNx%S9wQhgjaZcATgr*|tv_~d8Rm8aBmjk`!CqZBIL9(b75)%9eCXdjYvkKu)_<b<=a^7MLfZz(O{3S5%-Xv4$T`|#^zHuU^ub>f zbw5s)sWuhDLICmXK6-!3nbNSIV{U`Y3i)xc@i2^oz8Q5w5Ee5*G5B?CEWvKEQHPR*IklNPlJ>PjkT_% z&Lv*uZ`L8jaethIj(A(awR8_Y->mLymoL#nck=?I;~dJp+Dy_q=GBi(HPr>BJ-zt>F+=n;Al|m}+RI$V`3*9avA2YULNvjaGWE z&33S@b+C8^#$-yl3$?R)^!dHVhmWH*<1jD{z{MvD$9mz!P}W#pOO@ z?_$|KW7C3sdCj&I+_kLUNzq3mVr`Yq?%u1Z*5ZjI@WqHix$N|$sTNE!X;if&hT66E)1iymjuUrkuJJ>>Pjd4fv z6_)SQ<5b#!8zz+(rCz?-49dRSb`aWOM2MMOP#Pa@+IKEu|K30gF?Rb2m=>=bq#&IJ zC$pRRg`e5v_e>}Fzp_z5XFIr;f5cShM@%*Uzr|GOe`ejuJKC9ASeppCSXdjI{7);O zjUATQKdzz}I>aHr?7Q^EEG(UrSzEEi;0WFqEAy(4Z3AM`HZQO7Kvdpta(dVZ{Ef;Y zDph$2*Rr}YJWhOs-`6$zu)i4C!+unW3d5Vdr}HZCRO#=#LE2)|ZMFMtB(oNRWh#b2 zh-7;4WA|wQTLUXkp)+q@(i@?Ir}U5&XM@sPq+|&Uc|%OktnPcpjZoYixb^hFOTyj` z;6$Rs-raBy!#*{w-bV_#Hq(?52JIekR)f08ym@NYS> zncoUkpxX~w2ymI;;31I|Z7?|edEXfk8hb7(h8~8W_6d&gg$J~^)ZfNV(_;uS>8x8| z_=C{jF+x99!0v|udtgftoe3Dc$MonT>v4(VpH0VJ+zH7{sA4+gsxSu8Te=AJfiiu- zXuPcpmN^SjVxFnssJ74{r5|!|fF?k*coOqx*3ZV{#D*_8Y2es53r$?I3W@bN0KF(q z^~yf=eP-3S>O5X5VJqN-@itmVJT|c7slV{NWF&zBPnsDY6pzq()oeoAF%(C1Z=1bQ z$%u$Xv5RsQv^w8Y-`TnE@q_1n!9B;-BZ$!=16l}`uD7)CkkJ(Ww$T&N@0i>z0+G2m zGJQ(*pqhjz;;rnf{7w-AKg2#p14ljQF75rNb!>Z9TiZ@yjPWH+_g-Jdm0bG%G`@|s z%FcU9-8Hvnwy>|E65_p4$W$9#Y>B9hYe;w5DIm6kdMR8~$6!rXcU9MePO-qS{1MZ3 zneC}xW+B_Cmhw9G$hq2K^L_sHeEvKCW(!Ho43`kzKA9IpK99X(Y;*l`k%O&A>RN0I0>GpK49a$(3%8QeEz?Vc&i`d4q(526bycHx3k!8& z+nU2(pKz)n6IESGTV;`xtc;;)%u>^oc|CpsBzc^&r9qHrSAkuZl(v=0LbbzZ(m7RP zt>Yw(K)v{mYr=9`k|xN_yCcFN#}c=d{G+8bCOIq1V^Y)D$#ccjCOVz(V^JCQ8GqNB zB`NIgTty&eir;AyeOj6u4Rkd&6+7p7=Dk~m7l+U~f4a}jAey-msy0~=d3d4bZ*506ZXNB>7~GSqE(uc67!FbOnIHg* z6?;u|nR}j~JrGG!t$ZT8@TGU!JZIa^f74Rrl-o=@BLLrplRg}LY?@v}b$qv<-N&CH z+o^V^sc0+R_5-~BxE;c7&v8zXoxdj=co(y7%OPGH1HW|>zw=M78=YQIj7Mp{!;iZJ z*TQEVQ91sE8GL_w`m+`?DgUlK|Ls%k{y3+as5t7jBMDU@7d5eDc;B4PO+&`#&7i?L z_&sH-sQH+uDd!qfWP>f)l5dS2a10||wbxahqLV^9-((tj%XKXpbvHa1by~B^hkyEA z@lP$q=8JR`Oh_Ih&%v*?Ej;d{vXOw?eCv0 z1KKx_-$*r;O9YBFflXZ+h$_f!1?-#F!kx|xA{(K8X z#Fhx2+?SJ??zwkHy{js{i=522QypL*dONMN>qD0+4I#}P`Y#tM3IM*n3>Y=a3;hD zMTNTa&~Lh3o~!Tk3<^)R9-b!Rw30;VaS|F$1%3>e?aOb2UEU4-S}x`9pl`zzR@Cb3 zAQ(yfLV)2l#Vr_1^W)?}jir~OCw-(Pw3g7AlbUhp53K3OOA-iXlVX~wmf>%|!G0Ge zeq~ssP`LoZz?Ka3n$h7M={Cny zCmRO8N&)th^yLvbW}HNqGdlV(3-rNIz$IY9eSluM`TV)_6}9o^()a=ss8NW0_5C&6 zhCH;lmSun+&?uHWBaiu6vk(Xdz_Vno@JVymw@WKB0`MYI<7T&;+t>5jhKAD2RCB?8 zrs_EV<)nHrLi)?Lle)iF#Bgrs!OU(Cvw!nm0>P^kt6x_B0cS2uwE0#uDbCvtj|Zx* zMVvY;y?qWpWc32E6^QfjMIpo(QaK86=&4XDYnIXv0LBvuhyIGyBzydXwdb~!_aX=* z`t@(hPqnD}G;Q2_s);utgkuK6!* z?n@)Ru={x)LJ8wN64G};VnqvwI`;%TBZPIdWZ-v9Tqpoy+fjYujFIk~`lu?#bKnbL zKr*s(mS?MBhe#cuAdSP3pR1Fnk7PvRC4Chsd`u7i#(r{P71n)6nLjQ? zhDi}})OZ2+d&oc|<#;LAy+^#qyB=E8_4X*%g3~-~%`+cO@2YWfs zpsr2)O*Dc8rSLTtc^Ii|cwV$0cM*slQbCMEh_cIj129Su+oCkxoew>LF5^$hoUCij z@jM_^2;d6n0??i20%{0%g)a-xQ$rW2^(W$2$qfn+JjcnDhX`cr$uj->n@h z2g+k9SgT%7Lq#bJb`uVfSQN9G58pZ6F2mzr~=0PqQyZ#$SpJm z;M}!`=y4-pG?x$| zEP)16XO0vxN1EuML&bOKy^0KgKO<3(%Zi;;Qhz>La6?X5u7_DKL?mr*7DCCMOlH+{+Bw3f^W*yyr`9NU{}Y zswBuF4^q5K=s>yO3*Sckj+Y~2G6>0a8(o!=uxbNSF6TSmcs)$IMjYX1i z&m8jnS!xhfhu@KT_h_g4a>MWrHx7M*8<2r9NSH81$B=nLuqyFX%l7C#qJD)nj8IS3 zHkYD_vh|LYOZ|}5n6ln9yS$)KtpUH93mX-Mj;-8QR0dD|tJ*DCHC>k9-MzH_d}X*3 zWslQN6N9Hi30FDgFLXHXi;HmA|8?rs9y(1VJY>LpiKwGAFTZ))8=TYx%!Zs6B3o;v z(DUU?d!g@7Z4W!G+;2=Z7n%+K$rC~1mmvu@HiPJ5{fB#T*pV&MM?-xrP`M6;RZ;{w ze)Kcc$|{9E_?Jl7(LA{=+JO1_Xf`%42M7gCoSA?;z|UbP#rPq#!Rz1ODTvXF&NSI% zNuP(zPbF`ZibAYcVK9X$z`B-o;YuBi+}PHuFF*jC(q}LAT=gbn?ITHJ*tn+vMS&wE z=Pk(E*O#E4dq(|`H|L-v=(J1gPRM6Z2w)QkoFFTk7NpQuzi`QKscNh_-v81fPd+(i zswJ0!qf+AVxz!eY+6xF}A#F<>a%f&}gqxxHi)eX)CkR=!_%P9!3=!RX&O7kIH@1Dw zJ9(}yCscTCF6TPH*ZYu?sC)cd$t_?@X6!;TZfVpd2T z(qV)t1rz~%J1Q>@bLo4{V&EakF}s9E;5-9~00#B)aq2$du#3W`&4y!kC_dsBF~V2G z0otWogpmHQWj{u?E6kHdoLh77Vl3X5Ii#4>t3c|!0n|C$GNA;OIQNE2WxZJMoO6qe zu(i*gmywSA*||<>%o3olxzHVdc9^vaRJZZtN2|{8k;!iLjljCDM(nAhjU7!90Rq{p z&P%0kLSN~c!CP~!TfDNPJCFi63hlX{8`fz23FI&^7aG@mS2+42cfgNlQk13tjrJgf zS&kt064beVO@v+I&bUwo*UatQ{|piYh8vT>ErG7s1L*D~9jq&S^pY<{ea|FpPJz9EM0_!0hgqsl(X_8MXNKUQ5*v@8{EETOMMW~Wl1+nK0N@$Zl{91$ zL&V`2wF5zgf(6qhk=uQ?oi`shssns8ZZE^xXq#t~&`oE| zBJg^Dr&FKAHw6t*6Rn=fx=#!(_L!!Pj|toZuv9I0xDvLSO&sr8*`0u* z19o!`mrS=&*R~w}L7n3@lTTsp!WDC`rZJHogs*iT#qcgh5xAUz)Pzc*VPsY`v&nAB z@XZDn3zatk%X+=4kNiu5<~46;Y~F7d66T(!P4>>{v;#)C^jQ&dB1Yu)B02YU-u-=T zE~5y?rOO!1I;z^GwOukC@pw|w<&+GIu@)2)c^#2E{eoHWFF`|_9)n3bQr zi@4d{-Sv7A!#f1-^SXpT{>AxBJPL9rh{@T~)0C%;-ZK6Pi-&O3DWAWQ|FfK~6f#^f z6t_3W{)!p?VS5QKXBEu3M+%|ke>T4CQ2B6Ds=@sP0)UpCwMj%zk}7{qNmO_P!N)wv zqN_-zM4lT8lZZm)OMRu!TdY{rt0$^=Zm*}a|Dx}!j3v=48TF0~Bs>WmztDLZ^r@4V zpd?mQ3Qh+q$DaMmOoUIy3dyQWk=EI$yqhdy%V6Tk%tr`74k;qB1tVDICCv2$uw~eFPg~KcA5Nv+~fx zcfXILq)f{SMy0GMQU#xA&zZVOI;C2sA_xTjcm3~}?zzE=oOS&E`8Lk02K#4(@65$V zyui34rpGd0Mf?r1cSPv=Mn<`qxgrPg-q!c`KKXqhAf68JX zN#$#dDjTNq{v@Wq!@?99O@l5YC>DeZ9-lI??w5npgY55Q)L{YV!E``jtQ-Y#ZvVAG zZ=sWK^9j;?>hmk#C2Jx31ptg9tPVjh!D_otp>BAPz>xb)|B}xQsWFc5#x6(EJDlE>BF8vvBCVU}NGO0LvPY&62n$hL9#7$~x)BjU zpxjGJ zFda%syH}mng)H!aN^AYziF^cTorr9R?Y8eAa;f47Igy^kKO;pe3~7PMva|@he%^j^ z@T)PJcI5`v14e?`m2h4I4S(M(G>9)^S3q&XE?Q2F!ldMm zABrA=jOPH{n%R)S+u@)rV5Mv@&bj+3NI2sQHHKU-Yo4pDC!%qAs(o%c9*OGrFT@zc z+ZSfPx!V^MKf2=^g?-E~-AVi{K)rzj<>f#gK&3QJ8bqytI;9@!~R z>ONi(W-A)JK?Z#O)&uWF!pp#+@?j|GjbMc+%m``*ZBl6AA z^pj!R>A#hFR*UqfCd*3xqv|h3j<9FLjtZS&6qGWE`nRWu3UTY7Bh;I5ks$+1`I~U=|DeFPCiM>g}G0XbFgKW9I z(v7oRVn)h6fa6vNS%AFn!)2dVGQ8=A&8^E7c<>#MVFrBxH|k z){e2#V{ILBXlU>qn%I?m@eC`>qy5anBgo9xh=(yF_D|A1Wx;quNS9;tCaOV}$pkz! zf*ErHAhUsQId*l|+h!-IW>RtUjlk#D)5K-rZotYpQI`(Ad(hFZEWnK~5 z%jVm703zi)h6-*X6M3-BS(S9?I#_>H%e=f+&syyiPOtxV`o6ylIV(LdNJ=yY@^X5<2tftI!%+cr8jJ007$ZQD-AM#px?wr$(C%}(;}K6B1|XQpa?%zRb5 zQkB~Ild4^7uV<}$UDtGR_xPQ@&e@x(ND&ue6bLIhB$!j45fQtq0{D#mv2Q%zaiC{q|^n z_o_{!SZlg&#)x9NKJA61hTnvBrOi%ET1Z<;#4qBJTRD8AE?N#`A=hp_4t5o(uRjR7 zLrd8p`|eIy*XU7$lYJDu>bM2;3mB@rk~;NqPgG3Al9v)Ov}RT~YhAYS%$A<{i28ErpM7B88It<4Ee?!oHm6UiaE-EHihT!<}>2k!j_Eo zpo}#6!(q}D0z;jOtTiTRiuG{=ePTnIY`-SJUv|_P?6^1HUt1olS$nZZ439TC@b|o2 z$d=s0G2To}!&knW_fztkuzII`%ZOUkXm20wxO&2hgo+X93u$Bj@Jo$X;D?h7eR^4O zWJ9Oz0zq^SYKqBW!0^Gm_A5;$ITe3T^YAQ;EP`#JQ#I(TZ}%a6c*~6Dmf5AV#i-IL zEJbA*2c;q?Rs(gPIvHN)n3o#MO1`GU-g6E zlARlLfj3y}?K*lOb%qo&6cjGQ>$o|yS;PCDoh|-kQKF2H3%;FoK5Zshd?`cTx#gBYX#My zv-P>sG_BT3{>rEXqy{@&mot|8l6PZF2R5em%N;uZeApK>L}^A=o&{vOY?eoYSAV1L zZe#azx)o|)x6wP+bJg~AsU0pfF6fKIE4FNJ$4efLsdmDus{X;LYviMRd+TWH zJVA2yHCTkemAUMNU;WJK>Qil`a;1<+NOr2A&}D?04WO{1%jHAhPAkLV1tcvlAj(1t zh5Py{`93cz`G9T-okb66snE{QAv4bYngNBKCyiU8VtvYP>U!5*fB$bzA1QKi#B4y) zloXIO75P7Q&HqZ8{?9j3WdD96H3qnmq6}|ZoyiwfbnVRh@)7G?jX7KzjWERh1{UMI z*SXE(29U7K`~GuDxH;B9OB%f=Z-@413_cN|O zJ211B=@b|cGliRes#PXI(f(DN7WP9}yc9b|=EB)EMz@9jtajBu2Fp>0XoW?5#`u7X zww7WjYUr?6PrVQAJFVz0o=?6K&Nx&f_aB7j>!;369a2>1D)zTHvJoqi>)(M*ZaW?& zUaqLQoljf3d4_#(B1`-!AMv-P*Ulz}>V_No+02k4gTJn^o>mXo2=mRQlT3%Y;iop; zmZ|DWAkZ^*%N++OYh_uvQG;3KBiJle8;dBF5qYqq=LLxP?N8m1&5SVX3Z{G zQt<_Gh_)0x*k!YA|IxYMJ1N4)KO8u|Nuqc{dntDk^ePKCt6sPAcG9%nrn|mI>FyYd zhT2sysm+Kq5fuo>uJMLpaS71J2yOSKvVPLBJNR-o_qy5AuAa@r@0Ds`Sl%nj;}@zt zpwGS%|B>LzD!2m%OJLs4i#py;*sfKn4cuY2jQJe9z8DNGAu|@X5ivX`Jd&8;eGaW$ z)@~;XqAF3|E{W>g66uQ7wsQ;L)TL5EQh)z{2K-xi?TP2hm_(DZ^I4at7ke7`!sw#K5*CyjWlEj7-PQK5qunGaErk%0ouUlDo z(h@wGF{Ue zAX{?AOx$4w5rBYZ1TXoc6{%jib_Apr_RvbwNY?5Mf{-nIJY&8{F!3k-RGPTX z$&%s#I5)inQCdxo$W;mr9qhfJ)!0qbY0zvk2?!NZfVwb|ixFy-L;zG!ap?{?Wju8j z1c=_DV(lqO)|PHFn?^}S!xIoZKrMcte~>mo*1f&eghPdUArw-EJfU+;9~$ihu2bGU z`wh3%>rMsb?7?1UjJz5-)(7&8nS#YfEq72STz?(Rxc7qG(fl#lfe#~}u~@4^x4yV! zv2uuzlB!61HT=53(=y=R?C0wGuUC_ewVm-Qd{*z3bb+^niRS>-$z+vT_H778xH#n* z4oXLW2l@Fmx2``Nda}t_+PKfMtMT;_sE9EC3rA25u6+Ki!flPa9H%&GlQVVfS*AK$ zA7c+#>TJ}99-W#Plg9wne{-mwL&id}l+vn66(BEe>Us3E*pVjWclUQFk{wpO<*RhQ zJ=v`X1D20SQad+kiAg)GTdnLEGim}PLLkRu<~{iRu`UjI(e6tqFT%=4MAw$sn%eoQ z@Tt1R_;tty=dijYBabe%y+>~>8Gfpt7&iIa04`sHY;A?DvhY4mv7okEG?!ve)D z#YrICO4vZ&tTyFC;C|c^~PV^Q%!&m_D{&(jvG_@$-m&ZR6|x@tUi9~fD8?y z_{|~y{2W%X)&?Dt$04DJ&hWlH%b~k3in{KY##GEvdpl10^eFPvJ#AJ$#gu>QUOAI; z`&5ejD7KhuSXV3enFpg0Q`a=vN-jJZbGC)N0Gqg8fgBVw3e@d<*!uKN{bG%Z-wdp# z(V3#O3@cnpzY`n%Bepv=wf$dLq3`d6Ev0~1$pbPFknsP{FM$6%vjUtM z{QH>|y=<8-LvJQZg0^Cje^2YYPXvZnfDOj_rjF2T>DPzp2Lzb;yspZrY~!~*{A=#} ziSa2c&1rhitexslGHu9f+dMxvU$1%K;i8A>eS{*+UXj}!bPG=;N(?IlVH6gLQh`XG_yN^dyOVj&SLN21LziZOk_BSu<3Gsz{J_NYY4(u70C- zqcII-+do;u+D!c$4^g!v6$r7ZF~4_xG-Q~eW* z;?aim=&~8B&H!1Q6$g4!6a^7EJJ}?G3aivOFWx$GZ88jSZ55lPr^5(01p)j}MRf9* z=k+xFx|-{$iAM+KFV9@bq#?0p0~hPRg0$SCEtH$q zkRxJKp=QW72J4^(ju!GBF|EehwxY#G^jyj_d7OD+=jwjM6N14LvPK|uz9bM_EE1dN z5}T(&z@k%(45x&Or$6Q6`&osS47ii5yi~d(XV{CEm22jIdWHLThd-f5fArSH?(%Fx z;V#LpI%b<0Rk_I=Z>ET0%n3M)WfPIjVHKSb4|lYp_>JiDEOyL5*4%tNo>5XeoFcSd zGuTqwb3g{WEvB(p@FP!xR|T4FPq~f^$5E8Mir_B9E`vKIolk*D)=>A{W->r*^U48p z^UOJ^&vd!_Ligh8m8-2QYfJm^+J?ZpJMVNsX;6?eRoWbqS1*?aZIHT(T8xJ)Ty zI6YMQ_+WUu&reKWt^c6|6RguMqjnSKf|7|m?J~1uu)yz!vQ*SHw;Jq1PQl}``3Hxl z--)?SW6;;2Gu`H^9Q=xpj>mFTrRYVKgnZ1;hOrJh@l}aAGEvp(INx>p#8hc`K(M~^ z^O5zdG!Td!5kj@Xpy&2|GgIsZy;|O4cA<`{+xVEz5rB^RZ-!?x&`veL{u;=U3kV26 zkNRIskQGhL{^pYZN#xb?vRh|I0kETfmV>lIBS|&=dh(RG2tFrWr$ylkOX8wM2>qFC zo>58bLAF+9SH1mV`ZCjBy&{o5xo6!FF6hhP@MVsvy7dha^_aryMq+u5#a^ztM0 zyqvsNGUk4|pm;yC{kUv@gJ z@E-k2UyKs$6;yCEBQZsm>s+Mm?Sct^O>_svp^#p<+5})Gg~?i=)IVY#J-+Q>uXdaI zoJ~T>jhJu1yEE%Em9ChyYo9gXG-t)yq_EmnBTV6mln4Ylk60!nN{z`x@=G1M6-i=K zz_`Bz573rqgr|bTVX+t>1B-v>XON&}4%4VMU2Up=VIZkLl!wkWb*aIo5bsEh70xD+ zRBhBG4ewO(K7@LAGF+T~fVFpeaCIT^dqTSBv^^sTK#aISd<`PpB6$}$P*A4CRWrSx zG1FV`{K#=v1R0}L>kH7$6se7u{{jTe#15r9Ib0YWtqtfb;b-)56j@))N4H3zANn>oi*; zLXm4Zv?9oPI=2$yy6+qI&Cxub`L$0;(L~p-W^{^4+y;6r;3Md{XbPo4gE6vbl08;q z?;Cmhu#x3fl0zFB8$AWVKbRdDC z&0ov24r*m5%$qCX$UE9sUiy&f-mSS6pvvDa+&;`l47spF=J2P)=cN^X& zqKD}VxHZ>pWf*umR%%5}uMS#N-{t$hJl-2KOy*k<1!5j0Jcq}z;wWf>x{~YAOHJtQ z)f@TyK5#PS1FTI)DGrhNEGRy9)>y_Au^#OeZA9%;kHEUXBI-(_^U+d;oq9Ke>KWka z^$#(D`-c(hY5e>K1rZn%cRD|)E|gg-7jq|t5k;1oqE@WgiNt`jc8S-6%}*lXL>T|* z3-qy(!WG07Ia3Rc4qKM;QCUYgQgaNRQ-=EG3#U;DMUw51tDO5Cb1`thsy>=fP=j^m ziWtcW*H%uWvy&T>TrCDZP%n*%tAI6#?qguMAvmxjVk|ZBckwsJ;*UBZDtek6`8(j`*M z`vdBs-h8-~I+ds^)%1|zJS!#~ms?VA_7SzLIubcN@eIgPIf zAAmiDE448dl%m#>AIN(DBJF{IZ(<5m=rty7X#wz%7b5xbyQ`$gbAOMcZC+WfKkgnzoRy}^3rn^8Y$llt4& zq?ATiS`b2Pt$#FLI0s(eTTC6jH*rdu*|?uR@)0P~xd5v}c#=90TS$~KziYa7%&Bn8 zz>nt@;ltBYBQ-5YqUd)hn2;-$oMX)|AweO+Pt+%L*&arjFmCEb)j?B_7YjI5d4aV~ zD4%lMKTR=naH#5JWwltwpJe9!Oj0NeI1(Jiq5dE-sZ%WL98Lp3!KEz&AyVl%M&*3N z?Y>7Myfl5vdz1O&$1$Nr4joK(MT%Qk3cE$>0M-;E)FhPD%jp_ktCEwb0(+w6!BOAG z3a_60{%?yrZ}}SK@I{07tjA{d(T=k-!C6sF8WLj#+1Q@ewn)`W?OSu$$tn26dgV$y zfdIcUBMoow1i1WD-^U%aUt5OJ)W0cW0~|VdqMo6Qy6~PTv8*OPP$F4H0=vV#xAvtq zxR&A@(=bn}PC?QX;~=%cA_9+}e3Q!MTcYaS{~&Wo zWXC}te_oy4n)?T+Kq8<>5!O)tF4|NP2yu-4b62FPN0_7 z+}V^i$Zp9Mj%t@^t3c>LFQ*Q^T;*0yvaT0`dZiBN*sBzdGsQi;Pu5ZgC{3@MZakW2 z+>voJM!^$9R%1qX^K zAu${gY3}{UA16B2!n5LiDc1CiKk2cs0^LEmThKP;6LfU-ly;4ZXRGeesHMy;GeJoiNUx*lwmU!m1dv*1I zg#sTIYjt};{lV1a9)8wE#8hb0d6Qj4vnR&Yi8Bdt{_b4)Oxd|bbKdt@vo55{ma8k_ z>wkOgtL#l^eLYr-oHt(BieB4_@;y(Us0d8f^^6bbjDt|&OGHN{&Paewnv-^}AvILQ zFfd&sg1z3#9ByvQ9TKLmfmIuB8nA51%Myj@cfsS3OAv*KvcB1o9_FMjJ%2*}*N1PJ zALYHNfR6JQVD!rWzv?)pP0S38JS3FlT@0-)oXr1qxuNX=Xgx9hww?tbEYL_2P4lkp z5*GpIr1Nlq)^kw@4kPlPt*7u>m0Q!c4Qk^&9<{Dk61C$uJjO8#EdA{!hII($kjz*)8!xsD zje1m?D2OH}JH*!!Kbv=hk+4IDX>+{HFXQwQ8B;fR{x}Q40P{d^Jh(FmXyHiW-fY_! zTxjtij$3)V7~XxVCqYbn)k-&2KwP)cHK-3rM+EJI7h1mYXPF;YrLtVP%0k-(XNhX* zqB15)9}^0Y%-wO2?71in96NN&>BR5=e^pyKZl?Dk%00GYD7#_MG9Rbf5m!Kj($%ja zcx-()-_6d92k)^EQo+zND20$A34_Hlb@cjm+btJ9XS{`uc3#eAbjWD(9umbL+*n%0 zegP{L9pB5*XA9&487RN`Zt8nqq3TPw1hDfjiR%o(u||n^+o~t){7FgBs4E4N|IwDO z?%cBx7UPjzkZP!6Nrcfl{xXKKWM;}b^$2fY|Je2@XxA0vAyjb%{1Y+u=!C(8jJF{c z;bUe{u#T3AITC{4b?ub!Q!ou$S{w{T?RYlmk7Ll8i?M1f^T8g=5b{J3_)li+a9Ey` zP=JFV`R2QJTz}u9{@o6W0?gGplz~4e?dJ0L6F3|*hUWZPzcda2=aX9R?T;~$sfaTWN|Ine(w9+ z^H!;pA;QI-8x8S8^*i9o2|O8I!rnB5lE97`^#`HFN8cx2z{-dxb#yliBOTN(8{bV7Rsw9J zGNMG;)3y5kU`NN$t0DzRWiMj2>-G3EAZ?b;;mJT8dEqsNU8`L~PZ&#~rPwD=PC}Eo z3K+RC5MpZtMu-KS3?XRKTj+4&6JU!Cpc4!S$+jLj#wXhLOQqAJzIPot(p@zhFp_?* zfC&|!^7Yt+Y-GReX@$$Fs#EY#m756Wdv->SJRIi^51Eat=4mVU{6^f6h+VN|#|Z}h zBRn8${aYsOa{PP!^(c^M2UB_AYc+H<~lSIDaJY!Q4Eu0Lok@(A$D;zEN=gZ4pMWCSe3NqgjN- z9@vUxcx;7g1k>%5!5|++)uUfc-d1KLMXZ4}44jMKpb4n!!N}wjoo&%z`6<#P)%ENt z!(l_?_1=WFyK?lrLZu)aN&m235>Dw~_Gxq?nABQL)i)Vy8wV_7zq`|Ot05Z3Fw9NE zZp#8psibgy{-n-hA7&)^!atlM^U+vIB6Lhd zp(EHGJg_v@)B`V*f(<+(e-3ROiO z++^njKbAQ+A(D9DzJq*fI-K?NuSkX#M3VTIa0aMEoVwQXnp{W37%woiI%E1mR6Zmc zEdI|2W-t=;P*9v{LLse*#MH#VMuQBt+I4!nsj3Ff%POa@+C%3nh3EZCoBPjL@b)_R z`vLOgws=ETX71S~jV9r>>VPzMWL(N`!;xIr@d~lRZ2p*s$Vg88wVA^M0aQC6^CD#%$83ZVqsrR(sZt3w zk&1Q!Zu=YXJPDzt#Xq8xa;R$<5asmHBV_88TZ4I$SX|w~oXF*e??*a~SDLg3z{)oLfpprK> z%zFUK8mqs*pP;wb90)ee=w2Lr@im(Y;PH3y6q#fU6F-JmIr`T|!X-%QpJq=WCioX~h!>B$ z*blo0p^sqUExer!lyzIdKUT)SP{;fdH2J>qnI><2kY+E&_QjJ?RSZtfC!N-_gD-H$ z?c{l?_$!Gr*xbueyh{$}Ag|LbBZ3;HXBZ`df$ZJZU!`_^^OLQao)~Q00x8|A0WI-? zNqOMYk};C52XzPSJIotnyD?112P6m#jyfw%8H!hdJBSV%__iT3^H;DNim&Zr5yD)7 z;zGwftONh?E_Sguu6h1Pm3}}HeuuF+&;jsGLW%1r)4`b$jZ4!Mftz&_UvpcFbNccR zIUj3uKCqgn1xcQo+$^7o(uW|UMI#Sryd-SetdQOFx z4w#5Tq6;LOOb)#q=M)$V_(=?;ndG6oxBaNpKPX{j$O!?-2-U2-(KWhk@|h#f`xg<_ zL(GM<)~CU2*;YqfE8KFm5KBledoK~M-iTz>-0M8c>6X(cFiX`YyJp?V2xYE&BQJ0- zDi~FA&TW<6uJRvRgrg~h7&dv<+w2 z&97odu!ud+f>Zqpr{i8_XAalb76fvCU~=}_{37kXFt$JGx<0hLr(ZDiEJ41$^bY2Y zR=dZW{Zg(=w-2>2s1ik392k`_vQBP{@um|PaeZm7P+5g#gdv3Bef%kVd%8Be zV~AH5=LUSVBCy*i;J8_C0a9ZLkoZFWf-l#QKe(jPfnWb^&f4U3J+KJK9PncU0rCE? zy54^!4gQM&P2*ocRshp#>7Pt1TEy`E3INlpW)Z-&`iB9H3;<;P2h*yMw432H9pglv z#G!Eiw)L3{#e$pTx~Z?*)5aaQtNZ6xXnpxO1^{X0N6-w#fjE8HCslnVL}^Zqnq*9M z7}UUpz;0A@_akWH*vZcK!o*Oxj~BZf+E2ngS>kAr+BF?AnxYC8pY3|~A4sbsVA;P& zD`lrB>}c4bZH+N7721$p5Z*cL=z1v2uIIIKJ;HafPyo`37{&dEOmB7I*LX(T*U)p` zB0K7#4mg+`T zYK6@2v-EaoGNBWZb)%$Gx3T)Vy!dy*F=;m_rw(lSvmlmgPj=t(G$FRjyZbwp+{an<&t@i^QWIS6`UfIpnd%NI%jsLHRU zPRGxYdM1T{e8xGS5T<~TFLz3U?D@X;4mT-w=sUS^>B=#vptLK!PLk=OQRYPY^$Zi} zIXxNG^nt(LH0 zz(jk>l5i5qZYOXg3P*;LW3l#>(EBgrg8OI`Bw+JKlNf<%uT(qu^j+%|*I=>5p?93M%m7<8 zN`*1Ptpnn-?7CqxEXFDMxuIe?2ta@43!Pjlnc}FMt9|y&0F1?w-L76R_}To@R+lB+ z`q|W4lkPE}C()sU+^p#Jb27U~C@sf2csF}wpNQonVC9qF*^fvClqj6Ei4Q6Ln7fuP zBGEuYE(L+D44#Zldj0n&Xos!wpC@}4w=$@R2xM8FA$koUuJX&p_$zB;TqUOcrMr^Tz$7@94giB9Dby;wOI5Y1Q?Ldl=YMrz^^#3Zs_M`eB>n9vt^KVe}jum+=WTTC^? zmvlerxf?SE?;i6?Z+lXYY`Ris@#S_dRanjV<~7)*+$d7Ozk!({H-c?l=-AHAgywB&Q)RTu7AD?^2hb^H_Br{Q!cX|XIk4xv4uAFgF96#_=ovvt1E~e z_SZPgk;V_W_UmOiAgz7BRH`Hy*DaRIxn-U2uu)=NHku1Lm{b4p`g#v`S`GI7!)0bL zj_7i^@dMm-lY2b!xN1}>D!T)&eM)3&%n>gcoI05kjy&;c;7Kml%h?*G#l#=n!Uv;c-R zG~Z)2ygy)wwZDF{4Wvub+CYXSML@`SrEeV2GLg!faV35N1Z$oGCb)<~5eEaW-cxQI z5?}W2xP#ljNm`=1w|X8v?r8{OiM%V=cQ<(IL}EfgBt&+t8Pr|vk8v4Bn2<0629r)Y@Fa|*|BU;69G z=kGx%rB?3*@ZB~@?oj5MEqpnkJjCQBFsg!7SwRON_6|Gou_JAn#m`S;8Zjl^nAO*>LvTBLh3(UiY&g!xbHet(rKO_px*Jz>u@OBYM}+(`CcV<}jw{fGmWx zG2P9bgDm^27uI{Y5a|vX4TE^rR3(=#D#X85krO<83CuB=Pe_nzy}N1H9MlFX$oQy9 z2Q-Vama!c@>+zBvxH5rn(FW;3;FmzRSIwe&%5jIJ8vQ0v!cQyw1P(Qfk*}eJXa%Dm zR+pwzwoSLcpeHrkSASB(x)yTlq>!o6oGCVpwTxMZ6`r!IE@|C8LA^(5;d|&y{NA&e z)Eq&}+5BT~U{;^DytURlA}}*{ZF_N=4Zbi)&{Nd1xD_+DXx&CUJ8LKRJxf5`o#k;k z>AKMZU6Y*Qbi;tWVKx25PotvztH5L67v6S?z`S87M0q5pLrgZRc1unsytP+1<{ABk z3*E1=sB+C>+=KVCHLK>|@v8x@QqMAMUmd-@cK`Kb%OEV9oeoeDfdfW+|2vB3zxK(p zcFv-9F1E%Z?nWl|f00-JfxFVOQQBum`JAerNiWkW!C8lvp1fot)gtae(2A2E*jVyS zSF|R(-BH&aCH~dE{^eVV*-a)JCNUz2U#c^dyjb~LZ(*~pVxDlS-R3xU9rj_cwN=_vfmPXDR#!K0=TVoI>|A2*jaT?Q|5XXpziuh=D zg6lg#;4&+)`LZo9woVaXR{)3RB@lB#L2B0T`{HrHgKr%uxA_Yo6 zm=6D1VO(R4lEBKCqWuQpxTw<~Hu|h?_!+fCi8t*r9gE|pA96r^hS8lH7K)L)Ho(xo3b{QK*L+|k*FZhF^F>e8bhHYE zzyBoMlnKZ!jd0K-MsTrgkw5eA(2rp0hb^nz-=SaQ$J;^%&tL~tMMvlkB&Wz%yxQI| z;*0>l4lSz{^e8Rg!^rd1&JIOR2EbEv(;+%Re(+mp!JMexH_6t$f*YJ+sR8gVJ=M9-vm>BRpyT0t8>M zNs2Daydm{hNUISJHu>zFdCF#>0rGYA)iA9<|ADD-f;ifgn(62jU8 z#_-+{Pxb!3WM~Q0m2}B;mKS$r&5Y}u|5JH=I^h@+(Xu;;Y9kZ?f=~RBD)e2 zMNJ}amMwwEARJ+v+Ms|va)G2^5JGG)bt6)WmBc(BBegD90nT%im#s5deHqmWOLhsEw zt-j(AJ8mT8s!+~4C1#j4$PcS_9?0N*1HpJhoNjUGN}PuKR+NMOP6%v+c63s4gSK~4 zvQ>k(8SO`^F?XK2OWYTq~ zm0lT*N%(s{Rz0z?#(p^*UkaS@fmCKbPC0_g97BzEG01@zJm`iJ8|tS@aBejxEpKU7 z)EwL?KU~>I13DN7S0cXxeYuat+yz8}9+j z7>`2PL_0?)d!gnR*VoM)MQ@#%20~yN?1tsuP@)EBf{=c4bf2o+oDlYpe1cFIaP4hK z)+PVhS~9ZQAY?j)4b3U2gjDex(R)$FikngJ+vz;zhd}Vta@Z3IQLB*@eQmfZiJ0u^ z57<`@V#+0I%&hx6NwQLvyUqHsVxP^k#~F`ti@c$_IZ?FiAZ%FZ9%O|T^D2CA)E$6+ z$X^OkOo}8fe#qkc9O`DCFfX-?swXg!D#Z$75@nj2Ib?sH)R9nvu6J)C0%!z}y05{H zIL9(Z!3(*YnM1Z1?^Q$CoQC!fy8#u8kCfLoPkIjph*www#2P7Kaw+_Eb5q``7xew- zaml!;vPOrexZx!*3)p{aoitt3h2{O&j18Jon zrnT1RlAskH#&^)MA(XdIj6b~fWG@?J_PUJ6N;K#?UdoT}f_>I*Ts+5DU6;<+^4Fh7 z#V*go+I?-PM8T{R5t$QH3H#hb_3`fq8ppR663!99Vagqiu zcm~t=gSfp$E{G7WhdkWN{o^U__awv|Ly)AZ6Y^5;*4piEb3dFBoZh{~hLeU_8oRx|1fB zw$uc{BIHs+mC!;N+QqotFBB0_^(miCCP%I79wamLJ*DunO(q#gNTZdG1`5p-#gWh2 zT_lx&qCDWLi6s|%0r(9%YCIXD*5B8PcQqYGRS|3Mswz!dny-gpLujb*w!4`4&~%G1 zeXENN85T~d9^SrmfL2@AJ8QtzL{PMjo?8{mZhZ3sZ0R!@Ht&P?%o zkIJ&)L(1=DEx?Ixk2LB9en#V{Tm0C69}TgLxogNxdYh$;8)y^SyTxM9 z)URu}=lh*2oWuK#M*bGA3Jv>`Fqh%@9z-9WS~gfis+`T9m|O&(VxfunPagM2E}nDM zMwXw$cA7!kBBMRJ?NFJtP`N2)5(QgWJQgZQ!PmTf1IpEuG(FPh%B6*6g?Ds=mzX)0 z^~dPS+3Tx=W7j%1)koUFHrw##>QoaFKQG<)CG`)cp%Gd*?9O4t(L?e1@n7;Ps>@W` zBTON0gj=b*56jf|%IsWq@wTAu6>$G_z;pxw-Vwxk4+Pj7A`H!DGzH}G@sTcpcF^7( z(5>^os`Lf0aJx(aLpbc4F_fFR^WaOqM-zl?>-XxGFE`)ahN`OO&W{vt!H0vZoHug` zv-zO;G5mZLy_c$jh}mHkJN{h@UlN@pVyXAYEXqd2tmgH3!-`gcn=)aaU%1G2=0b)v zz7JO{=hwov#W!R34>;ZUo!9!$rV8(Jg}o|-5y{>!tuJ}zPgy4#%MNWn2IZtMdC@NC z*^Bq*j2O>mO(_gmW9bM(6tuUe`#W+%J@^pseF=`PIT3#i4mbOeijLp;QXhRNPef)$ zXsAjhE^AyO`e{xQ> z0Gv}a-|1?0z^Kau$>Q%_O>*df#1gaW}2e>aW8*4-1l6s@BL&S{(&!RTidPYp6cVVMd(z-Sz*gvC>>Zhy+~9& zPm!Fe^TKmSreac-5+I~B_LT;3PR;o#T&cI^OA~iV0p=lI^UfQelRJ-`XpR?Nm<^mb zTKrG~xy=Y@Gl|9j||7q(X6m%gHqHFQ{D|U8Hu%x~uj2mJ(VspWpehC(K zXpj@_Em8XgZcb_$=~fefqWAT>H8ogQtSI^SQY;4cGZB5Y;Pf3s)6FZ|9`t<3`i+wF zVYibmfOBf+$NZObD#jd00pOfE@E(w=&X-Ewia8}50z^YWR^Q;_y(jj-v2SV_RT**} zl%V*r)T;skvw->T%j`$H?dNao=X!)q<`y-Mye3Knp3udHlRB8W+urApGRL_9{g635 zKtB|G05wqwi9u2U5*dA~pZ`kv0F}qZMplX{!_3<7UBsJJAtX zI2U@pNV%^U@M+#qh61XUf>V_=(P8TcS&UAvTaB~$dFMGUR4Tk$T-=H&wOIFEj}ut~ zRGp1@4B3}_NTjIuk&A6!wzgg=wB-^N8#?+>;a+Fzu3fvpLSt9!?S-r;uoQf*c@twZAtimcDo*_2vowONZ%!_loL zFWG3Nm-o}x0e|!H{_?ss?6-btOWg^!$<&{l`+2hfzBA(H1yRLIt{vpXr`!rewK?nc* zJ*RTxWN+gip5B&JSTjFQZyNOCKN~ld#fF|y4QHF^^}CY$ORQcfFS({_osyyCT$_R` zm~;RGQH^78YDT*w-i8Xv8B@4A)q5!pN4p9%fB=|vn%LajK~?@r=_o{kJ{G-ykCdDl z)T<|XB|D9|EMX)^8yX`qP{K4^SL%V4UqK!#W3Fh=BM>q|s+CJ@7e?x-#~5!!NDuE< zXjrD$wXpuJ#BS)OdEdthY#AoQ*?F~dMMjkCWQ0e_UWZ$fpw}(m(QecQVS3#g$r|3} z{WR|7#;L)n8k5hwho^`+zD>Rj#&Mq@ZT4WhwjpT_y*uYQzvS70rCf^&pBex)r5H_V z{=}YE!`eo9GX9<`>%WbwQ*~gI@h7eMA{Mbvezorh=<- z$bE@P@rm!cjyY4dy89!u`}@AdtzZ}s1|o#4wSLcS_e~VVi(8Ab#q5NKQfD-!E_fs2 zC)j^|JSI;;Y8?WUM;}0Wl>9%I$NwP)^Y5CArB|Z4znTlcO5oSul|a~ktONj>3xK2T z0_Pu&wp%HiW_nGy6{Oyp64dKfwXLj8Psi1BVZX=f9hrwKjJInBTRYC3*ThecwY&%B zHd?(7qDi1{lZqr2@>IVPbzOLF0ERXI1n+O1l>Ezsj`>d>v>|G>&w?j_2Yq(O@P?|X=bYg<-jFF_1t0bgjz7o*p4bDEyvCg~49{48@dd=^! z0YEq3^0jLL{{Az@7y|R(>tr#<=v^L~Y2SC`5OH49+n*a4%^3pSzL3!gV0}Faz#wy^ zGJZ2W*N9sW-`KCW@tV!4TI;_3qfWjV%h;KfZhN0X%KR=xI|cpsIw@008};vXQdaST z-WjShfP@R1eCb>Lc`iLC*&=Acel2vuB{GW?i!u`-H}NE z05p!`;KU)B!xM5m`5z^_1$X+WSR!qst`ODZKd($d#4o+KIPLAs#j^!q^Rzi_A|}t> zgs#`trOU?!i$8EM<#4pmHE*ZI5-~Ws98JoS$Au@>>}DMT=dvjOQ6~u~xjFt>Crg|o z+W_|`Lsv2S>UxY}Q`dkxDfG8a{)vseZ-2A#m_PzDJSK)q8*8%;i7#VeGpQ$@2Rn5^ z_D=|}laakAO0F=8;dLRcgQ%GhEhPCP9TgcDDCIp-mSs%wo6SLsf*EB^{b7Lq&{5+& z1g^Pnr3hrRDDG~f(s?W8kLA##^i8YX-D%<}xWnR*)ibqYDH(`Oo(ZjQPr@s>UU%V@ z*?J`y#_=~li?r^ALk68<67-PdSE=T^=0vS^y%um`&zJCbz}&P@R+Nt&W$flcouCWyPyiIy)%Y0^AyV$(R9a;>X4P8%Dv`_T}>eP$(;x z+ZoCR8;ANWpWN>l!>T-!5oBDOz#FH1kt9wGXknRuJew4?RF^FiS7|W)EtIV)^3z4M zNvDa`%?(uhUh<&A#OPy{=dZ-H?-)3KWUX4dw6+OD1X?jVzmN-t@IXtC48j`Ps;vco z84?h!a5Il$P>$dl7Wh!6Ct68sh zymTiYQv`6Bg0Ow}B(G6k%q13hw-_q}i9RGpfF!vvjJ@k1>Yj;AU>0OI0aecY)QyEo z?ewYitFKG8&Pu(+ELdl=+)_^i-yW`m zR6P8K!ygBpedy0FdJRohr#0m-C$ulN#@PRUoO0iY&-xoM|6V2p0#f`xR?B}ilmEk5 z@jn--f6bOa=oSmDptJD|iQfy?i9vY|?4U6Pnefh6%CGUeZ+sSvf3aP%9K18?FA>Sk`|i{( zRA4dU9K-sVQ2kP_#|l<@NQ<$c{ia;H``qH`rp~n@_DuwnSs+K0s!T=U@;Bn*TBs)c z_bI!!lUz^xohB@1nRtU4Grt%BL;AaLnMT>i6{`_J#D><6g=;n4v=}9hd}%6zZ9C?t zSAUW$tJ$O0AQ}qK!j5up;KjZ#D-3qbfIX$+3kmj=D6!mvzeFbGghr02(uTo@umy(= zj1RG>g|{zZ?ZgS9O4S8SBBe4)K2FtMncqCO#kRM#%dEt^<5wy>f}@2Zr*QygpzYDi z50v*sH{VK2_9KZmaET#Mxl<}LpoxZ1*04+|9IC^-0OQV{{?v+(GzG)ry(C&7aHXtbyJ=n1fSJCvWQ?gzUcFn@v;AKLAM){DzNi5C=auEs-(4|7goD7Cim z!U-nst9`=IMb~0^hioDuk@U}P2+f$4b00LYk?PCo_zXEwGIO-R_UMo!;*|GpmTouY zyJr`>CwM{8K$u^3NIT~Q#7oC!)G{KkSQPtj6!JUKN;K9u6cHhK2v|4F=p^BSROB$J zeB`D~I}`C4B-m(#&htE{&I;!sE?PDV+^?4pg-R1`Mvy?1%;_NW;T00Y`n7#dN}LF# z1B|+0;0Iw)I)%!52?-0YXHqOd$3T+RK@R?e6h2m-#t1;}%WDSpa>RSoaxE$1H7ThT zMz#a6TmCyR7n;m7v_Bk)hhim8V@MSSUYS-;hHbwD5mk98C7St&bvFr0!H13;yd_Nn z9dyqb?ZMcC5YL6Bh8%;PcOArR255iLGD{3Y(z_rytHxYGnF+%BI_O_jf7>`9gp8rn4zr&)=wF24*fsQ-Z8k+2JiZf?R0E*Y}+K&!LIS$}OXeoVRW zp0GKH`SRABqPQBmaK5>EY)`a%T@H`E313dBTa-5*{f&_Q1eDBv$KU#bLD`iqVB_g>#vb!x#p2KyLW#b-(eR@laOk#ypyp4%f&~LmGqCdyc1Yf=+#ojoO=8gP? zv}+s;j+$H$$WXLfBWSo;w>MUWNv@Dye@eq+&SS0?he zd>6sm)V}Eq)3dwfbU2e!6mn~C55Mek-0N{KbGB>riK$--O9c9e6m$w%3>FG_1gU{R5h4Txg1;66Hg>OIgj&2qUw8^M zE{I{DA<_ik?kHlePvP^;;d;V01A7XM$A6Tf)%n2rna9DS&4HF9*9LaSs66|fM19p- ztqdw^nYrc(UQdF>9D-3Y13f36TFz~3+`%aB1vVD%2SdP2rN+Pi?*4$Lqw6)iq0y+V z0kX$72J1=->oD#tY^UEPIYLb{x#-MYYIas6XUwI$wIQWKH95@RKH zvwh%|xN89^s5bGlPag~22gsF8J%(cVwcbtK78su2n<7x_U0_g4tlqNa`F9BohUNoM zwG@8ZaF)j84i^dMC%f2#=$(Ic29k4)+2}JI97c$f`rQ{{Hn_A#7KJnqd3)dHQ+Md0 zmN?0mZZ-Psqt4p;9O-s)>8U9AuUD%p+X;13A8;iyzt*P@AO=!o_GO)0or<()FkvN0 zY@AQ3-J?1K$0U%`$y|bf7=XXKzUW@M(1FVl%?8xLOz&*Xwz0f(j2N0{LaRUfaobR( z-!2VWWEfoHvz?J-H@9ytJ?yDk9pIzGR1Mi#GtbI?bodxV-;C0VhQ4m7dRxcMkDZ?B1d+w# zq5kpmh~#bCDyrA5)G!3?lmUD#4xYY;s`)QC;~*p ze~Ck~(sy*E1yt7Q|M_oGSl`g>ADmG2|1YCu{QodoB)b=Y=EP~LejN|7fsv)-q*Up3H zUcBTEM?_8-e?T}HlmP1MQdn{*8EzMWOU&D$bU9C}sexA{eObU`bN0tK3t6dl$tsY( z2b9Z`w_qW#&%Guzii|8Ew;?Q7F@Xib3Y6OBz*o0l0?5JmvseNX2>qrHtii;m3JR14 z6SW}Z1OfbmNR4A>6$^KZ53@LX#JyX}dz#;7uvzj%*$mdL@K^cNzkke+!%(}wP5D`%a%|LAx=pqBNj2BR);f)+%iUD81;_yt9KpOy7lMTD=P?Ms^f+H z%W8T2ht)#aR8RP~gfJ8~H7(lqx&TOsqW_Q(Q|o^wLY9kGJ4!Hle{J5NP=AC*srGKM1khgpaAW;BbONakn zL2@%lySiczaP) z><~gLI6y+!vtf*X-adO#iM+J!KBNuZV~SU~>N$l|{}2U8h?}!>od;sP^m8XjlblV$ z_?ZDrbR(O~iAy^@=gN^*qp9-}i~ap?eLM;ED#gm(TeHPcX9W=WFl7oh8&Qb*tR*wg z(qo$!FMC|(=XD1&@aT*dlZ<{A_#qNn)A813N|U|;pd<-a{sEmt2uq;`3~l;@MY}OZ zGOFWhUfg%54b|`NE!!uf(jgZo0Jo(yN0xPd>;g+0gZmKqee~wC>M#fNp?P_5Nui|& z6+^9{VC|KjPa#6fC`}?uQ3t%uUW;}7!^WN)UswM3o$i;1En9B)kpW@js`RC5po0qE zW^ffuem7(a#T*y^5}h4$47W9Ki^HRK=MVZN|MAS<3u3jl9t*VK6Ir=72C5{~T4Gyd zMdzh(+{zO&iXY9MGX^|$*L&{QuSfHHuB0HCJeVBy{=g&j)6CgBu1E1jqRb_-4{xG3 zuu5+`{}D$ZF}I>|g9id?w*GHZH2=#3QpeMAtrh)uPma*pwtY2tQs{N;KKSUde<@!P|%q zYS-D;R&EEPt!*`q1U1%hj~q^j{c2YtqVDMd%&F4+12jptC0EF-mAM2C6B{3MRA?yV z$F9oLaqsaKjxd{pE_U?Mi+W31)uOKUy9!kvx=$-JBxaJ7Lhl*jh!dnLd`IUnQbu$6 zGmZ-*D^|0jZ3th6^86!>lltuT@qv6vQUb|-+i?WS{o9~u5>xs6uS#vs3KfNd)sy^$ z+p%!3At+{4dq1-Gqac|I%>hR&7mYG*97A}G+v;-0_ax}aqfzYig^|kFJWo}R0Y%1s zT07!R^2nA=nMsrazaEYi{Da{dXXr z!#>f~-b3$a^L}ZNr%+`*$$YK;(bN1E+Jn>sCc*%2UctoG*Mpm9ftExiUU&FzYNfPO zgdoI(bpyM2G6J9Of{^~jY+lLziK6MqfNw3Gl`StXC8=Km4M03-ArmC>;5O^4$?kj= z=kuJ52h_ir!lcgh6ufucK{zfY4!;k!8+Vcn%bUpzg#}PdzT($l0OlY|-O&c2ybtlz>Fh~o zp<4*h*R@#W@2=X0lrI_w1vcU=z6u2L_?65F-UiF^leL65;Zy-1lav$(%cQ>OcW{tw zQ8nH*F|Qb*3JnG1tuhl5NK`9GV00n+-4mFO_F&-?G`RT#{#>tYCJ+uwD{vVCaASXp z#2d1{+@hgv#7W{#XgojG4;ilcw$*tHYgHN|kR;NwI&*K}0p8_fxn%OS!SCIy=Ahhi z2l$|0aXLAI>q~XhpI0QzDm(@t32FofDG;b!cO4`zRKBga$z0rV$tYD?|`jtIi?XWFvq;kBse93CfmGcmin+G!@F$Z$xttIERQr|M$ zZ@UgPAYqAtxPcc}pR#iz?G|_*q(-(!Mw$aB(m|QyB;qA4MAb_P5-54EI|<=}sm=$F zumgPs1`)lvH*GnJ`I*#uUEV}vHMy0SJW|~mZpq%G=|tvnbbnE(sVC}sq7$pxwUvvz+)v*U1!ur?>8UA?iFc~Ao zT>qd*Es0KVnvrpY2yW{N<@_&Ol>B9Va$QSn$))lGpn;RM>hC2sPSFN z<++*g9`jysf^6q#FZSixga`r}oAg(m$r%$bHtb%V+XID%<;DUxp3`5;sT$A2CFrRZ zun091@D1PASMVWwL%;gVVrT}SBum3iH5Fznfs=E8Et6B1J$T-jBdrd?4G%%_#qa%@ zLC@+80lLGLZ9cHS+K4+#VD3*m)$Y@Nno%<}bO=OA1B;Vw+PFsOfY6~q6@^ZiKF`7G-M z(eWal_&KY6pbH9+=2r=@nrX6j&L5xvR@_qhN{SYJ;^ukyqE%YDk5v)}8mK)Ph4{1_ zBMu7ooyx_Rw$=~G1iAmmR3o3M)vs!*U(S*^3379O}nXo@QPwaSs!f>AfU$T~5@ zOyvV??FbzEIsV*8oCuyc)+E`pz|Cn0FOf&0`1}fkpjgq0DDhFvi&Y_@{=Zy$3q68^ znup0$Xdo-@t^6NXK~|f?Mp}~*D1Qpw=@~{?_IIi)l_3eFQxWC~@!PGW0M);}iV}1s-Qgi)KD3If2b&jWoNR2e2){F%89CPS$%nss(-psl_jk#7++U9= zi4XNs3<c4wuexwIF)u{h7^JST|FtRWJ-6wsYx^T$G2T60Wgm-LkG4fha!LgR(zthrFq6I zZYHyfK4D64(8IJEO`|NE@sn!J^-o!IY_uFV9@Lk56wBGY{S3qO{@{}Mk|dBW4Lc8a zxeiu{{vf?cacL<{o8QyK}vfV_FLF&z|pYt0#p6ck9dH^-j z?Uw9rt_pqEigaZUhlD!R{C8Uujnu0ltOFC2Z)LvQL^!%-Y%W2B{(bPxB!LHF=vVP0 zFL*(RO?eqRe9&LUE||6)Q7>d-F#&aR#M(E(^pY8NXRC$swJcCxP1*He;V$flLd=we zmX%PZkl{Z*m@J9y7jK~jefP_(kK=>eq^=dBW?k9FKqsYUkLc2>fhypJ?6o>A$G((_ z>s?djAVE2jeL1uf+?LXJ;rWc#A!uv|Z&2^qmF*25zllg147CA8$TCuS`q-J_?%z9y zwqd?KWGT3hDjTUK`)2By9VqKMf+c!0nz2`GXqXe;CP6vwdwmi?Gj9R=;J}2qyBwiS zE<}_!D)AlIJz>Q@63EWFoGLC~7mFM{A>Cu`-81{73_cbg2rnTZ+crv_W%NjTUF>=P z7UOrpiHzOk=J+C+hTRA>S}1{I(&_i);32_`J%vZ!HLwA6=IL$CGU&gH5G%|Gex;gEY1binUxC>QqeZugVVH&LzafKrEBW(0jO-rQj zliDX|g2RmLH&Y#y4@~tNt%yEG4Y=+oyY4Tak1~1gP+#_)w^khO*=*t9Z{tRtecV{G z8MHleGQ=n&zyo?Nmp%EmOVZZDM_h?=wanBmDRj3|tRYBAb!1$PR37nv-a=ja$sm`8 zZ{z-0rHRZhCl}2PRIu(vdoZ+#C!#tCinqhdnY?h)0NcHr=p zlNs3-TPF+lB6a57A{uo7RZkE#2xJr0H_Cqfo(ya_Q~Z4@0{+ECiVW&vn62yiuv1&b zoVGcT&wi+WdrC~ZA8u{G;g=CvC$NbDV5!$lFau<#4WHx#-V_%l(@GJO1s~s3EJa+Q z6MrXAl1)ZU%Bs^xvGy5qS0{x0Te@+Gn$t!C=N2?~tm|aL_GKN9VP@CV*#{wK7Xd|1 zi*H+}H}ttHXYTf<_Hp*1peqw(JI2e;u2Jtx=`BZF$87GbtBo6NQ%3jcqGec5kApa+ zPZv**gp7K+jLp{v*)7ldfQFhSo3Z#Kr!s)8oY)*}x)_&9gx$8{Ooru!xIJJ*f2Z+8Jm#v z+}n}01yM)wKFAFTEUiI?AFfr)q?`Y3;@82HP{)V5Qukgjj88HH8QW!4o#-pG zvzw?^(ko?&+LvZc4`KIFOk`Rs_^_&$uQu<@Li)Vke1eC+MVR1kS&`7Q9~-pW;5Y ze$QX3>SZH#%Imy7dF_1A;kxzE=t@PN1jN$OiYW`OaqOV9aLWzgzzTDM*jL@)NI?jP z`0$l>ejc?wkBmDFBBr+;4ZTmg6YQZP;UlTef(a=`i+!MK?d4EbbUpt^FGApqQzRZx zq=P~KZ!hTjc6L_ghWdXZ<@En+sZRa>B`TK*WB_hKfTYnsZb4<%q<=Z@^{CCclSJRLn3Qc&Wj{Y>6H z3+DrXsQe8q+@K9z> z(~s2dwPY%cpdSV{0UCcWz_HVIfN7ts8r5@?Np0c=5yw?0Gix8IiSYHsnc4$SbcVA-?t4#D&y{LaoBns;koTJK)M3GrQTU&-sgu(90;f59 zz1K0r`g}o7gNcXaJ~^48H8fNtQTx`7k#O^4ehH13F_E~xl`|6){J(e%q9LbC@EM(C z*48Hy8!w61dY+gOvanPl#i5%AFK_<(e8|uR8Tp9pA~|hR33FsSw2#gEkjAW1)ju=F zY@(r}yyaHV9`ny+!u1 zey?TUpwVe5 zLR%(im5Z)HInENE16qhu^}Jm7r{|QKO648)kmVs*j8vsVlJdGrfE>=LT7+W} zHWMYaAjabhwQ*D{jd10r)Su&cyujBvpSMo+>He`^vfbiiewGD}HErMAZhnPz0yE`% z6|>Vf&?@hqbX4!568SrSI>Zb=-=tl{Wm{7SR1U!w!V`mxjgUd^>x`^@;`4>~SG!K> z4<}{=1{rvJ3P|?q?M!MK*N@=A--8o1xLxR{pNyXQAlHm``HHM9}# z_Lfeo0_)|eP(J!$dVGJI|v46COKF>WgI+t()5fvw5(Pegrznvrx~J# zXrkl3{VYZ)OvT`|y{ww*_Qd=A+*d!ldF3{=Iht90&O>h z(mxIU8fvSF&?0&n6OoA0-`wy@=Hei9crI2MlxvjzK~Iyg*|OGFAD-ZO#Vc;Pte8Ui zSj(4{BIQ&Uk$oRu_+-;0wJhbNfT4?86+a^OKgKfb>aFgYu{6=jluBD8UTa;7$=P4s#Z55I%galMRM}*#& z)5#Zz4A6+9mR_=yaXw`C-*k-@9NV#?E+C}e&pmznS6I@T3Fyo)1@qgO`XiL= z$5yNa{q~o>feyQL;B7vbm$B2l3_ECz!jezS5l&f&iG3ZIC-eiqO!f*y0<#$~6mVz? zho*`djWfl&W~N%$Fn~DY<+-K(IsRpu*h6w4=cCjWp(p?lm6EO^gduw6fGQCD(r45x zm5cG{VI2uV3n|agtJkzLY@|dLISw(_Ed*lT5fMIQx^DLgW^EsrNY*dpP`VD}`1>l7l&CxQ=LH0adc z+#qAn-O5JPST8cHbn|B%%lssX)>TFFfy$q0h!^7Z7sEm|d_vLDZv?AMSS*wLK@@B0 z6$V{&K6Pdn&vqOlEc4B0{fVIrJ&Bj@G{MXj8Z+y&zzH-zCL}6kvmeb!r~iy;{jHNk zf{dM<+_D-k_IGGaP8B)ml1Z-@#QCB+Ih-Z)cX6!Rh!T05Ll9*Q@MX_aLl@1qt=2?I z;T=uxfw4Cxe5Om%!?^i`@QX;oJSMNlf#G1BeUnyC`cF9?uq@`yNbXHXKh00zYeoVq zEP`}8=NCd!-9;gjX!WmUyqgR_c{@4|TP}w+Ray_xMX)W&pO-S%F?4%}CD>W-5dZTY zr<=V&y9D@Ah65<&y8l&7<==mp|H?lL{_92MeMI0NcYlNi$oMKizaAu(cDGcY=Ra=m<4zL_ptdNQ2EOrP&t(KA5eK% z)Sg$bWF()wD&t?E@~|Pt{(6~+RL+>VrPGah3kp*HsbHDbkTvHUHYiYO zBq)ijg^vum3RlO~AGwPiTvjtm8RPYdvTny@$0e*h@j0pjG3MBV7xU1oeb?9k2BhG@TT?* z6NbdaQ?AF88FNE_h5ksB36@s153nILr{J*XaxaYsH4I(Bap>q;!!2?Ji=a3jajT7!R;NrEbP4e=!V{Cl zmT9t2CN5>u{mj7w0)^Y(_;nj7y5TdH4D808GNiHYIg6o_&r&u4r1GR1VgRXJ5&9=f z%;w~+qPdoS7HwIKIE`i!Aoo{Wz47r&e;5#uZmxkjK(SpGFr(WvO}jk{e)B9|BzMP`LmR=}$%h@9qw4tvJmpijqx=)9!7!rEi50 ze=YYCBX;g`Y(B~6XlejdM?T1`M(#|>TOvr*0j+h zC#vn$rv|K$y;3^rtLiyDmShw@iaTZvSepO7+a>Hhu>l%d9JKpaA$Lc+714yt<~E{M_4?yl`>)Y5mADbR!LnTYAmL@+EA>%qXhu$# z%@?oBNyMyFc%7>yyl{KB{Sf=faMZ9~i}TFS@9U+)hwN?=vDU(YxPd~r@Mq}Z`(em^ z{#ehj;ZOqsV5L0*IX7^Sbuo|S(~u>%C$*aE;`Tvwn4&#$Bq~+8r#;csi@z+;nx;Jg z*8vMw-l0^eC{lrpcg~`Q_QePiL1KN+Na(uQnw~{k!ETt~7qAzSNe<)(?yLS!LPcmQ zp*b@-a-xSi?HBk+NET94Wo(F`ye?{{!A}syX!3aTmm#L_fL-#roTahKNaXQ=wp?{cMolGPVA+iETKe zJ05#v<`fIiLfRJ-rW_D1nYobNiyT^GULYcKZo{w&S9|`fY zDS2<6*^vI^cNA*(W+#luBXhM|tD;(=z1{9}sccz{NARq%s}ny1ShxvJ;V&gIz*($5 z;PX$7!o6&eiPCuj!?(oQObd{hnG8n@Nr8g$a@v5GsTX118uzojOYqxv_R{(Hi%R#5 z`_o=X@KHp@qaCN4!a&mgYH?C_{ogm$8B62MM#k}Qr!sT2L|*~n}KMmBdR zZc(fKaqp(A?Zp}eV4|YdsOP@G5PB%>vsK_}xO2>tnxt?QEnsX7WEsn5-v%xyzuK6` zrmtRdv_WQl4@&LB=ShyDTTk`rFDuKXJ-JK zhJ{A3Ybh7V4S!JLQq~D7|2FQs%o&~i91^!0qnINvmpnNKoUC&(gPKI?xgu9e_D*va zl*fO8x*Rj|izC1n(_Z<|nbK8Qbd+wobC>TY(4K+t=;qQ_v<(b6gUFQgdzW&qx~(X* zBxCLXGX=4^K7g2*Kawj?D&0$e&~wn)9{+~o zZ-8gFWnNPQ63<1*4`9w{s!i!4Hf89dE>4U?Xbhv6R3Vjry{lRT`gHi>%bDJTJEkW$ zu7_|CeMtXxL~o2(tclc`T3ozH+o(u1D*GXOSHWv}i5$eSH@1X8hNP=<(%TFytc;2- zWo!)hlCZgeVHg9c#8$V3$1x&n*1Srdu(5TujXB04dsV>FpvcDv5cmK>slipIGeKg$#9+lT? z-O_;cRAp0gw7J#Pc}aV^siVhk`&&KY%{s9pvnlyd&GK*qvarj9!u3lc$aq&Zjut0Xz=n7id>{oi-+jpI|p70^jSnN^N%jPeu z!Ie7V%ST%yHlAeYIq1<7s`G0S3yY($koxxV2hYqYf`~A@&JjpSjd1GimW(%P9Sm#4 zJdU7?G_2HL6=rfEq+I+s4h!76)z2!o{8Jh_bLFX7mKtgmVjC}-^i zSpWvG`j)?~r;c`lbP^$-vUI?AiX5Wt{9qtx>iyZ`pYrE(3UmN@8zM8=jnzyc!72tJ zNEbLa%riictQo%h&zGkd(bfeLe(AxY*PdT{hCm451JhRpNL{+IZ7Uu}%6&F+N9>V_ zzHM0Q>heC}i8_#YUZDkd^RkWc&E6{=Ey?mb6jRR)nY|pW&KCcozdy8Hbc$2u`sDmM zYFXVXg*dcY=Qj5G)1G3>%)=2|!}6hW(ubUzZ1GjIz{=H)v7_qCszO+MK`thavNQW|+|z zV8x%I0Rf5sU%#dO(~AE$lHNZB?swH(XM7P&^I2!f{eJs+GEobh@OFK9VA@$W9L)uZ zwQBbJo-2h!BhKV?7HSBqFeHvS1?`{B+o^ZDOsBMi$ zP^MVP<&fnDf6ej{wv#I}qt=ASDluoK4xXLk z@!xqbm`)I7G3>ty)SAZTo{-+FTgb~`$wmbB)Fx6|s0WBq--pwg5gRVRTx)G~d!yl= zlceQ44$Z!~M+C6J_;6W4h6?(5n6e{tnGxV}pfQ_J)I+?U$8hQe>B<*}6b;9G!@5&A z&ldVw`;)xo1!_pSoP~LJz=_ zkySB|jc-UsM2^Wzx__Zn3>-O1_p<_{q4*>0VR-EsSPLSCS&(Y+7DcYJ?J}yZ36Q2o zWkk-geQ(`cQ-QdrCaXSNV!HzA)@Eqhu{t?>u@YN^S*QEu3<18X0Uf|rWX#eX$mbqo zeq5Tt!@0E-L%>>rZ=sv1uxKa*whRY?M>&k0c3;Y1Tss%H*d*bQ@4l}Jh?fh>9l~+!3g1SrN}NqS3{Dj_ zwSCKai(wjVq2g1_{(S#(0^>x&R9s8R<>iMPiih85=Hz|V8ET8@m4}4H(xea7$TwT$ zmujTx)NIc#;~&B&fnorNUZM7?IYGXK!9O5+i^g+nyA$1bj9wd>LLdiBaQ@%ql4Jo8 zJurr-Xqg!_id!)TgR5I);}I0pblzCTB+82CX7c5(Pp_UU+lRw=eMh;h2lAh66d1HAbY2TszbW!sjVUutDoO<{%C>xx=F5}C{@ygcARyph z5K1Kgik@|Fl*i4E6V`M;bmkqIFn+YoKgIn742 zhuD_TH&-q{TOA6Y@qtHWf(xO&5_0Vp#5NZJ6ulke%DjZ@Od%S6tSG*^75F08CyZ_j zn0axjJ`LvW<}C<({H&hkyg*l(xB}n}CY* zFd%EP4d^%puK^!3Y^WgWx5b8wrUL8%IZ#WVdd1xXn+H=^eqZR6(sub>9E;dAHoy}( z&9N>Djw0wxygc&;u)q_}3C6KX)**V!7u$@i zuAcwcE!FmIIRp8>IOKzN0e%l*MPc#+fNgkF#|KOeR%UNJP61)z=CNWSSPI#R65eT z!vb7%01($vAQVD6B;@p9A`V1y?oa+N2IwAHG^{+VK8>Sokab$Y*}DX?V=tI{(8}o< z*KFA_{Z@G*Sl%GyjFN}C2`Q<}XJ zVq*k9sE!TsRnxMKDlDLDFdV8;|BT|ZzBGitW4r+JNq2QlCN>kB7D-?C`KPV?SJj{q z&{o#33K2tlKj8aQHTX<#?{X++$On_IOkK+uzaq$RxN1GTH@AHVr?@HXOVW)0Y!o-w zSg&9x*6_{<(|DtWu-*|07emckRoD|0qKm9lU{G1rCfP)9%0M=i-Nf&*bMGVMY75VG z1y-y<+)Ut?lebBh-@E}d4anxP=aUWqs}3}@6|8`^vNG7g!~mikpsg(HO>d#9mh-bJ ztP*%3Da;`#C%i7Qiq@mDw93HJ^kmOa&WJRT4Kv(&AEs?T1ZG(%BVC|{ZEt!b;;y>? zr-}9yplHyZDwn2-wEm}PfWrM3EUzQpGgk#|uUKw`sVc>CP(JO{jxrDj0L#<-3zk=7 zCF0f*xIl-2noW(rZgOGho&j@Q`3IKg?&VEx4DMw72bQax!b+hfcAsVB?W#|$3p(Djr1)8FV{FFuX;jZ-PmlCt8`|;8LNHC_?RgH zfF6JjDPxRgysGB$$ACff`xI)rP`WgspUaz$A@D!H#TG&FNbOUad;o;hT~+Dbqy)Z= z`=tM<+@wnSs>H>F_wuuX!O$)a21&PkFt7E#Xz)GVE@ONLD;vD=?_vLPkX_yiZLO zj_3SmTV86(IxF%#)*|z_I;NobVXhdM$un%SDlcbyaH`RUU9)Qt9*)93I1PNGR|t3v z)MR&k8I7p{=+HnHHN7o1%aj6_b(+!;!S2aUTFKS1TX3;&@^OEFd6@EWoo@J@pAW6? zyMKUrHkIlF@FTV!fJQ+IZ^>MKo3XO@E}ieK+0_T=|2+1LAzt}>0pLrX0P8mYUHQt< z$=Sg1U&Sk18%HO78z;xVS8lZbZQf7=FmDJ}Z1RM;S0Uqv*G#w@wp#JQQnVtKk2N$c zg+S!l^4nW0e)}Q_ObF&uf-$N}qDp*IzC|;BY7DVtv-$1q0qb>7S112${bvfsU-O1n z1r@tag5l&dJz_RQzVsiUt0V<| zu7l8)*u?3~AOVs_xln{761+rkEPF;XEHo39jUlnyr7wYL) zV|TVtX3OIrWHF~Dy+A=ORy;mta`;KN%S=0lUeMZoaNFY~;i34l76L#rMLf2e^=Z zjU@9c(C1p6^-!A(nP95!>;3c#+LxJm3x7FpD!UxuKL4>hyK%*wP-ekaXM>4x!mrEP z?IO%Cx!LRO_KHuqZJU-0<{yu3&Iw)>=7=D%Beh7muXb~NuDLfs?!et=hBkukdx;Y4 z_4ai|&vNs{>6RV!qvOyL8sGf^U9hhP zx8`x2=yMRoEqUx0sOzvJzZm>}a{xvT4V3kn(bNcm%i6+&4?GS73en zagYFj((eDMNTz#V|TI7gehzwg=pB^Sx%Bq0eWOg3*DhoPV9ufXrPBOR5Ayu89 zTv>+|1iETFxrT1Y>9~+P3#Mz{A0%f$Ik!|AKIe`A;X54G`OedG{e&K6tS4vURLc%Z z64GFTIv)R0L9wRv5(u8K5VXtbWOT1@@L5eR%n6J_J{kcZ$Utb`F^-$oX4^-%7V6k| zeiG(cshWmdAPhE0uJgKmo3c8|nj7@;4Y%3f;PxB#USCM|K30y0;%LKRgqK&*W9;1z zAw2r+_!}f zfuQo&YM@R`%PEdw<2*Sm6o)*fS@W+^U&q{U7aQQpyjKBZhvpO3d58I5B+09TaFQek zll<50mZGMh-)HqvPLf=6rFNL+uB+ZO6yQ$y!voV#vztzfZp1up3XL z4|zEtQJ+Wo_Ji)OlO|-RP%Gzn<;zh#7Cssf^GF3PzI_`=d=H_e!xtubHIWBqwo6pI z3hZ2qxve-U1TV99Vyl#vR9rnlTMr*QqkO~uHPx!kE~j|8mx@L_v^xyJ5mYg4o~Xsy zbRneO5%a^n3be$l%wK%)iZRiWm zzt1-|^m=UY!+H%!lK)uglyt;QxX(086yAE`FDP*z5^iqCv?#q+qa%?aX|Dx8KC}vq=|Gl9uJZ(h?OTC#_V3V}Rh{lVU_S)P;7E;+b(<`h1?g=w z?tBZyUr_guc zB@5*^mi$v1S3x?F(F@qFz3|*5GiZBZ`@;|p&-~_Tn<1)(R$h;DXVHPg^5i6!`~LbW zR`D#?jM0a6UjPNS*VqiuD9KLISv+`&|Ac(Py+*6st+|pzrjy5EGaVhfM|vXeGCilv zTnzjms@Ef~Zo5wF`AJ8ToDl!MEADQ!9Vs@w`rof zk}O`lkKrxodXhe<9#RN;4QNeFjj2!Mu1x9Y^<4HJ?RwvSbBl?ld6cthv`(n6sL&tG z;;bp_rAr+>MOvbsuIVhpBbQ%F&Js7Uq)|QWPhUEaEz|fV^CoKD#ach)ZJeiV{M1># z&_yHoRmGFIj#xl}yWHJg*yFLbE?pM|-_u)I)ZI03|A?Ucc=w1fzs@Z~rn2rGN(r0t z8?}aUXu#bw;p9TL7~`INK0mXN&Q@x!xSfYWE{Hrl-so8W!j36r*8vX9c^|%HKrv|R zf{pL%LUs#gDrRozMgy;Yq5!9mFzkhDbjP9I;Fjm%eOK*Z6pz=HLn^ z_a{m0T+o2`AbkF;Is3HS4t+cz3`%$%3rAx#jtKZRW9&N>@4nO6pi-v-uzXDsL|o7~ zBD__^j+n#9RV0c7o_3Soq%4b2hBQzwZii>BMms4oqcrFW7&Nd&+|l55OMF6__fb$Y5F z05B2AzhEL`SWG74z`+n`E+R@?49Her05B1k&q_IukhNnZ4$!VD<53CHHciuV!|$$m zvBa-%mcskqv2qQHG_gdK2HcZ-2Px0&tRT@q{8BW#ws(d6V^Du+B4Rlu7kBY2CIlS? zYYigpqe0Lj#<_!0yxbv#K+F8P+|~S?Xvd0(eJmNLq5YRvXxc}W@t-GV4?oC760lM8 zRj%fdi6CmILyI&XFu&d%YB~Mv<$@0$4lfjr9`o0zoiqUnA=Z*mX%u8(yw%{Yo~NYX zXMocBKx$V*a`}@R^4U5~v9%s21P$XzLIF)Uz~dTmOKg=n@sbD*eKQscBKne zrG~&f-)`W|yL5=p4MKbnd#%pJrhM{8PhqM-z~>P*uvp|7v%uF~6cq|Ff6123%jRst zP8p17H)+9$YeM3iJxUnnkw$uxZ)Z`g_2XqO={-J@ZEu%?wZMX zoxS>KX;Tk~c{FiP=Wjl{-;aRvZ6mlb9=&{GiwOCb$p+qyP3+Y3K&Ux-vxU|wM9-SZ ztt%oOjxPS%l`BR*toHVeIKL7LbV>mEY3fFv6mrRFq<1^*7Uy@UI3#ZP7rrxfmg~lG zncv#2F~2m+T3mEa>T*>uzOdDnZTB#vS?X-h&!F0h@Wk$kDQ=dyGq897aJR5d(72aM z>^U2Lq%Yy!dJ?q z4ATsQ+yKBO2X$n={}I`=FmY|xLUdIB$sRp1_KpqBjU1xjl2tQ7gt65;%59BS$hr25 zVY-0ZKo~>~(z@^3oYaYQkb}~@kgAA6N&rjTmLm&Sc(J$eo|$EN7U_wyP;9qHdKK&gSHjMrl3btxXt)GceNX5i)TCMr%wbe1XAGT5O>>R ztcFL;ojtbumK|qdl|4HkWvrNw$?$PuX`>gGaO)Y@yj5^>fY8A>o~v&7*RsDenhr)k z(Jre-+Ff^B{Kc7Md$s97tgR*zeTJdFgnn>RbN%>sLX-DOy$IEv`}zPsIT2Y|Pl zEim9M=4;M^W%be-868A6hc-I#t=!3O{9e<@?dDKq`^w`GJ4s4OD?TL|wztIEG$ zQ&*|!{p}j@J<`JFTxQzaW_d1NoOjbyz5rs_C_=@TQC4lP9B%)JLGN6^CCi2RV`nqG2BUSfg#XMtNv zd54&6X2Aj>t1;xF5Vxkl{)+E%TuE))30jGe>jGys@O%1^`s-kYM4Ze6jIf zH27-|27P1J>J)La;6iQUz=pNKf!zu_9{<3G?bX~^qNMTdfqG!)miyxOAh|@0O{LdfRro4KC0z(uFHJEL z=Mo}Qe?S9osUHdkL-E$!Q=sS+YxE*s6HAWawY%GK!JsM*7}KUaFGd9p`?NLyx}QH1 zF5|Q|zT|BOi@3M5u)|d^mcQO6KdwvQxjS~LB)tCGHP4SFSt5fAN zr&V3)#nf8#xV3N3v4%RJJLY$C)buVH^Y{VspRKr7aRw$ypcQw<_rLoT>|ejU=0OW$E5)ao#w@=dZOvMn*9{ZIf|`AhgmS(zU)QGJTU_ED6y4A z2#ZJir>~Dbc_8vK=r7r7If^E1d5^CGa}IaA^+c0=3|CLUwvm~3VB3fXQFYC?k>7ex zbJF8(Q=KmFyHze~qJ+bFxiGOJ0Ntm2I})1|@|&_Vg%VW@?_II)$KHA#DKRTLsp5&m z3JKsECRgWBYZ7*>or9u5ws^RvL<5f8l{(}p0uta*#d|g6mnfZU)MhNm&zbeFAmo(y9>)rFaes}#|DIOyoln8E_{FU;)%f2z6 znZ(H0r#?+G*J2wb77Ls6O(c|%U27KLD zQMFvpSqrroXi1Kv5uV>Z7l(FNCc~l=YZd)$nsa#cB*3#k3hfE$RL_e75BCeHF%$N; zC~hM+S#mas02XQb6cEGUIjlYrG6hJtai?|lPiJFE6l!d@3aVd4*gGz`RCnJGn9nre zU@mKps$YT7e1V(IAfUv?yp{-}eprlspZ|*Fnf!a$M@9C2IO6n|=@NH|duVG$JkQdHIstG0&#}#9EVk*EW*>J|83SNse-p-QZn2wmZI2fhjjP!qG~f}yV)zZzg!_r*uQGv2{H=__KWoNNIKzd^?Q~qV(tDBJVb0Lv5#a= zjK-oF)XYe<_E}4npTrLaROS*aZ_VXpaFfSk+ZHrvk4dZR4(-EJW5L9T;k3ZW0_%M_ zFr*=KvtVWfQ%v+t24@6zo>JuOSa9N5a(Gz5wPNF}7KH+rNc*w>7?4C@MA*BXfllBr zBc(M%n=~>8-q?-;OGe7u1yBYUmdg{Js7A=rP!%Fh&U^QwHf_SliCL(+VmdfI#f&|( zEUFfGXrCHcOv09ayy<66L;x>mQaN=6`<8epFGEIiR!a}%J!dsBbQTCYcJfNHH9LsI4IhbV?F8$&Ekoq~qD7f3vBl_dz zpNizPl5ChS&jaY>{a0+kWjjGA(vV1mb#m0f+xK%Tw2TxLji%!oE@fjh5J2*UH$Z(f zCd9rk)}7TymMG%?%G^XO2t>DoZy#M=*G&PL<@_jIhZTXxvVsR5O{PG<8ZeU*eFanp z1!J7zj{zj1pj6XFEx*->>SUZ_YV(z^IuaKQ!cPe$EQI5KsGBLIGr*wjM}`=oC&k#) z|a=90BS}Ozz4E$GlXrw!_*Urgq0=WtPi5ykJ9qBizmnD3V^Lp@X34ag4Qk zrx2d@D5FDD+w@%1L-X$XOnk}bc>;$utk&2vi@Blj33ubha4lO0%|u=oAxap$1a^*= zKEoQ^gxhLo;}^~H$Bbj7dr<;#bS%1Wxu7+C*Ao+pg)Jj3--$QB-H-dE8 zpVq3n<45`~%aQua*v~N_nGHi@&wz$0@^yQ#?qXbJpova6g&b9{Eko(Ns$anDxT}do ztqZi@msImYJX%w>Rse<`KH$C`fw!VBoV^|*d_FobY%DEreMaD}Ab`Ei6k1`}Lcp-? zt8#(sv@AD5xI@B+uP3l|!;+Vj1U0cTD^L3}8zGl*!N($ll`c8vlMxU>d}4YJEi6x& zKW9tPu|Iy+BoLdE*h47xy)w+@Q+wC&vOjm8;#%K%Zs3}(zd;@n%U9Wnp#$j1c_Plthuswi@_-l>-&9=gfgmwEv99t{a^}$q**$njC7;{$4tw@fWAx}&Q(V#VceNh@DBTLrN z$|XQv!kL)^E8Dpj{wFNG%6JGl^|igFfo?!qIMP%7D&pJEd^45L0LlzWJBx&5~u|AV%v}tK6vI6G8-?P9{&Y^&rgiX;mHhvY^ zd9O6TdXijNo5PbYD&WhE(8s>96Z9%@vZ@>rtK$ZkJA&Ywo8)0{OyGqhNy>gQ zCuS*H+Y}gH!TPu#0j%yAkErMV4*`2~wBlgRQtfyHqDc+cVrn88v*++TZu@6_hZ0b= zQHIg`eEpp`>v{$209`C-k8lnoM2xyiZq(@n+~HNm2($0*V0>ZuCZfUA2_FvE83+hR z8qK1@>>t(Y&*ZX@A5|5^BT1mes|t7%+B;VDLA1tCD3p-^&^%B;ibSeRn+)w&GoO!L z)tun(U_XxT@UH2joSsT2j#Et;A*_w-q(G$PpUE`n|mGv z2$SVi6%>~V^*mfS!8~G@5XX)$ZW-wsPE^HwpNqy5L~0!Tz}y#Z=EpC(e`ZS$rtQ`7 z{Al|z1&)qFaikJ;z`db94QiVb13iYjz@ogEI!Q7^;KENgnY{RCxh-0o0;}pLllj5Z zZ$Vf78kc&{A2uh(8ee6SEOotY^tx9sciVPu03J&mOG{^GHA_ndH8tJ(2A`MJHAjID zp9hfbGsh38f6gc#v04YZ%F$`)QfIBpD&JTh6f+S+V#q5o2H9|Mh7GL|UP9+~sD-~? zE^WTwb-u!BLXFZz>8;QsgWE{GG9wt8M}d#&Mh?AE6u+)54sCAz=W%sc>=4llIIjNf z|JD3I*tPyOuBw>1IJh~Rm;v*wg-!l88!g2 zjD5I$pWB}A@H`@zSL$)1FD;agNx#ZzB-n>9l8g8CXHEA^CS%$G``U67?mV#hLN5(| zLyE%_o0Sao_8Ld`agm^%^{AEHko#|PFB7yDuu<_>qPi2)9OpDPEa{9Dkt$?5gLY>DSVRVipKT4b!9I_W}TD^i9Nk7BnC;Fu$iA z>S|*(&^mMG8E-dafqcsm+Clz&{5gHZ|)2@4HSmYU`43Z9(OWf}4i z00>Y|QPQ)D2xh0EZ&@;0XF6zNc(K7c69qdf`Ab51qbJ^4I;PATFDRJrvQpM4wkAxY znQafz_d|lFs*T_a@i`30m4e>krYc-QcNduMM%`G3yv(ci_FB2x)_s9(JH#mFeuLbx z6Fy!|nH&WKyhnINGi$VyOy@AD>*i}~dJG3WpW!cYdeV)6flyElXdrGoiC=KMqa~&! zD?wOd6^A#pDcsGT;yw(xvzTZsg}&K_(!9eB($<|l^Z~*koW!#@BYmEqt3gJEb;|}I{Hpr^3nzIF%m;m zQ(K3Rg`lC(O?`nxGgP$i88>yPWm9RQ)8svX;xEy4Q9jC*1SgsB)#>Wy6H=- z7Q+~x62Sram-DYCVgi1d`eHtGfECS?oX00h=AqF-{qW!Pds7vU?4P&9RVDC>c_bxJ zm50BIk)l|UDM!d4_Q)w)*HJ5|N!Qk=)2=!9TJ(~0L6KCQh;V2ije)TdQYM1rL#YOV;?_(hCzdeW%oBTCk8VSV5`#vO z^Tg6I)D5wv0=_~#%C96nEFi=*KWmuAD;f z+3In&>$$GNXOwnD5z>ArwA822fMNX18cNQ0G9S2Rj=o%7n`x`v->+L^f2#$r6hM@{ z>(DbRQztI2W2wGIJ9Fkn95pWe9j%*o$Rg_qKCX+;YS#)wKj4qVB)YSga*Ar;Rkn5F zOOa5!ZCWsg*l~^o*gSBB{()t z!Ic0Rzm2YB8)N~;=?shK#L>=p);m@P9Cvg6vSttb@eo7#i;I*1{s)U_wY%v&l2(}= z$jfFo5sN?R+f<=PHPl^M+LgfczI@2svt+Ss-lmU}Z9DB%n>|H@j94Ds!Au*2g}-FG zuO&Y04<_=cKsWwPk+$c(J3|m1KL5)z$E;ev5B)q58yrKbD?`Q@~YGL`K2?J7yFuU&1 z3)Om=QXv=I`N;8sbE+^lu%x?Os4(XQ#EslyRG7j`cb`teqk26LX>jUBlf&XAJ66+--Oy|kgH5`?gc6u7m zCch-;^=U;FM3e_7lHCzV2+VKoblU0Xn9( z<&!M-TYPuG^y?yE#p-jsqL0gzXzHo^NTc~er|z8CALLYzSgDl=ovij`()EqC2cvk7 zR5It;xs-R#awi=V5Kvz)cISq}aNMNoiCBEHX0j9{Mu9rM%pgpX8Y`^#vbnKq~8$un&Vlgc&tAlXbv(3By2t_QMqRUE)*;+gZR zY?|hg^pZ-0Pv%A~Ju@eIg!+llU@A1UmaW;dx}c(dTlL75M#&bF4uCiWX4Gd3O)nOK zkWum5=r?4-szsx9f{F<)Cz;Ois}bf8I9ch9NJ{Ju`aZpgsSPJsS4n883X0A*Y<;WP zw7DX9uXdI-A85ZER(BK+3dC-R+#4tMJ zD#nMNIcBo!vk=F5j<*jYmW9+h&B9n!?cOtoP#t(Ai;+9G1`fM&LrN6wsmk8^k8k^P znL2MEfIBZlQ}cME?0A>z{wBQNs_(gj|Nz7vN{e+`JwUxusjBkOheiV zL)C}ozq9VPByiTv2C1R{QuAGZm6mHsVZdDH;Lhiu#6tLP_qMfpto{!R(q+moJRZ(p z<{9PonbqwWnPi;t)|Qoone(BH}%8JAp@4t?Q}Zb+vw1)Ac~B*f(Fem9N|-T^v?G zcC9|VvS-*BIHgdbESPP7JzOwfdZ>!C=&EyQ=+a;H?`-(=w)%XS{WvRn@7^tXCvAW0 zUSDg*?9|`z?`-=d)qK*tsbif?QyyYPw3If?a0`iIsr*r>ih(P+ZH@2{I@ha|pW|V3 z_4y(Exl$iKueX4wURg5&b{A*_!Zk#C3p4Fd+XMHNAmW7 zLI-IhFL)4T5?wYW`(ua3+82vbwa3LfU}sDEd9oUO$M!5qnSd7GA-Q{+Pdi9T0$8MHSt?9p3&z(E2`A4TL!K$t42 z`et&W;+LO2#{T)S6=ajcvkqC4-6nf*(A zpZ`MB_pm;}d#lVF+rJCpqJ-1_!TwPJ*w z@-$y>qUQ6Rb&wKyATgdD@mJzsdP1<+=TU@Z!y7Ya2gI|aa^T9Q(Z*B8_f)vZxsO!T zVH@a3+)E~0^@AT=0Rw6Ek#u)65m7WVCj(Zx==~bX`$agDFoMPTqq{ABqtjdjxPE>2 zT2(ge4{a+pMUv)NZ9K)AbVoA3bx1LnXnV&7zX(=qbq@7Km<5IM(zHW6s$cV#NnB0M zoNK2JIrW~&b#LWNBn+lU|7qF2MKm}{^Yp6hW{@~UNq>STP9@nPG#d7{m<_d<3oV%o z)jR-+mz^qxn<|8>i5ap>aRtZws_4ziS4!+?Kt)eYnl>PY%o^D*QBst&mPV&3-IV=@ z@G1=iPr7?!Ntv>SQ4<#(1B`xVvT>BJ1hl#H4fb`3#j<1(3@%242gGxq4_b!}u-`br zy(EtLCb0!L-XOoQnGu(Y+g(1LYnX$B)u#4W-4G*zNOjp@epdRy*U*i@_U_3q5bds! zR$p<3adjofoOCkq>T&cosk!j@#61*dE_ZPpRoND^gf_;zMP{4xJJKn6Enhj4yrwu& zDW29CTE!H6`p`=KM60XT31XfKw$WUpPhX%u?X<{NS)PDa3@fgA=)tdcz*i94Exp9K>IZO&{Xzat64RjTv3H`t;~8OcLh&$0#{iP`x{^ag%>tS z&FCsBrs3#;otMHqPiD}B;npmZWk@m)ktv!prqnEn@N2H$_qroYg@$X45cc6@7EMU2 zQ8)cgMipU~eOw<~FRPRIP zN+QfF;v;)f^VF+hEMdo+okz2QK6x=Fby@<3&cJ5XEe{xj>*v&~9fqZnis%3NMdXU{ zRW|%Hb?vzi7=aS{R-WH*uF%zyWS{{ZEtB@6cj-9hmldb@)EG+n)-+QPQW$Ku!;-Xa5my z{+oXOJD(r?VepsF4{p7nd-w%~FG~yK8Ou{F{_Gu)5f3gFkhgcXf{#mHQTY7+XGIz= zMmfRrxUk$R6EA10^@#Gq4_o&kIcJX~lWL2}==E@aRJRiWGFnxofUN_(=5~^j6)+j)7`G#dPotL&X0OLNxp4am{w2nd<&Z6e*b%M^ zi0JFna&IwsZf*6RF)*y{S%ObsFP}3l%wYeZ2o&$s^q0DT6a}#{Z0r0JdFF~LL8T1- zzC#|Uuzb>h3h@n*khy28F>Sce;Gf8|a$w|{4<=f)>>9Iw82b?r(K{s7Z!fC?8+0Et znRsQ-Xl5Jeqf}ahCB7}F(#XaAMf8)NZTUlss-g~F3=HQ6oHoSp{3#-0qPURBGbf(T zem{Cno_BM{zy08-+l3e+clpR+_SO`BW{D6{qzG+;ie;r7swQuXok6XgTwIm6h7Z); zvy-DXTN8}unmY`GB%?&@J~xvq7dOkfJnOgA1cshuDB2Rc4a+T#KO@E;PSw*v+cu^lt4`H$izf zEzgl}3?>*Hm$Xvu^f<55w>2u8nuAd%N*nr%nB7YfYDT&P&rcOq4Wd^3iT$K~;jZO> zTs*e=Q9gr5FU-|?l6m?4eqJ(Bp19gJCNmB*7b?yCX&ATpZK%oa_KaH*wr`F8v%&KhR zUF!FgANN&5$Cd-rwB*$x?uOs1qwj*q&x^Jk#c$OM5$8A`4 zaN1-fNvca(3MG^G1CcA!4{euHG5yW<*u$CJfzXvhn=437v8$%u(c$1LoaiIG)B`iM z_K8x9*eLjEQQb)q%=A(LuWWxEQR2rL;fa?Oo>ylTK0z^H)DMn$w>+sDpGc#BCgFkt z&=GAr_Bwt(e%9h*p#&v^nWprYJJ#E<9!w-otnJhmq2E7iZ=)FLR7%?-^AEwH%KsQ` zZvein0mmS*avkOFBExzTlrDVuA2dIuz;qUgh6p9hdNR?)^l5csZF4v-Jfm4N+@ks? zmli2Mr5hc{_~EyI!}(2Ev&VSG|iZ)=-HU_|uWPnB(RxQ8ECv-}Wf(N*@5PX#A88c0oC3d13ZslKah zXp`XZwZjjSSo+aXQ*AERHxNc+*YG`LjfdirJf*u)b)x;cu!g?{;70olL*AJ8_2hp9 z?0k)B(Vlh$2JB$S5}zu(t`lraQ?IYxzsxchGgfR9pIW2X$XDouu?zE7bk*?8$zj;2z69Bugo%LEE+)sX1-v5Hj@@+q@fOpJUaM>RP z)$7H`9Rt6T`ADhQotHbUPikn+n_z6#wyShi*>x;1B`d@e5<%OSm}U!|Bf&KwB$Ho- zIf^W46a!n7un#j#Vz`dy>HK8hrM#W>DTZ?gxybD#XB>%%21Zk0+=c&IMXCqQU;x0v zgQ)V8HpS#2mmhgU8Q*c+Zu=R1ni~u=p1>@U3~DB^aO*}QVV~m5Z(J@J<5&w!z*i_% z`TiiF8w#KD*9|qMFaDL%Pw!Fy>Msp}*}4v-`xadX(!9Rv*Gq;zm&ZB?@}wT9e`@@wW+?`Dv!AwDsg|}JhaCUH`ms1Htw-eky|iv{BTtv_+^!|- z?{crH*7RJ1->(8FEyk*bx>fX0AA0Le)>75}!TO~CVEt1d);~DzdIVzq={{f3^|I|7 z>!L=gK=CgTe$B!b>dy)GP0S<@#<_W{=H$(lIsJ!>IDP2m^@Qs*d{618o_tdX0=<^( z^q4(Cqw!#^(E=qRvP8$UK+f+2WXmrYS~&YY z=~EH`5hb?$8>=Q*Ch#=3UlZoH$vuPvwv~4NN!yuFn9QfBu2{z7qHD6|UTPfBOpdP_ zB^!5bIp6e4qP=te0sX1mz8D89-i59Nn(L|rS!sju<&l6s)Y6wo{6lWp7t4xOr<%Ml`!FsI!~z$jQeB52R4ELL00hPJ0t!z``N=p3v4qypip=jc+4SdN^D`5nPjxQ(5g=<2UpjH_dft|N z@MKl}qYul^-z&e6t2QeK7vgTz60YbjMQiggRi&y^ooat{KtGXOKT^UZpiYvA|Gd97 zdCp}q7EWc~NAR|P2Ez^0R8}MO)7nvQ$?SIT4F! zh|$X!eFgty?&uNg%;uqoyiTyl&#gAlwkIV-W=*;1E=)gHkGBky5QjiuEdAH`Jpawz z+y*p0pW8Wi>I>n|i+=S;_k#2{&55`Kc&%0%!fyG7pwwv-s|BQwS(cl+;}KMDj%K7{fnC2HRG3Y zVSWnC^3BtF#=0M&JxeDc45{?e<*z8s+S`5jnW z{lAx9`5#xef6oK{Z!c7}?G*8Nkby(3W3vigVRe?!!Wjl96|`efP=Hj+oUh2H9+i{R zqEAyYa@OmXgYA{QeqIlTUNo-oGJ($!+n$BKt-Aq!W@DRw7Eylu#vGcfU#q|Kx`?pU zNX{CA2x1$Q-!?-vmy+g;oJ+r%1O!R=1qcL~$t_Zd93>k6%8<%~^ivQ#K&gX5L}tR# zdN#MU?hh%v@-O*GtDHP$@Sv<<@QGLD9#%e+9?NfXZ&_w?%Ka+niZd3x#bt6zRe@W3 zuM6%bHfW>p1T=Aiv8?l@1w%|kr?E(}kk$n5ZI%^XjR&dNtfGnP%%=YF&)l%zSlQ^= zj65>xK`1^LVByLqQK#tb?mD#<4!GlzCtP3FfaZ^f(xlkBHxs&0kh8AwU zt0ezZ>EeO9b2l^8^RXoYCWCPuGba7+Q&63OQfx2iix{!c)nl@942HsK-(CTK%5UAe z0n9Swd(P07;HX#XJVx4Ww)fe{`b9s9^k+t|UOHuH=~bk7 z>IlR`%4MJ#xzPcFmx}Ros|=WStHy&qjWD(qnPMo@W3LU=xb1>qq9|h!S$!hH@I`-C zG5B=0)27d}W6}XygUu>nsjTnL5Za@+6#d47e6~cDH6Av!*%zj1&hHnP-ffVirL>iL zq*}IG9wrNKlodiIO^uumEnjPk?P_VJI(pge+cz@Jf*Vau{=_?jgSPD1Xa^XV^#m&` zLE(`M9%(dM0*X^d!4Xh#q%>cX%mQ zT*>nje^T!9=JCGm7)Gfb;p8f02;Q~b(6^^G!@Z}h3c>VR4Qdy{ zj$T1OZv7*yX=>Dr?Q+-z*Ch`wP`$D zlXgfS*lXmjT(@^u4qpd=@$7M`ZKHl}@NRr;hvMhZ$j&Mr-`D#s#tT@St>?{2*>^9u zCxRbMIhr0{Yc8|T7B=Wn1Pj*M`$~yUL9d#k8ZHrQI{I`pA);B+QvW#Q(SBpiS$%YY zKIOWI-hB@guF>b*1l~7&9K@j561LTv#xkab4NR%5h4cQ@OVY6$8?*ChZ@ppq&)&{N zgmKU~P!R7)K|qZDkG-9L7sUVX8@O-(QysC&Aj)j0lpef8CtyHz%ZQ1SHctdeuBww; zxX%REq$3pGueh2#xN4NP$0D1=*jE|__R??Im2a2{XbsB4 zSB@9X?OlzLreSgDl0@M+P$TMqsgjcZYvRhmcRl z`I%nJHmV(f`iThv|2ryVs zur$u51+z)V=jZ~-f}p{}ucKAALnzc4hoF{Ps#lHeR0}MmvDv8890QrZT_h@!dfJ>6 zo7tRF2$EijI@^*Ux662gx+iV@maAwuZb%vx!j8|@;~$|kvx}dMhm@+=ufS_5dag&r zZ6AcIrGQ{IPFLt^lI`!aK1Uh zRuFc+Kp91fzQ|<(yelbzt&IK>*&paj-QdqU0_{%g)LkjxEqqki-J3%D@bX(C;x4W% zlucWp`1|}b^rNj0U4Jpn5rII z+2&tDxyVP&EELIspIHddaRrCc3gRs&01D-v*|Sh~#I%=;?;xED(w-Y%hy}KqQmB*R z*Ij{da8qBfo+jtzOV#ogdbCUDA_OhtAC98RW02rfy1!%sG#Vp4CdvTKK4JJQ9J{vo zr#ps13*c*(80?c#Moe_II=ks}`>-OHpc}13o$2SC%ESYF5okzG#v}@~mZ;T{;oMHh zREWF#oDn{GGH5*GB-sLh)Sxhz0iFqSM3bCyO0;~xUJ$13wr0Eu>LJ)@x9uC@LmBOA zEn^pLXy;!+8^Ro~#KnxBK&1@Y04gPNi6BrZS*i^0zvx>$C*;*`ZNixA*<p-}5 zzqc9}lrb|z)Vk0+khaHvDC}<$LP|D!anGMC^c0puQ3yMp7|$dIDdjpaKX$e@?vK+i zzD%Mn{W=fv#D#FYwNE>dB}!t9X7=(xQ_v1cKVRK|gFc7Z5x0Ilp-AV)y-W!+N)8&2 ztP&wrGgD;l%`<#-@^{X(U(cN>p0Mg@X9)vK-J=ewV~w4tAFAf;O{j1drm9s&7H#Wx z=9xJZretp?GoobEm|-Xy3k|7Fv;3JPEX|yQjidurF}E8vU|B&_tQ*)7`caZkR{Hz* z22&c7KTs;4A9Y01n;TgdTZoW*7B5pQHqlkP9gp~9iRr>)84Sm89ABFh!@finfv!mi zBcO*hB+RiNJc|6j*y11ueL}nw2X$+bjN7p>1>*%2kQy8>MVQmPiJs$5r>J`g<|zyg zF){O;u zi6a~GpdigpapnwkeMPXah?uV?6lf)d-Y5ql`b(2CVdqjrcn8v5r9;w#?y@oAF3*HE zzfbJQ)fSEz1+xhku1DCt_;I8B6itQAH$ga`0#-zS`N1=rZb1 zG#$ew8{JtvBy>O=z55ALr-RI@XbA`bX7KO}$*&q3>8=jm{VKw(6$Ydf1dDKZR{nX( zWXEJbi!^p*L$DKww+qH>js^ACBZS8FJAnt~q@{@-VxGT9PhcNZnGxe&e)$E=V>Dv@ zE0(dy;~AcdANI}589D*=Y5|sMm$M<-wwkvP2vdV&2Q#U3D+kCvQJ5=p=(ByM^+JnL zDT0GE;6E)gqaKX1HxWwc0?w>*1RcFz?^*sdP|)jsVh*>JX)v}KjAzxRkH0kxcls}$ zWM)ln9i=kf)v-$;YH+r_&-kF-%gYd`;9BlAwD*p}G6Ax&7MM$3RKb|!vB9(OBJ*KhL`-u)e=r+ zNg?<20rnRfc#DcKYT~`Z6O5Nf)<9MLW_?!3@%*QsiI2w}EJXG3w|VHk%VoA~oUeDr zF4yNR8|Uu}Ji=E#SVyIIH^*<4kwFOwU!O8U@Soz|du((o3bOOl55vY|U_}(ZeSr-d z+P{KMS19pp3opV=*rdS8Nc5BsNy*rmFBCR8+t$X;$Nc4f9Pn?eCFDP=<;Z_nEvKfb zc=O8Srrim;2OBFoUoR1paCp`6eX%V{^+g{HHWyB>PTl7DPadc3?L3y4Sd7C+D-1_I z2=AoP+0D$g%=7Zk~+htDvp~g`uN{|f$D?#=uhLfjDD6^vsqLjDDtePap0v(JaBqm1P0+(0? zw)pMDYa#aC-zDotb<;8TXDAZ6>NbY|?v_aZ?3Om}XqaWVLjT$=)q%SuoXLI4&YT@A>5@_YK$6>R5Di|q1Useen|w>PP?Y`XcF=qd030 z4b@l@x-l#}hsAo}JDCz3)QQ-x)AyL`D7VGzLB(no8@caj?i|lmvSg+hu*x9if5dLy z_v!$`ty#~=jgjhibBoz3VT;ao@SGb6Pk1KOQ5ZWo>T>YN)!@t7^pxFVgD!T!OJez4 z_W!W=j_sN6-I{JvNyVzzuBcLRQn78@wylb7+qP}nw#|xF*>`Hr+5J4Ld-d*P?e%iM z$#LBI0>3fNas96o8e*xUj`Bh+J9EM>k31oSq=#VK=_;(vyPF>=#ZHJok>NV$ZP@hg z+3a(-EO3xclN6HSw)!y|LmP5wq7a^x7RsW`W}zo40o&)I3z_85+3RN!mu+;K&U;qV z2iNn^{n)M*T71AtIX%!y4Ol5FIzLuQura_&33-o$5}cW+%|+dvaq@ME{R?NdTh+%( zNpV&XQg_T$)&{dG|36mB6uQi1K}*n+A7`OEzS%s~8H<~*EtkJtLO)i@I>1Vq{AZ<{ zW=R0~XQiyZ`wuH6&{m2>Bj6zv0mMuH>mO77&y`ZzLD$^G&e*{AKNJA~Bta{}A4SEq zhr-{ZPZ)_6Di^gSAw?>RWx2iAjyVNF+r6-M@6M?Z>`#7nE^Dl|6_S5%VS*Cv*1Q~> z7zHen_0OX!wHr^Z4se%jc$HZWcCHR8;DdK(7LeQFS2=a$F16Fq;qlRA@zU*Y+EcAH zs#2g7C(TF>&UN|{!-ElW>-gEP;OXT!d)`JQy(S1%Ut}2{5a>t5c4lViqogO!Bmv?B= zt=4Le0X;4Wp&2#vfqjy{XRHE}nyS}W{l!bsTy1qHTZh=>$3PXIN`X6Z*0)Fg954kb ztB(XKtMuC|$oa&u19%GBlu1LD&9B4bVTa#yU_^9Y+^NuSgR@{bxvREhr1oq1K3lFC z6kUie_R+E%0-uXNUv_8`+QC41?XcG133=@PociL8pw?P8Ijo=_AACzlfTF6KZk@}V z2n$(3SPTV>*-yZPZ$!t14evhI$E=H_6cNBjQNV9RQn)adP+m4<>2Dhs!*)RwZW;ReFA5Nn}y znd^Uzr*(~Nv~zEh0VGs!4?!&E7;PHhw(cJjw0DzfV8;reDSt$Jg#Q-Y+iV2MW?91# zxd*~7KGG|8vXt0pMnJ!}^$o@w&h6GB)=0*!yjsym3gX@5p-wd*v9g$H9!K2X9cR?r zCTS~_nq2ch98}C}@n|EAy?f0a`Gy-~(>$~84=uDQpyn%uL!Qm>zh6TD90xSyQ7nny_OQjcP5&V4&vkK(zt1spAxbJ<0UNt|-M z5v{g6>nMy_V!Wl$FH-a|3$+#OBU^9B+jP2;;A75w9rR+UlWI0UdA| z-0G^Lsm}=yVwUKiFn+&WKf!$^k`q|TCi|LlM_U|Zf^`|z@!}mlJ70;zFXb2O1!jKO>nr|KRI&GjL9`!kc#TYAHq*dxfx4Z63m7}YFcQcH zBi66$3a`e#*TByiG`5z|>|*WTuPE<&tK3|lE=XXV5-$^yelngZs<&~`VgG1)(gN}<+5;O9ghs<3ycruOZ?U!Xm)shKiwFNmUd&lTSX6+w62+6VFCOw-qnVute6u0xPVhkcsTK$DA~uuDx7v*fCZa5Aqc z9baUAW^MI*?vGmy9=t~)a36NpYbIEa6DtCtA|kIx$+ydk#U@&xpRa8E{P(31#=jO~ z81Pos0r0EFe*=CMv2@fiH_`ux!u~HW=HG|OtM9V^zCCgix6gW%w6#j^?34jM%OGIA z>)c%0SZ|X9px65#{Iive>#@gVw8*9Rc*7jX7lbUf+{# zO}a1)$vtg+`o~=KiNNZumPzCTOz4H&VNf&rFvg3SY??;~ESc`vZw33(U(X%^2TI1T zE39^*UlxmYyib|{TFq7m>t)ZM(>&mbg{uHNk{nsWG;pX7@)$#IhyrI>JLD%D!-RScCN50; z@|a4?t%RLPR^u}?>aGOjtRMr{rxhw#=yX_6yj+qas|S6qw$KJY@uGUhh8Eq7{Ii3c z);qu!nMCv18n8vyB(DD1A~Og+w#X_fFl0FJ`|PRTB3Xn>rTlL-v~OS@vA;>&Zi4+CfFB-vkR4sL;yG74una)JPRkY61 zbdnW{G}qk3U+%jJ4_`5&a+%Zx^mW15I)u(@`U|!u28w(0x)p?SQ z?}c=m7bv!Ub3wH>MS;G+3P|R;@>5M@0qtd7mcd4nv1SnU(DsR*_8iL=Io!rhS0uO_ zeLbo2Q^e{>@K!rp64-6Stj=!UqBqQ?AK*0*0A9OT$_?RmqW*x_exPq#HH}zf0Pt$| z0bUFKfY%$PKj2m74|p~H173^&0k73%+PAp>fLCC{bqjPhE49ydop1Snf!8uS%Ejn) zp`WC`D&c)|R@t#l?-itF=Y0|JANO>pf_)IO7SW$I(^P*6pq{#01@E%H;AaQ|r!`?2 zKF7lIWrj>SJIzY`1ztmQxe$6n=Wb`k=v$SBq2KXlY0j~}p;1#tyD)Vpf>e}h(GIhZDFW`01pSUVXJpqv$0A67t)r3mr zwnOxdOK}R+Y1@2%`w{}cYt{O8rE37(D4WYC0XIs>g5O&cPMEZc za9C<(ar9ez7MYJ9dn8l14<;G33I4|(nXk9lX$J9nfpZY5e{3Fs-K#VNW}PG?;5qg8 z9tkELr@+GT0bV%);FbR$@Cu^8d^c!XeR=D+qLh_$Z3C9bg{M1$l2?bEmRzIt2K8As zZRrFGjxd^OuB%IYT=zM&bn<9thv=YvQDh$?Xfv;g8(kqrPA5fHIFKQhDwsx2eq&a( z+arA-buus1hxwdhx7nohj|6<|*1&a;%;f^@C;Y*U_uB3D!9#BD(>3o?v$#tl{eG8@o3#`42`)** z5!S#1;7CaugKepIVdDXj(Fhu}?t|bWs0UV~QH_hQ1pu!a{|;UmoXglA0N|A-6#!m$ zVJzAsENW2z;Faqi@Y(L;_&iREb&emlL-7< z>Z0e#=3ON;?q-w!c{8U|b*8S&{aU~0h3@;$mZe#A0C=tW0I!<&E&BB(=^Bo;N?(Tv z`40A<)UHAb#z-6JaJ(L2Uviu)t)@c9pHsE&*E&tLK?4IT&Z-1~c!nS;>%W!|Et59K z7l@zS*I{A3|A(%*!&Gn2Jir@T0Lb*{{x`g#|2&@jRt9!}Dh~l?6Fb14k3J6*E6cx> z5dVr{|4#VCn@b{WiGBwD&oOM;GwT0L_@qd|O|G_gQbkOyZY-0xIRCVEoe}&<__SK^ z!np-{ZhZwLe5C$K_z0x~edg2q^}|oRP>y}QUlvvvU|JX#ZX^CX;Zr~Fju=qXTYzTY zC5`^6dxFQu(3ea*Ih|IY;XBFi3A%zJ9r6&PBarkdd6J@qu1cFX)5hxBaKH%@Md)$> z!*ot&H}S{aK&l`}ePjzqo!sW~wOAP7gh>H7VGgwC*gD24me?QnnD9kn6Ov)7=wTlCPNIys|?KHuCg_UK9pVfXRImxfO?EU%!gxT zbob#p>{34*(E_#^Yz;eDEy&SwE}8Q=8~h5HuMmvZIE%fOM(;T<_icgq)RGOUeP;5? ziPK*IFR6RIcH|wm@=p||lZ8*+wUGcj+UJ$A4?7y@kQX%6=>H3kz5K&tGe3ANp8b?5 zDm8ur@(|!9eOaUU9-8?b@RAxH;eEWMk*2&PbI+J+YP6HGjvgD89EYr+1meI2M7aZJ zPfUOlCQ}32(#Hw2EfhFpH`;@&?A?-|6A1fjA1-=Q@F)(8%V{KPSu? zS8%v<*B`w(A16$Nu&hy-TfhlZ4t9VcI330ob;;sUa39>k?In@J-ZRYg5Ur^8eX#qt z0m}&=GH6zxD_n!@0S>D-4y8=`w1_wgm}@e3lo6qQvfR%-l+wX#Ik6t-PZVWy6z? z{EMXFW$9A>_qmRxF4{jfp`w08E zU4Ddp%Ip>NM_Soz{syvM+FB5mva9fw$9vb-g|aZA$g+|aq=?xiK0eS9ptX_UwXt=M zz5=TaW!Ih-P-;|#GN5%eG2cT6D!96(D{Og;s-zM4hTo4ya=!bE8#@XOh#QvesFfys zW7Mf%D4X|<(P?JFb%6V!Gyq#a?Z_?OOyvUprWGzEtzg)yU9|@KLvP;Ik1>0Bbvemu z4R5Ne;RFv z3%t$=VZ9_Gz4}}uf-@i^Lw^g+UyJPdr4@|bK%rWyh`xFr6cG0DW~Af$2>Wy-{(4D< zZMfcI-+GnS2^$c?NJI8mAvcPeF{*MK@r3=xE^K3tMY9yczj6!W=ie{@qhyphGd~lkmmdXZN1`F8lYQA%IO_8<5apC9qJ(0zpfF*#yMZpN%7?9b z-YY6qhfMSkTtor9v3hhD;L@a)pNK~SQ+6gq=V&+kj$hV2!R~p2O-mnlj6;8zoca2_ zX_C~5-cN5Q()V;w?9%8jA{*S^*Q%ED;AJDOMRN!svgH6G>uCodvil!I7DqU>5I|&I z?SOvE)lxN~{~M9jfyF&7>c|Th7?8n8UNyu#R@>0z=un~iK zb0Z;^sFr8=0_XI*uWRTVx;R5NixaZ0021{|<}by{W5p{<6mHCb7X}^FwRlgSQL$=Q zm)q-G0UMcnhZCbOH5y(gxG3$+#g&;WXc0I!(9OO#nwPKUPkYslXF>V2wsqHv6Yy`1 zq0PJlXdS6HvOhH^J?cO29p0@?o;KrMyIN+@b>?EV^b}d0#9S1t)E{S5v=yw%Q-}H_ z17bcplq&!xn_vZc()bsXoy=g;d}}%U%@Y1MlLd;9CR8?c;~JbHZk{hFyLN0;Q+xmP z?|Wu;B{+Es;Ef#pZ#qu$*&6(>&8+|WD*pR=`Trj$|1Xb|)^fBo$9t?Fxz`m=Cp(12 zB3%Io_1^lbRn{~6%|^GQD!T?d?lw4o4h)=XGGU&%|Nl1m-+7y~?V0ndH7Od*{h~l` zZYMisjHX}tEl4dE5a*#MUO?%HDBKuxOr?k#!YK(BVyrGAL1BPg?8{AI{)oQT_?T7- z9itple!PX^Q`XxJ`eQ!tkwvC-1Sg3w_@97XTLHo6GHY3QT)e&Pxc!i?4Z{9ejpThe zN^{_l4&)ShyvREfXD`0Qu*pMwL+bun4_7Vtfnok{_f1-1H8y8H=147Xzi|3V>n^_}7bpj>4Yulwoe_ zqZp4l{y2br0AHwsW!g{v;T+-Fn0jMg6>V<*E)&5GuwvkI|M03_1hmGsJ96SBb3M2rV#ydw6Gc z0!nKqk5BgW4v1z=_R)j1@{C`@DVB?AB*^o6<3$$bm5-nr9fdp5_^9V`p+j>c|fD zVa`Apxit}wOi|UOGvuKbAs4EMq0_;A|JttCi_@a@(|YQJNDwn4Z@{`Jghk!;I`y*^ znZDqjxDw`e=61@H7>RK$-%o^K4h>XpQocm6|WOU`S(?ka!=XH-21049-;bNqV@hb zh%jPqK!M@SB__ZY2ny+UJVvC8uk_Ol-NzjX>PBc!l4h5m!7?5C#wb|y(I@6$++5g$ zli=(%RgBOC$lh9DU@4s_GncG6^h9yIB-z*U)bOhKFl%9af4jI`pwIdf`&ZarkbPSq zV*T3t?y^Pw#5wp5LP6u+EnP`S2$CM|Pc(zl8WXS#I{I@ol%tw=)Mn(V|QSeVJj}pZGKw_N4*!YNCLmB=?DmG~CYRYc(bt@f-SDZXG}tSft#iAMQTz zSvd!0EsSI-t2=&D04gihF{e-_z$KgrAPZc7+S}NxJw~o={tDtfeb(QPNj9X4jIQ(W z&95e3@JEY%wglW6hM@(oNxM{6hJ}hcp^Cx}qqHRfr|{P1{XJl1pD&0?j$5{XYDdLu z;l7}6d{vO>{FJ4!35tnDB-O#>;RYHbm-GGN5aHrUOVx2wSB#{688T0DFA5u>Mtu8y z1{-qS3fc}>t+fQz>(;EWAdme)=>xE z`kYY6_P`-ntK~@(F8X59l}$(!Ccm!-=YRZ%hQr0r*S>|X>%1qe#itldb9iVyvO7u$ zPcJi8A$4Bjo#F09A4<;rLDfkoU%9mYK3?LLr@2n{D6w$aa2`hJQ!Q;3!fq|p6dFw3 z&Nr~LXu6hcCPAJB3VQraGjtja1={UQ2m9aHmFSUm(hD0fJ<(^Z8I9jX?R@1v2}^AY zeStV4P9PM*Wt48Y@cn%lH#A!Nlu1v74}(3gC^)zCafy%=E?h8jD<5 zu^=h$e+8jSSuE+toTMz;1m-=T^|_x%xsA&bI!e^0q+)^$Rv{7k{3(_}nb_`dU6LhU zY)HMsRq$;^sk|G=K~)l(QPGA=WEhej3Oa{~uWH&|c26QM3Hxibx(gcx7!gtUL`$o} z9lirIg+|LRu}FdC5_}zDvQ*!NKS&~FU_LXwKRM16f?HIoZX(5Z2Lyt9@TOy1ETImH z>U^P<_HDEs)1I4A+m7lwOMjRIswR#es_0PVlLbNg8|&{@w9ZyazV?zFnSfF+jg#u8 zERIlI7N^y8+&2~cSMp^a*3p%@TbV!L{zKM+_E{&)BR8X~jT^^VFaXUmPZn0s0W9U|G*Y7y&S-r+E>KmW- zbtDWtP+PcIR9AgFe(6)tjgxk0m>nD_h?2(?Q!1Fv`glRMn%FR+>)1fOQ25HjcDKLG zx8WnrYvB$x=G)m!v{-iPyfN~F=XZm#rSw`0m&b+A@M_-=#M(@B5-YtcCex+bCB2W$ z1s!h{PeIs)F4d`I(qLOkYie7;qQ>NPX@x_kam-E)Ycva#`UK}{ZCW87ytUyBzwBX0 zy}IqwpH7QX4ylePG=l!zlXJy@0d?$T#g9%x*`jJ(huxw5V!^%}A4Ou}7;r^l@9@b9 zR*!u0t<+n?vV(q2%D2@lPRef4KcKZY<#S+&vJ*DsYgZ)cf*}uOJmA~oFIAJItbMYx zonTgN$L8xtwt`o;3Z+-6AKxCAc8TzKGh>NC?G7SIs-nnmw?@(sh9M0>(Zn*PP?#jh zdse-_?#bb`bO0SZu@??M(eEAZrkz%uw=%#`__NG!xwP4Qr};GqBWFn!2`F7u?SadR zc;&t>H8odiTn1(rQJU{9Kq0U2OtU<_B1w{3**a9%`fA|_L=EB3m7)Y(sCEXU8ai_V zFd4!DZRlyqcaxl6LZSLqUyJ?Kx@Zmz`1qLlbary^dVJy;75;_wQ1bNGN%Q1$4EPf+ z`^ju1+(4-bVeu=B@j4bnWOetR$8iQJ@?qo@<29LLT%h=K5epZ;83LE>*C{to=_)22+z3%nm-+U({A0+RbL zPn-YeyT01L7^?rRMF*?lW9F3mGjsCO{~8sQ?LC$oUo~6HOuNFxZG&&1MS?~d7PV|TX zhfw~SfuOA}`B&0lh(U5l>7M}|+mLX&csO%und!Ner1iUe$U;Xka<`|DM`Sf*{Ggp_Nxr9Y%B6{8I zhm~6<8?NbwCQe4PY7{WacGO%skbIgif%mEq-q}j@S<>_o8=zJEd-Mc4a5r(iG}I6* z03t(&Gh@tsAGBF~`-aI@;_V~T2+&kJ61hvp+G|$SHB!|_ZT&VpF3Gr&P!6ZJ1EJHP zk9%WI;+PZQgL}mF$&8zv`Z*W>nhj##rHd!_jZIc8P!PEJ5(dsQrw5F{&lhPyj+2B7 zC&v|MxxTmg;1_8(_SuQoWf-4}j{K%8WqG8_kDq5Koxr7BtoUh0%)giHH1-4i4RV+} zVUF^yzb$1KmV=~&$!~Fj6oOOIcLhANXZ%s)D1x!rjqfuQ8*vpKGPdHLs1sJ&g|3YM z^e}a-Ep(;u0@|ae1P$X(tGfn;$!yl~BlQ@=0kn!!%!I4AEy=nUy2zb7ztjvRBSpQS z#rZx$;*@;hpGoZ&5e+rqN)9PaN(0^}{45sdja3VS#n4nhI1XHQBYCS&L1Sfo=*;`* z7gPLwKqu&FESjg=)Ly(A45|k8Gs)6BoQ_5DbUBrVF+KP_(!uv0<#MsEjPHL&&&ENY zrqi?qdq>hCkS$rspyIRc{gf3fbEGIgBrPxltO7w({q)29`L89A7J36=W#3%1G{%Ce z`T|5O^V|bgSqLtYhBsGQ4?JAflq%E@_)xIHeyva8Jp`W)>Yxi<1tR^3#HB)^lH>Wj zbJaw>28>%fXJPXRRSmOu%mxLOp9r)D=j-Zp4G#J0umPJqvuZ=GKAR}hm_+mzS>`E% z-6~CXg-(XIm@VBC?Mdift_`zFz0CTK)a)~pTZdc!Y7{jSMMb+lmX!2F8S?YK$-y#v zuT01jf^+blg8#7?TuU$`k&=ik+d_a!bkhWJ5SRlrNjU|{PHDuPmc+etUVX^DBQm`H zqTxLgMk-bjBDX6cSBNY(sbI+MCwUu@-Peb^2KaQ zvGdRz9Dy3_p-sqM`lF!}5QnDx2ycX$f2WGn8=}a3r6Q z$<7du{a#8Jpg!mND;A(Wr=%ZjQeEa9n~cfe+lrDBjkFJLwpM@*>M3L6h@w=NG~so!{y))`dZVQh_~KOBdu}6?0sT3hx|!tR4%`G6 z;Lb(I;Ci7Ci@%>rPfOciR;B%99IDSdYig(j%+1jqmw#JGs0V#jc8u7vkuP=+JJO?c=WFLUq3S_MYM8jOdI>*$M5ig;h)6RX|V4D%IP zM!R&-d;EiJrk)$H9l|W`tyVutMcolTH`0IyCD;yV{rY*6hqeoi(NlYw%Zr182N1DA z<#Bb>j@-~~wAOp=X4_evlrJEQIX4KJ6T$AL0g@cJZ8Cr)XRWt|X2glsqbxw`Wu5)i zT}Y3Bb^EsfvU0e2xvo1c5@3W)i;jRo9A~Y1@`w9?kEIX-H^ZLx;7to1NQr4w*ppiNyEQ*(#f=ZdD-fVg+(Wp! z-R6^@JcPEuS4B^l-5-F#HYTKPH6@Y@^d~n)YltiPeWx4#wGA{fh*R^qB?7$2N{^ll zq{)Jz5k#e)mfR8+P8WsG|1#RDg8nty8uO3$0pvORwg7n!@XR%Tpt9-nd$-yBbeft5 zoFCb%TPbF&m%O=CPR``Of`P_lW7NJ))O%dx=Opt9kuXK%(g_Bo;D z=PiZU7>9YSw~n(Gy}88Igzp^b;xvQVESYWbiy!73(l}B5Bnze^ICBTi6toh%o;Ip< zzMOBU&Li;1-<;Q8gGY1IE->F!urK@Jo$3x1f?QGoUyiwCTi<=|+j;Ai!kIi>qwJ_@ z`t?bdOLCT(@(ophYvsZYnP@k;Q+Qf-lT*~?g>3&kH?A>Kb_4KZ9xor+WUum_4P=jACuULJ zI;9)Wd$ zCsh$j5z2M#6hv_U1GV+&Jx$XwJQ?Obbp(}8*opN_6bg~AMB!M3F|_c*CcOM?(MAvQ zT|&aL`_OexB4EsEgcQ=O7qk=sez_@5TR2VYjyEkY%}7}Xcm2PEt?E?tX>p@lki66B zm62T^wtUstq|50se+s2lwGi#aeUTQ=^Cj+TEaD@;X4uQqa$=v=Yuy~c(nN}@;1e} zq9+m*pU7d5FSHx9=Jf2wC9~~=*h7GL8WTAz^-`oMWNGnJQ2i}0$ybX5BI{b1LwPo{ zkS{&bMeXMWawZTn_QjV8dYYdXj~x+1JsdVMT!J4plFYeg>Y(9*@>{sRSKyR#UBRyG z$q+s5NLmVD9P~S;U30Z~bFe8tfKSqLv+TkFqpzpwhQ8H!7SLxhePxKF0Ah<>wkuE6 zP}+`DoeLfpCjICyzpmTz9wqH$kUUyThEipsz%k-{pV?Ta)`R4Q`SRjWOC9Nu5@}sL zM*Kmg{u+HD)OoEAfL2_H4Ea%#7W?dNg&uLfA}NIl5sejQh{8+e>V?8ePcc@~^lv)} zTSN0M7T8M~f}N3$srgl}zykklkhcjo)L6%X-l+^%U)?FkhsTdgLr`P!8bqmIWF{jd zC(Rz2rV4{MaY#SNpJzPDKGz*6tAM_1Z%HB0DTeM{H+_Q9GKzcDE8vs}8V9>=D%@?R zjH2L&760jLy+-7j6ecJF)5&~&gS;cRO`ooUPZa6abGb_!JC#cW(df@PmZPM{!yuTo zI@`jLyDHbxuHGo*Z)ESL+F0n&3-n>q0ft|0gv~uc1jFk43NYym08Bb{GKBz>j@xUo zVk&b0x@EwKJ)*_tXNx4hg_f?qQ4-qhUVu(#)G$Joek;1q9jL7TsYLF91stS5B%-XM zA{`y=d$GnoHh*pl2#5+A()E1aRi&e`6;<0fkdhvmm-R z8b}ZVm=H*N(LOeavFet=O31|)6=vd|sgUax$vF|>-$I!I6EM;Azvy%zffD^qT(L*| z+#E^#f+f&OI$Wi3hpuUYL9IE^k&&mIJu<@BErJVKr{zY$sL?;6NHYwZsG9^cMmOvK zCP%OyNhqtd)XqcU=;?sj{lySRn=SxW-)Bqb?K0rB!1?{q4P!U8T=S}T!Ju|kpm01Z z_@opfC+EtKO-#-p3$b?AS(bAm3?0|-NkfQDH8nAf-6J&tkKhw@RPRjj237r>D#Gki zk`jLiEGu@PKCQ}fJ{8Pu(pP4mek!=+hV?wuou6Kb*;h8A4#AZ>bC69TYYjRqK(gH5d(!Gbh;d zYj&jxj4PD6$}(NyqW9J=*X-PkMMVZBV=b3wPj4}7e)vh@fnOom3m;@0hiXp;%~k@5FJSQ zz5CxzI9PF_+_ZzIv;|vZz7N@x&$&@YSSU%fSExbeAj%w#G}l>^m7$HM6B@n%|sE+j9bA7o4)5|=3`3%9kN6Kv7oImLZb)7DLA2YnlQio z4+^8=MV%gW8GG77BBsKzet&!wVS7k`E;44jEy0*TolsF~Z`0TmkxpVCA2;kg!M z$VOm7hdsi{lPM(%RhjLVu=dN4rrzSE* zWTI`q;c?HI3OnH2e$+1Bn5C>{3N>OgpyGCgQZRDH0-f1f{|cqrAa!L{Q_>Xos~QL= z0s*H%a%(ICZPV}9zx0gr7GswK<}L^xJw}!U*5a98alHlxt2LpWWE|Oo!1)`l zlmWKLVRP7R14K+HdjmvefvV6Qwca;|rd7eGI_q?#HQWV47C?{WzBsp@Dfoh+2<2ie z&JuZ41Swdb&(S+r<$Bt6g#-&i&a~EwA9V=b)#6_QoeO|K$FAcqfet-Dpkw=wK*vVL zmG_T8N3QJ?faQYI)DBWj4zeujtiq}wDv8>uZn@;BE^KLQ=6(ON88c*}%THfBeraR!AARt+Z<=0Mlr z#TMho-`P0IMLLpV?!+%6o-Ga%6kMI}4xMr0b^ zwK1*lu2nUQA~Sxq*no^PJ42pDf&+5f*3qW^C*bZQoMJAgv; z46SU3635t*YMhwj=5}%INP=O>2E?qcKP-3YQyr0cr9S?j_(1y-n7Oc5*SNZWibz=5 zg{P|NU1*;AoAtV>b7!L!pbvc;x1P(RsnZO9)Ny?h4R*2pzTz&laYE&@3wEFn2?G?Z z-Fj+)f0<59Ut$GYx@7vXKhm}Lsl%EMovxJzs(=qO52A8?ZYiEQ7UOVTI5?mWoneSG zXxm!4UYN`c1`1VN6w&##R^5AJiXQ3PwaZPJdZAMJ%f9Na`NSbt+uQ}R9v(NG!<}3W6s2Q zVJEAS*>{|~zZYeGBjG>yBK5dX{H`QgR8UNW7e+UT1Wupx1i5Q70aC5&L&Z9wue`Buxn$uvZk(CVc0(=9e zQ#M0DlL5P|-lO91L2$(yO!eIn_aMa~N&D>Y0ba;UMn1%-BqS|YO)N!#-CV<{Jk?Hq zba5aIL(}Qk%Yk`-Uq2J2N$)<9d%E6EMDlBKxao%9AcsM>K|!uTBTMot`aS=v=X_Zi zJ${fQ$j>#R3cPSZ8Hi418+xl9*=@Rg{Vp89OnbgdE4J2Z?Slc!%HLJ;kZ8nGZ|sjc zjo^(S1Zh);AOvMYM*xQsfx1IR5P|q9RI!hFEDh*!i=?d1P1#Ga9MaOB$7s1;5q&~| z@BU0h3F@t89Y4MTC{CNxYs=h2X5%!$S5(*kJ4YZ7{YYKYnA|9Rdw=be$_xME zX)*T+_SO|@t&{Ar@3|tN%rxuInfr;2aa9VJzplW^vHA+CGx^tOFYwx$P2=qDh&lGW zddU!?X1uoLxOZ<|7;NK6BGUMU4tgVg_&t)^ft227ku4}2^1PW1(UX5O?ri?ho5KL~ z<^ob_0T26i*$69gKK%@b1uhyHdwC`k?howbrfZ7;9i+y?Nl^>Mx0qy#ZAAiA=b0zf z`f_*6lD;eUyX}#c=@`-)y23Jpct;=g=Qf6%oQMlnbld2>> z)NLRN#xwf-Oh>#v4{&Oa?VY3&RHc=i)sr_K_jK^rnlvx!{*oZRCZ9!*GbD^AI^PD< zKYDXcw@ys`(&K%A-W(U8H!Z4_x%Vw?yG(F^@gG7LAdERki-_Qoh^2z`Q%1X>w_x?NiuinbqpD}Ofy7l& zxap=E^%As1149n+`gwkkXbj4D4-jOEf}pVE(eY6=>g~akZ8>_q9&tt_0f4U2Osj%j z^Y;TGaAp=co%!F~w0c*bHxC2n{WZ2EvF!%h#OR3ZKrV4WXu>~dD>-FUM!CBX~} z-Va8W^h$I<69WV0D?y`{HPcPo4SgDzB_#QGJl z;-)cUtLC9xubG4N!)z~K`^}52VkhKH86kQ3UI9i@orQr z1UQh#$RQ%+DV>I=V?9QXm9>LyBPlqvAn*y(BLthCg`%Bz}r44OkeM{U_Y1E8*`l zQtEHfP$=Y=J)Zhax#*L5Bg@Nzi28=x6hvCTNTJz)6>hC}J4uQTtknzfTV zbq;LA{JEE^{*!bDTbnIVKFG*4%Z@9?5j51NSVe?zmpU;+$Pidv;wJVb`uEtP@b8+O zPjiFxo7@Labcd2Rg%Z?>0R5xmSuNSx&^WnIV)a0M*HEV3m|r{lA{PEUHXKmB6koiS zMZ&ph3P@M%aY;)_y-r9e_39bUhyM}e%pJ*@d>nYoUxxRkR-(%!#FwX(zJY}mpB1Q! zykMAQN&lU%`_m7m$AoO)sP9|xpSR*C{W+{X0tL?+z&n~CJw0~kFE6xQ;n~~IZuU@{ zIyCijOh%3|R&!6OZVb0Bu2*<4IzDR9Q#se>jBF2nuj&3JJ1<`TeXk`pnWsB;J(MO| zzfTV=z(3p^r^_Phgi;5D^_9=3M$kb#?k?X>*nSXuGUO)j&dhw>qdMkAtN%s!$)Otl z`=l8MX}oe*7f`!?3$0P?FY}UxxeoO-%i7y7qRX(=fj`Zihp;i zm;AtN-zfdruGE?6c2_zRRU=P69ycP37yHt8%q=X{gDJxv3ug^lpct#gj01yoyKA$* zzPVY-)#MP>#<(0k{>hstzzcpB$gn^dzdzo13@@OBtG*oP4ej6ItdtlT%@4r0AUFg- zKtlgzIQx&j%HGz%;IEG&RZrzsnGxP6w6a_1EgrSWv(q)@5x<1G$PwxT48ChuKB_WP}>$vRS72 zMUA-G1B$E`TY<$gndURt$%W6CP_*PfZIuK`8f0%`d#1u3Ra;JorHtyYF&2V*N~n;t(1E z>w}kDuy=Vo;>jN=Pl#b1DsI}IM+moFGGE$;vLZl`g;1R#L*(2l!XDXFKhEO#BGS~; zBn!G?Y)oytn8|cKA!#!E5WZ|>Pl+ziUEFhYi4~R)k?BvH@c*#(PEodXTefc4wr$(C zxx%*X6}G*?USZp|ZQHgZZv45=&O9g2)6IKJ>2LFGjyZcBt+m?fcW6Q}^f-;tP*3xx zgaswtjaXZ*#kR>Io zEv%%`xV+fjVUcVNSqeL9fNNh&(Eyt%6Us&kIK42z`f$>^3-H|$#*#*V?`+n7Wbx0M zmPQfmi&Riac{#0u?W8S~^Mh~#7lRgy*hm&hn8jP1=+)Ilf~x+?&d1Z8Yh zR@PdKDv=|?tzt--VBaMh!%PgKZKg*k6|3Q%E96Cck@3)_9CwnXujT`f&H(pn?QKva z%Tbx}`7d!MMKi%|%TJ=DjbfGci1aa3kpv&X-StI%5mEyqzR7+TZ(AB+K zYba-gNkUs*td$1v&d+HrB za^8aw`nNcCBVo%7qxGKTgECcXt{tn@%h4N8k*4g~A7t~-(G3)PEk$I=)7{WPO`ey-M3KjHdu+>2k`%?O`y1y zEDYcP0KpUh0Al~2waLZl-_m4bx6bxYRGfpdKN}#`oNcJB6)}8xVg)ACde|oH`>z=! zoAM;lq=E|!;qUjD0+Q}xhXmJCO=4LZDYuT4<80zVyf6DX+o!Lq%)aw2eDoO)CohLB zkm=%w>SI|c`QPMML$L*_q1ncz5iT@J$qK*M?s~8-vN{W#xv~;Yorn(Np6E^`ViWN# zh=TS==Hi!ExIcQI^9GA?*$#HzIrOvrg9`h5_Deks2Q+^1ykN_>8mEiTv zbj$gWH8xM5Ps0fm*pnH(@XF`u2ENJDTRo;ca_F>L(2Y3&MNE0Mu)J@=seo^tP`6f~2quND6#5Pa6CkICW*;$51 z8<-?FLfV%?Fn?X~qSXGb3xC#CVe{U|_!b-Po8?QXV|m-hD@5D9XDIsnhBcTtbdAwa z1x+f4H5l=TOhaCgkv2m5P?$=^@*I~QsyH3cLfMo1A<*pRyc+m~`LKp-j{E81<*c#g zA{qikAd{+;N*CX_0#g6Wkj*5KFA-!|8VZ11WVNo~H@@0mxWd>81PuiRf5c(MPZGQ} z=RkixBFp`nv|?w6O){pi!a0m^*`Y&83v4Lu0Vy@GhB8U*!%3Siuy@10Ly{w9y~CfG z9JArckX1vZff>b_rfMqZLL~&Mx^}V!mQndQ=z46L^&Ls6o+Au>-)p)>!$C)CeyCnE zhD&q`;xq|7tiwBmqt3|>oY-yI{CvesQt5bkn9Tyrij#<_$LSCbJk8r7vhnD$gbnyX>L zvMQn=z|=9UbJEia`cB4>w?v-6F2i1$NA8`Kh&e4U%S)AG&eYy@ZrEu zN>c@yK!9PXEnQVv>vmF!DUCi;j`-zavZpOJK;aJ_#gCAHQV9>z<|S-Z4ErRF<&|m_ z^(&C#%EU=;ec_)4ku2%Mwsp!9m1gI>pUoCh>HLx{jnRXxfy31-`h-lU}!4A zmtvv7Dty!T!1`5uUqNWShfbvLtytvE98KH!LRe5jK<)MO^3P_^=FzPmcag84pdZnJ z7G#ww^c!ggH3C{Bg9f8wmSoh`FD@_=vjR{0it|;3E8J9WEPxG3*CQ_0b=Y(cef3-U4E}!E-OEU6kJ65O&i>HuKbQY zSQz5#8en5HVrzcx;TC(JY@%+K>c|?Q!L(3z)V|Kq4d!w3bc8v-B5D3>VzYdbEFHZC z!AbS04bgfaT*1P5zL#`Q++g}@dMYsiO*6NMMD5@WV1yeH#-99(N^{Y?p0mp3MLGd79JFQF5N{7hvRfzDKOFJWI!SL zCVZ!i^x+h>&DV`VJO4f-UWlAAV!zQqY32$5H|>#d9wPI$pKeuJZPA4x*?M%R?|*Z!g8(&%&4T~{Tq6Sj zDEtpJ`M;7}l}yZjvUD6hgzapdoDFQ9o&Hrgs{f}ttN1Uy63j_OR!P(Rqt28{>-Gz< z?YVU_wyqQ4ioqtrV0~K9?s@fDu~dJrOa7Mc3wZq(etG8G-PL;$ z@JE}U)o`Vz^Y71wtma?{=4hDvppqCRPeqr3?W}ElWKONwi0jovP7$NQoUO_4Sd*kM z<&-jhUj{BQZ->(5Jg$ZXUK9870w7oq-t9 zn(OdJ#la02+fjmc*E2?7A$&P)!NdUvbf&W<;;_WSRiPr=V6q4B{%S>-pE)m?xSM#J z-3l_$VtwrPRo7fbol3LS%@_IS_V1zSMiO2FiqC1#R}NKF)xC8O%c zpOn-cP)cQ77QrBT4I_0jv_`~c+95Wm$j<+5q+trnQZ@cg07J7%Kp;E!VAodsnc>z6 zA@{BpN~?KVZ8N$O6sjAMts#7U@t9%vk$ZY06~F0!#PkrAB^?vc`q=Zgw=pZ65ig1r zKLn4^dE0DIMk)kJ>|~RpPT2^F*0G&#Ik@!iZ++)Go6|$5gT&jl$~PdBIWAzsq^WN? z(e=Yoz#V^|VE%Dtw=hDM0;$w-#k~p=BI(zZt(sdU4E$jG=vHh^otub0ppDwP5K>Q-rR!X-;ngx`^Ep^8&j?bKuT4n4BYTw%Fxkc!ptoAcXKa^R8eD!X|A z5}7#+_Egt(ltWhWotPOzGROt=Ye2tb{@6ICbJrSI-aWPw$Fl;CH;8aW;ceN_{?wSTU*@M-Popg&LNl&0D$qeC}uqNHSCo;2PtVbYc~j_Mao zFNN+uf~Q5S+fGvn`(gFPXVlhT2m^+r3>100UR9fZzebOk&9_BKIn64+0dt2~RcVq% zUmBaD&PJ3YsWIN>xEzble8luz%eknuwR@P3pegaJQ~3Ow5!FFMx;>#~ZgbhIO=xaV zwUy8je?5?v{`Tu`MVs2?EqM36KIRk=&icCPf+7VAdhO!&tY5@=F_MPubu_ueI|d*= z1aGL3#K}p^C2_s2pLa%_+J|3RxVR1Ort}YLww#M6v;yimxUBRqCFxdID9P5lT8wq_btu=VP{Po!G1^VUwSh{Ngpj*-8Jd5lOu}{_rPh;%T=F!SLrPyzm%zmy8P>{#?@&s+e5T@5AQ^8 zbdtwn#*R-km<3;K-0}v^t#=3ScP6LF54GrkFnBOH>ihwR`LC6;_r9Ma3Pqhli+nPa zy0$IxKS2M_q9%yOb&}|(s7WLT0FeIwTPTyeq#3ofuYxCkw zTN{qXhD|P)1|ZkscMC@(;4PWVdRUaKr|#|gED(yC-pck$WkqS^_3Kyf*ADt{&xi3- zmHPMPN6g=w-k#xA+gaMWEQ$z7cgKQ>ar0NDIqo4=E(HdQ@cqIHU+TeBD@hSxrU32Vlfsl&;+Ts<7pN!!}5uwgKoerK7l|fwx{aR*c zbWzHD$w5Fulk9U`O}BFmm{v@rlIDEZ2nP&&Os8d3Qz-G-xBMQtwu)*j##p04K`=z- ze#M|fBxRb%y@jm|_L#+Ngc$$wQ7Ha-|M*+(w9wfmR=LkF7qfm?0ne@Pha}ht);-!G zI=oYb)PadR{L27?J`w0nB#2JwEVhH_(carQ^advoDv1H^Vz}e_BgPsApg|RG-CGJZ z#iWn7sz=nZPO2rI!UQ-#+TMgzpnPp0bVufB8pI!mnf1sT>8AlFv52w`g2GbugHZYz zB^##B9}pYQYB?|eljNz%NnpZ_fedeCXdpwS@DDNp5e(e#dJr-{Kk6y1OiLe zY8~|Uc*0vqB@t55j#&UCXz!TT2*oH^qs_jxQ&uUNI(Y>MC7`8f$3-*Rc6zojFAhra zrmg0Ay&jX{Cw(j(imrOsH3kwB^8Ip_7hgJmC3ubs=Do8T6?>Y*Lh!G)ert@i(PUOf zw;eQVvl+*nHR(yonQ$K5R=c)i6~UiJtU#amHd1`E+9~*ymI`J3TNbFEj30c`Ghc8A z{oGnea@uTY+Qn)mbTc0G?xDpGKFPl$l)WsjMzZ&Ct_cjW3<~?imn^lDCr!7Y-D+XA z9yILPm3&8>Gn@#6+G>i(>f$#TOfV_BGZZ!` zYQcpQI!H9Cwe?GtBUXokD3|lE^6lo}K~#DhHUbZQ?kQBGt5*Tq%0H7@dq4dz zt*vA{jutZkw_fehZhz=Wmn37DVM{UeGXKz%+C>Fn7XmM`e&|U}+x$1rSa*%>p|5{a zIopYbZz$_Z(T^14mmZb>l|2SnV64(BYi>)AE#AXG4V@=uDgX=QFymbo5Xo1+<08em zNEJ2nLK7HDl|%d!;>iNcA+lO6cxXsDWuphIDpxRx%D}M9klK5>nDX$nr+m~8|AG!O zV5h`#E|zrgE42t^u6LwBnrNcY345Jv1?P3kn5?t2b-sitHG>|d1SGWTx(bv&tBtgG zNh)p*c0e?yvt?0;cHo?CR;O^4wxe-_3m&d4$~7l&mZ??iRqgpss}Hy0{W9?;F3n$t zeWKUya}R$`w~LO#RP3y(@LfZyUn}hn&ur{c>p20X+qaqww=lNdT^)jR$%@af(X7xsA46x|C-*A!b zp22l`Y8Lp~U&L)2eA;_am>*T%wL_mtID@4CJdCD7b12fH$h#A#If|GbaEbqfu-FCx z7y(6nMh2{3TT-)ge)jU4_v#fI-)t;&)!ezi)Y43n(tN;BG@oTQT?b2f@i>cUjeRG% z_;kg7>9rA;Bpc2joorNo?$U;m;hc3&%05Ye*u%FtxVs2HV>a+>?;jxC%D$1=00fOf zB|=Uy!9owP4t8;{n{?aqQ|l&i>00_ z!+^s&T;%C#rt=&G?7K7Q+i0I(ecc{aY4&_{y?s2LYoGs#ehH<92mD-E&H_f`xq6|P zaq{MX_2PhS;D;~v|2f}>EcVIUKFPqnLiwI9WGz)=63-4*!M3s+} z*Ck*CKSDYcJNOw+Zu8&nx8XK@{~CZy3EOa2C}voU9Md#T1`%@-{bYq!3@xokXZ`nD z=9TC!>=Y6JK#LCmK=6Mc#s98g{!4(heu|eL!`7BwuZsUBND1k>MZ2fuMW7Y=G7S=W z*d{j(TxdY@Nvf8{LqY?tQT4aCnS@lbHK(0yodp6hJ<=#9+^Cr;-rU?5eAc|{cXK`P zU9GR9%oLwD2cIQ!H4@18ss*@U@pdh$-KS;r1F0;^vNj0|TtHxzct`wF;wC}r^zoP1 zF!~+QNe(zMZ_GAWEkeX=d`!nt`6oUV>YT|v^Y31XLLktUkO7ufb9b6vG-5I03WalNxIE0OYiP$p)rm*w@ z28V58M%0VXNt&qKksf!!5@_r^h3JgHgEF2XfsIom3Y4)?B-m^`+wfAp$q8K+HrD3u zyfj06zbIZsj+6F4)|Fx@Fm?0RSnhn)be*<0{rY-nHv~i?&mY(wJoFG>dW;kJCsBP~ z;;aXW3Lt3lhmY?`3{#5xD|1@P{E)~19bsvUFN$sE%;ThNxXEL3Ad?vK`3Ow7hM?K6 zxGOW8Q%b+yEML(tpvARh#u~1xs{;Vy+42*5uwq3DBmzH9Z_AqBzoLh&p7e0Pyf>LE zS#VRyuD3haJ(}P3& z4Yko466PV(cRpDsq1;zcbv`lG8!ij z0RlSVIRpzKwp|O!kYf5_Mo9Yd_YCEdlgBvZ#`{QAZ*yHI&I`}+^Ac|^b@Mk&&1;^Y z=lTUPsz3>llj(2)R}}K4%&huJ;g8Krh*T&DL?)a;Pm5HhbPf^m7Zco*Q-D7*`xppF z&$#r`OGVb^IES6Hy$aJAFb;N1v{+=WfdLKs9ZdMyE`>+qNN2FOR;My@?py0B&flhv z1;-LjTV=NyT9HyvS!T@KK!aSO<}qt&#*J#c`H!(h?yqqMj#?Z2tUJtiFsaataF?F% zBpNPb6p$KKIpEW=H*B$BB4$XS8OD?f;LOM=l2dmUav@hyvBYHkCGO}hj6sYfM-9`H z8x(Juw16mL{A#2aGjio(h@@;n$PBhf=8a$xMf1dr7H;_%4GrcV-z}Hyw@D>(G^PojdfN^p3 zWbZ~pX0?XwC^8~_Oq|kCcPNziYkh6%%ai`KW=0oPSz|mks6ixJZ{Le!!c%*)E4bz_}1KhZ3#iAW_9(jJx!-SCZymOD&JWG3+!=W{(lu%S2$deH72`o{xG zFN-=*6<&T@*gCAEY_KV2SES)HM%oVxCf_jFHi(E@+)C_a1AYsP*`&vZ#IY#7k0}G< zGV}<{x~4!VNcVD`k58iYMvG=DSAxzGgT2#$;-FmhMhhQ^LH~_|47MH>uO97~(y`@! z06M`sILQ6JZ4myQBPXYM+1q^g?=p zBxIRzyB3G#&S~oRDy_z>P;D(@oo{N(o)nPpN6N(^K~$Y4h6A3XEj%y1ISz^PV3uc* z*5G0}Xs?s;M`D4PMx=Ei1p{AAi8%B=bv>c&JYVTLc@A5$hi-h+U@R|T5PiIO^= z2Vhtq_7c~hjJ1q3t^NeetC_@IWMzm(K(U}9hC+_Ll3kbvm#y{gY!}%$o31nYsUT9p ziHzeI+zKK)YpG=vX{DKp2K`R@?!^F=72m#`XIyh#vSaz?PIL6!00OQ-f0N#1VJq3p z^uFPMbCXSi#&QShN5CdI$V7|Q5jv&->f9$Q=~o6^zE-!f2%LhdOK(i~2WWKqB5<;L zHo#SbL$(0J(caZ9^^PTaV59DmA>p^bpcJA?+q|T6y}eq15cPXN-@Cx>eAA3c9JMwnLx*`%x!&mdrK*xQwVfW*^ORt>i?hsC zVsr8OX1RI$rW5y4_SklSn6}HBS3d5>dQ^B%;pVUbNL{&cd3K3e6+>e21rV8vI`<<) zH$CAqURJ0x*7*)a+H9)$v8|SuJ!W0_C*KtxoSXMN6(+;iE3C@ z{fU3bZx#7iwv8r-esHYa2*-^0O~EM6hegqB#=L}>O~NTmUFI9W#*9mL;`>g61BwVI zCG>a6!OXQ5A(l5sm|psbJEApfuKUZ{pfH2m0deTREKv-odW`dLY4!DXwrr~}*4_@B zkzVSV?xIL};qls8UuM^J!5WH&6A%-S`WR-xa%7BVh`AGvI)B{<@GL^`w#U_u1Y>U) zu7wyxkCb`}0qlf0iS>^N!c9Pcu3y1TxgQWW6zb|B=7CYjJ zkO|K=5OCKW3{eo{p+=LCw%hFf1gV2_gei8x$VO{`5jyW=R_V(~__Hkt zO_p&YK5Xz}tUuJMi@xpbwI|{Db14U2n-A}0x8cVDM9HVv^5nH6U`{(!cul)fX6NbB zd)ji`j9#&nf{vl9tIxnsPtVZN(R1V0(NhBxH@$}o#-5q7{PU5K`t*(!Wm8mXfklly$~!4MVCqABL^gt zf7a4g&O*GQD8idoXA;EbTpRPgy~WQ49j%*hmtfZs2<-=0&<6w6S}yYh=0qGO=Yybx=se*Zi!{xKgJ@EuJG{b` zISG5?WFBQYh=^oS`)gyerg~4AmqmG-aAqKdtDu4I;gDF;Uf`rBu$9I3?*{QT`bZXO z#0+Bi=0Kz8AsTr;z?!dhe~X7w$j&4koNV$4>SB9r<2QF2O$%?1EBeK(iHi@SF&9xX z!L?m1bLzdwvCFbZH((!NIw}0B@Di_=UwiWk_)D1-Veu_&f7r#SYf%MyE}-rHvnv&n z@60BR{6da7b(FVbIYx2>1otYeu7F% zTr&F~R!`huh~N-(v`!E0oy_R?`N^bnNIS5KDHjI?iZv6NNhPNG3`Uy+TjC#&n zf^A}=NCxw%)L2j)JoZv|&UA_t^Myde^5Gts7c2{t4)^8I(E;@aes5|NC-4f_7sdDW z29FIKO8NkzWV#f;(jQNN&Xjjq@*?A;VD8R(@`b`@Tx4CQtrmgOrlTR)VHPkzI8*g* z!f9EU?7?YlP&2&C5ZJx@jOda=WUQTR>8Q2^c9W@fxM#}QDdpD3j&0%X_ZisfwicnqFgncj>GS+KO|%- za>{GI+yrLZkXXu*3#%+@{BYHSXZIFPAA@|*I-Z&vN(xdg?{XAzwS1mKmn^AEgr#mL z661No?I}cMc2TPt)EU)}l^l{y8>>8h;w$4u z1M#IyZRMS|+gplJhm+0U-CshIN}=<{H&(IJVE^f;_~rQ<2OQPJBMU`#Hb;-KkdvW! z78oXwRV=Na=)tSM5x(0oI2YDzRnmE)uX`>g+nSKUkzHnRR15vlvs$RfB^~Eie{|eLmXv{#@NVPgXGYfRKisA z1P~20F<*2ItRq|WtD!C8Wen)%JcM5bahEw#U?{Zst1=ilNg}Y}$@MmPVSTYGvB1@V z^-PVhx$tNXU=eu}ssFZ2;sa9tm|4Ahc|Fp;>S#8`ZtloBm-8H$`|XoO$!^Xh($Um>Cm3T0M_YSzwc9Xs1nulQiwN z=)+^~i)DlJ<-eJf_JAe)aeoZ7thfLG0{??1!oM&7|FkD*{BHx$AA8cQTtt=CzXzaU zi~kycmgkX17hL|w0QAS6)a;Ofx{5~ZAQIu$v3wjOvp=d)jQTOl8`|9aPJQCT(b;D0 zzmIhHt{53tzcbP0e!6&u0Fgc>LaHIfNqB4no|&igiY-($U&_vV$HYj`%Zgcs=qu@- zEO|6Y<(lppOEQ%mrfi|E`?cUP1+I#M@^Af~r3knwg|Fo?5Y+K=v{WGS zH-`3pybs00m*SLb47CN{^<=kVp?S-65XInUhj>`{aVy|_#qX#@$$Q-NafF9mA8NbslXiYR^=1?9av86ht=0O zDxWD;v{OdU$%UvI2FP}YI{y5?E0Id60M{1D*w&Aj?4Vz*`vyo1l+|LyiK$Gp#n6gZ zDT^xqjF_is*#_DKmq7HIq$ejgV9`PNNQp)|=ysc$YentRTjzrq4dMav*&6I(HC29ijV*GI03>JgvNby#4#5F+VC_MuC214$Cpy$HedBu@KlX|y3CA^_27 zkB1Jnf_r9C^up_H1}-l&u*N>zqet1i3B$d?z0Hc!I%+Z9lyiG@WEja^=PRn8X*1pX zT2YHk^r|I|K0S)>{4-FrtDFZP@`Sv9ePuF#x^uNhJvW~?=Js-(UdzuqtS&q|R1F-P zEM=D#;RV=Fox-p?3ehMxgI%!pFw?E#LeA5epl)iystdNMfanOfCg@|{POqC~-1-3T zotI4p{ro@e`3L7p%fd~ME7&xn6hud1mUZ@++r7?EV-)v&Q!Sti&GNNn?$7kGu&ae#W z>E|$@%$2=~uq?+;f-%XAuMr5smI9%Gcj^8B3@wr)=ceFhYt2O10@Uz|cReD^fHU?E zp_Hh?kI>$%IG*vlXGn2uFif}>9Srk?%68ArsN33JqE;^izd!+NGf<*SkVrWXF(`PL z1^@1`BBF7naBCTX_iH4Uy1O{#E1EFecPZo|;b3RJqjiid*xkRw{YQuXAlOI!)B&xo zwyzWSqI>IS5dc#MC83?vSrM8*65pQ8DwlEi&J*R9JGfok?^M56M+jygdB4-M2X68c z?l=@z$Li(WCq}y-a40MF(S8fV0o`7cM3=jE6|Kkv=xtzVbPhZhQ^I>AeC1>2b)Tsdq+;01H}&<4AtUnJ<|^g%4go>`G`GuMDQ#OO%QYbP z-siQZ&Q%GLxv*|_=$!KX?A^8m3h&uV(xjDdOPTjS&S#Bh87IyMc~u#d%a=;C$~uC_ ze6Wg#USlZ~iU|QdZ*^dNa~)2`dI(P5i!3j~sD8=L>ik=IPVD426z@O0$m}0pr1PR7 zBO0yr96@VxQHAQ-`ebMKfAiufPNeJU|42^^0RRB^|10VFx9I%WzJ`X4(;CM=rr4i- z4NfLyX^zW>-;y%qgrlULD5*P7M|>thm3~+TuOxtl?4Q@oci3bCQW-PSc4N*;TJCN+ zo8GQ!XyEcO>ytaxQ;=NHTe`VZ?fH@SWRBWGUtU`z2OJzzUGDzpcu*+OtnAuDKRC!a z$2evNvQ=VZrnH?=CmNL;kQ8J6kUdaDCCdaTIKbXDOt#bf-zv*#Wf=SyPWb+$lwrc5u}qs>gH>V0lsX62YxVc84L4Q`_6*5 zi6W*gh?SpS3x3RRn9zTAHa?0mJf{q%wZDa&+>&$aXK z91eE5s@gY~42nIM;ARYty^j5ilN}crahbNm3BXV@mzbNs<{r<`(spiPm1JIG*pzz( z7@6Uib~LXPOBw^gB6Qy2hKz5wWnhY9ivYZetx_rhajCLX%fvDwtQQ3}gUcU^v3yE#jylkAFK9$wW>%3c7X+&4-4HT_M#_ z{wxH#DDWSBvJ8$W;ixw_udY#QYYzlfx6XkP)xvB@psWb&1Xw8pnJ0P~)+<>j^(B{cCanUCx*tovS)!!BE^&zUrk_EYq z5{&s9T8GaTz7QuSdg~;3ez5M?fk|91tvp6KVwSa4_uGn z_?iE*kGm!5lL~9)~A2ov2W4IBCU7c^#X1jo|dw z1Uwm|K|{fNnMH+r&}&BZa+*`-QxA9`pdiO3oN*Dp0hOqzdduh3DsUInI2y)VhSg*2 zj;`oZ9+{yQ&8fW2Y-n=(OF$s{>@EaW-(q`6f^DPfV+iAe4MuZk1o=#A) zYYb)wW(TBRn3m=yJUWD`*$tlf>Z#EI%gyX6hnX_C0ULyHc%@cYOf5pB5EP}B*)$7i z3^Pg?MMjnc@)C@3YHut|+8e{<)beniHR!o{9@2?+ZWESm^R*F45pL^!7vHxRpRU^% z`B?a58u+s(yB(eY)k-5y>TYZ~Nz7&78IuyW2AkGA5}z!f4aV)n-FA>k5j0n3v03z- z0(95FvC?xU5z4*%oAd$NeOkhziJB%|^?(VuGR z-^(2IjB7x&3d9a132t6jmz+$KdQ)weFV|a~9g+Ong4g?}KX476oVf0owV=#FGuu6t z83@8;7PYh~5xJjg2^YR2Z)s5Lr&_XL;DrjpiF-+hc?|0&(uNoe_*JZHRs9-yEgUNA z>D<%v?9fvID0eS-P`goq!IYj1{jJZL_^Te}jrm1{oCOu~BD6On*TEA756^F8SIG3n zCsTOE?`F9<`o;!B=>3B%q^rJn@}N<)N~7x2U6lbI=^4!@{i6ILT=T|%p#gKP)DPf{u z5zrJEOIq(&(t8GFNiiV|mSBJPY376NmWvU`sSX}X_QHy{eNpPq@36n&?W$7E2ZA_dN$eZ}>t9S$= z6FF-rZJITfj1QTaQm88^6ywF@ze%#y5P~J{rHW#QPVyy%pQi@2%TPsUuYlN2P+L>j zCsFDEpDbjwKxG(hrJfr09gr9)|8W0^sm%Nd5vvzzLvckG>MF|YIh%-nnQqm|toKyt zp)2Glt(sWu6$5xghR;ZtE9U|0bknlmhu6Nrx^ zozxXf?=knJ-dbkG&!-Y*`goesOBkw4^!)LZU?ITq zEV#Lu#~jO734zFZX~ZHM;OH)Mj@>KVT(m0*l2lIgEV@GO{cfS>V`nYG86Km6p>gHm z)ztK67YEHIk|56LLBrMyc;qcL!j)svdV?pSvZ@5tIYM}N%iUbk$^$Tib;J(lj07ym6tN88k(oCA?DS}2I!h{3g_w& zYii%1L`@s`T`hg;<|{Ov{t_-*`;C&C;pWi~aL7;NBdNAn5pX%CNNtskwz!ABX>-}r zId8vKo;6?(Z^Dnmx>vqG1uq#k+*%$MbzQisoV|>p(-c1*LUC4KMf)k|sl zlw>Ti9c?Rtxazu8%X zp>8pSN{cB36lx}tRl;CVQDd65z5E3KKP|FbtLm-xKk@*H3IOnP0PI{%99=C;+-RL# zY-|i1J^tIGz|V~2901jVRCJj&IdnjB>1ReV@Lw|$sX5o^e`X{~35P2~N(KFzxj;mb z!=Byy!c1A@$AP*J%Qrxs(OY`?yP@^x<#=~qLSH;rh>mz!?cpgcxVaK@G7gjXQ9l!s zH@v$dO>{d54Z0L}k0>Wj!dcj~vov=}k!j=zGj&J-28*o5Ak&7>EtD-JIgKJo;WzTe|dyc67t>dVL)wAKJJQeJ0O7; z+A%~=O1zy9ejH>)BOE97@=je4ox0f;$rk*Ys1w5B*umMRIgO96Af(DvsPns_Cv(0w z9dp{yOSm+t+V)K%l~!zdqfidP5gs%x=}h538$&j}3;eh-TX00qTpe5&2;}Nq@w1rF zohU+Kf4}Wwa!6MS0;=tsk!I2AjSdy$a4tkO;ZGyK(;-cx2 zBy>-TY9#;W|CSg9`LzQ0RnlP_+5!lXPzT|VUG*g^zx?M6pf~>z>eHrsqJOxA^e!l! zt#?T8$F}N?7o|1bdM5~(IK!8h?DX`35KMR%*dNm30Yyb9j8VpylNQU=Rb3U}rd0mv zSmP6DH`*{*P;ueINig6#!G)}$>s#bC>kaM@tIgJ9K86|%+CcuWOO+#yGVWEHI)H1K zDkv|!!Q!mWYmSn&C1P$L{lF;uoRqd(f~p6>Qqd;fD6F zF8>}@wKmsWJ#2^Z++H^^lUPW^4F-t9GM`WgTg-Oh^bNr53P@h!Ry-et=vFRdkJ91g z1V-!R&gJNxdC=y;>^h;k0l#?o=pt$V`}8*PiKhq%U(0*FfSwKcB2qX zNq8vD)FBlEA<;OdY&eexgAw#-I3!FMi6wZkjWfT*M=b=CY9kt)%Z^Rh5Q(E7)Futf z;bD7dj~i9hB)Zv@&cDO0Qk;{ly)u<>VXRDaxiBoOo6if%%r+y-B-@u^vcN70{T7rP~vPl;3JFC`c*H=b;waE zklKMOn*R=Ew{(GL!u~bC@p01HSVP{|KKE+6XWA*kbHk@_@!F^MpMSeoz4QRqH&{;J z{x$#^6lM>pn1NNEF{T;ZX+u4Y>vLDmYbbSn-ogJruV@$N?*K!)!uT>=i^aJT5H~*?x5v5T~-NA_#FX&S@>_Sxd%$8RwT#6N9 zAZ9WuksmCUe_e&wGd)shs}=kb*0y9>%Rn6kd%bdscZO}`%>sY zUkj^cF(VJyC~dJ?k*t+KE$VjS+nq+(`eRLZxProgTEM^1Nnp-gHVe_t@pAETVtYS) z3h2!4^zOIa?)>fKGW2)X{Nd|$)!dnn+YNbpaM*}#zJp;-O6A6jrL84K{f~xL7e+K& zhHQri9(5n@Y-J63s>KDgmq_}kmi<9#!68Pp3U=_h5Cnp?*Ir?o2qr@DLo7uiyF zBD)ZB?Mv3|C3{2(xwy72*B%nCHKY_JTOv!6C`;DLzAuqoWJyXAO3Kpzs2A_OKfLIF zo~P(}n)%F`nR8~&e9w2jbiXF6rsu2N8k>1PTYl=9&at!$y_Fr8=%X-wj=d{lT#ZVP z()DQHZC2CZORlL1<<&@grvE9gR@HT0naBMpye<1_ z%=@+99(1pS)Uwx6nd&gdv!3P# zqY<^;w!A)1vdMCo(+}_qaF|9@ht7rEQMS%falT$r+rVaUJ74{(vh#g1Aqgz%ujIdM zlG-C~T*4~9ak1PmrLSdLTuGmSfBuO_0|=q>hYoz=*C(vu57r(yL!CbFoO5(hFNTGm z>|nX2sSEpaY10Tox@*@BM(1@L_fv_S6*q zeKI9Avtap->*TqB`>^8O&9jOtKcS2Z+AMS$1o#|OhSfs$n(!rP3*C6`kzjGXvs>w2;!N z`k2=Nja^46pV7RQ!x?$$1&taN2y`HjdnI{wVGq@Jc*ucMbVRquDIVARA!NTOA3R57 zZ-g9fyLaPkW`MEk6WSP?ykQSIvuny}VqV=UIC~Ub8X~Skc$;3*+I5vY7s@PLfCq>+uy!@T3n*i<72(z*Kx5bfjeXr`qU`c@3Xm{QXNw z+P6lKmP`3r8RCUSE!6|U29M~{AG6>}@-VSZglH!HI)vjM7#^iTW>IL2ZJ^A=$;Kz5 z=acGB0~zf&VP1rJ0Z`}uCfO&1qPET;9PtwbiWjtV|C^M?#y?MJ7a}?UmMk@ zCO`5lvF-C$mx>Z27@^QpIKb(CgUHh}uk<7dQ}_=8)Ja}qF%z4-Xf+ca6P+j*wN@q^ z$Sv`~a^+X_*>i`m7<^-E!`xV5iF>u%Cx-?#ZcioE7zg6}^7a}TCVV$DBI$*FAd8Ve zIfVHTkcH#gR9MhL`1E|7kOr>s?l9vS`DG#sKDw!tsz&Xu$e{M8jVT#wpY$@=6)R3s ztGeP+o#k_5y=GJM+{mIHbzD8~}2>mTJ8LH?Thlj^<5+^Ua(2cg0Q zBg(I_l}m6hOnhO5r|4ZEd??sVy3c{7lAe@|lrH~k&wMas+y9*&lk7oFM3abAuy2PWCM%tb=Uf6E2`Yk zB!j&3$Jl)l9gOV;A37IuIU`*hLZI0n^lrDDxv__)L(nx-McA)e5J!)|Z@-j!c*mk_ zsXx#4)YEj?p+0v>KFL#u(oQ?eh?S?Y@IE7LqQNEP3egi`W=>_tOXx$q{?rj}uLX+v7ZbqJtzJjXkV+Za5NlB4@-jv$*C792V z@wtbU^0iayRpiWT3eGxRyl$R6u@Bi@oL^vUff=RRJ%k+La?2*TEEv4C2+WOaf; zJz?YHvUIlmp@jQL-wE7O3d&QYZ^ib>Xq-1Z!^tJiEQjaGIQoIpvsCLKH-n5VEuU(c z%N>6EJCG0Lw?cfFwLBpA1KL^jRr{|(^B$hOLQ?V4sXyLlJo{?s$@4wqQZtmE{ipyt zi&+cuOZS3uI^|e;Vz?Otk+rYm4SRdCk6rnGU=mMYv8W=V6z|RDh&-lXv6SL0H#em_ zq-{HsT6Zs4)>ixTZ2ui$>$5DGPB>~7`bd1pXr%vx*R zB5HB0?I_aXpmrM0P2m%SLMq0vC^MTg$3JH`PEB}@dX!p2(<(@yh!i4vWw{DUnTxsi z9=zm7QOQ$y*XMC{j~_T)$jgQDfEgZ9_La+*)H?T2?|jinV7?8Gp-*Rc-Er<{VkcHD zk)+wn-jWN7q-8onlFsa-dH%#2hkNE8ya}`U$m_1D(<|XQ#cy>`r*hQwlDG-nn5CHK zQD$sbbqi&36L#0NNiny{vBw>A9q`^;J|4G}_k71EaaJhive(EImXTvlimxj^eC0!$ zoAcG_HlgRyzxKL&3nsy8Ui6U6gka6%RzEh7ZcZd(oO<=j${=LlTZV&|1_Iecg)msG*-_h!&vU1Cp+;M@6A#g313nArHU*yd#LPL^t1MMPa zmeLP%d!srm8}O%!41)D@4bqx>o+vNOk!9?^l_}9G`%C9K%HYxQ&vO}M{R9{D2y1+= zWAi!Tgi~jS+u&)boQ}SGNP}T4TP-xMSnveaPfGWGc-OeW6Z^@IL$~W*2kJJxeW339 z>ODl+qCD1EdFTui-%89Z-e)<@Mmf=Ue@sXbSg7(PlC=_IR>@9 z7m{gK9OIw%s%Y=qk7r6w9C`*ff%~hpEPGruSp?s$0qcgV32c2P(O(i+7OzxrU8Kr( zn)GRsRiD(rfBg9wchOV_9Lu`IF*G?{mEeJ|TuN28hG>X+C4@$^%3$ZosPpcyydrl?wiGKT2k%AJlW=;eVh3{iTQfna| zjkBS_*rlYAkJnzu6L^ogf79w`_xfP39xC6`+HxEp`{~P!=%;9=3sNP-ESm8fepXnF*icHplc-85%+5ac zx$9zLucwrUi%{&FlF5Pe&qfcL!8_9(3%GUaOGu_0QrC~oOWqv$*_D?3LWX@Q;TXFJ z*G$^an9-_boy%Gt1Ytj)a|LLgyi738lD&_yx$5S7%ZL5G@TR?$$EprMqoU!1p3=+9 zQ+yv1luT`sKHGO^OJ00)n{^*WFdzQ%G1l=xMGcZ=jO$g?5mt6;px?wJVhDs13nl&UkZ%;B3)UZ&DbtZpe*-O;^ zO~zYpCbyAXX#%!T$}XvEckJIxB;t0SoEYtQxmX;ZBk5#X=d>LSr~G#n8k`2iCu@YV zoc22G5xZHjpuWeLt|XzkZ=mpf*;|i;vT1KVjIwk-pr!E@_3HhSiQGSY!Yp}`S-sWQ zeP9+Emf%wT1AFWU2bIk)mVzgPw0bcYP^CxI*qViuzZ+Uxy&1XLr1N&~%_cSbJbA*q z?XJCZ&fQF!$m3XFYc8f4iGAlQP(*}1ry|!lR5Wzq*E7CCP)rpf@I7b)%4gFB~W8G8<+H z9Q77NDUxJMg_bVYcl1+*RHi2Jr4F2WCeZ$dV79q^pntT9r*Fip4(iD2a4v|hjjZ3# zv)R^rKW+N?a+^%ic(HgP+@{f+x$Pc}CufvTDLt_4oQFax=1&Xj)Ky`%I(edko-2tr zH$GsTHTC2nJ|W~OU3YCbpp5V4n**#Q6171jNn`H6IFyo^aqCOTT$s37?kgD+2{$!- z%yp}y9 z8D5q}ywJt!Xy2+Dboo^=qcKBN$)O}m8AZ;V2^40$JVr7ZA)tuYL0I! zEWi#=y#w)4nakc* zE|*U|KT^nR<*gsG6vxRxF?lNIIw364U!}0Z*KWj=^e`7(FEiMy#hLB=W8o5y52Z^# zSQnI>d_+k&svnv7I-egfJ)u9=pEAJ_s6LHzb1Ckd#xgc~nS(pNGm9UTIGVxk1D;hv zUErA|=bzrYUCS`Tes+x5Ck+uMP0) zZC<@ub|q{MzNac8sWhyr*i!t+l--65y_7z9lyXd{CN;&SK64(rJ;Q#>;2d*wgZ+Dz z32VwkvPU%tV$P67#RqaX)7|O(_EHgRR%nO*Y}Vsxr#6jOk54+>U(ZxgdK)Sn4Gm!{CtgxSX?iM=4^$uqB!#)^mDG2$QP0}4~A5UzQEHe zq$JgSZuR?!<)n0UVqavoe|Z<2RbOeN&!LMKODas^MdlYNe|tazs&|3JNbr3XC1+Pd zir%uR&*zHd@>6Fm)Xv^jEjv4Yv{!nOkxrU|e1J;c!sNu6qRZGR``9RFc#_RosE7!8 z%vUie7ed9BPlls(WhMl@c$_}8DrAyPcB_8%T8^`&qbX_l_VD_&B5 zVA_75lU4vK4^a?lSD*XowEw`Oz*iplE2v({#hNt4QmtS*APbC6c0{$irS=iw%avlr5@{F6!4pV})G0 zue{be^kP=RZEu`c@d%M**mG7pSi1iEpOK4L1KD3bF1+qCS@I8Qm^~_mw*0RsV4pzq>#y#x3VGXO1g4T z6%A#+but17J0Kgr{=LW&{D;fn&q{8vI+9VKx5_%1x}1iJvXYK2ue$O&hyMizNya~8 z1^6ZS9qDNKFU1?dl+8Pe7kX}2Xg z-758OSn-X>9pO$$7e_O=)0T`_&=@&x&B)RW>A3Z@j-au7vK@Bo-N3f83^f|#pBpj$ zPvMx+c<^Fxp!456>|IPjUTFn)+){I(*!s^{u^?g_+^n}Y1@|hy-!{$M9zz7&5@zPU zrJ%xSe8268uNl(L8D?$wAF2So6aE=1syGgU<^MP{hGKy#{*ingVSA2%KAZbH!$QEE zoS@*|(3biVU7gHtJAB&_0?ghXVGWKZ*8j17WzjHHz`nD6jr|*AdphGsLrdEcniJ?O zwYA@3=xZ0;EnqGP=Phl5p)YVTVEg*|GlM@E+tb&|eY8Jg#h=r5fwmD2!S6V?sALnM z517+|Eo|Q^4EULh`UP-SFJ-TsYuC5KKa|UI$GP(HArKs3PI5F#A8-MD?SjPGeQr$p z`V8C&IpEE#q<^kdtg=W(S%B2`Uuo@nQj5uA$k6(51_*iFf)EIxSsTfyUJ%fnoZS&{ zuy4YhdCi=hFln7gJ9D@j6zJi1K>?Gt-{?-uJAhup zg^B(}1WX<7XbnSHdw`OJ1=7)WLk=h(DkFQaI&z61koB}-#q#*ztGK_>H>A6{Un2i9 z@C`gLX#ll0l2HkA8?1x%xc?_yue#K~FV0|2uFBHAfgadq1h|LL8o-KZ$m2VJ*xYtm z#?&Q6VD4GKab?i}`c<|8u)ds5{gc(G!_BQ>&Pc}%HKx|UezYDWk@I5Up(q;KSB-6; zZ3_bj>4&fbR%rpg3|7P1NJf#L-3G?0RW@C%5vB>%F+gL}V6_UYabGb>tMLx_uU?YH zw0MNcnFD!1d|q&*J%Pr)&};+t+X&yQGuq0}N;1q%PXIsr0Vbx5hWgt2?@%{)y~=pc zYh3{EI9NU_pPpVF$tWMh?l9NAQO(-U#Z7Ugg{`%z%SzB!v9myK=#se2g;KA96h=S_ zgH;j0&tz1S!{17wu$rW4IU+5r5pa1IYlJy`ZN4krOxOkT!c%CtjSaiQU7hCk)Lbons-p(XTN}(9Jv@OWeH^%+;B0jwCxFu6PqH$i1K@gKpKg?{zEF+t_Cq@XVlW8YAn{ro$tb7KyG31JK62~zf^7uv zVVjRHg~6sV2!%j&*Cbh4PgS$Km1SoVn6y?4cmvx{fIIo%WUw}pQ5TkWE5WMmHw~kP z-nrtLzy#Rf@PNLYG;y$YPzcz_;Wi7TbtF?>lpw}^2iqh%rU}7LF#i-E))p1ocMdR@ zFayMw^D9v9HyX@zp__c?n5$~tD&Enin=h=yJ0XB7zh=x8hvKE(J>uqzsZa^ZcN}PS z0;DJCTgL>bhwQGTbK2e|Z`ZJse4yTx5SC4!J3XSNb_;r|hQ z>0%q6b%Ut1{}ATnuL$f`i0v3TSuOie2r#k)0p`A0d-QK{H#c<+NvydUP`Nx%Il8F} zBzKE?3T_L^Tw9y^!PH!N0?@K2i2dk$q@VI`ao6|j?KoT06;s~^Ai-BwP*p>7wn+8A zmte2c+--$KI1@ zYN)%jTPe0h^e5a|; zdPLe@YKi&9nRWE}{QnR1wf6UzIW1;?{dHi!=Q{^po$RJ?m~B|s;Tmdp4)>pqgxUCS z9j>-{_i&rJ5N5BZbu@*JouK{av@m;ftOG6f?FMMG31PnEy^cdS3~)AjHX5TaLd7b6HiJE*=aVu64CA85;7mjD0& literal 0 HcmV?d00001 diff --git a/target/legacy-is-publisher-1.0.0-SNAPSHOT-sources.jar b/target/legacy-is-publisher-1.0.0-SNAPSHOT-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..6126ea654bae0f777f0ce55ccd0d0afa3feba1ca GIT binary patch literal 17583 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 TKRMz&e(AtGR@*ZF{OkV#Mao-) literal 0 HcmV?d00001 diff --git a/target/legacy-is-publisher-1.0.0-SNAPSHOT.jar b/target/legacy-is-publisher-1.0.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..7a54bd3ad1f6d429a69e29787de3c48ab9a7d680 GIT binary patch literal 38409 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