From 8b159c2e100dbfd7caee37724d10dec8b194b58f Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 20 Feb 2025 15:38:52 +0100 Subject: [PATCH] WIP on the UI Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 18 +- .../lib/dbrepo-1.7.0-py3-none-any.whl | Bin 29775 -> 29753 bytes .../lib/dbrepo-1.7.0.tar.gz | Bin 42860 -> 42858 bytes .../target/create-event-listener.jar | Bin 10140 -> 10142 bytes dbrepo-dashboard-service/.coverage | Bin 53248 -> 0 bytes dbrepo-dashboard-service/Dockerfile | 10 +- dbrepo-dashboard-service/access.py | 41 --- dbrepo-dashboard-service/api/dto.py | 50 --- .../clients/grafana_client.py | 27 -- .../clients/keycloak_client.py | 36 -- dbrepo-dashboard-service/coverage.txt | 7 - dbrepo-dashboard-service/dashboard.py | 273 --------------- dbrepo-dashboard-service/report.xml | 1 - .../java/at/tuwien/config/CacheConfig.java | 22 +- .../impl/MetadataServiceGatewayImpl.java | 13 +- .../java/at/tuwien/mapper/DataMapper.java | 4 +- .../java/at/tuwien/mapper/MariaDbMapper.java | 12 +- .../service/impl/CredentialServiceImpl.java | 9 +- .../impl/DatabaseServiceMariaDbImpl.java | 7 +- .../impl/SubsetServiceMariaDbImpl.java | 2 +- dbrepo-gateway-service/dbrepo.conf | 16 +- dbrepo-metadata-db/1_setup-schema.sql | 326 +++++++++--------- dbrepo-metadata-db/2_setup-data.sql | 8 +- .../at/tuwien/api/container/ContainerDto.java | 1 - .../tuwien/entities/container/Container.java | 7 +- .../container/image/ContainerImage.java | 1 + .../entities/container/image/DataType.java | 1 + .../entities/container/image/Operator.java | 1 + .../at/tuwien/entities/database/Database.java | 1 + .../at/tuwien/entities/database/View.java | 1 + .../tuwien/entities/database/ViewColumn.java | 1 + .../tuwien/entities/database/table/Table.java | 1 + .../database/table/columns/TableColumn.java | 1 + .../table/columns/TableColumnConcept.java | 1 + .../table/columns/TableColumnUnit.java | 1 + .../constraints/foreignKey/ForeignKey.java | 1 + .../foreignKey/ForeignKeyReference.java | 1 + .../constraints/primaryKey/PrimaryKey.java | 1 + .../table/constraints/unique/Unique.java | 1 + .../tuwien/entities/identifier/Creator.java | 1 + .../entities/identifier/Identifier.java | 1 + .../identifier/IdentifierDescription.java | 1 + .../entities/identifier/IdentifierFunder.java | 1 + .../entities/identifier/IdentifierTitle.java | 1 + .../identifier/RelatedIdentifier.java | 1 + .../entities/maintenance/BannerMessage.java | 1 + .../tuwien/entities/semantics/Ontology.java | 1 + .../at/tuwien/endpoints/DatabaseEndpoint.java | 5 +- .../at/tuwien/endpoints/TableEndpoint.java | 3 +- .../at/tuwien/endpoints/ViewEndpoint.java | 3 +- .../endpoints/ViewEndpointUnitTest.java | 3 +- ...nticationPrivilegedIntegrationMvcTest.java | 12 +- .../service/impl/AccessServiceImpl.java | 2 +- .../service/impl/DatabaseServiceImpl.java | 8 +- dbrepo-search-service/Pipfile.lock | 2 +- dbrepo-search-service/app.py | 13 +- dbrepo-search-service/init/Pipfile.lock | 2 +- dbrepo-search-service/init/database.json | 295 +++++++++++++--- .../init/lib/dbrepo-1.7.0-py3-none-any.whl | Bin 29775 -> 29753 bytes .../init/lib/dbrepo-1.7.0.tar.gz | Bin 42860 -> 42858 bytes .../lib/dbrepo-1.7.0-py3-none-any.whl | Bin 29775 -> 29753 bytes dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz | Bin 42860 -> 42858 bytes .../components/database/DatabaseCreate.vue | 4 +- .../dialogs/EditMaintenanceMessage.vue | 2 +- dbrepo-ui/components/dialogs/Semantics.vue | 4 +- .../components/dialogs/ViewVisibility.vue | 4 +- dbrepo-ui/components/identifier/Citation.vue | 4 +- .../components/identifier/DownloadButton.vue | 2 +- dbrepo-ui/components/identifier/Persist.vue | 8 +- dbrepo-ui/components/subset/Builder.vue | 48 ++- dbrepo-ui/components/subset/Results.vue | 8 +- dbrepo-ui/components/subset/SubsetToolbar.vue | 2 +- dbrepo-ui/components/table/TableImport.vue | 32 +- dbrepo-ui/components/table/TableSchema.vue | 5 +- dbrepo-ui/components/view/ViewToolbar.vue | 4 +- dbrepo-ui/composables/access-service.ts | 8 +- dbrepo-ui/composables/container-service.ts | 2 +- dbrepo-ui/composables/database-service.ts | 14 +- dbrepo-ui/composables/identifier-service.ts | 6 +- dbrepo-ui/composables/image-service.ts | 2 +- dbrepo-ui/composables/message-service.ts | 6 +- dbrepo-ui/composables/ontology-service.ts | 6 +- dbrepo-ui/composables/query-service.ts | 18 +- dbrepo-ui/composables/table-service.ts | 26 +- dbrepo-ui/composables/tuple-service.ts | 6 +- dbrepo-ui/composables/view-service.ts | 14 +- dbrepo-ui/dto/index.ts | 110 +++--- dbrepo-ui/dto/jwt.ts | 20 -- dbrepo-ui/layouts/default.vue | 8 +- dbrepo-ui/locales/en-US.json | 5 +- .../pages/database/[database_id]/info.vue | 4 +- .../persist/[identifier_id]/index.vue | 2 +- .../pages/database/[database_id]/settings.vue | 16 +- .../[database_id]/subset/[subset_id]/info.vue | 7 +- .../persist/[identifier_id]/index.vue | 2 +- .../[database_id]/table/[table_id]/data.vue | 12 +- .../[database_id]/table/[table_id]/info.vue | 4 +- .../persist/[identifier_id]/index.vue | 2 +- .../table/[table_id]/settings.vue | 8 +- .../[database_id]/table/create/dataset.vue | 17 +- .../[database_id]/table/create/schema.vue | 22 +- .../[database_id]/view/[view_id]/data.vue | 4 +- .../[database_id]/view/[view_id]/info.vue | 4 +- .../persist/[identifier_id]/index.vue | 2 +- .../[database_id]/view/[view_id]/settings.vue | 6 +- dbrepo-ui/pages/user/info.vue | 18 +- docker-compose.yml | 1 + helm/dbrepo/files/create-event-listener.jar | Bin 10140 -> 10142 bytes lib/python/dbrepo/api/dto.py | 119 ++++--- 109 files changed, 851 insertions(+), 1037 deletions(-) delete mode 100644 dbrepo-dashboard-service/.coverage delete mode 100644 dbrepo-dashboard-service/access.py delete mode 100644 dbrepo-dashboard-service/api/dto.py delete mode 100644 dbrepo-dashboard-service/clients/grafana_client.py delete mode 100644 dbrepo-dashboard-service/clients/keycloak_client.py delete mode 100644 dbrepo-dashboard-service/coverage.txt delete mode 100644 dbrepo-dashboard-service/dashboard.py delete mode 100644 dbrepo-dashboard-service/report.xml delete mode 100644 dbrepo-ui/dto/jwt.ts diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index a585c49097..d600643542 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -180,20 +180,20 @@ }, "boto3": { "hashes": [ - "sha256:006800604c34382873521b20890b758eea7109d699696ece932131259d0a4658", - "sha256:d59642672b1f35f55f47b317693241ce53333816f47c9e72fcc8fd0e9adc6a87" + "sha256:777ec08a6fe0ad77fa0607b431542c51d2d2e4145fecd512bee9f383ee4184f2", + "sha256:c9055fe6a33f79c43053c06db432092cfcf88f4b4181950f5ca8f2f0cb6abb87" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.23" + "version": "==1.36.24" }, "botocore": { "hashes": [ - "sha256:886730e79495a2e153842725ebdf85185c8277cdf255b3b5879cd097ddc7fcc3", - "sha256:9feaa2d876f487e718a5fd80a35fa401042b518c0c75117d3e1ea39a567439e7" + "sha256:7d35ba92ccbed7aa7e1563b12bb339bde612d5f845c89bfdd79a6db8c26b9f2e", + "sha256:b8b2ad60e6545aaef3a40163793c39555fcfd67fb081a38695018026c4f4db25" ], "markers": "python_version >= '3.8'", - "version": "==1.36.23" + "version": "==1.36.24" }, "certifi": { "hashes": [ @@ -421,7 +421,7 @@ }, "dbrepo": { "hashes": [ - "sha256:b555d9cbbbc07f1bd8f449b7bb38b2f7221f86b897bff08dd7c34933befae865" + "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9" ], "path": "./lib/dbrepo-1.7.0.tar.gz" }, @@ -1621,7 +1621,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "werkzeug": { @@ -2246,7 +2246,7 @@ "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.9'", "version": "==2.3.0" }, "wrapt": { diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl index 42c0e32ce8e4f895afa9e105ecdcb3d508ba2257..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7 100644 GIT binary patch delta 6022 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%0AQN4Z<M=a{y+d4cxMs%+Ur zrrhs~j+C-oFVKH!(a-tBx+rJ&5+~zTVUKHLGFqLhd{30lPd&6$RZ~7?#i5sdD+`Y~ zE&D2S?Z--k-VYi{`OyU;FCUzc`1Vmcz?+dtgjs}vfq{d;X3plqf*wY+aci!k0LE#P zql=sv7f+s7q^<x;uzv)2>~i=S7-Dr87~~ibU`gXFx5*!KBq#qX5|#%kWT*~&>?Fp( z@W7dYK^~!wVM(LYWP@Toa4twJmS#GbGx=kV+~hgMJYb>K#nMdSxnPqP<nm5_SIh&p f7MxF*7#NIL7#L)cOxx192%^}yM2yY103-tda{p~8 delta 6057 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 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz index 8ecf0661cfdd270b33d7fe4e8bdce444569e995c..be1dcfe68165001dbeacd670709955723a01e323 100644 GIT binary patch delta 42432 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�mGMTvoY{ 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 delta 42387 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 I3=h~C0A{7)&Hw-a diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar index a9437e2cc19fae55c40e5ab0ddf772e20f11ab81..3230bc2de1aa82754770364457fda657e7db3279 100644 GIT binary patch delta 1020 zcmbQ^KhIw{z?+#xgn@yBgQ2=6B&t-dxvylRuwuP$@gW6)z3FQI8|@h+J||9&-r9cc zVwqd^`<5K7WG9&$M}EEUzIbfq<;-dZv2PpSf1I}T!YY>TFT6dWz2`g*xa~7HRuJH_ zvQ10Tw7T%*-ifuZ4osNfs(xfkXsF}!qkZeXE8N}M`F^fasFvo1&_(OHv`=_Ul)hme zvSr6oF`wlscj}ec-xbFHGF#bwEG5M*ca7@LiE9=p^fT4IUwJP)p!wMTpLq-Jb431e z{x^Tl?5j%3(MR^4wXm1r^O-s=u{vPE%n3dU;k!%@Ey`5g#-?L``tiQ!J$`qL#OF%< zkW&bE;%|?aExfibqUx1{n@g-p;Qo5Ct<~?GUVdAApZ`b8PPt14^$Wz`L|rSnmcc9Z zd(YI;Z|gS5&)Hph`<aiK>HUL&VZAqa8H+vje(!f!SUl_Q;moBvO>D(_dz$>_W<K6+ z!gcwg##|LgiKRxJ?@uWRv7RvDJLYKO`KUyw_2AEY$3nuN*Ihnvk>SIwN{(l%mWn@O ziQQtMT>Bmz6<iDq91INAOf?~sH!`X)SJi|}zQL#qra748z_cclDsy#B$mBpKEihfj zWCEtQGI@dJnV8Rl=}XMrAbN8G%N!;!<3AfWCz!!2P$LM|(xW&FOlvAl=7dN8<fBTK zU{OY8X~t!fWtAlqs%k=_7?6MvoGrlc*6}Rk<cG{6lQWfhOwbiFqbU5#$iR?Tq95SR z$RxrH@hQlIE0v{X<(R-yC8gz=sd*?WKwf>QEY0XP`LD7Z*j;ie(u~EE8&zbqkxc@* zA8s211A{)C19Ic4$&D&@V1N9X*XGp4z`*c<fq_8-u7-hON#l2>$%4#UlQ~s+zzThS zv#io%U|`T;U|?`UQFxqr@<V2q$(2xr|35YF_Ge;XxW>xBV1%MDlx1>0i^=4hP=(z8 z1pnOPU|?7$z`!7eqVNmbWIlF@$+BuZpa`0*qbAM7BrrLjMSXICngQed$qUt7!Crr< zCe75SIJuWedh&fHvB_r?`JiEd$il)NA?K1A7#KD(Ffa(CSRyyMKwXV(lM+Y}0FzNu A9{>OV delta 925 zcmbQ|KgVA>z?+#xgn@yBgJJKK;HZg@IbIYoGBBKBVqg%Nd{;@lzBlM}-eCoSJ<*@+ zKQKGQ^-15K_2q(FruNeQ-%{6jyLy!)tk2$`Zn1K;Tj*`(4I2)hGdOJ<5xhYCU)Q<W zx6*Pn*b284aJ0-i&o8;VT}*d(SypmXNsf-1`;k3{OP_h~ed=!=@-Rxu{rCwHH^x@4 zKQ{w9B`@zh9D8=*Lf-E$q88VG5V~31zw6R;&(+z}H$L6-ZQfJ%ZEk1t8Xvt_cWY|I z!lnCv>Mgj>;rhw>-~2iHuS1WSxmeHl+<E_ftLB~sY55np0+>9cqAfl=k#g;I*7yIE zBE!0Pd19m!x9xr2XKXq3KW<J;c)R%dalRBDE!(*zzu8wDDh@wp_Wtg^<NmHM6y@ue z{^_X=5{<udZP6mV_n}kwO1^5Fl6cQ#XF#dy_KJX1-rIHpikhL{#Vxiu7FSs4_o{Ds z;n#Zo#;ncLPv*?=Ic6a7>ZOinXxxJcRbdT*&n9~>9nD!0B+=vdJuc?w(>wW6DwZyh zto#>iGheo_IHv0!JYn&R0Td@(3=A9$411ZT1W(?~sKUHwO7P@cjJjZ&i%AYlYcr`b z@0}7nIhaWcOgAu@fa&c_USN3^=Cfe>3UfDz-kiiThY8GJWas7tGx!B+1i@PR6lZ~H zZKcVa@N_WwxRRwjh{u2gIN@vohPRGOCd(^JfQ*`Kr7X>OdUBYuBA8dDEG_n%k%1wx zL_ffrkx7IZ;vJALRx3-h%P@hZCI_krV_3kCVu8!#|H^V;rzxmNGZivT?q`yn9Hqjg zfbK4R6m2U&3Z*B{S5cDRGbK3c&%8FLE(QjM4-5<p8gPXS3`-inPJW<b4tBDXsx;%# z$!4m7U|yH1G*d9k<U$sc$+uN`z(TK7rI|jlO%`C6m@Kab5z<qWW?~SST*#t6xk$}` zX|C+#ekSS3`_(kTE`F^h%~Y=l6_T24t1britguJOxnu?ghK&pi48kamk(peiuEw@O H2_y&r>zPhv diff --git a/dbrepo-dashboard-service/.coverage b/dbrepo-dashboard-service/.coverage deleted file mode 100644 index 506ffe7fba86b0e70757d0f15ea4bb6516472b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 KMnhouga82c+IkQG diff --git a/dbrepo-dashboard-service/Dockerfile b/dbrepo-dashboard-service/Dockerfile index 00fc60339b..e4d9d8f505 100644 --- a/dbrepo-dashboard-service/Dockerfile +++ b/dbrepo-dashboard-service/Dockerfile @@ -1,9 +1,9 @@ -FROM docker.io/bitnami/grafana:10.4.9-debian-12-r0 AS runtime +FROM docker.io/bitnami/grafana:11.5.1 AS runtime LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" WORKDIR /app -COPY --chown=grafana:grafana ./dashboards /app/dashboards -COPY --chown=grafana:grafana ./provisioning /etc/grafana/provisioning -COPY --chown=grafana:grafana ./grafana.ini /etc/grafana/grafana.ini -COPY --chown=grafana:grafana ./ldap.toml /etc/grafana/ldap.toml +COPY --chown=grafana:grafana ./dashboards /app/dashboards +COPY --chown=grafana:grafana ./provisioning /etc/grafana/provisioning +COPY --chown=grafana:grafana ./grafana.ini /etc/grafana/grafana.ini +COPY --chown=grafana:grafana ./ldap.toml /etc/grafana/ldap.toml diff --git a/dbrepo-dashboard-service/access.py b/dbrepo-dashboard-service/access.py deleted file mode 100644 index 2f576db368..0000000000 --- a/dbrepo-dashboard-service/access.py +++ /dev/null @@ -1,41 +0,0 @@ -import logging - -from grafana_client.client import GrafanaException -from werkzeug.exceptions import NotFound - -from api.dto import Permission -from clients import grafana_client - -statistics_row_title = '${table_id}' - - -def remove_anonymous_read_access(uid: str) -> None: - grafana = grafana_client.connect() - permissions = grafana.dashboard.get_permissions_by_uid(uid) - viewer_role = [permission for permission in permissions if - 'permissionName' in permission and permission['permissionName'] != 'View'] - if len(viewer_role) == 0: - logging.warning(f'Failed to find permissionName=View') - return None - try: - response = grafana_client.generic_post(f'/api/access-control/dashboards/{uid}/builtInRoles/Viewer', - Permission(permission='').model_dump()) - if response.status_code != 200: - raise OSError(f'Failed to remove anonymous read access: {response.content}') - except GrafanaException as e: - raise OSError(f'Failed to remove anonymous read access: {e.message}') - logging.info(f"Removed anonymous read access from dashboard with uid: {uid}") - - -def update_access(uid: str, username: str, permission: Permission) -> None: - try: - response = grafana_client.generic_get(f'/api/users/lookup?loginOrEmail={username}') - if response.status_code == 404: - raise NotFound(f"Failed to find user: {username}") - if response.status_code != 200: - raise OSError(f"Failed to add access to user: {username}") - grafana_client.generic_post(f"/api/access-control/dashboards/{uid}/users/{response.json()['id']}", - permission.model_dump()) - except GrafanaException as e: - logging.error(f'Failed to add access: {e.message}') - logging.info(f"Add access for dashboard with uid: {uid}") diff --git a/dbrepo-dashboard-service/api/dto.py b/dbrepo-dashboard-service/api/dto.py deleted file mode 100644 index e2dab237d5..0000000000 --- a/dbrepo-dashboard-service/api/dto.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -from typing import Optional - -from pydantic import BaseModel - - -class Datasource(BaseModel): - uid: str - type: str - id: Optional[int] = None - orgId: Optional[int] = None - name: Optional[str] = None - typeLogoUrl: Optional[str] = None - access: Optional[str] = None - url: Optional[str] = None - user: Optional[str] = None - basicAuth: Optional[bool] = None - withCredentials: Optional[bool] = None - isDefault: Optional[bool] = None - version: Optional[int] = None - readOnly: Optional[bool] = None - jsonData: Optional[dict] = None - secureJsonFields: Optional[dict] = None - basicAuthUser: Optional[str] = None - basicAuthPassword: Optional[str] = None - password: Optional[str] = None - - -class CreateDatasource(BaseModel): - name: str - type: str - access: str - url: str - basicAuth: bool - version: int - readOnly: bool - jsonData: Optional[dict] = None - secureJsonData: Optional[dict] = None - basicAuthUser: Optional[str] = None - - -class Permission(BaseModel): - permission: str - - -class CreateDatasourceRequest(BaseModel): - database_internal_name: str - readonly: bool - type: str diff --git a/dbrepo-dashboard-service/clients/grafana_client.py b/dbrepo-dashboard-service/clients/grafana_client.py deleted file mode 100644 index 8f7d5aab0f..0000000000 --- a/dbrepo-dashboard-service/clients/grafana_client.py +++ /dev/null @@ -1,27 +0,0 @@ -import logging -import os - -import requests -from requests import Response - -from grafana_client import GrafanaApi - -url = os.getenv('DASHBOARD_UI_ENDPOINT', 'http://localhost:3000') -username = os.getenv('SYSTEM_USERNAME', 'admin') -password = os.getenv('SYSTEM_PASSWORD', 'admin') - - -def connect() -> GrafanaApi: - return GrafanaApi.from_url(url=f'{url}', credential=(username, password)) - - -def generic_get(api_url: str) -> Response: - request_url = url + api_url - logging.debug(f'generic get url={request_url}, auth=({username}, <reacted>)') - return requests.get(request_url, auth=(username, password)) - - -def generic_post(api_url: str, payload: dict) -> Response: - request_url = url + api_url - logging.debug(f'generic post url={request_url}, payload={payload}, auth=({username}, <reacted>)') - return requests.post(request_url, json=payload, auth=(username, password)) diff --git a/dbrepo-dashboard-service/clients/keycloak_client.py b/dbrepo-dashboard-service/clients/keycloak_client.py deleted file mode 100644 index a04998e909..0000000000 --- a/dbrepo-dashboard-service/clients/keycloak_client.py +++ /dev/null @@ -1,36 +0,0 @@ -import logging -import requests -from dataclasses import dataclass -from typing import List - -from flask import current_app -from jwt import jwk_from_pem, JWT - - -@dataclass(init=True, eq=True) -class User: - username: str - roles: List[str] - - -class KeycloakClient: - - def obtain_user_token(self, username: str, password: str) -> str: - response = requests.post( - f"{current_app.config['AUTH_SERVICE_ENDPOINT']}/realms/dbrepo/protocol/openid-connect/token", - data={ - "username": username, - "password": password, - "grant_type": "password", - "client_id": current_app.config["AUTH_SERVICE_CLIENT"], - "client_secret": current_app.config["AUTH_SERVICE_CLIENT_SECRET"] - }) - body = response.json() - if "access_token" not in body: - raise AssertionError(f"Failed to obtain user token(s): {response.status_code}") - return response.json()["access_token"] - - def verify_jwt(self, access_token: str) -> User: - public_key = jwk_from_pem(str(current_app.config["JWT_PUBKEY"]).encode('utf-8')) - payload = JWT().decode(message=access_token, key=public_key, do_time_check=True) - return User(username=payload.get('client_id'), roles=payload.get('realm_access')["roles"]) diff --git a/dbrepo-dashboard-service/coverage.txt b/dbrepo-dashboard-service/coverage.txt deleted file mode 100644 index 5436bf1f29..0000000000 --- a/dbrepo-dashboard-service/coverage.txt +++ /dev/null @@ -1,7 +0,0 @@ -Name Stmts Miss Cover --------------------------------------------------- -app.py 210 29 86% -clients/keycloak_client.py 36 9 75% -clients/opensearch_client.py 179 51 72% --------------------------------------------------- -TOTAL 425 89 79% diff --git a/dbrepo-dashboard-service/dashboard.py b/dbrepo-dashboard-service/dashboard.py deleted file mode 100644 index c77c1834cc..0000000000 --- a/dbrepo-dashboard-service/dashboard.py +++ /dev/null @@ -1,273 +0,0 @@ -import logging -import os - -from dbrepo.api.dto import Database, Table -from grafana_client.client import GrafanaException - -from clients import grafana_client - -statistics_row_title = '${table_id}' - -base_url = os.getenv('BASE_URL', 'http://localhost') -datasource_uid = os.getenv('JSON_DATASOURCE_NAME', 'dbrepojson0') - - -def map_link(title: str, url: str) -> dict: - return dict(targetBlank=True, - asDropdown=False, - includeVars=False, - keepTime=False, - tags=[], - type='link', - icon='info', - title=title, - url=url) - - -def map_statistics_row(dashboard: dict) -> dict | None: - filtered_panels = [panel for panel in dashboard['panels'] if - panel['type'] == 'row' and panel['title'] == statistics_row_title and 'id' in panel] - if len(filtered_panels) > 0 and filtered_panels[0]['id'] is not None: - return filtered_panels[0] - logging.warning(f'Failed to find statistics row id') - return None - - -def map_links(database: Database) -> [dict]: - links = [] - if len(database.identifiers) > 0: - links.append(map_link('Database', f"{base_url}/pid/{database.identifiers[0].id}")) - else: - links.append(map_link('Database', f"{base_url}/database/{database.id}")) - return links - - -def map_templating(database: Database) -> dict: - options = [dict(selected=False, - text=table.name, - value=str(table.id)) for table in database.tables] - selected = dict(selected=True, - text=[table.name for table in database.tables], - value=[str(table.id) for table in database.tables]) - datasource = dict(uid=datasource_uid, - type='yesoreyeram-infinity-datasource') - return dict(list=[dict(description='', - name='table_id', - hide=0, - includeAll=True, - multi=True, - datasource=datasource, - refresh=1, - regex='', - sort=0, - definition='dbrepo-json- (infinity) json', - query=dict(queryType='infinity', - query='', - infinityQuery=dict(format='table', - filters=[], - parser='backend', - refId='variable', - root_selector='', - source='url', - type='json', - url=f"/api/database/{database.id}/table", - columns=[dict(selector='id', - text='value', - type='number'), - dict( - selector='internal_name', - text='name', - type='string')], - url_options=dict(data='', - method='GET'))), - label='Table ID', - skipUrlSync=False, - type='query', - current=selected, - options=options)]) - - -def map_timeseries_panel(database: Database, table: Table) -> dict: - datasource = dict(uid=datasource_uid, - type='yesoreyeram-infinity-datasource') - return dict( - title=table['name'], - type='timeseries', - datasource=datasource, - targets=[dict(datasource=datasource, - format='table', - global_query_id='', - hide=False, - refId='A', - root_selector='', - source='url', - type='json', - url=f"/api/database/{database['id']}/table/{table['id']}", - url_options=dict(data='', - method='GET'))], - gridPos=dict(h=8, - w=12, - x=0, - y=0), - options=dict(legend=dict(displayMode='list', - placement='bottom', - showLegend=True), - tooltip=dict(mode='single', - sort='none')), - fieldConfig=dict( - defaults=dict(color=dict(mode='palette-classic'), - custom=dict( - axisBorderShow=False, - axisCenteredZero=False, - axisColorMode='text', - axisLabel='', - axisPlacement='auto', - barAlignment=0, - drawStyle='line', - fillOpacity=0, - gradientMode='none', - hideFrom=dict(legend=False, - tooltip=False, - viz=False), - insertNulls=False, - lineInterpolation='linear', - lineWidth=1, - pointSize=5, - scaleDistribution=dict(type='linear'), - showPoints='auto', - spanNulls=False, - stacking=dict(group='A', - mode='none'), - thresholdsStyle=dict(mode='absolute'))))) - - -def map_panels(dashboard: dict, database_id: int | None = None) -> [dict]: - datasource = dict(uid=datasource_uid, - type='yesoreyeram-infinity-datasource') - if map_statistics_row(dashboard) is None: - dashboard['panels'].append(dict(collapsed=False, - repeat='table_id', - repeatDirection='h', - title=statistics_row_title, - type='row', - panels=[], - targets=[dict(refId='A', - datasource=datasource)], - gridPos=dict(h=1, - w=24, - x=0, - y=0))) - dashboard['panels'].append(dict(title='Sample', - type='table', - fieldConfig=dict( - defaults=dict( - color=dict(mode='palette-classic'), - custom=dict(axisBorderShow=False, - axisCenteredZero=False, - axisColorMode='text', - axisLabel='', - axisPlacement='auto', - barAlignment=0, - drawStyle='line', - fillOpacity=0, - gradientMode='none', - hideFrom=dict( - legend=False, - tooltip=False, - viz=False), - insertNulls=False, - lineInterpolation='linear', - lineWidth=1, - pointSize=5, - scaleDistribution=dict( - type='linear'), - showPoints='auto', - spanNulls=False, - stacking=dict(group='A', - mode='none'), - thresholdsStyle=dict( - mode='off'))), - overrides=[]), - options=dict(legend=dict(displayMode='list', - placement='bottom', - showLegend=True, - calcs=[]), - tooltip=dict(mode='single', - sort='none')), - targets=[dict(format='json', - columns=[], - datasource=datasource, - filters=[], - global_query_id='', - refId='A', - root_selector='', - source='url', - type='json', - url='/api/database/' + str( - database_id) + '/table/${table_id}/data', - url_options=dict(data='', - method='GET'))], - datasource=datasource, - gridPos=dict(h=4, - w=12, - x=0, - y=0))) - return dashboard['panels'] - - -def find(uid: str): - grafana = grafana_client.connect() - try: - return grafana.dashboard.get_dashboard(uid) - except GrafanaException: - return None - - -def create(database_name: str, uid: str = '') -> dict: - grafana = grafana_client.connect() - dashboard = dict(uid=uid, - title=f'{database_name} Overview', - tags=['generated', 'dbrepo'], - timezone='browser', - fiscalYearStartMonth=1, - panels=[]) - dashboard['panels'] = map_panels(dashboard) - payload = dict(folderUid='', - overwrite=False, - dashboard=dashboard) - dashboard = grafana.dashboard.update_dashboard(payload) - logging.info(f"Created dashboard with uid: {dashboard['uid']}") - return dashboard - - -def find(uid: str) -> dict | None: - grafana = grafana_client.connect() - try: - return grafana.dashboard.get_dashboard(uid)['dashboard'] - except GrafanaException: - return None - - -def delete(uid: str) -> None: - grafana = grafana_client.connect() - grafana.dashboard.delete_dashboard(uid) - - -def update(database: Database) -> dict: - grafana = grafana_client.connect() - dashboard = find(database.dashboard_uid) - # update metadata - if len(database.identifiers) > 0 and len(database.identifiers[0].titles) > 0: - dashboard['title'] = database.identifiers[0].titles[0].title - if len(database.identifiers) > 0 and len(database.identifiers[0].descriptions) > 0: - dashboard['description'] = database.identifiers[0].descriptions[0].description - dashboard['links'] = map_links(database) - dashboard['templating'] = map_templating(database) - # update panels - dashboard['panels'] = map_panels(dashboard, database.id) - payload = dict(folderUid='', - overwrite=True, - dashboard=dashboard) - dashboard = grafana.dashboard.update_dashboard(payload) - logging.info(f"Updated dashboard with uid: {dashboard['uid']}") - return dashboard diff --git a/dbrepo-dashboard-service/report.xml b/dbrepo-dashboard-service/report.xml deleted file mode 100644 index 202b3db684..0000000000 --- a/dbrepo-dashboard-service/report.xml +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="48" time="25.604" timestamp="2025-01-29T15:46:14.797988+01:00" hostname="medusa"><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_auth_fails" time="11.131" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_role_fails" time="0.317" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_not_found_fails" time="0.370" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_succeeds" time="0.524" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_fails" time="0.154" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_succeeds" time="0.218" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_no_query_fails" time="0.173" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_succeeds" time="0.283" /><testcase classname="test.test_app.JwtTest" name="test_get_index_fails" time="0.240" /><testcase classname="test.test_app.JwtTest" name="test_get_index_succeeds" time="0.190" /><testcase classname="test.test_app.JwtTest" name="test_health_succeeds" time="0.160" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_column_succeeds" time="0.386" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_concept_succeeds" time="0.341" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_identifier_succeeds" time="0.312" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_media_type_fails" time="0.140" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_no_body_fails" time="0.134" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_succeeds" time="0.284" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_table_succeeds" time="0.336" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_unit_succeeds" time="0.246" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_view_succeeds" time="0.281" /><testcase classname="test.test_app.JwtTest" name="test_update_database_empty_body_fails" time="0.177" /><testcase classname="test.test_app.JwtTest" name="test_update_database_malformed_body_fails" time="0.180" /><testcase classname="test.test_app.JwtTest" name="test_update_database_media_type_fails" time="0.231" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_auth_fails" time="0.119" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_body_fails" time="0.150" /><testcase classname="test.test_app.JwtTest" name="test_update_database_succeeds" time="0.243" /><testcase classname="test.test_jwt.JwtTest" name="test_get_user_roles_succeeds" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_password_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_username_fails" time="0.127" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_password_fails" time="0.142" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_username_fails" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_succeeds" time="0.152" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_empty_token_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_malformed_token_fails" time="0.143" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_no_token_fails" time="0.130" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_succeeds" time="0.212" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_fails" time="0.120" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_succeeds" time="0.172" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_fuzzy_search_succeeds" time="0.190" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_database_succeeds" time="0.201" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_user_succeeds" time="0.202" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_unit_independent_search_fails" time="0.208" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_create_succeeds" time="0.205" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_malformed_fails" time="0.237" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_succeeds" time="0.214" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_malformed_fails" time="0.112" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_succeeds" time="0.149" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_verify_jwt_succeeds" time="0.684" /></testsuite></testsuites> \ No newline at end of file diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java b/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java index c798537b5b..6fc7e7250c 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java @@ -19,7 +19,7 @@ import java.util.concurrent.TimeUnit; public class CacheConfig { @Value("${dbrepo.credentialCacheTimeout}") - private Long credentialCacheTimeout; + private Integer credentialCacheTimeout; @Bean public Cache<UUID, UserDto> userCache() { @@ -27,28 +27,28 @@ public class CacheConfig { } @Bean - public Cache<Long, ViewDto> viewCache() { - return new ExpiryCache<Long, ViewDto>().build(); + public Cache<UUID, ViewDto> viewCache() { + return new ExpiryCache<UUID, ViewDto>().build(); } @Bean - public Cache<Long, DatabaseAccessDto> accessCache() { - return new ExpiryCache<Long, DatabaseAccessDto>().build(); + public Cache<UUID, DatabaseAccessDto> accessCache() { + return new ExpiryCache<UUID, DatabaseAccessDto>().build(); } @Bean - public Cache<Long, TableDto> tableCache() { - return new ExpiryCache<Long, TableDto>().build(); + public Cache<UUID, TableDto> tableCache() { + return new ExpiryCache<UUID, TableDto>().build(); } @Bean - public Cache<Long, DatabaseDto> databaseCache() { - return new ExpiryCache<Long, DatabaseDto>().build(); + public Cache<UUID, DatabaseDto> databaseCache() { + return new ExpiryCache<UUID, DatabaseDto>().build(); } @Bean - public Cache<Long, ContainerDto> containerCache() { - return new ExpiryCache<Long, ContainerDto>().build(); + public Cache<UUID, ContainerDto> containerCache() { + return new ExpiryCache<UUID, ContainerDto>().build(); } class ExpiryCache<K, T> { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java index 832bf09061..7d970cf3e8 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java @@ -63,7 +63,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find container with id {}: service responded unsuccessful: {}", containerId, response.getStatusCode()); throw new MetadataServiceException("Failed to find container: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all container headers"); log.debug("expected headers: {}", expectedHeaders); @@ -87,7 +87,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { MetadataServiceException { final ResponseEntity<DatabaseDto> response; final String url = "/api/database/" + id; - log.debug("get database info from metadata service: {}", url); + log.debug("get database info from metadata service: {}", url); try { response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, DatabaseDto.class); } catch (ResourceAccessException | HttpServerErrorException e) { @@ -101,7 +101,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find database with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find database: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all database headers"); log.debug("expected headers: {}", expectedHeaders); @@ -115,6 +115,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final DatabaseDto database = response.getBody(); database.getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); database.getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); + database.getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); database.setLastRetrieved(Instant.now()); return database; } @@ -138,7 +139,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find table with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find table: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all table headers"); log.debug("expected headers: {}", expectedHeaders); @@ -152,6 +153,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final TableDto table = metadataMapper.tableDtoToTableDto(response.getBody()); table.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); table.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); + table.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); table.setLastRetrieved(Instant.now()); return table; } @@ -175,7 +177,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find view with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find view: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all view headers"); log.debug("expected headers: {}", expectedHeaders); @@ -189,6 +191,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final ViewDto view = metadataMapper.viewDtoToViewDto(response.getBody()); view.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0)); view.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0)); + view.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0)); view.setLastRetrieved(Instant.now()); return view; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java index 5e2f8c88f7..65cf82bfcb 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java @@ -17,7 +17,6 @@ import at.tuwien.api.database.table.constraints.foreign.ReferenceTypeDto; import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; import at.tuwien.api.user.UserBriefDto; -import at.tuwien.config.QueryConfig; import at.tuwien.exception.TableNotFoundException; import org.apache.hadoop.shaded.com.google.common.hash.Hashing; import org.apache.hadoop.shaded.org.apache.commons.io.FileUtils; @@ -171,7 +170,7 @@ public interface DataMapper { return table; } - default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view, QueryConfig queryConfig) throws SQLException { + default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view) throws SQLException { final ViewColumnDto column = ViewColumnDto.builder() .ordinalPosition(resultSet.getInt(1) - 1) /* start at zero */ .isNullAllowed(resultSet.getString(3).equals("YES")) @@ -191,7 +190,6 @@ public interface DataMapper { } view.getColumns() .add(column); - log.trace("parsed view column: {}.{}", view.getInternalName(), column.getInternalName()); return view; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java index 95427d384c..4e48c02786 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java @@ -113,7 +113,7 @@ public interface MariaDbMapper { } default String queryStoreCreateTableRawQuery() { - final String statement = "CREATE TABLE `qs_queries` ( `id` varchar(36) not null primary key, `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint) WITH SYSTEM VERSIONING;"; + final String statement = "CREATE TABLE `qs_queries` ( `id` VARCHAR(36) NOT NULL PRIMARY KEY DEFAULT UUID(), `created` datetime NOT NULL DEFAULT NOW(), `executed` datetime NOT NULL default now(), `created_by` VARCHAR(36), `query` text NOT NULL, `query_normalized` text NOT NULL, `is_persisted` boolean NOT NULL, `query_hash` VARCHAR(255) NOT NULL, `result_hash` VARCHAR(255), `result_number` bigint) WITH SYSTEM VERSIONING;"; log.trace("mapped create query store table statement: {}", statement); return statement; } @@ -125,13 +125,13 @@ public interface MariaDbMapper { } default String queryStoreCreateStoreQueryProcedureRawQuery() { - final String statement = "CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; + final String statement = "CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId VARCHAR(36)) BEGIN DECLARE _queryhash VARCHAR(255) DEFAULT SHA2(query, 256); DECLARE _username VARCHAR(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; log.trace("mapped create query store store_query procedure statement: {}", statement); return statement; } default String queryStoreCreateInternalStoreQueryProcedureRawQuery() { - final String statement = "CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; + final String statement = "CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId VARCHAR(36)) BEGIN DECLARE _queryhash VARCHAR(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;"; log.trace("mapped create query store _store_query procedure statement: {}", statement); return statement; } @@ -301,7 +301,7 @@ public interface MariaDbMapper { final StringBuilder stringBuilder = new StringBuilder("CREATE TABLE `") .append(nameToInternalName(data.getName())) .append("` ("); - log.trace("primary key column(s) exist: {}", data.getConstraints().getPrimaryKey()); + log.trace("PRIMARY KEY column(s) exist: {}", data.getConstraints().getPrimaryKey()); final int[] idx = {0}; for (CreateTableColumnDto column : data.getColumns()) { stringBuilder.append(idx[0]++ > 0 ? ", " : "") @@ -320,11 +320,11 @@ public interface MariaDbMapper { } } - /* create primary key index */ + /* create PRIMARY KEY index */ if (data.getConstraints() != null) { log.trace("constraints are {}", data.getConstraints()); if (data.getConstraints().getPrimaryKey() != null && !data.getConstraints().getPrimaryKey().isEmpty()) { - /* create primary key index */ + /* create PRIMARY KEY index */ stringBuilder.append(", PRIMARY KEY (") .append(String.join(",", data.getConstraints() .getPrimaryKey() diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java index d5431e6ee6..8f3553515f 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java @@ -23,22 +23,21 @@ public class CredentialServiceImpl implements CredentialService { private final MetadataServiceGateway gateway; private final Cache<UUID, UserDto> userCache; private final Cache<UUID, ViewDto> viewCache; - private final Cache<UUID, DatabaseAccessDto> accessCache; private final Cache<UUID, TableDto> tableCache; private final Cache<UUID, DatabaseDto> databaseCache; private final Cache<UUID, ContainerDto> containerCache; + private final Cache<UUID, DatabaseAccessDto> accessCache; @Autowired public CredentialServiceImpl(MetadataServiceGateway gateway, Cache<UUID, UserDto> userCache, - Cache<UUID, ViewDto> viewCache, Cache<UUID, DatabaseAccessDto> accessCache, - Cache<UUID, TableDto> tableCache, - Cache<UUID, DatabaseDto> databaseCache, + Cache<UUID, ViewDto> viewCache, Cache<UUID, TableDto> tableCache, + Cache<UUID, DatabaseAccessDto> accessCache, Cache<UUID, DatabaseDto> databaseCache, Cache<UUID, ContainerDto> containerCache) { this.gateway = gateway; this.userCache = userCache; this.viewCache = viewCache; - this.accessCache = accessCache; this.tableCache = tableCache; + this.accessCache = accessCache; this.databaseCache = databaseCache; this.containerCache = containerCache; } diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java index 4d899c9978..f7e12c69f6 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java @@ -7,7 +7,6 @@ import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.constraints.unique.UniqueDto; import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; -import at.tuwien.config.QueryConfig; import at.tuwien.exception.*; import at.tuwien.mapper.DataMapper; import at.tuwien.mapper.MariaDbMapper; @@ -32,15 +31,13 @@ import java.util.List; public class DatabaseServiceMariaDbImpl extends DataConnector implements DatabaseService { private final DataMapper dataMapper; - private final QueryConfig queryConfig; private final MariaDbMapper mariaDbMapper; private final MetadataMapper metadataMapper; @Autowired - public DatabaseServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, MariaDbMapper mariaDbMapper, + public DatabaseServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper, MetadataMapper metadataMapper) { this.dataMapper = dataMapper; - this.queryConfig = queryConfig; this.mariaDbMapper = mariaDbMapper; this.metadataMapper = metadataMapper; } @@ -151,7 +148,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas statement2.setString(2, view.getInternalName()); final ResultSet resultSet2 = statement2.executeQuery(); while (resultSet2.next()) { - view = dataMapper.resultSetToTable(resultSet2, view, queryConfig); + view = dataMapper.resultSetToTable(resultSet2, view); } connection.commit(); } catch (SQLException e) { diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java index 3373f97b76..8adaae9c6a 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java @@ -174,7 +174,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer } callableStatement.setString(2, query); callableStatement.setTimestamp(3, Timestamp.from(timestamp)); - callableStatement.registerOutParameter(4, Types.BIGINT); + callableStatement.registerOutParameter(4, Types.VARCHAR); callableStatement.executeUpdate(); log.trace("executed statement in {} ms", System.currentTimeMillis() - start); queryId = UUID.fromString(callableStatement.getString(4)); diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index 60348a8197..94109cf9cc 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -52,7 +52,7 @@ server { listen 8080 default_server; server_name _; - location /dashboard/ { + location /dashboard { rewrite ^/dashboard/(.*) /$1 break; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -63,7 +63,7 @@ server { } # Proxy Grafana Live WebSocket connections. - location /dashboard/api/live/ { + location /dashboard/api/live { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -129,7 +129,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/table/([0-9]+)/(data|history|export) { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/table/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/(data|history|export)" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -138,7 +138,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/view/([0-9]+)/(data|export) { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/view/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/(data|export)" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -147,7 +147,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/view { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/view" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -156,7 +156,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/subset { + location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/subset" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -165,7 +165,7 @@ server { proxy_read_timeout 600; } - location ~ /api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user) { + location ~ "/api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user)" { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -174,7 +174,7 @@ server { proxy_read_timeout 90; } - location ~ /pid/([0-9]+) { + location ~ "/pid/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})" { rewrite /pid/(.*) /api/identifier/$1 break; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index 2ac584f138..b9055cf884 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -2,8 +2,8 @@ BEGIN; CREATE TABLE IF NOT EXISTS `mdb_users` ( - id UUID NOT NULL DEFAULT uuid(), - keycloak_id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + keycloak_id VARCHAR(36) NOT NULL, username VARCHAR(255) NOT NULL, firstname VARCHAR(255), lastname VARCHAR(255), @@ -13,14 +13,14 @@ CREATE TABLE IF NOT EXISTS `mdb_users` mariadb_password VARCHAR(255) NOT NULL, theme VARCHAR(255) NOT NULL DEFAULT ('light'), language VARCHAR(3) NOT NULL DEFAULT ('en'), - PRIMARY KEY (id), - UNIQUE (keycloak_id), - UNIQUE (username) + PRIMARY KEY (`id`), + UNIQUE (`keycloak_id`), + UNIQUE (`username`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_images` ( - id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), registry VARCHAR(255) NOT NULL DEFAULT 'docker.io', name VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL, @@ -31,14 +31,14 @@ CREATE TABLE IF NOT EXISTS `mdb_images` is_DEFAULT BOOLEAN NOT NULL DEFAULT FALSE, created TIMESTAMP NOT NULL DEFAULT NOW(), last_modified TIMESTAMP, - PRIMARY KEY (id), - UNIQUE (name, version), - UNIQUE (is_DEFAULT) + PRIMARY KEY (`id`), + UNIQUE (`name`, `version`), + UNIQUE (`is_DEFAULT`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_containers` ( - id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), internal_name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, host VARCHAR(255) NOT NULL, @@ -46,16 +46,14 @@ CREATE TABLE IF NOT EXISTS `mdb_containers` ui_host VARCHAR(255) NOT NULL DEFAULT host, ui_port INT NOT NULL DEFAULT port, ui_additional_flags TEXT, - sidecar_host VARCHAR(255), - sidecar_port INT, - image_id UUID NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, created TIMESTAMP NOT NULL DEFAULT NOW(), last_modified TIMESTAMP, privileged_username VARCHAR(255) NOT NULL, privileged_password VARCHAR(255) NOT NULL, - quota INT NOT NULL DEFAULT 50, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES mdb_images (id) + quota INT, + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES mdb_images (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_licenses` @@ -63,14 +61,14 @@ CREATE TABLE IF NOT EXISTS `mdb_licenses` identifier VARCHAR(255) NOT NULL, uri TEXT NOT NULL, description TEXT NOT NULL, - PRIMARY KEY (identifier), + PRIMARY KEY (`identifier`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_databases` ( - id UUID NOT NULL DEFAULT UUID(), - cid UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cid VARCHAR(36) NOT NULL, name VARCHAR(255) NOT NULL, internal_name VARCHAR(255) NOT NULL, exchange_name VARCHAR(255) NOT NULL, @@ -79,20 +77,20 @@ CREATE TABLE IF NOT EXISTS `mdb_databases` is_public BOOLEAN NOT NULL DEFAULT TRUE, is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, image LONGBLOB, - owned_by UUID, - contact_person UUID, + owned_by VARCHAR(36) NOT NULL, + contact_person VARCHAR(36) NOT NULL, created TIMESTAMP NOT NULL DEFAULT NOW(), last_modified TIMESTAMP, - PRIMARY KEY (id), - FOREIGN KEY (cid) REFERENCES mdb_containers (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id), - FOREIGN KEY (contact_person) REFERENCES mdb_users (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`cid`) REFERENCES mdb_containers (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`), + FOREIGN KEY (`contact_person`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_tables` ( - id UUID NOT NULL DEFAULT UUID(), - tDBID UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tDBID VARCHAR(36) NOT NULL, tName VARCHAR(64) NOT NULL, internal_name VARCHAR(64) NOT NULL, queue_name VARCHAR(255) NOT NULL, @@ -106,18 +104,18 @@ CREATE TABLE IF NOT EXISTS `mdb_tables` versioned BOOLEAN NOT NULL DEFAULT TRUE, is_public BOOLEAN NOT NULL DEFAULT TRUE, is_schema_public BOOLEAN NOT NULL DEFAULT TRUE, - owned_by UUID NOT NULL DEFAULT UUID(), + owned_by VARCHAR(36) NOT NULL DEFAULT UUID(), last_modified TIMESTAMP, - PRIMARY KEY (ID), - UNIQUE (tDBID, internal_name), - FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + PRIMARY KEY (`ID`), + UNIQUE (`tDBID`, `internal_name`), + FOREIGN KEY (`tDBID`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns` ( - id UUID NOT NULL DEFAULT UUID(), - tID UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tID VARCHAR(36) NOT NULL, cName VARCHAR(64), internal_name VARCHAR(64) NOT NULL, Datatype ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','SERIAL','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), @@ -135,140 +133,140 @@ CREATE TABLE IF NOT EXISTS `mdb_columns` std_dev Numeric NULL, created TIMESTAMP NOT NULL DEFAULT NOW(), last_modified TIMESTAMP, - FOREIGN KEY (tID) REFERENCES mdb_tables (ID) ON DELETE CASCADE, - PRIMARY KEY (ID), - UNIQUE (tID, internal_name) + FOREIGN KEY (`tID`) REFERENCES mdb_tables (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`ID`), + UNIQUE (`tID`, `internal_name`) ) WITH SYSTEM VERSIONING; -CREATE TABLE IF NOT EXISTS `mdb_columns_ENUMs` +CREATE TABLE IF NOT EXISTS `mdb_columns_enums` ( - id UUID NOT NULL DEFAULT UUID(), - column_id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + column_id VARCHAR(36) NOT NULL, value VARCHAR(255) NOT NULL, - FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, - PRIMARY KEY (id) + FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_sets` ( - id UUID NOT NULL DEFAULT UUID(), - column_id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + column_id VARCHAR(36) NOT NULL, value VARCHAR(255) NOT NULL, - FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE, - PRIMARY KEY (id) + FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE, + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key` ( - fkid UUID NOT NULL DEFAULT UUID(), - tid UUID NOT NULL DEFAULT UUID(), - rtid UUID NOT NULL DEFAULT UUID(), + fkid VARCHAR(36) NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, + rtid VARCHAR(36) NOT NULL, name VARCHAR(255) NOT NULL, on_update VARCHAR(50) NULL, on_delete VARCHAR(50) NULL, position INT NULL, - PRIMARY KEY (fkid), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE, - FOREIGN KEY (rtid) REFERENCES mdb_tables (id) + PRIMARY KEY (`fkid`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE, + FOREIGN KEY (`rtid`) REFERENCES mdb_tables (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_primary_key` ( - pkid UUID NOT NULL DEFAULT UUID(), - tID UUID NOT NULL DEFAULT UUID(), - cid UUID NOT NULL DEFAULT UUID(), - PRIMARY KEY (pkid), - FOREIGN KEY (tID) REFERENCES mdb_tables (id) ON DELETE CASCADE, - FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE + pkid VARCHAR(36) NOT NULL DEFAULT UUID(), + tID VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + PRIMARY KEY (`pkid`), + FOREIGN KEY (`tID`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE, + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key_reference` ( - id UUID NOT NULL DEFAULT UUID(), - fkid UUID NOT NULL DEFAULT UUID(), - cid UUID NOT NULL DEFAULT UUID(), - rcid UUID NOT NULL DEFAULT UUID(), - PRIMARY KEY (id), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + fkid VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + rcid VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), UNIQUE (fkid, cid, rcid), - FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid) ON UPDATE CASCADE, - FOREIGN KEY (cid) REFERENCES mdb_columns (id), - FOREIGN KEY (rcid) REFERENCES mdb_columns (id) + FOREIGN KEY (`fkid`) REFERENCES mdb_constraints_foreign_key (`fkid`) ON UPDATE CASCADE, + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`), + FOREIGN KEY (`rcid`) REFERENCES mdb_columns (`id`) ) WITH SYSTEM VERSIONING; -CREATE TABLE IF NOT EXISTS `mdb_constraints_UNIQUE` +CREATE TABLE IF NOT EXISTS `mdb_constraints_unique` ( - uid UUID NOT NULL DEFAULT UUID(), + uid VARCHAR(36) NOT NULL DEFAULT UUID(), name VARCHAR(255) NOT NULL, - tid UUID NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, position INT NULL, - PRIMARY KEY (uid), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE + PRIMARY KEY (`uid`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE ); -CREATE TABLE IF NOT EXISTS `mdb_constraints_UNIQUE_columns` +CREATE TABLE IF NOT EXISTS `mdb_constraints_unique_columns` ( - id UUID NOT NULL DEFAULT UUID(), - uid UUID NOT NULL DEFAULT UUID(), - cid UUID NOT NULL DEFAULT UUID(), - PRIMARY KEY (id), - FOREIGN KEY (uid) REFERENCES mdb_constraints_UNIQUE (uid), - FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE + id VARCHAR(36) NOT NULL DEFAULT UUID(), + uid VARCHAR(36) NOT NULL, + cid VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`uid`) REFERENCES mdb_constraints_unique (`uid`), + FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_constraints_checks` ( - id UUID NOT NULL DEFAULT UUID(), - tid UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + tid VARCHAR(36) NOT NULL, checks VARCHAR(255) NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE + PRIMARY KEY (`id`), + FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_concepts` ( - id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), uri TEXT NOT NULL, name VARCHAR(255) null, description TEXT null, created TIMESTAMP NOT NULL DEFAULT NOW(), - PRIMARY KEY (id), + PRIMARY KEY (`id`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_units` ( - id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), uri TEXT NOT NULL, name VARCHAR(255) null, description TEXT null, created TIMESTAMP NOT NULL DEFAULT NOW(), - PRIMARY KEY (id), + PRIMARY KEY (`id`), UNIQUE (uri(200)) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_concepts` ( - id UUID NOT NULL DEFAULT UUID(), - cID UUID NOT NULL DEFAULT UUID(), - created TIMESTAMP NOT NULL DEFAULT NOW(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cID VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (id, cid), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_columns_units` ( - id UUID NOT NULL DEFAULT UUID(), - cID UUID NOT NULL DEFAULT UUID(), - created TIMESTAMP NOT NULL DEFAULT NOW(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + cID VARCHAR(36) NOT NULL, + created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (id, cID), - FOREIGN KEY (cID) REFERENCES mdb_columns (ID) + FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_view` ( - id UUID NOT NULL DEFAULT UUID(), - vdbid UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + vdbid VARCHAR(36) NOT NULL, vName VARCHAR(64) NOT NULL, internal_name VARCHAR(64) NOT NULL, Query TEXT NOT NULL, @@ -278,43 +276,43 @@ CREATE TABLE IF NOT EXISTS `mdb_view` InitialView BOOLEAN NOT NULL, created TIMESTAMP NOT NULL DEFAULT NOW(), last_modified TIMESTAMP, - owned_by UUID NOT NULL DEFAULT UUID(), - PRIMARY KEY (id), - FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + owned_by VARCHAR(36) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`vdbid`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_messages` ( - id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), type ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL DEFAULT 'INFO', message TEXT NOT NULL, link TEXT NULL, link_TEXT VARCHAR(255) NULL, display_start TIMESTAMP NULL, display_end TIMESTAMP NULL, - PRIMARY KEY (id) + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_ontologies` ( - id UUID NOT NULL DEFAULT UUID(), - prefix VARCHAR(8) NOT NULL, - uri TEXT NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + prefix VARCHAR(8) NOT NULL, + uri TEXT NOT NULL, uri_pattern TEXT, - sparql_endpoint TEXT NULL, - rdf_path TEXT NULL, + sparql_endpoint TEXT NULL, + rdf_path TEXT NULL, last_modified TIMESTAMP, - created TIMESTAMP NOT NULL DEFAULT NOW(), - UNIQUE (prefix), + created TIMESTAMP NOT NULL DEFAULT NOW(), + UNIQUE (`prefix`), UNIQUE (uri(200)), - PRIMARY KEY (id) + PRIMARY KEY (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_view_columns` ( - id UUID NOT NULL DEFAULT UUID(), - view_id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + view_id VARCHAR(36) NOT NULL, name VARCHAR(64), internal_name VARCHAR(64) NOT NULL, column_type ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'), @@ -322,18 +320,18 @@ CREATE TABLE IF NOT EXISTS `mdb_view_columns` size BIGINT UNSIGNED, d BIGINT UNSIGNED, is_null_allowed BOOLEAN NOT NULL DEFAULT TRUE, - PRIMARY KEY (id), - FOREIGN KEY (view_id) REFERENCES mdb_view (id) ON DELETE CASCADE, + PRIMARY KEY (`id`), + FOREIGN KEY (`view_id`) REFERENCES mdb_view (`id`) ON DELETE CASCADE, UNIQUE (view_id, internal_name) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifiers` ( - id UUID NOT NULL DEFAULT UUID(), - dbid UUID NOT NULL DEFAULT UUID(), - qid UUID, - vid UUID, - tid UUID, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + dbid VARCHAR(36) NOT NULL, + qid VARCHAR(36) NOT NULL, + vid VARCHAR(36) NOT NULL, + tid VARCHAR(36) NOT NULL, publisher VARCHAR(255) NOT NULL, language VARCHAR(2), publication_year INT NOT NULL, @@ -349,37 +347,37 @@ CREATE TABLE IF NOT EXISTS `mdb_identifiers` result_number BIGINT, doi VARCHAR(255), created TIMESTAMP NOT NULL DEFAULT NOW(), - owned_by UUID NOT NULL DEFAULT UUID(), + owned_by VARCHAR(36) NOT NULL, last_modified TIMESTAMP, - PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (dbid) REFERENCES mdb_databases (id), - FOREIGN KEY (owned_by) REFERENCES mdb_users (id) + PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (`dbid`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses` ( - pid UUID NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL DEFAULT UUID(), license_id VARCHAR(255) NOT NULL, PRIMARY KEY (pid, license_id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), - FOREIGN KEY (license_id) REFERENCES mdb_licenses (identifier) + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`), + FOREIGN KEY (`license_id`) REFERENCES mdb_licenses (`identifier`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_titles` ( - id UUID NOT NULL DEFAULT UUID(), - pid UUID NOT NULL DEFAULT UUID(), - title TEXT NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + title TEXT NOT NULL, title_type ENUM ('ALTERNATIVE_TITLE', 'SUBTITLE', 'TRANSLATED_TITLE', 'OTHER'), language VARCHAR(2), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_funders` ( - id UUID NOT NULL DEFAULT UUID(), - pid UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, funder_name VARCHAR(255) NOT NULL, funder_identifier TEXT, funder_identifier_type ENUM ('CROSSREF_FUNDER_ID', 'GRID', 'ISNI', 'ROR', 'OTHER'), @@ -387,37 +385,37 @@ CREATE TABLE IF NOT EXISTS `mdb_identifier_funders` award_number VARCHAR(255), award_title TEXT, language VARCHAR(255), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions` ( - id UUID NOT NULL DEFAULT UUID(), - pid UUID NOT NULL DEFAULT UUID(), - description TEXT NOT NULL, + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, + description TEXT NOT NULL, description_type ENUM ('ABSTRACT', 'METHODS', 'SERIES_INFORMATION', 'TABLE_OF_CONTENTS', 'TECHNICAL_INFO', 'OTHER'), language VARCHAR(2), - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_related` ( - id UUID NOT NULL DEFAULT UUID(), - pid UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL DEFAULT UUID(), value VARCHAR(255) NOT NULL, type ENUM ('DOI','URL','URN','ARK','ARXIV','BIBCODE','EAN13','EISSN','HANDLE','IGSN','ISBN','ISTC','LISSN','LSID','PMID','PURL','UPC','W3ID') NOT NULL, relation ENUM ('IS_CITED_BY','CITES','IS_SUPPLEMENT_TO','IS_SUPPLEMENTED_BY','IS_CONTINUED_BY','CONTINUES','IS_DESCRIBED_BY','DESCRIBES','HAS_METADATA','IS_METADATA_FOR','HAS_VERSION','IS_VERSION_OF','IS_NEW_VERSION_OF','IS_PREVIOUS_VERSION_OF','IS_PART_OF','HAS_PART','IS_PUBLISHED_IN','IS_REFERENCED_BY','REFERENCES','IS_DOCUMENTED_BY','DOCUMENTS','IS_COMPILED_BY','COMPILES','IS_VARIANT_FORM_OF','IS_ORIGINAL_FORM_OF','IS_IDENTICAL_TO','IS_REVIEWED_BY','REVIEWS','IS_DERIVED_FROM','IS_SOURCE_OF','IS_REQUIRED_BY','REQUIRES','IS_OBSOLETED_BY','OBSOLETES') NOT NULL, - PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id), + PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */ + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`), UNIQUE (pid, value) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_creators` ( - id UUID NOT NULL DEFAULT UUID(), - pid UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + pid VARCHAR(36) NOT NULL, given_names TEXT, family_name TEXT, creator_name VARCHAR(255) NOT NULL, @@ -429,34 +427,36 @@ CREATE TABLE IF NOT EXISTS `mdb_identifier_creators` affiliation_identifier TEXT, affiliation_identifier_scheme ENUM ('ROR', 'GRID', 'ISNI'), affiliation_identifier_scheme_uri TEXT, - PRIMARY KEY (id), - FOREIGN KEY (pid) REFERENCES mdb_identifiers (id) + PRIMARY KEY (`id`), + FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_access` ( aUserID VARCHAR(255) NOT NULL, - aDBID UUID REFERENCES mdb_databases (id), + aDBID VARCHAR(36) NOT NULL, attime TIMESTAMP, download BOOLEAN, created TIMESTAMP NOT NULL DEFAULT NOW(), - PRIMARY KEY (aUserID, aDBID) + PRIMARY KEY (aUserID, aDBID), + FOREIGN KEY (`aDBID`) REFERENCES mdb_databases (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_have_access` ( - user_id UUID NOT NULL DEFAULT UUID(), - database_id UUID REFERENCES mdb_databases (id), + user_id VARCHAR(36) NOT NULL, + database_id VARCHAR(36) NOT NULL, access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL, created TIMESTAMP NOT NULL DEFAULT NOW(), PRIMARY KEY (user_id, database_id), - FOREIGN KEY (user_id) REFERENCES mdb_users (id) + FOREIGN KEY (`database_id`) REFERENCES mdb_databases (`id`), + FOREIGN KEY (`user_id`) REFERENCES mdb_users (`id`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_image_types` ( - id UUID NOT NULL DEFAULT UUID(), - image_id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, display_name VARCHAR(255) NOT NULL, value VARCHAR(255) NOT NULL, size_min INT UNSIGNED, @@ -475,21 +475,21 @@ CREATE TABLE IF NOT EXISTS `mdb_image_types` is_generated BOOLEAN NOT NULL, is_quoted BOOLEAN NOT NULL, is_buildable BOOLEAN NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`), - UNIQUE (value) + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`), + UNIQUE (`value`) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_image_operators` ( - id UUID NOT NULL DEFAULT UUID(), - image_id UUID NOT NULL DEFAULT UUID(), + id VARCHAR(36) NOT NULL DEFAULT UUID(), + image_id VARCHAR(36) NOT NULL, display_name VARCHAR(255) NOT NULL, value VARCHAR(255) NOT NULL, documentation TEXT NOT NULL, - PRIMARY KEY (id), - FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`), - UNIQUE (value) + PRIMARY KEY (`id`), + FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`), + UNIQUE (image_id, value) ) WITH SYSTEM VERSIONING; COMMIT; diff --git a/dbrepo-metadata-db/2_setup-data.sql b/dbrepo-metadata-db/2_setup-data.sql index e806e1e181..dc4917cd8b 100644 --- a/dbrepo-metadata-db/2_setup-data.sql +++ b/dbrepo-metadata-db/2_setup-data.sql @@ -1,8 +1,8 @@ BEGIN; -INSERT INTO `mdb_containers` (name, internal_name, image_id, host, port, ui_host, ui_port, sidecar_host, sidecar_port, - privileged_username, privileged_password) -VALUES ('mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3', 1, 'data-db', 3306, 'localhost', 3306, 'data-db-sidecar', 8080, - 'root', 'dbrepo'); +INSERT INTO `mdb_containers` (id, name, internal_name, image_id, host, port, ui_host, ui_port, privileged_username, + privileged_password) +VALUES ('6cfb3b8e-1792-4e46-871a-f3d103527203', 'mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3', + 'd79cb089-363c-488b-9717-649e44d8fcc5', 'data-db', 3306, 'localhost', 3306, 'root', 'dbrepo'); COMMIT; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java index bc42dd7105..35bfafdf46 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java @@ -52,7 +52,6 @@ public class ContainerDto extends CacheableDto { @NotNull private ImageDto image; - @NotNull @Schema(example = "50") private Long quota; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java index cd934942a4..a8675dcf6f 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java @@ -14,8 +14,6 @@ import java.time.Instant; import java.util.List; import java.util.UUID; -import static jakarta.persistence.GenerationType.IDENTITY; - @Data @Entity @Builder @@ -28,6 +26,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Container { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; @@ -50,8 +49,8 @@ public class Container { @Column private Integer uiPort; - @Column(nullable = false, columnDefinition = "INT DEFAULT 50") - private Integer quota = 50; + @Column + private Integer quota; @Column private String uiAdditionalFlags; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java index 9c3ab4d025..e291f39779 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java @@ -30,6 +30,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ContainerImage { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java index a50589a520..2c5243752e 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java @@ -21,6 +21,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class DataType { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java index fe08717aa1..3dbeca6ae7 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java @@ -19,6 +19,7 @@ import java.util.UUID; public class Operator { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java index f96fc6c2e9..2f358c5cb3 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java @@ -42,6 +42,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Database implements Serializable { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java index 6ec503b996..917f285061 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java @@ -35,6 +35,7 @@ import java.util.UUID; public class View { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java index f021cca214..990e6dc804 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java @@ -24,6 +24,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ViewColumn implements Comparable<ViewColumn> { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index 31587c1ea9..9cf54a15d8 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java @@ -38,6 +38,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Table { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java index e0cf96bd33..81b3046d0b 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java @@ -33,6 +33,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class TableColumn implements Comparable<TableColumn> { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java index 2339ba44ea..8744385be5 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java @@ -31,6 +31,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class TableColumnConcept { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java index 55c1fbd23e..087ce4df9a 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java @@ -31,6 +31,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class TableColumnUnit { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java index 955a7d5b76..a1a9aec1ac 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java @@ -21,6 +21,7 @@ import java.util.UUID; public class ForeignKey { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "fkid", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java index 94d4d6d46a..bb7be45c41 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java @@ -24,6 +24,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class ForeignKeyReference { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java index 9a613ffac6..37dcceaec7 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java @@ -21,6 +21,7 @@ import java.util.UUID; public class PrimaryKey { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "pkid", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java index 7d7b7fdde5..4f6a371f8e 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java @@ -22,6 +22,7 @@ import java.util.UUID; public class Unique { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "uid", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java index 6875a8d32d..bf749fd51b 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java @@ -21,6 +21,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Creator { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java index ce202f8b99..d718978931 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java @@ -39,6 +39,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Identifier implements Serializable { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java index 693ede5142..e8628ce07e 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java @@ -23,6 +23,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class IdentifierDescription implements Serializable { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java index ac7632f319..93ef2536ce 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java @@ -22,6 +22,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class IdentifierFunder implements Serializable { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java index 5f91afb736..2f8e94d61a 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java @@ -23,6 +23,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class IdentifierTitle implements Serializable { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java index 244a0ec28a..8b8bc91084 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java @@ -21,6 +21,7 @@ import java.util.UUID; public class RelatedIdentifier { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java index c4f71251da..a447668a08 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java @@ -25,6 +25,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class BannerMessage { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java index 46d86f6c1d..da73616077 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java @@ -29,6 +29,7 @@ import static jakarta.persistence.GenerationType.IDENTITY; public class Ontology { @Id + @GeneratedValue(strategy = GenerationType.UUID) @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(nullable = false, updatable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java index 7daa200f2b..ec0810b23c 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java @@ -161,7 +161,7 @@ public class DatabaseEndpoint extends AbstractEndpoint { ContainerQuotaException { log.debug("endpoint create database, data.name={}", data.getName()); final Container container = containerService.find(data.getCid()); - if (container.getDatabases().size() + 1 > container.getQuota()) { + if (container.getQuota() != null && container.getDatabases().size() + 1 > container.getQuota()) { log.error("Failed to create database: quota of {} exceeded", container.getQuota()); throw new ContainerQuotaException("Failed to create database: quota of " + container.getQuota() + " exceeded"); } @@ -548,7 +548,8 @@ public class DatabaseEndpoint extends AbstractEndpoint { if (isSystem(principal)) { headers.set("X-Username", database.getContainer().getPrivilegedUsername()); headers.set("X-Password", database.getContainer().getPrivilegedPassword()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + headers.set("X-Jdbc-Method", database.getContainer().getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"); } else { removeInternalData(dto.getContainer()); } diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index 06c5fa41f5..c3f4ad1a71 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -490,7 +490,8 @@ public class TableEndpoint extends AbstractEndpoint { if (isSystem(principal)) { headers.set("X-Username", table.getDatabase().getContainer().getPrivilegedUsername()); headers.set("X-Password", table.getDatabase().getContainer().getPrivilegedPassword()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + headers.set("X-Jdbc-Method", table.getDatabase().getContainer().getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"); } else { removeInternalData(dto.getDatabase().getContainer()); } diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java index 9b8c73a154..2214343ee6 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java @@ -201,7 +201,8 @@ public class ViewEndpoint extends AbstractEndpoint { headers.set("X-Type", database.getContainer().getImage().getJdbcMethod()); headers.set("X-Database", database.getInternalName()); headers.set("X-View", view.getInternalName()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-View"); + headers.set("X-Jdbc-Method", view.getDatabase().getContainer().getImage().getJdbcMethod()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-View X-Jdbc-Method"); } final ViewDto dto = metadataMapper.viewToViewDto(view); if (!isSystem(principal)) { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java index 29849105cf..1fa3d59920 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java @@ -190,7 +190,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Type")); assertEquals(List.of(DATABASE_3_INTERNALNAME), headers.get("X-Database")); assertEquals(List.of(VIEW_5_INTERNAL_NAME), headers.get("X-View")); - assertEquals(List.of("X-Username X-Password X-Host X-Port X-Type X-Database X-View"), headers.get("Access-Control-Expose-Headers")); + assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Jdbc-Method")); + assertEquals(List.of("X-Username X-Password X-Host X-Port X-Type X-Database X-View X-Jdbc-Method"), headers.get("Access-Control-Expose-Headers")); } @Test diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java index 0365db6c4a..d86626a8ef 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java @@ -115,7 +115,8 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @@ -131,7 +132,8 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @@ -148,7 +150,8 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } @@ -178,7 +181,8 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest .andDo(print()) .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME)) .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD)) - .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password")) + .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC)) + .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method")) .andExpect(status().isOk()); } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index 1c302c2068..e5b59ebda8 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -72,8 +72,8 @@ public class AccessServiceImpl implements AccessService { .hdbid(database.getId()) .database(database) .huserid(user.getId()) - .type(metadataMapper.accessTypeDtoToAccessType(type)) .user(user) + .type(metadataMapper.accessTypeDtoToAccessType(type)) .build(); database.getAccesses() .add(access); diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java index cc2da3c374..7e3298ef09 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java @@ -130,10 +130,10 @@ public class DatabaseServiceImpl implements DatabaseService { final Database entity1 = databaseRepository.save(entity); entity1.getAccesses() .add(metadataMapper.userToWriteAllAccess(entity1, user)); - entity1.getAccesses() - .addAll(internalUsers.stream() - .map(internalUser -> metadataMapper.userToWriteAllAccess(entity1, internalUser)) - .toList()); +// entity1.getAccesses() +// .addAll(internalUsers.stream() +// .map(internalUser -> metadataMapper.userToWriteAllAccess(entity1, internalUser)) +// .toList()); final Database database = databaseRepository.save(entity1); /* create in search service */ searchServiceGateway.update(database); diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index f6db779333..4dd148a5e4 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -369,7 +369,7 @@ }, "dbrepo": { "hashes": [ - "sha256:b555d9cbbbc07f1bd8f449b7bb38b2f7221f86b897bff08dd7c34933befae865" + "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9" ], "path": "./lib/dbrepo-1.7.0.tar.gz" }, diff --git a/dbrepo-search-service/app.py b/dbrepo-search-service/app.py index 13a9be8704..8e26546532 100644 --- a/dbrepo-search-service/app.py +++ b/dbrepo-search-service/app.py @@ -5,6 +5,8 @@ from json import dumps from typing import List, Any import requests +from clients.keycloak_client import User, KeycloakClient +from clients.opensearch_client import OpenSearchClient, flatten from dbrepo.api.dto import Database, ApiError from flasgger import LazyJSONEncoder, Swagger, swag_from from flask import Flask, request, Response @@ -16,9 +18,6 @@ from prometheus_flask_exporter import PrometheusMetrics from pydantic import ValidationError from pydantic.deprecated.json import pydantic_encoder -from clients.keycloak_client import User, KeycloakClient -from clients.opensearch_client import OpenSearchClient, flatten - logging.addLevelName(level=logging.NOTSET, levelName='TRACE') logging.basicConfig(level=logging.DEBUG) @@ -412,11 +411,11 @@ def post_general_search(field_type): return Response(dumps(response, default=pydantic_encoder)), 200, {'Content-Type': 'application/json'} -@app.route("/api/search/database/<int:database_id>", methods=["PUT"], endpoint="search_put_database") +@app.route("/api/search/database/<string:database_id>", methods=["PUT"], endpoint="search_put_database") @metrics.gauge(name='dbrepo_search_update_database', description='Time needed to update a database in the search database') @auth.login_required(role=['update-search-index']) -def update_database(database_id: int): +def update_database(database_id: str): logging.debug(f"updating database with id: {database_id}") try: payload: Database = Database.model_validate(request.json) @@ -429,11 +428,11 @@ def update_database(database_id: int): return database.model_dump(), 202 -@app.route("/api/search/database/<int:database_id>", methods=["DELETE"], endpoint="database_delete_database") +@app.route("/api/search/database/<string:database_id>", methods=["DELETE"], endpoint="database_delete_database") @metrics.gauge(name='dbrepo_search_delete_database', description='Time needed to delete a database in the search database') @auth.login_required(role=['admin']) -def delete_database(database_id: int): +def delete_database(database_id: str): try: OpenSearchClient().delete_database(database_id) return Response(dumps({})), 202 diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index 5136c21707..11510c1f53 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -259,7 +259,7 @@ }, "dbrepo": { "hashes": [ - "sha256:b555d9cbbbc07f1bd8f449b7bb38b2f7221f86b897bff08dd7c34933befae865" + "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9" ], "path": "./lib/dbrepo-1.7.0.tar.gz" }, diff --git a/dbrepo-search-service/init/database.json b/dbrepo-search-service/init/database.json index 59cbd78438..175a50dd9b 100644 --- a/dbrepo-search-service/init/database.json +++ b/dbrepo-search-service/init/database.json @@ -131,7 +131,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "image": { "properties": { @@ -154,9 +160,6 @@ } }, "id": { - "type": "long" - }, - "jdbc_method": { "type": "text", "fields": { "keyword": { @@ -215,18 +218,6 @@ "port": { "type": "long" }, - "sidecar_host": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "sidecar_port": { - "type": "long" - }, "ui_host": { "type": "text", "fields": { @@ -303,7 +294,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "identifiers": { "properties": { @@ -371,7 +368,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "name_identifier": { "type": "text", @@ -412,7 +415,13 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "descriptions": { "properties": { @@ -426,12 +435,24 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "licenses": { "properties": { @@ -512,7 +533,13 @@ "titles": { "properties": { "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "title": { "type": "text", @@ -535,7 +562,13 @@ } }, "view_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, @@ -592,10 +625,22 @@ "type": "long" }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "internal_name": { "type": "text", @@ -634,7 +679,13 @@ "type": "float" }, "table_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, @@ -645,26 +696,62 @@ "column": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } } @@ -675,26 +762,62 @@ "columns": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "table": { "properties": { "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } } @@ -758,7 +881,13 @@ "type": "long" }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "description": { "type": "text", @@ -770,7 +899,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "internal_name": { "type": "text", @@ -839,10 +974,22 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "internal_name": { "type": "text", @@ -926,10 +1073,22 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "identifiers": { "properties": { @@ -997,7 +1156,13 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "name_identifier": { "type": "text", @@ -1038,7 +1203,13 @@ } }, "database_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "descriptions": { "properties": { @@ -1052,12 +1223,24 @@ } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "licenses": { "properties": { @@ -1138,7 +1321,13 @@ "titles": { "properties": { "id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } }, "title": { "type": "text", @@ -1161,7 +1350,13 @@ } }, "view_id": { - "type": "long" + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } } } }, diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl index 42c0e32ce8e4f895afa9e105ecdcb3d508ba2257..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7 100644 GIT binary patch delta 6022 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%0AQN4Z<M=a{y+d4cxMs%+Ur zrrhs~j+C-oFVKH!(a-tBx+rJ&5+~zTVUKHLGFqLhd{30lPd&6$RZ~7?#i5sdD+`Y~ zE&D2S?Z--k-VYi{`OyU;FCUzc`1Vmcz?+dtgjs}vfq{d;X3plqf*wY+aci!k0LE#P zql=sv7f+s7q^<x;uzv)2>~i=S7-Dr87~~ibU`gXFx5*!KBq#qX5|#%kWT*~&>?Fp( z@W7dYK^~!wVM(LYWP@Toa4twJmS#GbGx=kV+~hgMJYb>K#nMdSxnPqP<nm5_SIh&p f7MxF*7#NIL7#L)cOxx192%^}yM2yY103-tda{p~8 delta 6057 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 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz index 8ecf0661cfdd270b33d7fe4e8bdce444569e995c..be1dcfe68165001dbeacd670709955723a01e323 100644 GIT binary patch delta 42432 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�mGMTvoY{ zLqk%lQ=%ho8R&Ai$?9Bre^Z9J^_)i4l^xp;M<395WoMD+_O;vU<Ds9w4HlO2r=6d@ zBh2ykdfWZ!(PG8v+t2Q;U$V*Z@Rsx_mao>A9p83EZjN47Z|$()?!+}g7j#<RlsKPH zzq(Dk`SQhsEeCz_>aBJ&EA(0KUa!kr`7US4U8YsX474{)>Plz45-{WWHQ4~Q+y&EK zZu2j<a{7I5F7IixCoBwInnFhZTloxGc$P4<H|;s$s_iMW@Ah1$y@8b?U-ot;Uo7~2 zFT>>EhC2Zhca<&6cX(Sb#&BVlLuJ>OV{+b;mvRU;ZIxLae<5(XGoSFgO?5l>JxO3! zV>_`pwAqZUHSUq!)Qt49`TQ?Ad4yCR9oaK$bJZR>>v@q$ynZX@Jd!@xVph&3ynMl1 zZ$3B4Z7!^;2fr26%;Zj5y7#Z=oBe;qGk@pjr~cPH`tP@5-T&_o&&54%pI&eO?)|%e z8=~UxFZ+8v;qb$0Z~6AT<pK|d$Nbk{S6TW0`@3^?_x|s#FZeOHaKonmVgL4v{*Ryb z-~Z$PssHnj{_p%Bzvpiz_hohYtN*_<Y5G6@U%lmj`Hsz>{_8$gwv~)lTKM<GjqEpT z=LTL7QE!Kxbd~6HdSc<HS3+_1(&Cpti21w<-u?XW<E`fRI&yn8=LN<cEUvG=zk%IR zdCr~NXL4u!ZIjGnZv2@h@N06N1*3P&uXzjm-<ocD^)Y8o`7-%i>psdE>dWPIRzJCp z>!2%(ly@gO-hLFVi%Q<iueNeU<g$4O#1<4Tuh08)wnV)_B$@w2O<JnU^aIm8?_LUZ z{d8ncZfJb|i&eEh*JW=x=l6l9eKKF${Zd{V=ZCv)ualnsw)^zw$=O|}RtK+~%*Xa; z@2+F&GkM>c^$43S_&npn_xX`*ZwneHmMZT!+FfVp-}wHKQT-8p#&^~0jz%xsdymsk z*lL<hwo_h5ebpk*HOV&__g709X0Yw(&E8$JfBWgXs*M}D|Ngj_Qjz_~<2&=>>=3mx zXPd5n4rchi_ao>iZAJbhvy5n~BehwRIrxJ47yfstjx=2=p8sNYMHAcot6~*e3_ZNQ z$1{SbYd%n0w}&<I$GQcfoO8Xyb<}4)uFKGB;#|Zcbj;=Vy!v2spZO={`FL0LEk3%u zgh}P+BOCLJi&iMiExsVfzM!$rqbb|w<8irw3=`?DhDpVH^rE7dE3&zrz4yeo;`@&H zyqk7sjF?h)|EZRp8(Ay-_f3G_MJatJiBG)~Uou^GRC2Ir^86ph5M}-@UveSqijH6A zEBkfM+!Z!%yq0C=;C8uQ>dvj?oWcZthS$l@zHjWlb@1Hx*;m#+H#T%U$)>K@CJ|7> z?4$j`;--<w-DEw5mHCIS9Iv|g;GFu*_`N501vYQ{Fnj;LmBGCCCa~4syLpY}_BY<S z`-FHmo;Q%<X_a`i!>vr<0+aHur`>(aiq$wj7wcWq3{&<zn9QaBb)jXI^@94DzglAZ zKIDl%tl*v0lC--v-Dw4LnuDF&ak)e<%S+A=cn?*pL~pEZydChh;!@5c%eW1CKQA4S z^K)tW!oaU_QvMd`;OwNA3unHYV*gmLgk{RMeQrF?*FR3_R5^U$@!BhyVitxAEk1bN zlS?cx3EKSCf=MV>^}<DQ_YDa%xb)=f`}!0EX81oBIVv#uXepzz(oW3--z@kS9x<{_ zv*EUVZ~H&EEA#GQXDPvt{!89ua5fzgJM5$D(3fTSM=)Y>o91_OmikLSGG&)C3sv10 zS(3Hv$FwKs8uUu~yuY0>?0#;3(PTzq$EIlpnhX6+LYo^mo`06{=EA<kHyk%U+2@&U zlUC1gGCkr-U-|x-{km30ZGN7{0)+>wCN0|VJ|~9rjY`y$9g~<3>u}%6SG|_-@o{E{ zmSz7@z06&Oy!Y<k`g@yaS?hDNiVE>PjVm=>gmz>xv?k4!;z>L5`Kf+}*M#nUvxIwB zy;YfIDs1&#CaNc3?)>MI9gQ=8PI|JwS)zKCwC5MD`ZtfV1dILda;$u@SZU@X;SxRN zAel$KZRSaK#mg$bJyLhd;a|b`lD9nBT=inWr%MOkOcq#^{(_6^r>25n^%?0W!Mx85 zJ?CmnPMVbMyRnbQLgdiVrs=y{oA{-B&#JB!^v)<cDQ4T}y^8ngC${kGV)FAYI(stu z1<9~Zmiu6G@QVAAeQsC0l$8pOPFl?8X}9#s29>ElYMS>sXuax^^Acxbz8=`mxQV@C z(alrwmbo2$-yS5#_-{G+RZ%r;fl+b7!QXNmldaB$ou7O%QKsH=;tJo7A$$FQ=r>(- z*vun+&_pjIRQRk{>yzC(9j9?H-Az6epz_VrTtL<G=7J^9Z_T|F`Ss+=^bH#&zGiH0 zs$i8~Y|rWO`r+~W0`}ssepNp@kU8<Rowv%-LWP%7#a+kC>L2+sC5R<7*Exl~agRz3 zDot&)E%|BKq<2=+*Fnv-Uios2{b3C*=jW`wUvKItC%)I%a$;&+ROl7KzCYDd7>?~= zRjBTHc&%#w#3zjhU;JGvUfu9}Pu>d!iCX?=?W?sjGBQrv%r<;y+A}}E*R`Nebk~w) zStaT*GX=60E^C~PxVFnAae=6WloD@Bs)5?2K2Lw9r_vi3W__N~+Hg=MlDR&+Y)!Rv zsp0kF?Hx@_2YCM7VbZ-QzsT{8udn)?Jl-0%{W$?s-tV#FS`d@#_Jdh~A=B5{H{x<~ zjJhV@95HvBbg>P3eT!DQ`@39mkWD`x*flM0diu;nud)drCp9TJ_bSRwx83;r){(dw z8an@uY>s*yIISchT4N?7qfEi!vda?E#WES2`JM@zRAt{YyfkSt!=(8~4_DX-rJX5! zHMurfvfifb!rliv9ZXE5Peik>s6D<VF|Oifk0bN8m4>xqBJ;~7*(S}{=NpswfH{21 zG>y%ZH^rtqY)!aqAbUR5=@Ikncb&<bTKkfJpX55(c<O_)Qig<B_@u`Ny4Jn>DOnve z&AjIv!%MZ)!)ymU3(v0b<aw*eeiD50^@f5MSCky*Y^qPK(dXF4vC(4BK6A&~$^Y59 z40(_5;a4l`&?vYuf!p}htOw1WuU$Cb#U5$+St)5U!C^<trMF)fpPX~*;i;d}6QA`L zhMC;4a8(cWdRZf&9Vk_IQA$iHHfwIou9MCeCvQn(3p#l8OQ`3OEU^WlTmG-j3H!1r zF~;bw@=b*aZqG~})$j3q$5C@@+OBxD`8pRSWoiZfZSzw<(9$Uv__%q0oR@OvZvP!x zlMiRUo_Nx$!+Y|p4nsd(W`1SUo%56{Uj@#a7ies5>89pz(piST>HJ$q1!3ucMxRh~ z!=Nzxxd*4aba;N!%Y67(b(xz=;>*kp1?`C`rxwWe)XBZ``7+Vv;GX);u}hra$#NJS zaGJJen$Whh{;C@+7H!y@)bUHo#qRKCjaQfIF2>lV>}6cysglC5grSpTU7xnyCB9cl zrB^4ejpq4!p{nhZtG9B`wEYJhMfT2Z(DyevVw$YSni9>j=IO^7Vb30a5d1rb`GV&1 znaVz^4UT$jGn@ER>z7cQ-J}b@Zr1+{eZFHa-<gNS9-o)a-;mWFDRC`)_pwbzVL4f9 z8S{*1O<Bi&`M`?8Pr5Eg&KfOuluMdqn%iV4tp1pJ$-=9r&p5jk-!z_V$?vk~!nDI@ z7|uRkbJrly^pVnngiDd!OgX`aWX^iF9Q4uR<x2e3t+yu0W%kkZM|}Zjm_up=L)#OV z)H5#m{qaxLznmFC)35DWcWBz_1CJEaT_-InZFk@6cfvgV_cbxTx>e66$+vN?64XdI z^F>-j@3#1Jx##}vZt6=?3a57!xiy~^x6}<-e45RFP3of+mv7vgCe#f%0XuB&CgZ5d z&O#D8n-9IJnZ`6@!<vng=Jw<n`UGrHQ_fU7Qm^4>WRds$^vm;)x0(oE`pKGcDrSwA z*Ub6aW+xXX_wCs9yJ@CI?;3~Fr|kh#g!pdsXdXG1@@Bu8N{Q&|H?pazDG_0r*Ncx$ z)64g}efTSz<b|u3PZvA*HD&g3uB`68I%#Q{U<*%vF-t&JxaG254Q-C^0VkF?R-GyN zuE}kjxKgy<?+K&i+NAW}-&#s*turL9uWR;nwYd4lnBl_qi?U9(8Pbz9>u;K@+?(we zdbW4gYb)RA6b{Eri6=r|&)fI=lfdNY73*2HxmE1Z%(IF(nZf+e^0U*LHD!UGao=q6 za+GgNO#0dPXoAC1n>P)SJ^5!I6`h{pb<yzpt|P8KI!3we3H6&VADY!A>M?DbO|<Rl zln{>3H!pnoS(kq)?aWPQYZfs*(X9+Occwj$kb8VnG({-WdW%J1lJlI^l_%di7Pr*J zE@fO~9;VXKF`r>|gz}yZF(O4OU$=Y@-l6&A<}R1$1s7Nhrmwgp;Mu_RBr!w4k$v-_ ze%;rdE4?LqcL-0sRX<^MefYWU6Y?Y%=}0fump;}hJ0Y{@pbYb4+ZVqZ_OFb}$>P|n zS)MW>oz3@!NwiXyLbA!HOV<{2ito|rXbU)OxL~s8`Ot;eoyu!^Jj^bh=Tgeqd)3tH zZt3ID)wf@&sXwlL{_5<{uTwwnE3Ld~wfohU-N$||mHSux?^ed#zgc_U&Y9a#AC>XB zW5W4luXvx{3u^n)GjB6o>{?pO5d0}{PfA08C)>LD`ce!pOI8QVroHBQ%&u>pZhtY= zwDfW8?@vE?9qv|LwR{`%*K5g-UB#u>-hJAzG;ERX9`mKeHMO^P9r<0ScW!s?y4(+U z>)FenxtOi;-Cefj^U1x8H&fV+-&H5ycQdZ<6fk1QI=aZ^{KO>}zA^9EZo}bF?qZ^H zv{!aQ3)h}~YwxJXSakm2x>b6CS?7{pZ%)*|g^cf?iX<p6-*$7cv5Ax$yQx57zv!Xk zw_Du#EI%@qou8k!<I|IKMIG%`8G7o|d1b3R+)Hw=g--FY-PStslgYUlf75ji59MYg zfA=s{t50Zuao+3ge@_9Yo)RvNU24^T3-jcKn_qnK_S>2)tZ-<u%aX)Lj@=t=^>bX? zq+A`{56(!;@pB8|l2z2)_9)=t<7$Z=iF#7gC$ZKZG~m0l?_*^TZ<e8EY^#uga39~H zUoIc_aMma7PWoi}Z~oK7Riekvd1wgA_8k{LaN+Zs>f7}vKb6)qr5=$^wn(2_vV@b5 z<1&xB-Skb%jA!ha_{rUApMnu@`T2st7e5{~Y+&Hve<{hkWJ$Bd#c8*4jMiGuZjxhD z>fs5S;V_A3nb6&o^&8}++2(m$F8ivd%Ib8bOGGsH;@<tP!dmClKAHXI-hOy#+5P=r zZQfl~@2^cO;CrjtQ2)<5;mG}0C6}Jf;9LK&S*CdVz6a-m7bTk&8Gg}yyW;8P2PX_A z<IW4-3%K-p+eF?)tp~T8Xl}RcDY{_1J@Oz!&Eva^pPq_k;ab>IzqUE!j!5HkE6LqG zr>+U!?%fipD5re5|Ay^B|5*uJtY=Phndly*tiF-GY1=y62cK9Zd7m4%)bDoWDi@P( zh&-9yq?(kPqdN0nhs7e3G?8hSb5b7tzL>Y|h9RTmp&GBtPiHfK{bJ{tuQg@e7l-8? z3pu`@nz8Hpim2fIqB%FY7uS|GRk?&!6sG;Wc9b>b<)6PCo{f7v6*!kE*?93UJXX%~ zs`lMIy*AV7IScd-ZGRNEd`acwgR8#QAFs%qzv0&FiObv1E#m#4qLttj)A7}StMMRL z#QzV4wz)Bj+`T=1u2c#8%cpR5^Cg2U^?AD&KI%8BXnphMzFFlb<DHsK(Wm;4SC^>7 z9ICo}WqQvIo|x4KMV?$v7yaSjC(kGFK|kXFXTjqc)5U%>daiUSwTNYVbc54q@z&M* z0~Xf{DvH{QwO$EyaS__YARWQJATyag^`zCQLlsM!IW8>@K6vJU-_egJ7SDFQ(^~Y~ z)z8SLl3O`yQ>PY}&<_Lf$=AKy$0l}c`!ORjR$%_pn}-TFt$E$}-;I}hg~ZRZ`(OBa z?iP|17k`{2?KLZMoAw>SBacLvE(>uz>;2^GiSF$BV=<?T4$ertXEb|iQ32PsYmwXc zwrVCu`cB!n;!}x*;NjiVp4Rq1jO1%RH?x!L%%&+~CX<&Wia3`~-zecxG;!iCjxC(d zW$nTW1pzA^WOkiA@v0?UZ`1mwFBQ_+;``d8E26JYUw$IYy=QeI|G8D2Tg!#Mx7x3{ zc=)ZM>VK76?-J?_!UasNwm2VuV|r}+vfQ6)6D3wm_$T&McBb&0;NsJ-auZiG9-HsC zoqgI))j47Zzg;tHZD;)$w@Yc+?p1Nu?rqXMA)-BDrf+Fw$<D%+tJcUW`!5l`w@~7R z&Hwu9_-%L0CaJzkuVdBAuJZU6pb!=m!t;8Y*R<VNg5yqY+Fj+eHle<eMPs3_P!7YE zwPin6tG(ktGyQJN24RJ5N0c-LL#MT<PPBOb<mM-x?Bw<vdhgyIn={u?sQA#IB{#iZ zT;o5+H{rPCoUOvU<!XMsIpaB>X<6wD!w(0`mu<S~;PmV0Qr&{>lZ#pFgd^wi+kPr* z@2YQRF9;N?xE#H~gQ51IL8^qhME#z-s;MQ{MSD`scqR6-{wtH1W1eizc`DbZvMIgr z*dGh$%^W7vZ3<@@&Z}|IRb3Du?RbAOSHzmxZKa>Q+Mmvmm3!R(OQ`g6QCCBR{W+Gf zCyT?&f2luxaHpATuJGv>l?~JG9zJ+BK~pR2`BUZzOdA>*_!z(b-&el*hSgkoA)&kV zR{7z6Y{!e%Ccn4b)v)6bZ{4$P@i~c}Yb=<aO}L-B?s2egU!bd(eMnp2QBRrQcNsVD zE@XVZzv}yj%NL7oJbY?gl;601N8!P;Cw1S&O6-}QPn>=6>%|4krft$4%afU#PcLTV zPWZ#D5Ws!oszJ+^%Rm2qzrXM+<CVYX_8ZPPYM@>(-SAbGYgOa5{gY>Nyn9nJ;kJmt zYxNygG8ZEBb}3~3W3M~9zPk1&=d$WsbI;8;z1>-TxOM)8a}zGh3cR;+VoI!Qw|O8M z(RAy5dPZD@*+Q?C?-_OU4LB{12K_bO@Pl`k5%-)o&80hx8>~!T?^<xs`Qw^xJb@nN z3@7;gLKD~U{;JQh2<PU?(0KZv(V6>Ab;hm($8=;%S?@K+pSYK4w(d(`)Y>o1xg}|n z7hccJIo9pGWYXCkim!rAnCn-szR6y^p4ZAF{q<^X3+{@Vx%#{Z6q~KoHynNN{NXi6 zp2M4T^3vKDtM{y3x9CFf40k5BhZ1e_n>QIeQ|I~Y<$U6f{)~US>#y6ei#+)Mx4wMw z+5i9e<=O-*7I+%+9G`!%CGpR(`SJhR+8!43Dy#7-KaonCW56Tv!p-GF`aYvQ55ykq zKf0x|Rg+0v{I=8K6DyPDm#DSp$joZKvizD`qVxJ?_txw->Un2i<}Z3Jy6I5iwO9?c z1zs+h)>FSuV^`X6bNf7JrM<@W{9BxtJ-^6lakrakm$}cGp0|#Rn$BCSc)_cvw~v30 zf107erb(7pHU@f6+?n|3pR=~bXUQe`E!qc^)){_hVEQn1nZmL&f2=1wn^yaYuj+Ha zl7QzemA!{93O=z~@s+dZMDj25RU5Z-efnd#YWL5>LZ%fKjn4BenEBc6X<OGh>#VN- z^81^Z#7CB_RU5u`f6w~P+IYQ6zx37~ga7v$|0da_OP|!|-z%pt|9rJ>uRxFC-8mM? zi^L!9lgcyqpW`c-A@1^QZ@}AKx2xhSHeC+=^2vM8?i&Yv{Y!f<ylyaMwio`c<)q)V z=!kgvj>HQbU;j#4%JyE++EEas()g{I@9^n{-1_#pcQo!a8kXHlGuAqn)~~=jbA^%0 zw(zZQ)9;#W^Vs>9=lAZz;+DT>Kd?XhasB#>VGpzRw^<8kh>NrJ7|q@PhB2At*#+st z*TmXBo^%r2E8u)%E31X3lAXe;`t*al>&la&8%{C4zNDz%(`%W-zHP_M`TKXzir-iH z^WEF4v-w}@)L*QB_W0}5-{#NP>l<c&Iltd}|Gs~3-~OIHL-yD6_4@jD``F8!Ki+&h zXaB#ivQ~dT-+ryL{_DH?@84{9#LM}&95{I*=FjZI#UIc8|N820d;jzO7W&8aOPBrn zcvnCFe0*9vhmv~C=lm8X`Q0-T7cKB;;7gdE+<kw??&41o451aXGwL6hY;JqTx2o~P zy^UwyZ&>Bw*n7(I@t)O>|Frx%r~e@Q>>K`w51-;6{QmXM^~Wwp_7i;(iJa$t3q7#? zaiVuqbBtVgvAdLJoXCc`k;^~3XG~ig@$6a6YNvdi&vG2bXTONA<~?)O;EzHyW7;MQ z+2ZAI_U?`3|0n!nrM*?C_P=75|JDqT_w8X?%*Gv^A`xsc*M~*1Fd*uG=e7DpU+2FF zT=DPn*W3N?_4U?A{$3p$`&YeBT<zj7e__W*nSYmCO*SlUkpFj<b9zDl<sIGYW(t;{ zHP3yt&Pv*$aQcGAPXgtP+xjP8C^oDYa#{8NYT<>YeoyVE{tx*V{L}yG{}(fAW9I&E zf1IND>i^7!;E;dU3tS$p2}qbK?%C?Rd`^VsuCNt<mVcUms=mrb`lozRW4Oluot{Vj zvCB9t`n2Ef&t+DBkZI>*{&in|`Eq5A)v{0jcb@wH;hO!$uk|kfxNXdjeTsjizDH-l zzxsZrssFdinDZUWx7Ls^J617qQC>Sk0au{=c3~d|w)Eu7i+0WR_mh&{@s#a*&M|YV znXGqbtl5?KeB0v^gAen59or$?_5O=#N`SgSg>%yB^?ILWdw5>!J({>jVS3*2wckyc z^_>nLey~ZHn|Xdzm1fbw_ZG9>Kd+1b7GnRsGbggH{@vY|oOSQ!{w)4|V6s4*->Ny2 zD_IqqjsGaHT1Yn;xZQ2;e(ju8H^=Zo_mh3{R+IPKmz_W9w|S9nrTD~l&LGF<X&bL! zf5n-{@ZkK>ddV*LO}xpyapuny6YrIM2<D#Qy+8C}&)?e-CAs?=HJBdnmdVRsxAu15 z>@aS5%~=t*-?r3G%IxNUy7Y3HwMDC$g~&>kTY1M<PWCK#qc?SN$bbEX|1bZ0fA;17 zE&r{r{*V1DfBctTc=?m-{{#QeH|hIQKb>XbyZ=`g|IaQjFMjc6@7o)v?#jIMaxitM zUoel;xb1a-pTkr8um1!8%iGRt{-ZuGW}@2v<BJ47{`a)``u}S2pAYquzm(3d-_h|` z|CG^%|EXI4SN?VXS)cpu{>vvJPh6$`|2*@veuIRg?6><Z;;u*j@9fm*U8r}Wzq0dL z{k0+sx4HXTRd4cjW$#qG-~99+SGIuz(?PLC(ec@xT*r2bEn20Y8{@=xe`{ca?em!E zwY-PlJowCiD(!9L)Kgxw4_{K48=z{CAXHhu_?Fx8)!&w`&|3B3E8DbrE{dm&zh9cY zU4EUuJx}3L!;0E#zd!u@^JtU#hk0=t)Ak)P?y>pv>C^K5dbtCO_UGwtUK-5J|MqS9 zAOF|&&dZ|C8<r&=^v=2ZwP0(l^c;5e{gu<={I7<cs>^NnW0Pwr)yw~PA$*PMljF>< zr~PD}C$pt~Bm0W}U-G}Co$szc7@z*3{D$UlzCVI17W};Xe{1?dp=VJCuP@zm;OE8N z;oDx_`gv(y@MiNrS2ZTF?K{KzacgeYsb}eb67((NOBnC1s@>W+m48Lw)|{(1ZXeuj z^Wu>7T>q3A@)GR3D$3q{@j1+Kcz3&<pk0@Ntc=A6P4j!pALKFA-?zTc==)%S!n2yy zYvgs_Do1e0A8>lHTf3>XKK8(&sXG!kZQXO-jH~Bi#bYyX)*F|vF>Epadr-G0<KW`; zJ%7V&o3AEbOyjQlHhJIe%m+_+8M=zIkH2(ck~NSoul0^z&sLY6c1NdbdG2ppu@@x| z>?0hCjvNZ!@QUZh{MOfN%^T{!riOn{SDe+*yzyVl-lI3-@ABvU`Ls6d{kLV$?_Asc z)<xRF>6E0=u}AU~!eslHUVqBna+Zl<8^2%|=Z#&BSBswQkb3>6te`A_N$f0#W82Su z$;0w7*TYvdHvJa6^6BiRUk{!dHb0Cy8XbNA-PRow!}jJEsNIjh<#t}ujAhaf!Pxqy zu&qb`t=s>~aY>?xafL-lPi^(Tcc&JzcGyN(aj<b#>btymmcJ!^WFMP9i!ckf^!_}? zC?;XKC%<D%WYk>Bx9n@*aqxh;v3d^Iz0Qu@jt|wx7`j}(&pRk*eE5L*LSg1-Pux`) zYGy1{eD*;`LHEbv_x_cwzaJhnJHo#sb%FJ*df)Sw>$4lK9g<+sV775OnEn4mu=%?S z+tUj(-v6Dwa;;5^xTMOT%71e|I0v`y{<!a<nLO9QHOBiGY9G8kE48Ur-tC{2oMnsc zE8cT{M-E^A&k%j&O=H6EHHN1T$HjHZ_jYJ|SUmXaTqAZ(`TIHEwuN6ynO{iGaeY!# z?Qwo%L&J~y%elG9S3Mcc&uQnMUv+4Paoyh)yA_*u-+puA@B;mg-Oo3%_?*2r`}Tp| zHUHl9x9v2pkTQJU@W)!<6yvk{1A&D*zVh@6Gv}M|8~BuDdF=eC_Vi|7arXY0tXWyE zqN3qhhh_*X9FJ2J{C`&b`+dphi`fbe-EXQo^!?s~1It~HnjEU<z4GSb+4Me@vf1lW z1#b#Y>~{Uf<G1AhaeKK3_h&y<JhYcFpS_uxp*AppS<&EefAsc=sx!D5#Fji=5N7aW zo=rBxabxy9=k7XcxJ@Wzd|koZD{s^IW=q}tbiWzR*9{jpRGB6GJMlrr{Kvoc13Nav zGL$L>{@4Hd-%joS`x2{XOY1qm{tx>9-tp;8t-t%3j-Rgh?=Qm2xc2|ah(#awm;S1^ z-M;Si^U~s74MLm$Tse7fuHvITsi8N%3*IknT=`Nx_<9)o_n)B?nVS!}?Z3r(VUeD% za8<7?|DD$8uRm7s>#dpWlzUV0dCFZ8%ZpC&=k~GvKQK?|LN=R!OR4wU*L<`54%X|x zKAh)#Qnz={vzN>I9?uN8&buJ=rNw(LwZ*-9BGJ2z&$MqYKfrde+;8%Uyk9FUWVHW; z98vqtSnKA}$STjpaOM3%rmK82s+^z6Pun>6ZbSc`hk235*>2{S{dGLz@t^VF4&j$M zeH+BzZ81z}u6V)EH+RAg&QDM6zn|L0A7}H0tzJsT`9<CD%<P(*=MvLDeTq2Cti=7a z@m%7<_cIT0t}NKd7{-5LhNzQY^Nr@Ig%(Od2M#918Ls=t;=B7@%|1r%bi4PD)c2$^ zpZ~@l@+SE2{8#_aNB)2Q<g#Y(|K-2xeX2W8eW_10dMNXE{`7+f5B`d8a`?U9#__Lw z@Z||RZ!HLWR)0@&iKX@Ox%U%i3f!>W)v?r|WiGS+{#ObA&fR}r{adcgCQ@nc4a=WV zk%u#wd`tiRvkvNtlYGXs)u^PM=~ZyTnxHU_yuz33wJ%NUFkj9S#<5K_?(n-F{raSe zzNeL8J{t|ctmUmfy6*XphrBfrv1cmt&VBy8rTsnc>3OArzMQ4?6N~hZyzUWq@${Q1 zuw;hhqS-xd)AJYHVVpCIKf#S-!<xL3&Gxdt{>hyGxzcdv16i9n4AU){dNqn3%k;lG z6&20&fSG&p-s|E5?c0u7Estzxi+g1M+2`bygY0K7Rvl=z7D)WRP;c5B?-I-76(2Ms zRy@5I(9IzJ^-JsAWs5V-Gu!J=Xa8E2_x9SUX6Jj?r@vo+uKp!oq5JDd@rY#%E|zK{ z^I|u6^vpl~#3?5;$8Elta;|mMi}HlIy<Pj<w?F%TM|#_`b8(v45r&*|9DWBD2y>c$ z<I6LbHLfU6IQmOW|C!FZXa<8h6TB6&xIVMSvP{goa`D{doGGo3M7G4W^nc}Is(=5Z z(IVpf!vv-VmL&VnH9hLbH!^d3#Alb!vig3YDf!l_y1DFM<)-Zs-FqQ5HC4uu-6-^? z)a~|OMi0YlvLXwQFt__mdakAYFw{ZS{lx;VB}W$={b+M^MPTBC#Qm2G|9HrRZ(OX` zn9nLHGQ-6%{_f+)QN9K1*mi^~%e>(bFP>KKbK``^rz^|WN^IoSc3Yy|wr<9&aGx6t z`n!^rn5~iMTqm(BX;r*oVt)8VQRCdhT{AC<I*0r4YOB4uqPs2SRj1X74LK}XXD*}$ zAK!FRrcy|JRdeUjS=qDa{&mQEt{l9@??!oLuvOj3pVPK*ESr7%3WJ)s){^8)d;-Gv za!zlH4ysS-U-8CFkmX+;cd-0~%~pR?|A__6W3UObwqhwO>&vU>2|B(rd`<O%RsO9j zSIyH}zFeqYYsH*ZbG#l;wU`#_`<S&ce&wHvGsRr`y8b_pzRcPswCq#X(f-y>ldCD~ zq}86@zLdSDYs0~w(|X<y7VLhP#Utr6;jT;X5s`q2j~|!3uAh|`dwFg4uF|`g*1ncF zX8maLw{<5wmhL+*{jf?+ZE;pXnwsNkr~EXz2cqT0t&BGvW;rMs{A_EC^kHSlc3Z91 zpvyVyNAF68vy-X?pFeuBmS?eeLE#s%uA9;uF21*E$l!`tb^q}>j_HSf-%)9FO^Y^R zJCPLKptDWr1Z&x)qz0Y(t*j@4v>Rg_v}74}${n0CbLzIqsRENCR1Y6^3Nrtk{-k^U zD#QH#XZ08V=-dDImhxX_boT$EpYay|y-TCMPSas1H2L2x&f-_{X@5(n&Pk;+|C@3e zp4Ho~{iDDA<L3*%-^$$Rn`WBw!T-gvPwOo+6XbREt$CKGt3L0Ucv7T$S$+Lc_0FTu zCjZ@a{Y-oIZG*cT*B3U&7(89OjpxpbIsDHj@06dnc}44PH|ZPUrSZNQ(N}*@+O&I> zoyVjG!R_u+N_+k#ZaonpZhNip;q2sXPa56&MGxM48DSG!G^s-A^Q0Oj-7S}eU9YHo zxSe7(_Y=3@!{dg`3b{p@=l8f?IBzHMcy;}Q8Kqy7%7hNjR(fIm>{QaqV`p5qKimB` zX|29+S?a;km>Ru`=ofnOtG90rQvKL_;!Mk|SC7AHZq2)%!r<ldXVT2ZkSg{|?Kdyo z$bb7v@}8|hFW<tlejc^#Z)?AApUiC`7!fk(`Hp+#Mq66<>-8Qwz`Z$0qAkp}M2vq^ z7pJaRQvHz=x~|i9TvFDt;A?eTbim=zA}PQ4l@g2$`@*-C&r)_udVJZaYi6>NTG*Z= zHELIQ(kBKikJ)smSL?^-P1k%{A6A;#O*8!DdoC{HPVdDZOK$AF_=KZj%g5&G&$b4! zjiN&DxZVX;Gt1qv^bok!Y;`2iwR+3D54H2A99ft6S&`AIUi4XtEPL3SWlVombnT7T z7JL8Z__E~ILUA*5Zm0E{sT(h>)6V3O>-hA>p@ixBN{{7AbGyD|xl}1ct7dgfUoWxg zNZj$36j9YVtAsc+{JcvoD`xc;bk`NkHGbG@cj=|X!_>)(Ht&c(_Q;R9qODovT6nf# zn~U^@MO&7JJv8E-zp<Xt@Mvn(+O14Ng4#hxrd^%RFQ~nhVWW_1PGsmmfsL2N6w15= zUn`ky>JOLMY@}||7ddlH=eHe(()$&o*$yUg3;49=iX2qE7*(BA&y>Zwt4#aj?<Fk_ zc5$s*@^YIUY}GEPTHpC@ZOZcf{H~??U$)k%__Xf2x8im0u6tdDv;Quv-(UAcf9IM! zi-oCqJ5tmxeLr_}<K|OdOH_2`uZgqDpXSVFKW%3EwFjHMRTsAXDWBQ7z-mc4XVdE0 zr@GWH%c>f0OifV>GRkJ2De9qa<CPY4`h?G-lxu88+7kjQTh3&CIQUd)v((?hDQ7<Y zW;#82_6?(=#fLWgK5=U~k@d;{nUYC;qZIR7g)K=7-?^_?yQog9_3bZ{h$$~Zh2{#M zdysV?e5KBnqpwP=EH6HJ`Nic@%2OA?@H;16#Fi~zK51EjjeqUbE8#zv)J)A#v=KE| z{WZhtiQt?oHpb^qyjtpVIlZ*>M2f6Aw|ef0=9fZY-gBmJo#+<%N#S{1$wmEb?0=P9 z>&@!F2p9a``C|I5=DN;B_R_yNcRV)uCH?8h(S`dR)$b%b+dG=i^kz${KGDF{Sd$VU z_LH}2-6IZ%1zrhZObU;~4uu3n|A}>e<)C{*t>JQrc%<7JtA8_d>NZJ)d&H$jUYzAM zb=TolMWt8YwcX6v#`It2=7u+Q+p2gZ-F~mhj^_|BulHDOB<;WaVQR!O1(!os87EE` zHf-PZy5Tvyxg~oubCpNR+D3b&ule_bL;Bu$KbL&8S+PIxRFKeZ?kc8pvpxg~%|94a zCH5od#P4aFrY!l^G_T>Y_MRzA(l<<*$7(12DMc>Ut2K63X~Vn)!iGDR+-hpqntsLj z@aj8Gt^RqNn*wgt8%oCoJTi_5IL|Pf_t(vSJ=KM0@AUL^Tkn{6tEElr`jyX)+9%%y z{@l01B_ex8#fqj`xhW;r9-ot`y)m=wS^3L^`|<Pk``p~$@IpuWN>+nE>x%U&KYieE zUUrG;2;Z0DoeS<3HrECTu(3&AxZ^W3Nq)-KQ0;RJHy`OutvKPO+q9<s3fl>>oD0&e zImJ(VA1{o~ocj391zok{d|CGczR5?=IPUyU<FU=-#aDzEOqxE&OT3^<b#)h$57z|u z)lGNXC%lUMA=;eNy?o-MojW<V$Sy5=t#V{m=f<5MezEMz*|08h_6lQV-Y{n^-nLZL zBJGbCFE)GZyn6X0o97bmmlrQCb$MC;>E)7@Di>0fLuY$mOf5E@rx_bI!+x^I{6~uy z`)i$_?~~-u6lxY`yjvud>xy38BT4rw_h)Wd7(I9Q=BoU3n`tYzZ=SN<IPs;)6u*xe zbLR41dbqi;Ol{KAA2&_}ElK%VvL~uDMbp-7(-e(JJK5!7Op#_HTK_d_qNeD~Ud<Ui z-@iWle?)B56r0!ULW9?PXaA3|jhbRG`%8vtl*@9{S7~lqHANfcR&Bdhw8OG9khxAj zvMn@M^M2169k~Tp4L9%EGMV%5)!na7Jf5GSI$2C%o27fCQea2_1PvE25tln5oi2*D zPKzdJ1PT-isS3D$^;7!f;<&}`&}GFgA-!2Hj|AlF6$=9loenupauE7z;jzlVa>Xgn zGqw{Qq)T_I-&&cLvZQgAEr)FF(KCUyw|>r<d3MITntg#^-qzeZ>i=f@E?)bot?9p; z&v94Td~KH9xY&Mg@V<X*G*_jCedgnn_q4b4llZ;=@MjzK50AK?Wy><$XkMD%blpDq z4>!~1jin05estDb%<W@soV`IN_Q&~W2V#HwRfsL9WvSe6dT2JEg9yVx7S_{V*L}*q z2ju<jSLOWoMBPaI4`<zD%eV<~A1=8}a}Atw^dz_61DArC4`0Rn-?5_lQ*GvT`Iigx z%i1!lC&{ni_~GJV`nn`+*~UbJwHx-$I&5M7JKf2gskbLI_we4=r|K6kOMFniL)tiH z-PH3@59Z{pKX{T`!Z5$({ju<WeOE;PfAKyWHR~6jmczx3PSfiGx0P2vefOYs{kLdQ zKkj+8>(`1#2RCm%y54$6gWrNee!Yk5t!f<4JczsS<6(NN@>-Gp)&{{Do7m^PXjS-- zWGA?vIlgzM@0X3r6H3zx8j99TuWw@45&xVR|IOghF&Q_Th{G0Bug$I46Q3+$l-b@s zji>6l+s1>l&)G9qvs`m&-ma+RUe55gVkcWv5yKz(gNuGJtov@eSK?nO<CgM-6GzmJ z{@|H>$4};5z=w3!V(tpPqcvxevle-kKClb)*ePhf)WKq=eMT4O_IFEk&PRNoW%;_k z_Q#1oY!xp0PdT>)OUHS>iC?c*?_HVmR_E=^-N$a8HqUhUlzDsB-6NN5ShgAP+~eHG zoY2R4=d$#jWwk;vlNN?AaOGkbZ~w8%SjTF<-2*P&XBRpuY7Z+eU08hgrOT&R+rwWf z&zd31q9M^U@7*Gc2MPsDlNCQlM!r9|y0Y&nYheAPM#+6|ct3h8@CZk0Ru_JK_-WUK ze3py8I?8GB`}TUV9uO)v{&1BqzByir|L$i#9et7Fg)^TWp766f@#U#ntAvf|iDJjE z+$@)`|Mm3Muji+?c(m-`yV$z>8qX)STR&AMZZ+4B56_RY;i*1Q%WtiFytO$c$>`m! zUeV2ebF$6*>N(S%F1z_-)^UMHN9*i`ojaZ~a?WzHFKeCtIWz2(+$n>u4GSz5DSiFS z-NkX=^2+*OD`i&ra4&W~y7bzkFvWXLDq2f;(m&2We<;XnqiE2Yr7D$beUWXcp-$J9 zcBi&_#N@Dcc27B?**TfxQ>Sv_N>LTPK%wO-eo84XCmhLMdwEK|$D`KA{TiM2nL_&U z-!)xcC24!i)zX=Ag|lU{tWd?<tBZv?V-~cjs}?04ENq|Rx2e(R_TPC+UM}Xz6<FFm zX>SD+U)UY>t`BJseb3!J6mz@v=67!HTnVuohB~`aBT~+9*yro~X?L4wj`Xqjl22}l zstB{kUcSe;@a(ZuWzwBF=Ji7N^7ov**{AN{^{(wP?}KdfJGmK`KbD=ivv@&h_P4d% z#=FbQzW2P;+CBGlvD=56@4g51?q-_Yc`T3pM?xZB2vcWjS?waH6Swqr3c9vPC^h~( zcJa*twofIK6x?$qHIF=2=yPNa7xQdb{B&2aPwHd!)G6Ty7teoW)Oz?>@4<x4^>?Bc zIk!ypzpq|)NWP&k>gONZONusst!Dpiy{_`}%o2?=9@{=~AI`bMHKX@+)6K+=OvN2n z@BTB8EK|AlE3GAV<s}c3H`ChgUfK{XRrZ_ZP~P|Un93u?k<9t6vzYVwf8^UA=rXR9 z<9wf!lE`kj(~YlK|4E4Q{#M6Zsg*4gk1nluv^=xD!Pr2#zWeN^L-}jh)hGuq{k~Du z?qrtD)XY!ThPT%xwM_fEPF~n`V`ZL4?t>Hc0ZSj=ZRaYQd)H=>kxqU?xnyE#O8>ky zH<a|(uM!WL>ak+dqLo!MuW%)X%ooWD`y(*LnwMLqY0|Ph!QkjV*Ew?pqm|NKw9;41 zSy<F|s$Nnn{g!Ham-*dQ<`*>=&zT4jmITRXPM@QB&vpI1oWnjvZtE&0x1RzFgS5@G z3a)$nr1yqUrSsqPkb41@&QE!#n!lZ5p1Q>6u5Mnxr&OaGOMs`dD(_U2kV{*9FHJag zP9gG7Q^A`;(Zu7WE;8XFIWbn}cJ$Q?Jf7wveqA!+PKl4<#ezr2lsh}w1h326$M_$W zYCn8IXSdIu>1j7F>R8W8{jRb3joZ1ZyzFgv6_xD*Do;P@I`W~i=%mt=i@|RGlD4T| z`X^lU7A@yKfA(7U^2{TfDkg5KIQ2-gd%4a(%gq%Vr|Rr;Xmio&p03foTxT9gYQAxO z_w=ZfkGNITk8G$Yy2&}^Xt0=nq)qC_{s~7<vz(e5cJPt+6V@Y}s$OkaxMtp_s#CA# zo30kWedd+7VZ|oHpHof-tNG8gN&VDsbZFUJ>Gek!JxsQ+Jz4N0Mt-us)Rx8TXIL(J zfLd*pzu&%#H~rM1&3_%Av)anlpFP-j<Kp~#n(_5+vh!C}vbXmynJ=T>^Y{M4%6Y;S zA6Y+d<zslmc--*d>-n1hSQ~HNuzJw{$7PORYNA%Bj(hlr&6ZbMSHA5Lo;P>H9S)<y z?3Uu~4F2<(OJkXf`tI6JiTj`I*<}B-^9*bKqpSJ_`W2Z<r<M4pOyrFCKY61`-NE{T z(slJ~?yKCNUiNpQ+^@9s8QatkHLf|X?xdEse6vw6Z*ykr*Q<QTcHXoX-X*xAeodD2 zyV(5+Synq(wUsY)arKCYZD`=z6vG^QME0@r3_X*IU-Mou{@=wQrX4V!Z+Et3NzU1= zXV29sOy4`{Ui9h8&G(}>hMaf#Zv9I$@!p2k$MqYxb;#LxY@c6pLHL4A<JscEPnYZG zd+7Llzd!ren)3YH)~|C+oR&@e7a1)zn|Fq0_Kb49J!>vLN@S6fl->UAaM{<r$6_p; zjl?T_p558zTf4En+~C}eo=tJm@j4$W)mP>HoIZ6e*LlX~M#He4NB7nl9Z2|bq(Qo2 z-5H(UwW}82u76v7^w{zZt;b)8Eq+tBY@=~$g7Z502do9_mu=d6N4H>citzP++r+%Q z-fnm~G3ajW>l%U3%Nz9=ohp3~Y`g6j@_+fSdWZkdRRWj&vcLL&<3Ii%TYm<G{r127 zf9XbslDakjizn%H2K=9HG4s`b(^vmDOkqo5UiXXtYM-CkZHASft?L)qYR>!jFKFY` zaJ31QDLn1*ijsUE`Ct5yGn%Jw-E1i6H(An+>0R4IiR|a5*BusL{v)lFTibr-{=^S_ z@4oT!mo_ENX})TldZD^V!pP(Nl{<b9mY9Cew~c)}*YMATmpk=}KcwfUO6+~_d~Bzd z%Q`)g&EIX;++L+^Fsr>@Y*Bh%J(K8tmf%*GqfT$HHdUowo6B;zDAcYzyy!^3fk@0> z3!{Ps^|kNw)x!&(*~-<qMFc;|_PfukXmIOu9s74VO9R)x@lo%#%`AA@lz;n8+B>VX zyYas=CW}52{d1i4-{*HN|Nor6k@e<Y9N(wC;wRf9zyJC){d6~f&$?f~UC*rko*!Rt zJdN>6+?7dlf4+Tw`up?;V$WXjUVh$wXu<4^${K_3QTNpqd8L%X;$vBPCLX-FHPE?x z_hT1NmFf*VAAg>gU%JchZiL>vof1bk+)(4`7CHP>c={rVX}4MuJCk<Q+;d_%{AY=) z#4~k~!-72SA`h7~rdjT@)tF|iQFDHRue;A|r-*v7+byYDJ>Kj~+df7I_r7>zA-2NH zS3^y=C&ON*w@O^=lireD;<JjCwj7(W-}&8ItvxXwiyI%Vf1GkbfOnd2UGKNh=tZ^9 zxnj*E7VmYEc)OIx`o7cEL|zVG)&FcF-EVhR-;B49+xP$dlikKf2{v!5kM5fPHN-V; z?Xky8mz<dVv3}(V{|euTwbO0|O=x|&a#^qc(vO<UKS`<gxfZVETK@Rz6lwn}A44XH zeEo9b4rAo|>)SrdW$O5<<Sp!}bQE}^sjnxtXOF-!?Klzj$(-ghy)L)vWG6>j*k1Kp z?p;{AYr?eTOq<XxPo1nj$=#jxo<W#NOya-+?F}ooT(QjkKAUwx{af>fqP`yKo(KD7 zpWK;hpRj0gVbGfLl|Nc5{yi_?-ErXbG1Dv0GQ65)UmBUVJ_x_FTDWQH6|D%b-b0%j z{;RN@E?k{pnKw(Xd&Wk_ic@Q&o);Z{ZL|HLL_^Bm!i1L>RK$hDcxD~-G5%q<V$+K! zhr?tSzuBg<gwu7aRlFoyw&c(Hw<T-~%~-Z7uHc<`v#nuTRk2#je1lnsTTYyR{`lvF z{Vx`{Ydv6fvC~+8H9+gP`u)X69QmF2ET=^{Hyp9+|K?$EcDoK+zr&u24^AS#l2$L! zw^Mr|Zs551!t^NC+Lwlo`x`DwHP(Hd{jYLCe986wk}t$>PT+5j&l7z;QC|GD=B@g? z?e}u8)XE+H5y*Kj$XA1Zn?<MT0-ZmZs!^L*=Q1z3%M{6TXP3^MD4#p4a_&g=+?f-W z_iR_3>CK&6C3o#CJ6&{hS77q=Il;XZ=kyEhqbG2i?g|XMX%@*gVd`zE&j;1Fa?}L9 zeW1NV`dO2Ip5WJ$yaDkGd8NfGdf(p&*%m)pw!Y!$_Y4_V{(X;rww#r{Tj%^-sOdQe zORYkHc;_Dt@vb%jp8t^tmus$y?#)`WXNC5)UEvA)HvHE5Q$AHBXm7Tyu#?B{>)pvq zcU=D?uqElYgSHv}t)jq4zKo^c8pE>WwmfaxB9QU)Tj1I|Y^!vIlUo>WH#sb}crdBY zOp7JP=+&G0OE>a6kDuq5d4Mli=h8ztpCdaOCbN1?Or7oV_lKX?{{smt?5<cae0nvt zBj>}~nC=st(M7vjxYIYb7Kq(uN@wb7<xXGOS}^SvQ#w-=TifP4PF2%xJD*<~%E$Ax zN~HhKgmo^THP~LN2g^;q_J8?T`}u)?{Uf?2F8*qt`PV<@|K)lYQ>KDPm7Q7(G{64; z$*FGj)!x<fNvrsr1C8;Sf6q(3u9pgHFHvXMer{>Kmj6cY1-3Vy)p16rt6C~3z3NTe zc<bBdJgM8W@BKdgn*a0X^6<~EPj~mf*RS4w;MjY|_jT(hC;cs-w2k$TE=%rCbAFzm z4_a~`Pu{k6^J#`V!lx$oh}MUfD+z5EFSftL^Kf=h_p!x_ZSRuboe1ox-Dy6hcizGm z9#6O@-7%}!Q^6A#Y0$NN{*%_iWkFd?b+R+3CNeOT^q=Q&KDF2UiNdN-^<}^0ul{fP zHNU_L%-Zm;ohe9r-T!mkHu^jN&UY!)=}-JyK5>4)-~Ma$$IELEm|hPou9xTiTiCco zSK(g{_Z;(Uzt4*Ov$5!0eYBbTf_AIY)pnjMPIKc6MaxZ;a#pX3-nQ?{yszhYW|lA8 z7kH-q|0TIQ-RBry1eV8`OVpkC!!yq~;bhhG>8H;>;C>jxHDz`GwB`NN*4Hy1kg;mC z*HT-Za3ZE|>%vK!_SJ33$$dPBM|@*>{XZs!+gYa%EIz5bQ-J5w^^NX(R0E$Ls&2Kb zC{%v>sqt-ub93=)IcePs;j6l(wGYpfsb&d~Wzx<2a(ip=J%-QfSAITH%)WNy;)!qP z4K~TX*q&*5M}tew^x?UJ#h{66uMhtmV_oG1GgHp~%v;fAKP&l)uH2G!DN0GxI$95u zG}gy(J{Ej)R9W+Shxh#CbB}grZ}AD=clYgup!`)@`@MbFYMi>SR<){aS=YtTm&X|N zdOLL&8E(Av?r9`vyN7R=SI2s{E*0-(M|Vr_NYUEb;iGzrEBXXi_xJFE%$!?FQnQ1k zvXy&VbC3UVQ7d-J?(or*`sdWSCP=CKyN1X@(~Yk6ThxN0vh~-BF4>?a9eX5jro-AR zVL_2A<D_R?33_$GMom^X(|%v%q?Pw(==j*JWUcRWQC7|n(&w0?{ZsSFT;0fD;`M&( zx>Op(`qD022q?{+Ketv}>A0Qq#j|ZO(Q>Za)IYryQ^}WHV(XG8tx~7I#K&@;!Cc|> z$ATNa1RI}}slS!45x7fBJtM4Q>glLY3F=$f%YyE1(4Nux<iNUvJ$EX;My`;qJNh}V zKfhgkN|eWhB_~$<Ow!ulb4p|Gr;|%(t>SxjBZyt%W_HCVTZ^B`u6KL)uFZe{Y`%%Y zyEy^^Ep_}MdlbBKPH9B87Woy*1f?-cy{TL6yhwXV<9eRp%kQ_<e`xOJWq7v#Psp2# zvVAuk5A6GRxcrx8l}Vb#g++5+L!Fm-xSvpBSKGb)z$}Am(S2%r+^XHKzUMZYJ>^k1 zi<z`B`+0$TH`aV{4ShRfQotkjC(D}tGH-V9kc)dzk$7&iMAlP{t;<^9>6OO54gDpS zx>h^vYWBN^g&}`KSGcW{=RZ~dujK3V)#mbS2kNZV_+`%v*Xb?4bKumOtEXiSieC_) zy*M%3@s#!^JteJK>z@5sRdL~Y#dg#C@2<bz32NfqIkmUhC{|OD#m!08S2H<wuHA{w zi0{2p-#PMJ&QvEQs3d$b&-#44Ata04<Ma<Esd84ChOHZn8%!d)cXBYaUkYljf7W?W zbbqf(#_2a6R?!n21!S6k3LXfRZ<@nj)Z41~oF$V-QoQ3z?*gYBNv$KtySkV*={Iq$ zOkFWSPFsuX#2EptRsG9Pw|5;&dUa~?B9|MHEUHPT1C;EFrii$>*lMN5U44F$tAMF0 zBi7N!w6lLgRXo$CrH`wheYeP+Q6bPhxxVkt^#r?5I<w}SiQBt#UrqfT>tyL|oBTe? z9keNGm~eJo$@z7c9!f8Md7|;@|E*u@GmYmx*6MpvP&nPgIM^spVY-XdEAs-DT~|eT z^;qr{eQjFYAQsJ=v5~bw?`i92M%}Ga7lODMVo#YrXNt-*bv?ay!3!tV=EDhjcSL7# zWgTj)4`OwUH7n~Xd+_N)Y-qTe{DqS{bhk{6c1Ts(n>=Shqfnlxs6yy1?=`kAw<ozJ zF}})(Sg(GQp+%?2<HZ->ZNk=Ei5p!7^p>76zZv>Qqh+a><Blm}_fv{DDho`Dc0H_m z<@>Vg9@)mi(v3W>2|h0Q`LU}va{O5R+C+?%De>&C74>zt3XhlNI0kQi7Bb7EC2YwJ zliRn~SpHomu;X;L<=Jf(*?u=QS>Aop^4~o7+^owrT#dWe{JUIpc=NL>3!E6#SMcQW zO8;-u+tRn)Cz}2Dj91rwa&MmSRY_dq^dy(pHL`}=*cWK5?LG9o@!Fdz$^S_ayNdYj z)-AttP<Rqg-QLUF9O`$rO*cOk^}1GmiPDOTQHNSeJ)IUhJP8b!sZF_Z%VJCSTj$*# z7w7eS+cdQ(`;)Sm!)_Na?`U>*QQkAR-9F*J4Yy3!-XF2}_|}Ghu1kLl9uZ#A(Xruv z)25CV@wy~WmrIEvM+zcMYAW{!XPYnn_Qc$eBO;J}LdKD<Qx+zx>d!rP>yeoe*Y2_Q z;FnwWdZ)W>c4@m+%G^3RBd73*(zd=B7cV{03Eqss`h77=u1)NAIk}XnNHal6Zc_Ih zt9MGl?}9jYJ~7kf?_8>Ox#<56ozu&`3|Kxzzcx(jOW$smd0d9!F-PW-8-ncxxx2)? zwS7B-1k@KFI-cm2qrB{hdTag4O|CInm*#ONdQ}C@(29P%RPE?ihGkFGw=Fw$ReEJ$ zy3P_N8(mLVuh?vNU!hGs1{)1HIS&XIet%rFbIIfHo3GyUT|H;^Qi=R)MZ0Fcdj3pn z#_Zir?=IbN+H+9r?}zkn(_Ahl=fB$gZg1}Ub8gC|8!v~%Ch~sH+rq4N>jl$;Z|CY6 zj{G=xW!f*l?SiFG^3-}21>_z_{C)p7Y<s%=L3>v_?H`Wu`)U&RznEXr5%DE-!jZS_ z7uVa^+fF?moO$VN^tsBl%v++)_!&#So?m_R$_(C!j%OF&cdn0*xz?}H^Px)mqi1T* zYg2Ll+pNb7+Mg(S<;~xIDD;Zr)ic_M{~f$ETf9EfGWAmCqlnzaw+j@Ra^8l;l$L~B z9-O$?#HqSc?rP`SB~}xIVx?EEdoyi;dufpNO20)R*WFfW@80~vVO86`Z>%fUz3kdE z<(1HibuN1!R=g69_N)!Lv~A|EQx{_%OF!u>Q4iR?Xl_aPnOtf2nysyM*H^x3wb{Pa z$~Eg#r-1s3MfLA8Qb7y9);sgnw6eNw)XH30{g(H>{Syhl=R5K*e5`)<W5ZtdU-PGa zty!F(ZgZMf@=N=tQnS|j9FtV*$sh9>YR<i%w)R};+s{4;>W>na&fHSv#250&<1V|P zrFv3OQMpjjs+Uuzd2p3pyK<VV^3&B#r<r!|IR1j;!P05WaasKJ54dNn?`&9quT7V| zVy4H_M5hM*#DlVq4L6EdI@UTfFmAXWyL~;!i&nG3-)E|7+~W<4w`{hZZ@gLZ@?2(K zxBKUw$NpitV*N0E!-t&u3zd%jVe)S}WdFXL`{`?X$b${D$_svY{5n~9=*EB9dCx5y z#p4a)Uo#w#TO%pF=ikgn@dEWTcy*X9AFDt5QgVp%ljiA*p}%wZN)xlJAGf5d>zFt7 z+?Gld=lvw#P=DhtbLUt4X(~S^&p#3KK|SiPjD6ifZ{f&iDFureuKjPB&!I1|?%db? zKNr26HmxT9)>rqc7qjOk-kNuV?UU?$j+gFp`PTeBpAeN;`?t9;@7wv7JeFC4tLtyI zRZkbcURod==G1U3m(`8uwX(zKh;@x@hibN%2={$q+_U+8ru2vP+zZ|^n7-ezMQ%^` z4&@hWBFm;dTh#n-W84AZ^qkz}+&i{&BvuQX*#0=}7QANfO2y+dS4JMY7n7x&T&&ci zw`J?n_iOoYr7fT7&}y<Z?iBaL=H1V2j<d+0slOY-dv5)%b(t?-|4v=an=EpD?KkTQ zE0<08lSx>y&5wW8|KPv-t^USON(Hg*U;N+5vM%QT^VE5hZU4s0_%HaUUm$e#|NL41 z_*c9HkAJYQms+%cB2#a@>@;J6wu!xy6+f3RdDM~|&|WBg=J15)l@d39X=PQ`fSR{* z>$~fBDQX0^O4thr{9>B*Vd~doH?rcsoKpB#>KW#D(P72`pSck;l8cYrvXauvoaeEX z_4*pi4W4h>U%l35xl;Ne>ih)F%&iCXJvK+><puYMv9LWVTe*A9g4kQuvfazQ{e=8e z;wJeoX)UW-)G>>tZnn?z;JSmFe|9`i&c1fIW?jQniFy{jN^L{#J(t(Iuza|+)`e&0 zsp#S(2Q^M6wA^2m`p%cZUCnp-1Rw9fj77{YA5+fg=oI~G_<Wc#<mew3w;1i)yZ08c z`(@mYd&f7ez;1C)asT{`oHM>JU7Ke7vN4YFT(ctTuys+x-g%<oTn{!X%HO=cOgJ#& z>L(q2*S0fr|3%)ef8_JxUiQ%~Uvu^I|78bG;hy7A@-lRiQglO0+Ziu&U2B%hHVbDf z?lVu3S+?Wa`**oPe-`vDm>$|-6?P~^>%*#&O%I-2?Oek7r}Gf^p-z*juBmH$)Ph|V zrkY5cXRVsK%wZF2Wbc~oCM%XsYuJ_W+mPkeuPetcJ(#zR<<8Pg%mNqcU!UjF;3_qe zw%-_}_&BF8bGv9rUEvS@>s4naaIF4jI(us37p6)3wg;Sv)7&Ha{*}~9mC3??k9sp* zQF-E-5VvH8`pjwZlg~LaeHJ=ubMnd$sZa%>O*4vWq|BW7rT#lUw*Pdb-e;+yy;$ZS z_TK*oKFZH8ee3=7qx>cf9~YVbiazx!i8_mZ@bCDS`Nuu?qx=Qsdnd)Xo05#nPKAZ; zN$8p0wRVqD<1PoafG6u4-n6}lpJQvE@`q{V!VQ8I-q#u?X2^J$M5*NPsUPWlFk#Y+ z8<S_;dwg-lq#s{`^mnn;d7s-+w!=o6V=;${<snIdt`!dQ!snuNB;y(nI$P~Iw0NgZ zV*US$Y!1EtEsvxoE;^Xi=DtZx_t@dr+xXnt4GxB81j{iL7|N&JeSJD!Pv6d9*Qq^K z|G$}Tu5_qeawgwCe&2qU3;UAmQg-A`TlnmISE>DLzok!IW^pX%o)>;B*l%)WsgCcD zmoI;O37Md_XwM_RpC^^Jig9jmGA-R#abj2MG$z^X`hB<cul*|ecJNO2OY>;&gi6hW z=|%0QRdkgeO*H;_J@l2Dd|X87yI=B7t3U1i8?s~S?Vv*jYpg|HTF7wcCr)Tc-nduk zJMWU4HcviHIN05JMu9u~{Lw3$H-47snZv=YetM7MZL{<iC6URAQ+nqfH~MsB_uXB7 z=KJDqosXTZy*AvjUTCK5d&LP}6_xVm7e~6pOsc#sd1R65vb2A>MpB_GmaQ*2yCtdQ z!W@}G6}8aATDmQZMJ)wxH|eysSgg~0rY4!@vh6NM<A#`+US_|Qt`DZ%VmK$%<#)O2 z9HWQ!<&sa0TS97lLbLqC9-D2>oqd1HS;hKKQrn)qxy5xRYEjtQ^{n-&45u6QLbe6- zMwQiEU8-uFcS$aKrp?B;H&}M0H{~vDGce`+_xMMy#=U12UY`Z)?Vc=qw5eo@udkGc z+#WBH^-q&CvO-!nJ>GUKV&=EU+x9qJ%aHthYDQ6@$g{@Uiv>@Xt_)qt7p$-Fl_^O7 z!Q?MY?|8IRt@Y04J<Rr#;`y*kqh6e^XpzR-=PI8j#VqMb6;63(`ed4nazogctvQ06 zQ<R$@d8#K)61eRwq@>Czq!M_*k8g6z6}d?hG(0CLbTX-xb*Qv_E8uJ_;#5)*6i%2q zTQBRyi<wjPq_Q9Xyz*j^%jIbXnH_Hxc~2R6OmZ`9T5-~M_EZg)tcD4ST}g8H6jJN2 zJbSn{=B*D`T87BsmJcykX0OT0?%iQ-$$9igDob+MsWoNkmFx@!Dl=3iGp<(W7CHK6 z?I<oVE12|gO3OusZQQ(%9=kX*zITz}4cdJ{!Pd`2<O4^`1%)lyrX2kxrXpJpHSbt) zkL!GE_c5K1n|5d<{%pIbxQ$!((PB4uLzOGZ^|{YN%;i@;3ORF#J87{V_j);At(04$ zZCQcUr@R>(@|EZH{9U_z^<HDPGy9%TlK3I)y0BK>=v=5`k?64{wfxUtuhKS{6@Ij# z^(xD=W!qRxvc4uNFmP}Gue+nvR%32L%eftlY?{r_{fwLv&dtwc;r+Vr|6i#)E4Kf7 zrL`f@-lD5M;>UR|JMTaruA}MyayXNvk0(L~nOu3l_x^bQs$)sjbqBUN0)>1NV%m<r z{i{)Obem&%4sXfnCrnlsrru(UU1@qjce2zAhw@uyFZ`mJ?=EsHmpD>%`$qE}rEe2% zS8yNR_VLR#iyvXr9!D|kQ|+!+P|)xFdrfU^+&r&KE_3QrnEvlwwj%Sxe)mw5wKuol zyYHv>pr+9%>!w=JpM8@9-x<oR(p3{^DF12|Ew<y@@-0u9^fj-ZW!-wiDxh1Jxir)E z9P8FARsr51_R@2#U$>Mln757RN{WdMPyWu*7?(U*am|(Q5*@BD{_>QyY-?1!V8Z29 lpT8_%w|(KrUv*)!#d6Kb4$C=sRzCjEtjOx(#PEQP0RU}A5@G-V delta 42387 zcmaELj_J)grh55q4vw=z+tQi-rz91n7Ub(1>Y3{q=#?ZEF}&IPy6m>cB!!s$UqvL& zUhBHGaK-G@saFr*Td2D0%(gt$pr`A;{aE3k<hhWSDTiUonNQb(-~NnCnE$4`V~;|i zvZLUll-V|+Vw_J@jf{-)Bqv7RUYGm-`qH02b&YkO{r{jbU-sY0`ro@ZZ{9Cod;Ixs z>+0RR?Iq^dM;uC*X<5d9_y335x^H~Fi5dKnwciW=UtK+)FYevD>)*b|%kKM;`L_M) z^V|O;V(0hnS$p?ZVs85H_T$n2+u7NFlz;z_;QoL0wLkB;H9jVlm)DD*di!qgjmnSB zg&WR%wcnFocHq<LvsM46)@7Y<tpERhug~ZIe?|YtbN#;`{HOl?RqurV)%w}i+SmTq ze)@m;TH)tCcWZjS{{M8eTjt+>cCF)#pZ?FCZrxt3&(|pa=H31q)_)G(h<x_zzu(XQ zvkYHfmYBIWI&ID^+h=S!Q9t8n%HNom{pM=fs$=(k%5#1RC+DX>cg<UR+dxJ(H~;?q z`}Nm-UM+j}vpKiDTr_8W;!(fPuh!(6ob&H_-2HiS*z(fCduI1yVkED>O}n}yD=sc} zPK^BH$68aZGPhcXuf2Z#M~l>rwUX*<@^_bU9AMpQ%6N8{#Km2LcV_h^^UQoHrPyPV z^3TA)=ekkVyzGxrZudX;79Lo|rXzlT^D*0+7*XHE`pDCKPWRvSecYMI*47$pbozx~ zkJ;;wZe<H=?@RON^@g`yZ<jZl^114<V)0>>n0fP=);#Z3+h@Cjm-qd>)P0N!j;_{o zB%WF9`C9Xv|CRri$)U=7Or4pnWPhlIl(2_*JaA-g;PpA45p-Eo;g}xZgazqsHy4Mg zh%~TiXwUk%prM}OLK@?HDFLZp^MXx%=AV@3V~jm|@xkSd+*KTVr1@;ax2SMQeJ`sx zefy#8wI1_%{sle9{+(d%>fEqOE#}<CT^Xr!+k_-Ut0#wleK#|{_2uWpX#yO#pWa{X z_CnHDSWWhHXV?$zLk;;nzSm_8=GeS3m-wE?nh^T<-?WP#62GmCub+JDnqhIivZ<rC zsI<bumz;TT1-D(<{=4C<;OFWaB~KHcANPHAj`>T$k<)F*6btkl#Gf%NJDJ{?BRK1g zk@$oQn-jH?*Jc;E1^=6E9%rr<Ain?S>)F579Io$}Y<*iQIeOp1%k3ErwQL!085kLN zw3i7892B1W(beJdB&DrpU#>ORt8$#qp0Q-h#Ph$-d|zm__pR_T`$Tc)^P3Vg)YfWQ z9^7`j_*e^9L`&Q2*0yB++&8k%3_tvOXgev~LH5v+h=$so-&QDI<k1h9`g(sp|1rD0 z?U{u$j@jw$`p**N(VVwS_#e-*<Tn?7z4(1kAnse9ulRy#+$<{&@ore6$=Nl};!%42 zeFNS;xvX_k@(VJQ4Sgcal%>U|xF6_D<ZBR0;Q3%-mN2*apvQZQ?|d6%_m#Du+2pG{ zr{_!J{_lVMHJ26e^K&LWa`wo)D6}Egl4mP}#j7J5+7c=xp3Tj)PP;zwb^K%R&?n10 z8f=3nOj`M)=}BG#o5q?O(#J(awsEdalUS6aSkL2`;VLXD!SFkW&;5dN2+K9Tlylli zCy!+uS@8V)h8Z&N>x>T_;{5#9`oJSuV*$m3Rg;)D^ykQQT<o4^!Kd;d*7(55;!Mq` z8|*>$0sPNHZ;1MeuWS7sy}Nw1A@hti0x1k@eCFT1X)@L0XoJ*7KOQ!TZ#6%;X9-+h zvtI3@gqLN#7{gM5Z@w?i6lVlFm{uq3zTjPT?((0APb=$keunp|{9^ewVb;+*fuEhS ze&l4_%BtNo@ul!mg}4j}=V!+0Os^08b?JD`v{hm5j%O2cPkC-{6#QAc+1+W;s*@hA zS409jWS@Oq9BJ<srk7IltVjKNL)50IdalN#gPxJA9vnE9R9x?5lEdlivh7LXodDg6 z`Rp~J(ISdPwfwuvRBrPfi+v#5ROzv|c}2H^`iCPy3;H_xmtWzsJgxF>nHP6#pyN89 zyUKgZB^5UFuQ(AN*X3EA9NU{2yXEN9y-BA7IxROa)bh_L6ir{4ZRO(r-R@ek=TC{< zOuyOIG0DEvaT0l?$+M{bsM8PrRl%+kAH`P5e~4!hE^xVh@D$&QDHmp`ZJMGb;?p#N zmw9e$^BGxV5k=cc6Bn_}ubWa66CJo~THlvd$J~-a79>i4WV6c4mzgkSxm^1Z{Z^@; z^DN?2X5C2dZ21wPYI`W4Y2sb!>c<RX?=O6@SA6|h`K`yQ7@ZC5dLQc)T<hm3JLRaU zDs7IkXRn#vwl6IE^-I+`7uH|h@RV!L%1<viT>e@3lw{puGKgjS!lI?D?8oQu`mam3 zLBfA2=D!v<a?dl@6c_e#t>5;?LiyHeN&Cf7t#{>CKlDC(Dx-gAf#{Z5nP)Oi`#e9z zvt-Fa#S;!<Oa_z1+^ZNh+6}xed~nmLXF22XiTT>|i0@{vq}DypyLg7(AnDIe)~J4a zhr=gl&+xOj`RX@M-OU9z?pE5SJkiY5dt?75ASyb5`PvPRmlj7~DwWwul`qsw5acL* zGQ;7;E6xLFTyq`#Tap&u&fPU@eTAXs>6LQEM=U>z**X5c#S%N~M9Kcfn=2hm&A191 z8&B2?dWmu}@a%BhlG*bkV(U%jQdz0prtc*(D}@v`E#6xv|J6o-=?vqy)Bjof9{p6D zFL9K;Ws%MnrzGQ|lny34_f6r&CPf$Se2JM+a>(eD9%Iyb!`uVr`m1^QHhA>DxDi@& zx%H|v%d-5-uipGVP`kwSaE|8hFRk&MW(Rq`#i*$$)o-xB;4vl4|LP>sCk;DVwU_8N zoS(YKqF_;X^&BqE*I90>`#-PGS;$}^dTGn7DHr4l1kN;euJ1g_d3di7r_R#o-*Eyt zf`<wuZ1a153IFFc&X?+|l<#>f(Ee%zqc~H8A!p4JVU-<^OxWCw8kyxdf~~Wbi~F8) z;qyLse1b`6MqB;rq(ZMLT9ZxOj(SaObK7#P<;3JD(dm3UTnfLbtew#qazm#=qtic8 zJj&Vn;-fVWT+i-E+LgY-EtdbR=aHL}VmN**&@G)UVLxlp(~DCU+~Szq+jvq?cA*<{ zy{+oR$7#mm4=v}ck(%k$GNEHjThGVHch!71Tw?Zl-z(j+?9D1)yZTFp0k;?)x_;QP zm+^AeVS$O6FITPK#P@Ns)C$i}ikY5&T92%Fvw8K`ld|R$wR+1$ZoR*=^06{!<IjZM z9_n|hc(%NocvN%JF|&&$@&ZN@`RezI{a@cqSJc_C>dI_W;dyJA8#F8})+S#~bP))R zNt{@+hU?WjrRXgZuY5y&XDSHs)-QglcI;TJfaC|2$gG&+$9ICaIUb0V)7+wvS}>!- zZ{MRo20}4G&Hj8QeJ0t$GpEg}PyF#PWc~d3lBnZnOCxILJ0CLFv%bi_>Q0pXuUD5M z9FBQ;CQf_io$WPip4yp(nG<^@1!YgWXd9^t|J@U1+_X|K{Q>hr#gOg?q1kHEhiBGT zs3tX=$)vGm_`Qs)3RI0+yFkKmxx0{0@F9tZR)+$5RyD0O_~V-X%uwm__0l_xsW<+1 zoL_K4#zn~B?!M>Ymm|!Uu3KKYvn6*z<I=jMr4yJK#T4f2WL((3tzd$%skz>-=LZtp zjyBCqXerCvDcbf&yEiR&pJ(NRWm}3qHS!8d)~{c&@W?^I>~4!|D$izzCmr6R^XJ{- zy^DjFT<c<qO;~ZlYemr;b_2m*GfvEN`rejmcwLHr=`E?n5+@^e{8e9WeDX5K!AqTt z87E?Vo~&h>-T9jFpM__=jA7+(v6&iOYq)}<Pez^>ZD@JyJ)0}XrN^0FGPcMpYptQK zxpQ-WOtoZvwA&uZ-1R43r#l4qPV=4LbJVj>b5Zs4D?y9CZOA@5Tbyyit+idAiAzft z>(30yT(WpZv|FSWr?-NcB74f4j=2nZtKFg!0*u$iPFTd~EA^X4_G^ww{Yux|W|yDl zYM#15#c7#&Yhtd4E_s>U@9EAL{&m-`@0D_weO5%WEORs1Q_s0>S5(pWiP!DFJFQt# zmhZ8z#5Qlr!%eaiD%+D<9Jr4u@G+$s?h|Y|?J!&DqTqGC9nB&eR`@JpyiwxvLwKXp z38m!uk^adak5q^{)tDL7?pr@)i|vuP1KtU(L5!RebhE0qJQaM-v-8y2w;YO(j<!jK z$3HP^vvk=%^HRoz*GK=<TYq`kJ)dFng2cE8p|veLq$=mO%zU-EzBhMcbqkYigQep{ zzhJJW`_hlTnK&^=u<c#U&MXqVu!rx<m1Tc67nz={6uzY3%u?VZd#y*<TH!LMdG7CH z)fem;^@X=`h^)BFX`XQMlbf)160=En${v@v4Ou3MNpIN&SBSQV&Smoyt`F7keRulC zle|Uo+!6n(7Uyoc_4?Rrx7}B#ov6M4YR}#s?<C$!hllrm_FH|^OmE$n+@Ia%Zjb+% zKaPF<hvkaw?Dq`yZtpV$dXK2>OUlf<l)*Z2{*@^;Sxjzv3%huf?9V1K&YT<ed`l$j zn)&%#&)tvNdagcip6Pk((8p^kOaF*1sL$DxH+P%WenHN?nWg7u=gQe#5Xg-&TbFQX zoxgPWv8P|JK6TxFa;ffp-I9WI#s~6_%gx?eT{y?Ho$K)vCgbPT%J<#A&SAU5{_2pD zOTFOntACc>xh=u6K=@&S>h5jKkKQz1-#m5ZnVGw8q^sty*>`c4S(@eBzah={g_cIV zykfR{TfOt_=ekq&u&uDq^C<XW_F$s(Ill%$o!qlmmC83YG&tQ&eXyx9x%u1G<k_KH zZ^!oTESmZ}U2SjpjztZ2wa4F0a&kYwdqIBTH{F!!if#%lTde2pwX^u%)5%|Q>V#%- z&Z~$DmW-^k3oSc-f7rN<hqI%Jxk>Qw-qPIfl42qn+iJAy8AT=DT|UZdd2z*)3onY9 zcU+8p``Na5$|J9^$Lk6&T~N*G6YZD$tiDZKE%@>3UB?#~mHNjxwH_|B@!P<Be)GFr z_wTZGObg%ix~Wxh2C7RaKd8N2cFb<N+p^2@yC)VoI~gbov6M4Ts3@)Z&=<+j(p=KP zRdq>F{Z_!alFPd`XVy>NqJPLdft5q$!~?dAHt~$>v)mT98!>KFu+;x{r-NndHjR7t z7rl~;Uw88Cp_R9DgSg+`t&;oRG-<i<wwr!-;TLZI>iNOB!K&#(Np%l@(viChntuCs zyt{GX=!Hoq6pvke<#B^|{c8?=k(au+Pm~3Gej2T7AQz*5Xy2yh8)f_w67~6etGBf5 z&|E3t_T!3F-!XSV-F1uKwrR|b&gq^Y9B$+0CbcoJX}ZbW3~|**FD5ScP-cE8>^A%4 zyW)R6-1F9#AM%ZVcr2;bAiRS2LeE;B>pNfacM5wxjY>3(I+uLEzwC6&bBPM0h^HBA ziqx}A-<rSkYuO~oo6#iEQLt*t&+6WKDbuZi2M=-XsH|%$GS%kkyJxPaztH3Ldv}Z0 zC%O!MR)P<?t6s?MQx14{HBPAQy6Bn!(L|BL{HBoAwh^XwGafGdk`<!ty)WPRI2VtA zz=j)^m)}3qQ)NCC^Z!Gktx?bgW5p$RU4(=SLleJdPAfUPVot@owl47t*H+~Gxo^h1 zss7qYA6|#O3|<VP@dp*xF#G0YS8v`C*2MYY^Z6|0DLqwu3?DdGykObkc+{KQe&v%# zA=57N21sVDx${QJv{<Ee<DICtn>12d%RE$77{g-NADk%cwW*Lzb**_G%(7o$hC{`+ zTm9lQCjVY{%2wFY(r15pxAnC-5{u3r;TQf<V`5h?aEBp1Y5G@XQE``~OtauQHLI!| zRs<eo(t1|(S^q}M7WWB)1s_%KJP+#K9-G)ElpP|nG(_g?tM9v>=o%;MS$m#H(>Pfh zc48$*<2|McE4>7HZT-Is7^Y|Mnr_sl&neetkiq)N<OA!~{FN2Lw{G<ub(rAdm&JR5 zhv%$pPvZlJdR2yv57d-@w`^CrbiMh@j;z%meue%!ul2up>i?a;YGi-fPk&$Mrhe*Z z(C7NNH*)(tp4GpTf3xOO{j^V($qO@QF5IbFvQ;_Y+P7=x96wqcS>&!+Y3`zu{r01P z?Q-{HCtqt<<i_|Nisom2;qd;OdUpO^#oJE4Upqq9I=qM~vtQ9#|G0YgPSefd#)orx z?iv(MUM}9}=y>zl++1h*+u6KbLbgWd9K2b3U)d(b+1xo4k?{OP#P$23z2~-ml)DvY z{;$~Me6~sS|E1r5TsK`fO-6F_<ay8h>#8b*LN2CgMEd1tEPS$J4cp|CL6NDaeCGxI zu3oAV=-XcYaEX@fuEc#$R>jmG@bcUi6uoV!YV1jW&6D9-Tb8OMx-OJgRY^W-5bhQ< zEvw++lQlMzB26N-yFSm<&(!9hCp3A-qlFgS>cuN7)<t^8Rys#pob)#A5t_7j3qybF z<b5UUtgU})^V_DXG@tbM^h^}IA7x?bQ}@hQ==9;ROwZ&`!Ev8vBypyyO+4vezw>0u z#*WpKCY=(QuVK8?=ej7D%FL&MXAgO%Tgg0CnZHuZ+tVrdgubz)Z+D`$u4Zo6r|%D* znEce#_tZ7Be5$hA)n@CNC8n_~Q>W}vvtO#ZajEknaqqO?RoR-JxyF&l4teHfNlu;m zW|{7{MV|SQi*<}S^`fpVT@t<W#v`Lk>n_#bI@3J)aY#&Mq-W8m&ks^|uIbd(t$dd~ z<Eqi*S5KC2d9o{_r-swB?9=9oO>_TDnNqSmU1Z9{8u6POy44=8yc+LkG*9k&yj#$` zYxfSFto#)0H)-B9;{csV{ch2zQ}>8Jp3JTOQL}YpPs%=z-*aYNnZ7t(XV#PN3sUym zM4a;eH`~0P(|~``rAbWQzI-~`o*S;D9K7k-T<M{w-uXdr5~sJHmX77l4Np`KUz*J8 z?Q5lD|8v6?l_Q@f3wrx{>6lw?{GxJn(qvI@zo<EL_slqa!^=A@L}}lgC2nWG#<&$N zzIUg|vv1e-ol{bd@7SH6b}9Lq%d}Z6l0Q#-d9_{9*%UNMX>+~ryPuPlpDy2{;#sS8 z+GASJ%pTUsYMWmyzM|rFG|Jn1*_Dz#mnLZ`*X=DRN)>ZE?YS+)JNM#}(^FPIdU$gB zsU96w&ft~HpQ<KjMIArnIrCF+RME0o7dK5ZnYu$$J<_;)nz#48D<)@zCRt2fzHv#4 z-_h+}UazLi|1`<kG<w|}mGku;;hL&9jh`h(*}M$?T&h3sk7U13v<_#8tCyXMq)B$` z)af#_ZoP?D@iY;e6YR8UMVj)|NhVVF(_(EZLvE+)sCI@-cHvf^>}I`<TYYL)&XOfh zf^rw|`x~8&lDIs{Z}Ta86He3PzjReKLuZ<+sw~es_VkhGDy#Jo7LlR-XCn;iGeadG zKUG<;W&cabb4}LSGZW9uat$d~*`5}vuXr=G?vzKBZ&hcS>i%asn=2<JZl0x~X=(Pf zHeSVZn~JgKG#zbwRn@a@T(7n~xw+N*{$brcYhSMpPFd}I?CJ*g^s7g1S$F<EB!BJ2 z>9>Na|5a|~B^rbam|AUcKK|yK+xBI-Kh^3dO01ahPwc7e%;Y)2#iw88C9Y;XHs5dC z?`b<#=ZGErcFnA{o%LhfEv03<*Th}Bw~_ONi1vh;zE_1;bUJQ5Hg(mevK|}3?IN`r zY*zh`dpq84W1Rf>fQ6M&oJ91oY_VAz7s=+cJSl7m=)O_9*U0Ai%ix5l<Esufu<x^! zQBs`ib*sMVlG1aoeQ&Rql_!Vlxn-m$wwkeCOkBtvq2drPv8<=CsjATPRLH8<jc4|? zUyS|`ZD7H=(WhzGqtmuG9tFrq)~^*7QJ+|I!|GYy?6v1oj`Vq~$X)#YB$Jr-<qg~J zF`Q>+u;}lMvTby&bFpb<P5f~ES6ptr`OmVHdZXa;YGPLP>QyJ78|W_fTxFo+Y8+ub zvq5A-wYw6F$*)@N%{Q)H`)8|uG575veItvizO#Fue`(rrh&}Fk^3z1_*RHws(q|Nf z4~uoMTvuB4)Ns|3FN=-N1ibrr<GpFayJnY|D_=8=Hf37&{P=Wpn(KycexcmpQ>T?e z=3TH{YOweIy%^`-hs;{%E^ldj_|@#*s!#9#^RY-Z#P%vK$<E&Y|DSb~{DODu|ME9) zmPpR#*lf3GlDKTW(YEUO26v5PqJPh9ReIN3aHhP?NBPOUGY$eBAFV$%m~UXY`QDvH zygjYAt5_l{yy0}RACt|IQyufxtmS;PBAZ`(1E0Ix3g@q-ol^I%<n?|{64|tm^GW-H zS#AbP5|!65a%D{U^#90(rVnDi;`ev+Ut44M<*@Y{-iQk4#XApLiPn31m~RWUU-PN( z(f7N5wN|Elm7Q?%oBSHS{cG#?KJLHyOzLHh=<5D}2hTtIo@eG;`Fc)5_rnhtq*D&h zk6N2{XXd#XA75~u->S=Hd(=iKBjvb3S^PD=Z*lMBq>f3uO}2a|HTCr7yRrcd|L^}d zzajT;|Nqmo4ZoE+PB!Y9dso><;#s}zKHF;kvv1B_JyREFTwQGX*=V_B#*4#t5AXlT zdGn4jXwJtAymm#matgZ^R5GVjO*)ozMdgIs1(~4vTTQrDFA{pS*eE9cef7O6Q)B;9 z79r-=<l4R2zZ|BzWGb&-HjP~{;_vA;g^9h&t+!TfT=;@TE?-4(Z{XRpJ$D@z9kNQ& zsyAC@Azq)?rFh-KsB4nts~hGP7o^WGzhqw9vZwEhZ!xRRqO&{MIS!bgQCXJr$A7{z z#~r1e_iVaEqHY_V(~y~Kz<!|lYOi3W+tcQ!Uz^%L{h5CI*@=7qzROAcP`rI;*>;!1 zvuCgJe&Ne!7_no2A%kw-!ev$Io2##GedF*ttkg@co-JU)e|3hYpN@yRL!O;TzWe#9 zvYYINNd;$Krg?Ail$8yBzG5x+^6OD4#fLT*{c_!!{a}?~UT;pfRsN^Dt}ldGjI|n{ zmat#r;hXIA_NPYR6qiSRVeT7xC(Gx24q{x}lsr+1^OisJ;nN4UJ@(7vDmU0O@m3Do zWBIIHW!|4=Y;pAk)l+wtZ+pLU$(?(RQQoqhe|>-SbN=7u9NqeNW3#pJmhNuG#m8>l zKXyRkpp4abr)yvL_%phGdBjtAU92ET$xh(v{_6|Y-*?U7ULn($KI!#sKFjvl-C5hL z&3jK@^Zoqi$)`o7_hz0IT5NUw?X#<ukJp@xO#bp`)5W~~`*&D9d}B~wbuUjYKHf1? zWd7^y-p%oPFF)SyE}NJa`tx+RwnqJjPX+$fGa6L2WZGSA|8Fh5x-)N1*SX5&Ojll? zzTADxv#>|Nve&)ib}m;<%yXW}O-hMY2lSqc?KhX`un}9pwY8J2pO^itY)EWmZh&#! z@nAQ(6@i`Vi`JWd6#qIm_{XU~^{3K!t?ZBf)B2=ZwtXktCgtFWL!UjEVh$>_KjYY0 zGrJ`FlE=?Q9F8n&*8bHuIsMD@vGd`r7o@Xe8V!=`wnR7^gg^e_yp1XC)4$czt?jSo z9bUNk=lliB|Ao$p`Z)jg59V98nU1S}9Ta1|b?5iX4+Z)9+b>@I`+oK3`CRw@^IiG* z%5eGN`FvsD_t&p~ZXatZt)71N)`h5NKmD!szw^EP_q|#C_wU`i^~*l~Q5UFP{dxYh zkCBsorKRhqmS;b``%7z2wD#xP(tp2C{r}GKe82pfbM^n_{?<Dkt?Kz&Ur{jO`TxbH z^DX}WeR}XA|FMIo{(rCi@c-(+^P6w{zgfF;_xH>H9%lW2ZvFg!@5B9WcPdu&s`c;x z&s_6g_0#{m&Eo9V)%p|u@4s{ZX6)PlI**m#`05AbMe(c^yWiYdU-jp_!lx%*k4@69 zHVMW)=G2*TUZLyJQrQ<V4>PTO?|=VentG+|?16WM`97`7HLjZ1t(oD-FL@~~;ZMXu z=V{x^zJIX3dE?JP??1Ljnwi)G@)n<Z`+ip*fBNp&W&xjDiL%E+xt&f+x6jUgk$B8x zdB=;NmFcfv+kEGqylGLnlKQIp_dkC*ZrHfE`A3<Ql~&KO)b3AlO8S*&9i|J<vot(n zQu?m&QJ&hoSzqs8c{w*Xt$OCFJBJ&NE)||r&U@EPUw_Kw=Jb=3t-Gz)&#>`rtiJL= zqKSj!-byK_ZS~#v7nHkP?OFG}HtFBlwe1JLv?y7|)r1)9wFvj-2^${gn-W#NXP)EB z2d}?IxdnGDatZ#Sv03wrY^d=qh7BLjoYUEGWVPl4PWd1nvz?U_GJNc=NnOf5`L^Xr z!I8%)x}KSaa}JqEmOhS|tSYO_GPS|-?_?iY&H81%f?idQzB>G0PKKH##RWWYiF$eV zOj(DhPbT}`#evolR$0g2J->cgc9Hb#7wyMb4*#f_wBf~xxop9Ea<9r1H$Cc2x9NTC z?swP3VafCg<y+Ui6C%&O2@&C*|H&;>@KBn|=PmhicZw#N*Yt1tlW(_?Q_y?rjf%UQ zKF;8nP+p=^pEAk7*uzt=$m&YV_lDyuALX&;&VKZ9=DI9{M@RqcY&gWA@k9Iai$hkw zRrp?&{LDP~$}j$CXVL{_<4aPjRJoN6_K0|{dh$ABLxhXtsh<ga(!PB%{be0zO((qE zX|cuJuJ)1ZoIN$d{=p|NXlniaYOZ#-k?DlU@`%$SM)U57h6dEXT=iP;WyYoreo_H% zBND#`?Om;K@!Djcg<eIg=EXd|`e=I3$NqgruPV7S--T_xyVi==r#fJFiO+4@KDm&j z$;RdJpKFso@0C33>T<qFFOEB?|Jf2D-x*<o9G6o0*g9Rjoov=D=_-8t*==2!=lRl~ zs@uN2zE%F<>^#$zi=ARNAFDqc=y3bfOy(7VpX|Qu{q%p$AN%w7|9`%G?%YE~H>S0J z?C)>=|NKpS;trSp=ey@lZ-4Q>vasMsQU3b}sz2-F-mLj!@Birk%!i)?57umt%jGBu z5>{ldIH3FI&$b$;i%uTDTNahK);gu{FR{8m+25nLym0=6EUoM6TYg{m|9!RQes6tN zg5G`KE4e%ONwa+0`8!pq#cpjo>+=OX{M}jUv)WUqsXLi&nxL-4v{c6b$o8lCKcr;X zv@Z0eEa=$cy)P`_e$Tu723z$ruUlB>tkL-p<M~@UXdT<*r+%w;J+53V?ZxhSSd~*d z?W&()MzU_z;`H1L>+H0D*QfrsKk={r>#L{l>Q{%a5Bv7NJnz5z!N=Yk{(nDs%iiM2 z$NJyDe^>8rPx=2|cFmjrs<-}geztqZH{pJ2n(p?Gu6FY)mIpmO;yp1$JN~g{1Mg{> z#!Sg_!I<ECt~Rnx_0vA7M@;<qXFr#P^tvB~7vJ32ERk6kdS-WK-LdGdqxpF+_kH}M z_w+}{^7LiR^<IjbQ*<Sw*WA)ie&&BG!Sr<5?D@`D-pJIwOIq`hhj&YtE#Fyz1(_$R z->p6->b_Cq;<NPNWA(1P70%x*75X?~%WD_!2F+Ji2am{^97+G>H7QQ$q4ms{+McRG zu4S={8n*mduyVunhrthR{XVWa^Eh~-Ly@&-lB4apvQ-_ywd`s2C*Gayw0T%!d*5== zt+}Ty7iB%Qbaz?X@b#G8moM`+J&=fvyxM*;spRmyM_R91825BFG>J1T{<O+4bz<k@ zzb~J>J(pR%`>tK@8<A(-%8Lw-3+!<0O~3b%+wMZvtwTJn2EV>cnl1IJ?)a5$_aCpD zo53a4wen#dV_)aG=a$94OC}Z6=X7Mwdv!hXK=kB59Y*`57oYzqx$?@Z+CIpe*P>4+ z?vC)}sDA!WN0t=HCC{6oS!mw5<it!tbD7f13IV)V6Y~VON^fS$4VnF?TT4N5`_WyG z9aY2D?{9QTo89-9{qX5&A2x-Y>vT<9?Xl*+(Cj1jTTOoHf0DL&!u>^!LuO5b!Jqn_ z3xBT9dsn+>#RYLborL=B^HgiXlkW@O@9<=CKi1Cm@6I2Mll*Z$0sJdI$8S$r;AB}+ z@pQ6A$0WJkj%5o^eBpg=8WVAJzR*`MwvfrY4o$TC7}z|eG5Tbg`^B%%Bmb>9t7^G~ zVZOnNe{M;S_8s_aZ(gLac)#NEC*1!(Ef>2pRj1xd_}J`jT^_sIpI7GRxchw<|EGFU zYW|W(YfpOqJ+$9Px*;Vle#_R$FJdo5e0(PwSSNV@-yA79_1o)(1;fpjZ+ly{%7){t z%B9TAC(K&hSDtRaB_NXUob7LQ)P9$1vl?c-DmuI5<C}M^59F^&m#o|Nm;K^ft95Vx z{mM@Jbw>QN!tMHB#kE>SRYvLa@7p}T8J55M^zDO&M>fneW#D{f(=2d8^Tk$O22;%! zY|niK?R!oCr>oSxni{>y-E8Z@pE@$X^NwshGMy`aU+KU08QHS`)(6Fx{&D~GYM0xe z&5w6qP>m61Sz=KT`)BH$-RJ&?Of_|=H!&=ze?8NA_63hWVxc|%jq7uFGo61r(LBDe zG~{;10}YNHTvBJbe5)dAgcZ|oUYO|c_v?`*YmP6EJma+HOw^{%Vtpe8hE4U+{%4b7 z{vH<Y-QXmk_)28WS^n!E-fYd^{O@>9&c&ae3k-tq`nV(-|Cwh!%d~E<*u3IP^41%< zG-fw#Ia<?Vp2IFDBtA23iSCb$^}i=A)MxnUr}fWMVrju6bzKGtX(_#m{3S;j?53Vm z@TijguxXu!)iIXTt5FW+`gguCB!tZSR#x_CbJxeJ3;VSCQ({lf2|DW==$TNzneFgq z-3=0XKW6fY=7h}-ne;~U38Q$&ldAj2X8&TEB$4%i!;E9Xnu~ulHA|D91-;Ebu%Wm9 z)Y09(dv*6zC@z~MIJJ>&#v-GNu#Qt3)_pvA)Vu#k?M8z@wYS=*n&X!VE1G@a=@96T z`<2xZ;OkfE(sB925*G=L-3<Hh-MC|*&~?Psyp?Aq)BLi1(Z2h0vsX=tkUDwt*`t3) zm~v<CS~Vq4|J~Ll-<EXrtm8_HSfs#z@1K&u|L66^u^b-kPWe+)<}diJ`FG!qo9B)8 zKDs>V?A(5i>1y}Xj<4x$+Pn9}D_y(H%T=$dlf&O<>lJ<q;jXk%3Y)Td+R44@G5(>Y zrqh1h-2PX=r*heXkYks93eMKuFUyJ2`KWdvZu{j#cdrTQ#?!K;JOg@my6A;Stx7Qr z@Y=oU>hto~uJz$R3sWLj8b~xQ@eApl$b4<7v%z)QJ+t_(-Px7;YyJm)+Z&I<zp%aX z{i1Nyv8D2A`>y3ZbJ{08Utu@X`|PHY=v!L?lWTmKLL=urmXL`I{hc6fF*&j{dGp%v z>v0+Cw|p}_C$!%?cJylDYnA2SoRn1ewJ)jIW^(TROQ%vB?P>St*1LzFEKL9Vd5U^> zhgaX5<5PSWZ&aJTYS!bvbJe;N&Z@}v&5=|%zT!gCn#=nIxmTaomy%w+I-lQr_N4B` zdiz64FRjbI&)UBF^8VSZsUPks8O`|djH#(Y-P`2YbvK`Ng+YRobam_GTz_QOX6;t= zzQCN+y!4&?D!wC8RV=Lu=U13G_Vv%6KKI$loWF8MCuZ)>tUtD~Ch*9eo~W5wA#O+K z-P;thp~m!CYLc7RX2Zpim0r%lj*2EBUuTz?-zjpr6k;(WZSrC@t9sWPJF=2r1qCjh zH?Pw>V4swn-2C245j$p0N_T8DFNv#hY2U`9=Y8&}p=^Zx>`xVzbH7ZQ@?BIwF7LRm zS7p<hg6CdW1#j1gEZy|4vb$jazMor#CthIMGFwDR)j@Ajrj>(>=1wbzDR-AtP4M(9 zIe9?Df2+=C-WOa&8n@$3d~BlYeI5P&Zn}F`$ozD%<?-s84Yw_`o@HJ$+3%;kbIsJ( z7S89}O+`OEj;q?pajd4EcM5;i_MD8gQ0)VTN7hPPUEXll##*Ur#!+9T{hF*I9OlJa z9?#N{ldn-fCh=wqca$^Fw5#jvE?TV;tbg!ux1xf>-Up1kW7YEJ6sfiC*r#M{6<N=} zvA21`fl@P-Jriz~oMX`ne3tk@_sqimPS5iTUrzL>(_j$1_t&U#DQD=Vv#HC?&SZpI zYk0LNb-aF5baBP=;4>L_UMs0Rk(J+eT39P%`a#_**Nv};xW@%dYM)bVcJi;r`X%S) zUbA|>^0mFmx9ITua&<={CdFTw%->aYtbBezYW<AshUZ%6sZ~#ZBIEycH%qGO)$}8C zHi=AMS-bz#E9--YmX+W0-*@STWKl~5Lx|x9zDcu<WY*+_MTl65J=hvvHsMKMVP2@n zfxnszb}X6OX7hUpo;ALDSoy`g-EL2Rthza4=SfA83rngaFFRa)seRyA+p`AOt`{e^ zzfbUCPP=<VsJ<jAKgrTESYl~i8h3w##O;;M87~qyr3jw?E-L+?x3JD9cd0htUAcKo zUE#YgZcWWJ6+0fYIQm?LhD*oy#hOPKsZUJ~RhCLFmyw#s-4&H^Z{Z~wuZ6R_OkGyJ zxHNCNYm&&Rk39#YoL=)fozhA^!{s8&*Ra%zH@`ODW`}5aMPz;4d*P7J$Mxh-1ZME{ z=)V4*xoYRJg&G-_fd*C*npz#_jkw)KCSSPsv2q&Ue9z#Iy8;FGU6g1If4*JR|L5s^ z@23pQZUv=VWKK0S-rg+}la<#gyeMd+*|)PMZyt)~Dj%Q2V9*p$VbjOma@)N6W|!Um z6QXCj?r)rVfAg<1t$!8&*8k1>n1AKf`x}Pwij~vcw&?B44_2O7;j6nOC*zT>3)eE{ z*HR@GS-LA~MSt&4)qd8s{Pir$x!Py=1ty(Ys<&UK;7UH*{gvr9+RNFeN>BdiGw1N1 z1)HaDZHYXW`RdX7NwZ5oe!qCO%jlbqd`5W2@7~j<Izqpfp5Cal#qYG4u8_{^`il3N zY~Kuce-@Vab+0<1WE1i8zjA)uIX$0KuF+>d9uzCscd8@quK%nL>RDM!o^_nPxm<J8 z>dh+KUv2&{w{ALLkm>EsQ>IOIF5b7`{+qjp-gdOjSK|9|X7ihWPp)@lr&b!A{_OIu z)^(nTVD_wo5z}Qi&gMMy=}}qn?)lE$GtLX|sGlZw^5}vpxwu0~0$oA;g%ay*S<H(w zJwFD#$du|Ym#<{Ie9BMj<3~m*-me>YQq!V#O+Nk3QbBud!ctM2ePIqu!sa<mnDAYE zOIq$~J&iimec_LO{}#Ki+VH3MMDe=o;+=}R6S8H5Wi1x}DOqGKy=3L4{qoM6o<H5v zRdQqM8oj{!u*)iXu0j6qUur(tqVgzL>D?ukZ_dtlKC^y|X+HRM=fs;|4n3Y(?!)@E zhbQ)NXHeDESC4zXoSedY^RKXmRMqwK&L<}b*!ur>klK~{LTJ-<%dZ@AJLU<hxyTq? z7hJ%~AbN-4<j16MHt9A~EKB8oq!qC5wp%7Hzxt6+)&!M`Kf(2D8mi`9-gdNUUVi^1 z_H`4kIs2Yj{YmF+=|ou@{YUjXo_(GB_U@9)tV)YsteAZIrK4eq=Ap-1U%GFcWw>e4 z%pSRv?FPR~rcIDvwtvB|tooz3vdb>;m>WIgnGvaZXwJW+&nD}&Y__w-6uAf(X4p!- zNQ{o;=UH=cT1o8hxT$j%>HVueb|g6V_rDi`<`WsB>u&H~JhsU>&t>^(?(G+?V!Rr9 zU-WObNh(>{FzYzaIq|#audOW2`?{j=r)I~O=UVNF3lG#>JSyBKleo&<QP8LO(!??u z-Jg=n!&`ps)#<jl`NUCt;f}7fX?36OOzB$gDLFs7%<iqHj8x=VtG2}<`})|A704Wl z;tIdMJD6q5iA3{F8<$%vCGG0<%TJDJNvpaw`Hha5#DR>2q8mQ-3A3(0xj(JYiPug) z@AKAO;a!uhbnWX!tusrfsc<io*)nUkk6xjm|LmhCMcyW--beHP?M&!cb^Xg%Q)A=f zwPs)5%?RyX-u2pa&&0xPw(a|icUGTPnl?%AEq~?BEfModyDpcj7RpDuOfA^*_PX}u zY4d-~d{<GqX=Tgh%FDX8Un^h7bTTcIsQR~LMq;2T({Fw?ewLeeZ`LdR`}0sYKe;Q| zWYZ1T`jQ!p4bR$dGa1Y2@H}EUs2nNXnN*{)<*2<}S!F~coAb3w9)kz@O|4>|=i1~) zKN8$ya=XdwzxgD$zuf<RKM#NGGA+A6k^j@4Lk^XRPdCNQGCA?0a;Dy!iuJ`ewLeF) zNZOt=2+e5K5dE6i=H#~C|9Ohk@fSC5Ru}JgS}7S_%*c9*{WQ;n@|MqYtp24<o~Wl> z|9y+DzE_;)CY8k@(_3XPae2sD&df5}*7ou5=9}MsX+<3TCf@iUeYKrppkDQT?!rxb za@Vie-YRic_`Yz|jH_qL`6dW4#<M4%;y3Ac+VxZMNlByDdXHD~KBt)<om{>}i|Ls0 z?bwg!mp_^B8houXiFI9r*UIDB`d>NT?RAy-zsRwEH@}Z+wA6q9uiFn?ozSnw%(Yv~ z)#^%!=Ymw{i<-ATr@EaD2);U3W{&)B|2Z`+0ZUeO1eRY}%jv4M_T2}Kn)dd-<L|A! zSNya*ayfGDHx-VX2KP<~uui(rlJc)x!Ck_rd6VAfV+UVNn4SK(L(@9FV+)sVYKPi> zzyH%JW*)yB|D=B7f}cMQtdZC2o<94_W|O6=SMS?s+E>q9eELD?&seT!sk==U1}(7T zxXGQ)RM;`^s;I2zgb%Y?H|agEFp=Gy!8M`7ZPxkqkt$j%HyqpHbN|_P`5(a{o)Zt+ zX{)BrG~C1gt)OP_#USsgcQ)Eh7gyfub5i!Tk>bvy)=`(dyA<pEKGj>XF9~{5y5{Y2 zzIbJ}rk<q_{vF_0pCU9d+xnz~S*gH%Y5BSOJ9jf(WUM~#zC}IXe^FuCiFrK7{5tq^ zrk`e&dpYeT!_ApO3e)pA?mulg;d_^T!Nb~aJ`uYelfDQkWE?bk7U1J`QDRb|^ZAnK z7B5$u))%G?W_C4KB42g9vwdt_-*n4rt;>>_zln2pewvnLA-*njWln;y^qlgXJU`ve zw|NEI7TvF~zrL<KbW7Cpdbz5sg;v}8XGE@jUwv45{#Tp(Tw0vZk0~ExUG;R|l^G6e zud5zqR;!Bnvt&}_DgQ;mDKa}g>{wI3;dIi!4KBQFb5lhwG^b@T|LqlGk}&-tr{7k; zFrepeh_0$&f_<p($*<Gfz6ngUmAM#W@F#L|{FmVG&w>iC80sG_nd9y!R#%qgC-g3Z zYf-L6;cd-Hwtk)mi(l-E)Xn_a$$ma;p{J^Rjjk52!$Oa}73)`VnXK5y{QK+gAFDV0 zdz>F_&$qp9i<SL8+g~5wyg2^N{+fAsRftIY{`wMEulHpuXNvL%EtQ)W_OVA)LiWJ& z&O=xFmF9VO3r1|M-u%rgY6`PPlW45O594s_9|uyBO`JqtD7>m%WPUzVrF==jkK=v; zsV_E7OTT~ZYVD;}F*Aeitq9ok^X1X(7x`}@T%<T23FI$Lz4pwDHzI)d!Q{UgRtF9} zl-9CZY%FKVvZiV6^~r`tqV>9wPke2!*fY0S9(~Ycq{rN#&cpN|=VRlhb^d0hOLWdn zs=6XB7cF!ru(l`F<*$(3*W5{U+?`H~FTON6Z@sqr^NRYUh&}NK<fl7CFF0)^e>3{P zodbLeuhu{Q*e4ZpxKKc9`;K~-L#)n0PYd4`&7XNFWTWO`o+S6BEz8!M%zVmOpJ6C1 zD>Qi>tHH|U+Kj)~a@?4gY+TeG+g~uR@8xo_b?vV^9xZ>pC?nU0Rl7^fOkDih?V5G- zRh~>Tp4j#HYlhmZq5}yVjbpeMKEH0hN?M}zW$T)K8~Nh%XL7FIlHuRkpS(MP+n`?K zPV(2@|7GT8^W!hHJ}B~E=)I&mu1#;^-PiTsmwGQL{4j-)Ygx9{<c8OR4^u>}qit4d zhwwh@Yqt?~{qgGO;@KC9m%O)scJR2E^p$2=n}CB3rH%}lH$1fM#H->QEQPMr2P{?P zzt0$YV$nt+@xL`?nJG7uVucURdgCkd<Z<8fq7MsCCs*`5n5LrbarNK~Rz|sn&lnf{ z+w0rzUjKPH!|Zoa=U=ogo+QG4zVX;yxyVPWs`gy&vMsQc@BLx7cg23gxed8u1^1(S zKD!sHD;>WOWc$-niqY5V-ntbQ%{eO-S1gEK_P~s_)NbF4KAEQ*MPqJG=xw+%Io^DA zr;%5HlcK=XmESFXO3zU;zONXW>(Xu7^eTB<mSWhQZAskq(%xSS^h@q<I9D=l#&3n0 zAzS9i>70E&b#-Ly_s5!_4n-XPEM0qNR^^Njr(V6V^jPnoW8_;f(WdISTE9-0+df+t zc5Mga{xvhtE_CFnabi=G*$`###^0cHDbDcyr<vuol{qzR@@`E3y&^VjJ2$WEx6-zG zZ9hNFE3U|o{&4S``O*67o%0#3S^nJEn{Y4M?bfO^vuLq7&GN-Qr`F#!mi5|{_=xZL z^KGK$rYUNNu7sc4=zYp~*4qiy?`FDPJ{qttF7`;NxZr7J`GBq4FPzo6C{@QaZGKFc z_wzrQ3{&PTFQ}-0c|GB|bJ)DitB)v5uPG3&bbNL7kfhVkSi7Y@qV1i!LiNXjM6Em; zCro?&BB?;nYX7SSvA*5y$2Y6&dK_`&-Gwuks+cP;?Vc)h?EAZ`&yrR(yWcvr_~H6* zALUZz`-LwGvz_XB-ZA;%YxAyY554#I{kJ)MR<F?Sx^PZe>X$ux4xgP@v{{?E<!N47 zD#HgJz0Wh__lSwDd~|HrdY2`3#**77#nqpGcWYPW)9Ys@>kBFMte<|Wcv|$Y*p$;# zqa|(ie@@%|J~S`&!Gp?}rj`v3;mPJYTD!W`Vw@gIuAFw|ZTN(ONWZ$pCpLcB5-j}W zW5fN-ZI53Cbf`WLusi(5mFINLoG-2q>;u;+_5b6^I`BhFy8gbE+qumjBX)MrS#R4| z<6pj~r~a|Fv32dA!wQ%F>b<q;Sh>qhYTeUSQZN6_|F&<Al9t=6j*~m5w5L~IOKE!% zu2BD*>%gmk73wx3S$+$DhkD<9I)CewSLK;TWiOxWF5Ok@C-m)MyTMeYgy}`cF6sPS zRng>mDfw3DL|(1Na3;T<KRZw91g>~?!kdx(*pjvD{I#@%_$@BYd%d+-ohihxZKk8G z>EttJlJz3V_72GhGG2<`^=-Lav*hDqr#GH)t|}JI;S=-|&v$G8=Bm?KG0UflGc$to zTPR=m@2>o-A8YzHG*u^dAFI>TfA=|Z7VDf<+xBxb{rzm{7xGYh;`-}cm-1!*-;8ln z3aey#()j(tk{j=f)-S2#5;R-;dgrzeUfr%|n=`gO`v0S`e);Ca*GE}qzLn~ZP_o=> z+uU(kbrqXUR`2p+jx9-Qb5F9K_X>?z$)z2-FeWr{-S4vf#=eO%M-SMyE}L-u@25w> z^CvEwz<#m#f=Jq7HLod)G@pF^#?zE8zerPLPun}mY!>Z<dxh?Ji{FWVZ(8K9>i2n9 zeB6yU#zM<01#H<1t)%PC0vCxC&boeESniQl%%_7pq&NI=kS^S*FL|4PSN_r^uft}E z*m|2E-BxcowNUos-DA<uJ~xL~C*OCE^KyE2t;K8MLjz+D#`_9VM|;w^KS_1P&UH>w z;G1{&vT^L05|QwE2et&&RtPJ-Uv^vV3a@a2Nz3-xrjOV5E|<M&E7*7>y58YNuHIDF zw_8OviG?U0S>t-}xQAa(hx(Z*C6;I2TkoG<Y<uSYZb@BLrWK0~LS~!*ZDx`7jNWwl z&4i{JhPg9q|14MGxOyQzy*17;`2ME%E-Wv_uN|p#)H-xIdC8+ilf`U$*`!X1&rD`1 z<y6SN!<c;JU#0aN*3M@~wplto&SUj{EO=h~*q05}dwic*U%78l754qEjY*Qt&Op_s zbFbpBU3_TFb-ll*bj8CPe+nMtmWZtVKeIz;{^JdaimNhChKM{~D_m*+!HV&?G|z|0 zI+hak)3*K#3@@L5y45yGzo|d*rgZYA>rdadzqCCk+_AlS#?|;HdH>f2lfBQEKK-1> z*C%|YMoPeV$FE82l6)9U5A!TcJ?j5U;LVT3-MO1~t6%wQ_@%$u(Dr4_6wUWaFSNHE zRXS@MoPEB0dFP|<UzfKyX5MnE{H|iRPHT^Yx24oNhXeK7s|u5rJSzG%^YYCfrLQJB z-8;PN&!^|iQ%=9t&zh)G%q+JoGU@vN#@he+YhwO4{r~sVexo0_;eEJYXzHukKYo|q zk2v93^3q)F)m=T!Ri-zeD&LP-QU3i#k=@Pvms`JQ8`Zfn#l~Fn_g|>(+Hslxe5sm^ ztdc+suWQtY45oke*55zYxHD}KiTqys<RGs}y!4mPEKTlTc88o?{B@_uMde@BJU2H_ z+kSuAt6Duzm8Cx00%p2TnozD}pWV}}@y@hDtSzB$j>e4Kzh{0{O}iayq8Y5Pc(YBd z8I#h&y+Rf5dk<f%P}O?YGb<u%p3K^<tmpR3o8Eo7mdU$h{<2@QwY%$oK4p%XzEMv3 zpY5l;*0&!;e^=gDy-bW-@XKS5DKZ&y$0v1`ek)1ixvw~X*4!GdE1w!O{y#2pWPU3m zVygN?NjYQ&udY>H*`nlB?kBmc?DUuQ?bPNyEz`=-;P!I1>B)!rZo&+wYfIepIVvmX z*j;<5to7>SxoL;OT?5Wt-Vi!5wcd2PUc6}nBa1=gpF?LOSJg_tcMn+g^1>JUlh&u6 ztlZ#s^vLbAG7U$Tul;v6eUGF{`@B8H!K^zNw)8bK##R`%*j#P8e^|{zp8sB1;+ERY z$G^O`SnT%C+Vrr&*AANuqc-cxe;*|*SjrD7H~PFS3_SeIn!|9u{szrTi~pzOwCw-Z zcOO67@ibh#Ufz~HC(!s+V`RLOnvVH(?~+}6c=XpEKF(X)`F;A%p2~^tz88h=+HVUI zeE(Kcc(aR!WyJBkjPJP-zjnGi2P+kOi@piyE6Ql+6MlA?UGB~@(Sy_Fmmj^~d#okq zS+_+g)A7%rrEH$9w-2jymHS$5oVe_K<D5&AkJdNM%Mae;8uwZ~aAN<bu1}h}-x4i1 z#01>G5Ph|e@q*C|#>hWY{_9-oPu|sRcy#-muKZOOcU)R7_u4&YRr|)pd$~(iC*Lqq z|9I@nbm#ND`Q6)I8HXt9_C9#TvFFiyWt+My#=MJ;U-su?>RjU`H7)<!;h!b`l?Cbk zF4=BteNVnWUZ4LtL`1vY{p92CmRi}b*<P=nUu+_%yR~l(LyXpqIpSS6ltK=CSk7iQ zck#g=N>9ZlSF2x6yv&#CZ?fuIW_wA&ua6hDEeh@F?TqKo^U=-8^3i+OZZb7p+Bf@6 z*Wc`%-!piNx!t6nzS+J$e*0|MySFyR2CZCHGPl&~-JHAsZe{JOpTGX{o6CQmzu9)V zqW0FD_4h@BeS~amYA&#(8C*%Z{N;yZZ@N*eobN-GC{3T!md`RnepsJ4_|W}x*U@cH z&b){$zi9WpI=^$*27brf$RNe*S9-Z#?=+p0^U5tqbalp}ed}tUTjknb5xHsgKe$&V zE4Eg9f_sw2%Bbn_msVxj{#;NmHMzR<ulqu~R-e_~`zNl8oF2c*YuA;h;u}SKH3APU z4#;o1fBoovkBw_i>t9uwy+*xG{FVAq!PhI*uj-r&J72NwCrA3@&i(wSxwPKh?Kn}< zsmC|*pFm>4O;5Y3^QXPPcz*k}B>mpY10o;YpWMrcsT1=v%P2YdX;HX#`j-zaC(Y}V zUaLNp?UXx`AE@`ha3)jyndwc@Mw<Sobm~3#O!_oUWXmUId#`ERRqlOr+Bc~pSlj>P zoOwbn_mk>`3M;q2EK(IMH94E;^jxts`pcJY!!rgZ)!S?4-jbA?dSq3{Z05@CMeAb> zw8hVyV%=PHa1E6C*>qRJw*5y~{?CuB*PH2~==gMLQuNn|xih}STyWhScBXm4hle(2 z9F2Fcui-z(eAjsM?lT|mixi$)bM|TF$xru0iq4*S_e`+H{PFREyKibk*GcEK>fbM% z{HmNYZ}u6x`NuLRGd<n8BWD?dTFxHVShJOK^Ni-X7W`7uo9#61lWM-cV9)~A-D#~` z&zZH<hp)QrRa)J)>h`t>yQQujb(59C6kcjB$qBpeEwH8Xu3hh%vrW%-cHDlsVX8{u zW~)lCh25R?m!>HeN<aPS`M$Pp*?eW8_bJSirY%o<={hag$>&^3-J)mVlkL<5Ewmfg zyvQ`4`1{MtNiK<rNlJN>!uozbzP|75FIEn>ZAmpnd#meJZ(hx7y<)cP(!`wPIx8X5 z{Zdw4iraOPCcUWkO1c!oYPs<>|4o)Ntp>%#2F0t*Urh^Gus`pz@Y;Ya99=EPY>v6# z_xxkOW2a3uW7Z7zqvy*EOao>}*-3LPy&?QA>+l!$WE<b|d&-NS-7ma&K2)TdukqvV zYbW1(?4R-X_#vli&3bOr8GHRVMNG~*9Bi!pGH$2l2_csmD~`&azY%J2cGic;Z<&39 zC(b7bxHAelCz!qaCvmcPPGj&9d8=#n4?ZuQGig)6y0}{!+|M?hYMRO3mR%C`XG0!$ zPgk!*dC&4^E1yoepR((9iDYcupKP96JA`D9C<;_p)Hc03GyTf??Q1gX>yv*aKKs8& zapkc`%tGFkl7}b8>YB{3mg>pSDm2@jpmbWI`&IVBgDoZ!H^Y)lG=6l+8}TnS-_hYK zp!0FvBi@gnq=OXB7Yo!rQn>u%=ckJszexXy_|>bNtbFpE*}s@wr<QkqY3-X|apGj| z#@f93!P0Wo@_sU=Uzcp3UMq7U<h)}&*QOmNQhko+7)zJC1a4EQIuN;-bBoQxLZO;e z(D-M`=VH6k)a_XxF8#_6`k#MnpYO*G)<w4*UhFJe#kO+)@hiWsG;C$K;&mWi|5+Mq zW;WN}F6Is&o!=^4qD!0XT^_ccUwR_&L(suE!A}~uv|rhV1{~JX_u}t)z51F6tNtPF z`dB-T{gXtC%w#Q8?mucfto&lu>c8zqC3oj6*7~vSg80q_|L#0nvh%O&+POmK*J;#g z^Q7C&u?^jFHS+qt@T<R8pVsfM`@q_s@l!qi!_A0q7sao<HtOGZ!K!9UZQq}~^!P11 zdfxWf%<ww-wZq)*dE@q9&se_vcD_0PR$1=v{d#B5*XMgy{DGWi06NUzyV0+{^X28= z%D&ed*!|zo!vEqB>@b6GJ&N;+!|vPOssEbweED5*{VeNj`!#m=Pac2uE9Xh>+iQH; z*0=v0|Mr#RYh&{9W4A5bCkI{oe_CAs!~1s+5BB{NxBqR;&Tju^pM{OZjoO{tKMP&| ze|mcT?sj_#>(ep+4_C9TvDtrT&G-11$K@Wmrhodi&-CME?kDE+Pv##~iCCPRm3v;G zKhEDtY>VEtAD;yyW~V9KU)i1g!&@NNR!QUMy#GR>mJhEwq_5j}enobY$3~r#Cnr96 zb!*n1bb%?EyV<kc?#qSj&<wc$V`CDVt<@GogSs_4E__dTcI};9UHJ{!;vdb^e^hf^ zlaEvEj5DeVpZ<2+x%)9Gug@eLGcJx`H)&Y0ZBOBjo!houD?X!O@P+m8SH4W41rJy5 zH?3f`G28f@w|#;0V%24{Wz^TNXAnIWy7{i5)bxZKW|RAz)#|f0+*;svbY^z1&7HH0 z_br(J?CDY1g2k0VF;a^(zWv&DcaK&69Mgp}H-sD4eLlw0P=35dzJHcmM`izlEsSl) z_6oEuYg~P7>ERU%gr99Uc&plQCvLh#K)>;O!RY<Ghc90I_KhKAO?B}m)esY-{l{8< zytUIvI#`txwP>DF{d1ouR=aj?ytr+r;J-yF4||(p^Cs+8f45#$*w5ERRxHX_q3!;f z#^!xH_u1^tn6qN#%?^i-pW8R6pIv%&x%In6rS5x=n^~y#Mz67M3*CHfw!+<L-jCiq zhwQH_hfbdo?02MeV^#Lt!UHdNHGNB8lNGYj`rUWK688e`6}tOEMQ&`Zzp(oyYq{v{ ztv8<kl2*u3yL<M}b+s+svkFs_Wxj2%yOb~YaB+f#v0#Vk&n->Ch053T+Erphr(8R8 zUUB9!({<m&&Hnw~zg=7Y%-VnFuC4C>zwxJig4?21RTG%Y+_G2X@nkdKm+sfHo-JS2 zzpX6!chstgXWv-2YnrSJ@01iaNxxCgbSr0-=2<n*n4_npg}(8u@$>mJ`FHCUD|<tm z`+;UlZf`%tFnxVk*2C@JBX8Dg|MtI8U%fs~ZqJ>&)mu0H-&g$G|CN2}jXKsh_EDb` z{x`lX-%-9{GxzKN4?ZO1r~a=s|5IOYfA)WQ_@8>sKmP;1|NqOvl(2u>{`!I+kCsmr z_z_qC(_U&*>iYkOo0}v5{D1J^=(~6S^rqad{g_n$oc(da(f{GU{&)Rf|K<PH^p}73 z`$#9${r&&+;Jtrd|KmUY7yTcv^q>9j|AhSa4?s%))ZgaXyXlU-@sIxpA0B+Dc>VwP z@`pzif7Qpmd%Nz(e<Qmsf9r}5zkjoP=fvuF%U)OgIrpGG!IzC8K}32J*T&TRHnrR| z<E?@Bx6e%exc!VQ|I^26HR6s8lLhA<JT*W0lUwN9mtnnZ?<YqZ%}Yq?)Tj{5O<;S& z)9kSN*wW-%d9#0RdwHYYpgwmkbHPCuK6f|UtakO8UK_GMd9SKEYS<oo+T>kd&+aIJ zU$r`+H-CKGzE-|Hy52r&uKazuzZGR)l6QYgu224a_~NyH?vL$zdh2sSj<Vh4mA%I% zYJS~r)r^K~7i2bcHC0Z2|FLsUlj*+QW(+(J&PIIDw=K+M5C6C8aQ9Oi^Qr{KJ!{0X z_-mxO?gq49yj&l3_a1LQ-?gq!yq~3yq_8mgDLLw&zjO3%vd@Nt$z_@KR@$4A?jKqE z*Hd<LlKJDsOHy91be?OtLFCA$%DSTmJ2~e0l?vu>d%jabNp5b<k%Jt0KUU`c=?eI% z^WyHNg_8B6t;Gr}|730c{bj+k{NDbD5lrUE0^8#j_-^QZ(aW385}aq9b6}0M<OV^} z>v4SxURR&Lu91*)|HHATUB4OfpA^=g+Qg#HAIenKJ9Wk<E4w?d6_S@^HW=34y7-`< zQFeac88K&v-PdAD&aADuwEeHbliFu|(pED=kG%Pwdt9x~V(FCU-wRe5-Cuq1fWfEh z-LqDUEK6gsSesqfp|rs&;=;AFJ#88bGr|_`v)nTG<d&c=siKp1^KCCY-EiT-*)3BA zpC{LE@$0iN*J`~H{NeoR$0Z#r-fda<Gg;g?+9YB^^N|C4O`C7e+;Oa?wUW^{?eN;A ze)TihEd4J&w_SYa!D`lNUIxrJ_`VrPU-Nk(#N6ShIM?W|<p<{XVwXB13#Y|RIeYol z?)F#acRic(4=UxgEX*%IuE_oDdF<wEUvic$aW+!lZ#a3m2XFnN<{NX{K9@}OR;&%$ zy6I?8a}meH7uqH6tgCj;{`kVb=19%deJeL<`>u-Wp1L>7%rC*>wSt|l=$ac7#nX~6 zsO~#BM<Hu@+t(F0ey<K&URnI{pG@}s-(@HA8ss+5UT}Sfm`#_<9i>B0SKBT~xwx{{ z#Ls`R-GU2W>{iTt>3dw_x=sCzo}~vb8G0-^a?G&m&$hzW58v{9=iC3>TBs_2FEL?$ z&A(lx_jdf^l`qe|{zZLN$rq+muism({d_-ee%zj8;S1mT?drSUd#_|x{reN<GmO>l zoml>=Ge>b%?KPXs*!d?XIj7xxoES21|J1ENZm)Rv^61a=o0dJ^*}Ot--^8sSd_$Jk zSJu_G`Cp8C?0@U*>agZ#mI}<Cc5gqp3w;V}U##8ZcGoJrnT<>Msh-{n-IS?|mKrN4 z2bxGQ*{;}BQ}ReueomG8Jh!*o>cskYeRHs_Ev~w_puP6E@zKqbyI)^l?pu>ld0_j@ zid!~$b3Z0VtzkbD<xqa<#fMD?gcqsLy*9I|Yg_$7na`1%?`F=4{S?T}Y*M8z|5<&% zspZ3mj<*G0p5~6}652OKh%+ev!j)M`LDIaxQoG{wUxdg1sdC?M*Lm_s>#~ROk7Oq{ zX>v3+YftxRzR|7u<5YB%@b)A_lUrZ>jzpN(EsZaKB);&Vh(|_%ZSb|<?0<hb`)Gc> zC%Sk4GQ*Oi^%AqLyDUlm*mvtqmsz}UN-X2e*W16m4x7ZOF8Hzg!5c1%_{%?bO=A7y zv!AU=g!A0OhR-t+UUEj<6Pz=@ZPLjCG37eJ6kEodmRlcnh5d6>{Xao9)5X?sQSzZk z{|9gGR=;`}w`cc)@_9dwM$T&ZrTcf6=>ERUn!OG}dg_rMyQ?<TyYN4E`MFM|Y8Lxz z{*yu$&I0>al&e)ek8v<+RO_AAd2!#uNwtBW&fb4<-TtWltoD5~+Ra%?;~oCCz1Xb( z;&ZxC6SE>yy_y9()4AYT%I;?_T1(wmx3t^mz^e0p#eV-q`_;A{a?yVO;=20B*XdGk z9eTc{&zjmeW9oL3ThWHMwqL2gzxKs@-LK`^zpA|@_J~T<c<;U6b??4VTpnxOy&(SW zi`vD`&d^QkNqT%eH*k~d;;lzBqFcnHA1rm<aD!=@*uf<3h^Q;gy44H5=5>GlXM9!q zMAe+-T_6AU-uoN8=eP95)Ap*aLeuOxb@nd)`CH}Ld)eNHlO+yYzj{CU#rrOeo8t9T z{`B4YqjG!6$J$AoJ(K^d9Q)U|;`!tS^U6&Y`6s!&&j_uZ<#F*?>#QHH$puFw{8rk# ze<?q8biT+m6ZgIui-V=+D<3OA<+?&--j&_TRrZTN@*e$hE`!JUq$!86b7QCRqRk5z zY&O=r>N4A2IE9(<rsP2*kqvVM%i5WCryntGYpTzVxtLLFc+0q{N@IcD@{PNb-aNn3 ztbN@&uwQ${^EnI3Sg$;HvDKU0H1Blf$G%_1uJzAb9K#bn%&97OeXlFktb44WuxJ0C zc|Tk?zwErZXTitHq#E%fzP1N_^*Ng79eAL+)lw)o?$Qspq?+j=MJitV7M9ok>@%<z znz3KyOh3!B`uc@8|4g58R{Pam@xAdEJ8BFUX=}agUwZ41sMyDD0|^eEZ7aV!e7U!5 zBYV=DT&Y|Ix7*9)m@YccPE!@wd}-N5wxlh&i#9u)%3L?WQ?v^#_-xe_iTjpcpLhM6 z)uKA{@0DeOtVJ$c%$PTt-3~FDpxRl*<Y+7V%2s4=dB)$?`XE6ypB5%z*+VWG1{WXx zS`bvf^OJU+U~GGkUwnaTpq773snGrxu^RUU=PYd4?EHg=)y~@FTR_iVX9*rwHfxhx z0X^SlEs*10v3})~h$(xPg&kWoHT%(<<byZsmm1#bH2mXLaF5fXUe)3~%bfR|!rz&M zkGE`|ci^V<udCww?*-TItqy$uzGeD(CjI?^{K6Lx=Z6$2dHrjy`r-WL1OKes_Qxh> zY3_Y?$Io~6p(i^#dm^5)TXfY-;ar|~aoVG0U-xVk+U~eaYt<F68t>&wJ2!SOzSSd{ z@N>fU;~VzK%{`{MM`gxNahcqF_Q!%&|FgDqvOdc?`<eZAfZ2^{{@b1~?vAd%^Kx_P z_eV#s2^hx|il<~hsaAg0ZpQtuw!S;>Rj2k7!*r>A=Zd~)gtu*BN_xlFrx4oKroBDQ z$mZSV3*T-8q{KXlJlUf2@Ts@|?y~34O71Us_anL>CTf0bfer7m)I(FNqcc;vju@vm z#D`jm{`@m-d5d|d&6V@n=fD3{J$+B5t$yAbhu0H6F5dsCcG34``F9)6-kE#LQeSP_ zk&@+AOud#Xe#TvxSh_S<RodM$M2)ZNyuvyT?^C+EedkZdg=J|c+MIe&eqwh&&*^uq zADdz{e6{=R?KgT(2>sn+sk6Au?V}j0?h-Gnxbr>5Z4HUvs$XP2em3*`Ew;n^kHuM( za$hd1zscLNXW?71Tl^RNe|b4cSWnll|Lr4t*nF#c#*KIWbz7NtXIqz9XeK+)-CkMv z-tXp>4*mFBIkPr?w0k~{-~QbJmQ!t=*Q+f1=5-f!q)5gIYIo?T9gP&Z{os^D?ztyo zH})1E?<-dBle^3olQVm*$fJk9OT~WIJT@p7xaY^|!BPLl{>GH+*QS)e_;jsYGqXvc zr-EH)PMn7D_b#?eh63w)+mEdB-oN!(+C|2Ir1z88XnrtVeeT5e_GR`v7s~vv)cR&S z|0eVIwqmp1iu)hL-``l0(R0D_!kjX7hLdY6&8mNRa^8x3cg5*i-}$3g4ZlymDE`t& zv6}Cn$MoBllA%AsE$WlkRjB@vp6TD4QC=$eV5{$~q~r>XJ;xtKz0LHRy@T6i<uV;( zH#X^+OK%0tbczaIr1Jb))#b`9;R~ilt_n4|le8f%+@skhd@qwygut;k5#2ejepD?l z)ij=xuKq;#`1^cLvDF{euGzMuQDvn<yH%0T674$cf{>b5oAw&dE%aJm?`^v9iuJCl z85}C1&%E|{34F~dkP~D%k}lOCbD-$M%p-NnK2GmzJiX(!NBp6}ts17={~TEUMD%u) z!uma{qYq2p{W15l&d+mpYM~$ZT$;80`Qm5s9xFH9Tvn}Edgarbm3OqBzW0(|`>AW2 zh0iCg9ZC)-P9I$U;%A^va-LwRWKbSw{j2n>8r?$=A33(n2r|&k>90-O`;kX%ZlQg} zw=+wpIVi6AsdGR)ILT{kkmmb9Ee)Hx{HlYKN@{=gyomNa!Yu7kcyVUknV-(y#p1SZ zr;cuO`!R9CPxE<a_y5`aqw9&X;kAG%nrF`Qh4nmmoy>Bdo4X=m!;dSXvaGq&_s`+h zxw*2QJ6%#lcjKJ7uTA1*_C-i;oZqxB#HCtH_-y}~`N!qEmy6!Gz|m*^Y}wVj>n(g9 zmixZ3T=IP7it=vmr9LcvN6$0M+|SRo*>C*TIla8%-G-XGN8-Cuob^p)YxSdAR?10g zr5d@hE?tsh^J<FNlFcP{ZFQz^t_U96HaBg?ouhL<OVsx_o>{@js@6ESj5j@pMf20q zwM+S*6!q-+Dlfn3>*qe-BF2ugjTPZ1G=&_0oe*d|^CoT@Zw0e~jHF1ltgVs#>;ASg zC6D*(TK`kwSS#Iq_oVwNS?f(dBX?-7;asL0sMh!GT49E2klhK-^=?8bZyKH^#9r;Z zP{ix<D@5d~3TspS-zIGZVf~yFM>bx)cq5g;J&=7{-B&HwJ1IZbNH3SQQQLF**Vf9* znWYswY7Z-_3EV30v6^a_u|Bl(+YV{Be5>%@&)+f^U$*JI_2S1e=?PVfO$#qp-d2(S z$r@L*bzVw;*MCvjhq~*J-^{r7A?o?tXH!quGh9>^=AO0OccPBN>_hdhfBu_Yxj;}V z{?n=3EFS9OTQnK!Q!YpyeQ{9!=kGcH?WQ06Bl4K7{>l6O+bibm`(OUskL~n+yL}G| zuf*=|KJCVE!{Ywk<IBIe+GKC7)KRXT$av|wdd;nSv(~Amul{PR-%<axkB$H4@%^7X zpU<#=DRcTm%*B71SN>(reqa3{Uhr0Z<+1q>;y=15JTf|TMAekH-et#KyY<EU`ww2( z8LTE7_|z|Yb#3t-C$4&5#fG&HZnSx=Po2lOXVC|@8mSdhZ(pB2efe4B=RL)TlNF;K zt8Jt#x9qZxbF*CAydvcazf)o1z0A4suO~DZ<?T-9l?rTeR=MXEFxTYv@$j|Rqqy&! zcvJ7DdqU|-Q;oDoQs(_Rrq;ca+4?1Gv)R&>9{H6j-oL-+VRe#j=#yR^`D1Byxp7;g z#h)*l8eeI(Jj-Rz-klYPXA8X7|F!B!<>%T}S1fn?i|^T!_3zfM9e&#@Uv9R(EuFrl z_U4XPE=PUrr@R*^sL@<-EIe@O>+25R@)@_TEe;HxQ7;~*Ep;RGv+w6sm33>*9uR$P zJil?;;$;q^i!1})Z_V6evCnV9na+-xSJZ+;9tms4u}c}wjos##yv0Q3VdGap%|J#+ z&o6qb{$@X3b(P^(o2OlO8fSh-f%BdpA%~wG6<t<q>i0NRzs85rc&^LCYn%>utlBOW zUHx$NuCZ+H#RpUB&F&vB==im)&rwI=Li_qJss*e<@1Hz7E83rQT(v>HC?dZ`@<QL~ zPmg}R+Ocv$Zgukh<0cmCXYG&KzAj1NLhTVLmJo-A1Mju^0zU1kZ7kAQRd<osW{Uf& zeL7COC$=|=X~^^&)-)t7SgAAf)xp<h9N&`{eRUIeR<6=|y8iRGM=kXX){7t8H)(Kg z<P5Ip6XvaAjlWxw#LXRb@oK-(i$7mAA5EVzYe~?hk9xmOY*&hUYtnyzp0H=a>5!hU zc^~=2*rVsJi<>aZl)veO(aA&XLL&V#>EAcXM8!S6$J3I}@r1L6eYL`q?fa8jH8j6Z zf30@jcWD-@)T8h1$Aj|amo4@YuP@qp`0}cojekrJ3O7!2X4VZ%n<I3lb@s(}jZNm# z>!ovN?)7ZTet0aUb%mvp>AXh^f;_oRT$UDpklQ&!uA#QjwBneGhNRO;{h%73#)zp4 zQ*x^<WU>Q<wbo1JXL#w{f8#$}&_QO}gX#RU^%yd(`R+xsY?BLkwD@xTLC;C?%|Gf{ z&ia~GS!Z@>Zjtz+CbvW2i<;53%5A+XX0MpJ&+@FR?9OhZIR<x5uChqkH(%p)baS3! z$ea()O3t1a{v2?8ukEht*trXXE`-{ieeTYz|LVtM$1OKIL?3(pc>m;K)XTr=))JP_ zR37SizgeXo6lwA%u%zJ8k4f)tl<6$VdTYq$T~sfB_DY4<yUjD>j!gQV@2mfeJ2dUq zNwaG_6V^z6h+u8l*yY%?eBs?orV%^uNiO-4nfmD6rcdV|E==}FlR3qFdA{%w>+glO zN0sZvJB~c{bNo6>roNNuj<?0q4i1}Zr(V3f7xHCem|x|GE_e3xw_;|Cnb@q(J9yyv zOxBJW>C>8)mevQaQF-wA*!OqMnbp3RSZz}0P4Tbrl6=Z^PIK}5@H2bQC2?yMUp!lU zCG=m=?5(TzZTuR<cJtVu&)x4FQ(qZ(=J4cd8_YXD(c{sK_a6){1Rm3=JT%+<ShiiI z%s=Pvhd(7VJiGHp|JcQ!7HO<q=hC=Si<Lg-HN@T%S)@9X)%N|yiu#fn8uPYFsVgj6 zCH?osmPy~Ny3gpwmma-jCvpFWykGyGnfc$1KJ#4L8J?gPck}tZwJ-T5on9vMWL0xw zztD5bX?xb}xVtq&`{~)amlT2(1lx64cq?rtUk&^qw(2bZF7NO1_OllR1aorDoOj>D zGc4HC^vSls5}wp`H4j$%ZIyj$U$2?}>x;`vjft;3R?m6!*~5Ncu*8;2GwUaZs@&Qs zboANn6p^V$#uH|}Jr~-&JNw`&zS`(r+5OUQAG6(8d^6MW{FW;V4d>4O{5rTWE5<`> zqK(6|WraF_x34Q_zP#$swuskDel9Dl)jB_I^0YfuY}=L_e<=BBDKYg>+ngUgmj5hT zv+B3ZJf-(wr+M-xv5XSw+1r0a?t903KX6{8m0Yt)>YKt{$5baXS8%CL`VmwrU+pv9 zrnvB$k6-lho7~GP%GA=8<v)K?-0E}U&7U)Kc+O;`$j|?`sQ2n${nfwY!@k$AeOK>! z?>|$`&BL$Xp5DQncI|IGyMFNZ`n@-5ckcS1Dk)#Mz5bLv^O>EG#diw`UTNUS3VU(# zboix<hs2eiZIhH+eCNrQpo4B%_1W=ry4g8pzgR6%cHoJVWm)Cu(iXksp>DU+WZoBB zukJIbtJ=9a`@`Nk4Tk?W8Xp>^8J>ROx1zfFyZp-apH>N1-t}bl-?>gI?)!Wuu^{<h z7bfv~HFWN>-m}`Re(~k5LQ{_S<p+P6T7R(6nR<5Xk=F?}O&6Dc2wZBs%{*I3tmV<o z!fR9i#Gm{RCZ_!P-!q$WhR=>2Tn5hn-oKaK=W*iy;k(n>wSVsK=`T@YRi2Sm##7Y2 zJksRpA9eq`ES_(>FHMPR47$1Lcgm@Dw*AlEiupf~*(i5xZlkY!eYyU_T&az-JugUJ z{=+k^&|r6VWgzEKNz00*M_AU+YB;_^c*eSR!|ISMujRgbN>^p{=Wu&VFH1eRp}F;! z?fm2g7bID`q`sF`a7(z}Wj}s)#lJ0ndkX&9`DEN}zWMpsI@6_Z&F9_Us@uJD^X+GS zc0o56B;Jyn%l38V%LQde*WA>tzg#MR;ax!3%u711&$l?APk*{i`|*W~(_0F?^YV>$ zGb{92?_RFUTX`gB$z7&ZZU)*LCM`S9v|^#b`CjV<KDV@WFXi^XD{1+**IIg7?g>r? zkzkdSf84e491<Rke5{r|%h#$Dp3AFd`r39h@WSU~eXfV!RvvyRp<LkX`s&uly^Qr+ ztyvq6Nt_A}F#i@YL&w!bV9nErznZdJEuR=X)O#)Z+M91%ev*z&lxaqCz!cRy&(5;6 z?>{HZJD}jG<acJZ<?7?FCqACZdhNlCQ=0n(dotyh+m|idQhW5E#-V8|7O33N>(eiG zT(f0+{*iyT@B81b->v;SU-R4jg?0bG`zJ8GyI%hda`g4qJ^O-xuRq4ttb6-y^=;L4 zph5AN|N84Hcm4kj8W(@Zc<=w-dWP5k6H@=L{Zp^~Z@<p}`H%i<|G(e$U-<w2n(v>* z(!A_e{eOS--NSB`|Mfo~Jve&m|Ms5#FDW^lcfKkouiv)4%<p619GPoZq?IOZ{Z`TO zP}}|3$$HpnRt78m->&2DzkaXEd7J5?3$B&7&;9*dd-fgs)`FUR<LznRveI_&vOJsZ z_@cl1p@dH1%j!0}ZPzcXI-Xo`&c}XB>|^k0Rzl&&*1vwg%I*2B3jW;n(*G@&JU5-S z_Wz~oKd)z5_`f^R@%E$dUlX@9exIPg%^tRmy7dl^{jUC){j!fy^O)R(pJz^W=r!t2 z-nBHk^U1@C+pG573s_!Rdd*Dgxq3y+VNY)5x3}2jrWf4J3+r9|?CI5`Crw!&gs!~e z$({T=F8=Z4Gi>GA$2ebKzUckp_j#S>vK<Fb>=L~5XzsollMa*@&a{8>{qHxM>yOr6 zh<h)woKx0&o@u?Bxr^yVm1`T{G{hVCN|-R;Ikq)+-~HRq-c34iqqVLk-)4tt+{MrX zFQlgKEZqFy>mQK=w)rL>-yY08@pvllt!aFP^KYp%9oBJvVSh0$%=hI{=^tux(+-wz zWu3Q-;TYSpWRsPrMGBI`<0^D&!Y{09Ik)uo6ydXl_9mhSV*;2s57*DHJ-<?F+4(2@ z?QEe(FFp#kdNZ-6aNg{Uz>o>&EHnC<1Dx$u4w_2+R_50*nZ@hsaMChPeC^uH0?dn( z@;|BVslKDXJx4xGvT;-Fzr9`O*39dyE7O>s(JQXV^Yhq+lE#+`f(kMRca&>0td;t{ zz2^c`h|AyESKP&(z3ZImkS!`*udq0iH}9?Bwj0}jH+%)1kL?OMAN$(pnKKroG(Q$_ z=F!;4xJ<NSPLAZPcShn9u53<xmAp5j;Q8b;`S&XBu5gI{aW?+`m6dGz&dql3bFzDK zf4BL?cedR~m*8!4;wgx6w&uua6#V<i)%~*N<d&Zk#a@f7p19<JpzEYx7i8-9zP;>I zdq}UnqPM$X51Xgc#=G;3)vhoaE66WS<~OXCd8r6K8++}IeFt(^WZBr8U6j#}m|C+k zpZ}PW#IFAIiBI_7F8b}Su<^?UpYlWV3&pLNyrScs+X7!zEO42W_`oyl)dQ|MGXm!1 zs_J(cSV*nBnI*&6xlQQBi_Xho20rzy)A`+xGiaPyuH2c_aq`iw2EmEPMG~s#v<L9b zl#`p+I`8|u|C&d)ynCqF+wns^sB8<1V^VkGGBE}BtrGtP)&w4&@>{yeKJ(9(u1k!Z zd(*jsOoMB@i_#s$t&Xc!KbvuM@vID~GX^e^-ZQ3LP@lExz=0d-#TG>w_XFQ7h$y<h zq~1`<u;GcZPS)|=_s<*`o6G0SzDTlTM}n<q;Ei&#bu48<x<xT38xx&a-)$Gl-tfcI z#AWK7<4My^?(SfFpa1q=F5Bfp%2GCazTG{bBcj9^W7^=f(T|tS_|eZ#;wGvmT;tDn zx?L?3Iy;MVZZ)5-+lq7j?@lh5xuwSQ)AhO@+tA*6l`7V<!mS;a%kx@7z64J6`N(P2 zB&f;v(e1Fb(R@o`o3xL@irctD+P}2z-Z*<whKB#j{BIr{Va6q_t$#!&bl5)o`gtW= z@U$g<Q#=h%Ze14P&L+e4FzKN8U8jTXy~mzSy4Im;vNNSy?zrmJwxY`B)mh#A{f`&^ zs8`qQYbq44@S2s76%?<WwNy}WN7Bi_c9r=-SrL=GYW6wWyK24alJgR0V!j?YopICe zhDA3|#T({!_<ekk9OJ*`<X1)2umwiN2?u}6aZJ`a7j}K}{zRGjlO}<)AFZsK{~?}b zabudKS(9Y+g;i>^rgEJuFK*TmWZ89m#zK!b6Y~_jiZ(fVp5JP{bn~mp!Dkba4PRYM zWBtfw=9Vur;o4#UU5a&jSH6Bf(s)^EdhIliuE!3SOqcQZzqxlqn*D&z0k*#_Yi{&! zIkn`~DW>WNpM;rXX9dq{@ad{|Teh>VFHofI9Cz01&5>@0?geH{)ZV*c)e2>qpWh7_ zdkVQ7$|Mi3{VJz?lDYZfZ*To?4Bsp7UT`$1k~_m69)97%g=v*$$#+19UeD@!AfsL4 z>3cP!f2Wb+HHT$^vo@|N%{=6wZD8Ueb>dWl&l1_m^H@%qCoq~k7vyGa_T0o)f9(zE z)a#^m&+`OXSsNrlr(Q3zcWAzWbn3On{YqOAhn=^2KCmk=T$<H3Yr``49ezPF7P@^E zRXPc=bF6}U=XI=T)H>I<SVZ@(-g%?LQ{E^%R%LZ;lXAAvt4{j9wR5jYU_{N~%~1~n zr<IsRYs_S1lqon|c3GmnP$pwD-!oy8s_c7)mnKbSm^A<B;R+j}v@?aP9>vR@Jg*+| zQ8jS}$J<#q;){-SDA{cn;wm;Ny0G`bP6rbc=@ZecD{PN%NsOzw+2hE(ZKYwYn8^Hc zNw!Hd_W8yve9s&{Wtzt3$(v%+9i}E+Hjq7^>hy?t_PZ|OjjesjzfW?VY@B>OnZLfU zDrVaCo-p~BYN?0W4tN%xUE#^|mXZCW%#0tiW^5>U5u)TcXH#m8KF2nWjTU?6nY-0a z{?FEB$a{Pb|FN<Tje;8u+{UM7J!tlP?ZWxawwLkqV#5rD#)6$oZohV&Y&r4p)X(NB zXXPKS$=FfY<+p0erJo96i%kA3GSzX}b;W9DN&V#K^VKuY@+@iUp1EpL$5kDN)fxYz zZ?1U(KIhtflbZtXS<fStlkW)r*rHpy-^b3<)qB}Wm#@-RvdqG2RW7~!|Ee^5Ro>Y> zT;;>Je65?BwxXWzD(7PsTff-$TzOK}_hhAeWtH2}J5MAenN|4<Y&h(;vp4$WIItRp z-aX<GS^u}>PMnaU+R5EZTE9=9AvLjO>FR@rWZNccHkTRvs@!3G(Oro3^SQE#d^^h( zPB3ssZi@1{VP@ZO;8Dk+Z_AvoTvqrbDQ6ux^;`F|SBkHB6?~NxnH5+)Tna*CK29tP z5M8~xE9Y*~iuN$$Df&@TiCg}#@-2GtmZhe0k>WbZVoinm+e!(#{l~W$$+!2vcrMex zXL431F{*WDUrM&{%=L@(6JIEEu7w_UoxnHWd6xcPgHY=;hc@iHWjbx@#-w0l$Io*v zE-A5{!RFRGIbTsJZ<;0Vr#+L_WD1{|X(1`Ez`HgoMb2o}>3K8HR4P1b-3B`8S}y%< zTjwf4aYok3^?jiN3A2TsW%w!aqy=Rfh%Vdz;*gfxmdF~lcN|A;9FB?ymP)utIqZ@@ zzy8_zHqFw^v#+&scJk<aD-Ki9j4H2K^?F84@wWWjhY!@V^nUJ~zCfyx>6p)cw}+c- z3y&23E6FHv@)9dwsgZ7Sqh{h|CevLxAC5$+^;vbk&DGqP5mhf%_x)ntRZZ)~rj{y= z2bHwfoJ!Yh;5;p*ee>iCvBNB^*)~(soO&LqG(RreH|L*CoVT#z-1vrNXO6B~H07sY z(qkK|XC2zR^k;NlI>8mPy_&;S^I^l;8BRGq$NptIJB4pNbuTc?tu1wGnQeN`%TLd? z*v71%&lqdE*XH*Vl^IWF)KA!TJwi7!OWg6q2QznurDao-Z*^>HD&TMRky>)xr+oe< z1L0}6u5{WcEDn9MrZC=hNh!PO<6ET$D>>9>*RnBGneB33!Jg}E^i+Sg%GUC;D_89d zERJ2C+0CQqVa2mE>+aR^c)6q^?ypl1T;u3BKkCb_Etz}3{&`%-)T?@0Cr{U}JKmd{ zBF$`cKTt+!#gukggYJ*LkuiCa!J1ajqNeXC?sQ%DmLaDsDnfW8)5%NIj;~0c*~67+ zCq2XN{(IkBJ(krO`i-sLuDT9o>uy?3J6=)7I@9GApRV7O8v@U>;)<#-$SjHv&un<n zE6S<#Nd17;H4c3p@m3j6)3<*`^0+GNd-N`fX_zpcQC(%?BD8>^QbNk*!of8kgiq~C zdKKiR{LW>`H~A;8rhe9465Xb8`q+!avlbhfjd~4dEY9D<UMv5>Jh0oBccJyeKAul! z7I4l@^LF7)>2Zs@m1Xj<Nu2effR+VYiP6)YT3@1G^z{p#RQna_*s|9AmfPyRd3*A< zMAyH4lCmei^j=&{dC&LW)vJ$HF29;1EgoL=<NQ(S#fAT7e_U5u$CS13tg@3`zecU0 zsnhHq^Ooi^yJ%1Q#^`g>{i7YDld9y7x_uc8OD?neh0a)8+#|myYwmxa@0UV)H$S`j zF}h*b$6ckjUj1=f@?+Um%lvJXH-eNeip5R5WVO#Ow?5|KRlDipZ`H1w{dl*(*}7Os z`s%V+>svpc+-u0$)GYaZ@5KDYGhH}dGH*=^T=d){DC0NdooG3h1=dPZlO7%8^KfE~ zJ0JE=SZ|I?4eML07mQ+=%iYX$|A#bxFXGxTG5GeIOOjHii(92Sc5LE$_&E2Fa{HVg z47;EE8^u%>rCT1UceXW|KKV3TpY4ImJIq#Vc`cK=eaNFyDt+B@uJ8o~{AV`qULqm9 zf%!}N(r^D&I27HiSVdwd@BL@7y}#43<d^F5TN^nA9(pQWGWh6o^u|2#ZA#9)ixw<S zIAUO?uB_GS*DVrVxZ=Y{Tb?@x;=SG{oAxD0u;<<XVRMXa>x?PuoH*-eaJsW6)~>0z zH^Y8otl>|o|K~p$gf2UF&O<{`w(q$3fdik{RNp@NskELc^@wz$Mf%i|C5C()mwArc zP2aQ(bj0;1cc(h96sdRf9xl4@@hD>=qk!BcV<`_$_QFNFTW_XBm7B5JesPtMTw~Cv zBI%>L>ttNw`Ybj%N6STD^;B8wovw6<h~{40yWdq<>zvvrv){|}+P&ZID}P;iXSKiF z?=uf%ZUr;^-G07ff9T7Avx2g5huJM3<<%aXtL}0<=S9+s=v#rOmmi#%Y_w;c@}7lD zuIDOCyKpz>X9ndJOFUhWp0~M)@yE5@?x&~j<`8k>{2#@Bafc?;`BI}Y$*F6Vw@KG$ zZg#S9Ym?tt-8A3iU`Dx-Zl_ZJ5;wmjewN(W-RGZj8cCf?=P3Ux@=oU(`{qg4S-g*& zy5VK?SFz9~^Nfbh@|!1ad|!MwXJayxQOnOM%TAlKuX<TK>79#4?8`<!0cXK?Qw>Yk z2X0+fr+s6SxZCGHEMGg;e0X%`Q}1c-6_<Yf7ObDdR5{r}$j7B(ikwsLdyXr=@9d4` z$=18!5ZaP|bg!T1=VQ&GulqmL*(GibSN7+ZwU&P18FHXyhrsJ35vFF*4gVfKuDZ3u zrGMIlPr{ySewEtKN?)25;%8Itd{jR51J}))`*S}%NiPa!**-<SKm3`;j+U>>R_aS` zl-v>4%z0vY{duhqjdSc|6duH1Xb^sI%urwV8}p=~&Q}Gyc#dooPI1fLUbE0m*-2}c z4%f=X9UUqujAk4794;T@J2k0vO6x}tcEKg?%bR94&h2_Uak)wN4(_Mly62=+d=hip zk|G=`qVge;X@37Pb}8{5Wx?E!hMRXO*m-YmeVh_`mHB@!msov(;iuX47iUi@Q#I1l zJ9gA;ipl1j@Eyt>N433tS9Z;se&Y2c@#{T1r#)>lJiI5>O#A5rk({-k%Zj<%rrdN9 z?AG#c7dG6J9eMA&#Jr~lFXqf#aX`mA)6v*d%FVE3yJUBxin!#;Zim?hDdh%iOzcy+ zjx3zrv&OIDsnTyPkN)l3>dRhM?`Yj#T3gzcQ+i^D)VBv~W<^x17smfMELFSHcF~jh zF1K}go^dU5V=sF#<L<2&*S6^1R}o?sy>x%k9_8Ym;;g*LySh212Yy^WS$5xOd&^~| z8~1K4`>;Xbo_F+-lId4Z-?BDioSDRGw0WhLzoz-Rkf~dfpLCYYuon6K|Mu@q^-s4= z)CsiztX&X!*?Cht)5b}Qk|MT;Zo0E{-lw2xcdrU(v2v?8aOO@*U|x{B^>DmtVSU2B zH_w{pGHg^8^Xy!)Nkymgh^6}ZY3Yns=WpFm+}3@2hhchp&yhI>_L<v+c71K$$o!;` zE&c70b?owX*2R~WH)P6I@zi{nyE4aY!i2i|!c6WvZ=b|8-glYy+_`_x-Gx^7A27yD zVZHZ7Oh?Ee-oQul7$;kPxu@jaQr6^|zRYg<jr(QUo}azp+f-B?Fz-R+97Fqa7j&3v zRs84d>sFT!_|Bnm#qGlPB}`(kmnF{Kb1Cs@TKn-Ii}$(oZl0s0aIN3CQS|4Ft8@Q( zT3UQx;8g$oh*6c?g4FK?1;!CwT~{lAGAv<uBii8X@OS_FyE@zap0~HSY(IB<>g0nP zV_x5=?$c9PSI|6v=UegU2qEph2FoYrQ(pfF=}r!rc!_^%Vo0IT@w)N@Z}MUe{9J#} z_D#tanX-zXJ$IrXXy?UjkllHIFYDd@1C>wGN@`7BIP^YbtAF(J#(@W)G7d0F{Ab{} z!c=C;qxiO@?*HHNj9P}${h#xB(hSd>WJ{=RZ^~Nm_5BmICTnZiCuXciesQkjV>g-B zt>-c8e`EZ|*KzT6O)uw_E&rT;w(QZpf`{r`jGve=9ogMC!C}UIMg9ubX$!vnmYgL% z&v!-8t7?YR+&)Zx8$<rr^XSwyuRFt}{yRbT9nS*3v%B;%J_OjT)^!%SB+KxrIXF}z zyV*|q+|?!~DX*XP2QD!EmYb!wf!*6Zw(<J|@lEBkdb@WmUZ?ff;rN`JDKAXLW`BGn zurkFsuOmw6?1B5Qvc4U>likdB>E^FjT<4hN;-7mn7o1pdjx)#bN97K0fy4D1bh>|E zd-#GgdG%_IFCxz-HaJ?eJv_cfr{^c<;XRiGjJ|U(`~S}LJR|Fm`v3RuW_;fNzqvh; zMJ^+V=kUjLgG7n_AD>^}-<bF#=5UASVUC?`lIlFnY`X*n|IA#^qrYS8w|v9gxWujl zM~`m1U{K_BjeX@wMd|iu3SU=l4ZLw-^~!ql*Xwu|Tlbs|Zv8rKLBX6-@h;94LV>sZ zQujV><jDE9_W1;l_h*>jPIy^a!sPdTQNuf4VdLcL2`e5L^J!H%cXYpJem*&pr)NzH zUun)2+myT+JFZ^fI#<K?Qu-m+hK}qrwhat5OEo(*jsNp4*_k?jPxCz+5zQ->iE)by zN?3OC)xRoYQvNjKUvHMq+C?_?J+JcqZE)Eu<M-f#`ndzmjo(l8-T!?`>+in3tZp`q zv$WoPdbIaet>c5O_q^x!>7ChMo{%kZ{-)cf)6VOUpFaLG%UhWx*~eV{+>95lJ6hXr z?+{K8X0c+PSg9Yf``xyC;`82=i0=I(^j@#5pguTO`HNLT{n-QOkK}e<=w6`l@u=)O zUK1zXIyb-1N?W+}=7@MM_&ewD2cv}BiR$KD<q17=x8LmP+I&;l!&z+=Pv_gv+~1Mr zy}Chp_J_mXeQ-VZPwj_)@t@b(TS9l-TL17I%dMlWjEjAq>sKF;XtextY{S;p#F|Y3 zF8W6V%5oX~x;pqfUfr*c{IKr++#6yGiVo~5Il-Nr%y+x-ZqBpk@7Fz>o*%cby87!g zXDjb7^M6*<{``0L=WFjXQhz_cKev8;ef95us%h>2e!f24-T(gJ-GG`h>*wq1Yuo+) z|M_NhI(zT$`+IBo-%UR*tXN=VB>w-|hnPK|>-SdufB5*P{<+g1z2~m1tNDJq{`TkT zHx-*sa9;l-z3{+sy|ft`8bS-0Z#=#6$o$>AIW}SrqW9FKEY7Z3xU)G+VN<!zXX`au zK>>@4&RM*FWnsT?-)HV0p~k<N#rFIW|FLghwcx(I3yhnT!y=kK?_;Upw<}uwMq&E# zt9K^4b&0dSiMjUjkKn9S?P)tL@2|QbeR>aj{2?FXzelr}i%og#PlPqh)bTrhN3%LV z|622Zma13%epkEx%N(>nutR_SffWZ2iAf$4@lzLe^pKfyt$xwh`5AxJt3+1)FZuiJ z@$c@_+1LJMg@^y|eBA1}<=<r&fy}?(qb6$<H?W1B<(yt%J$YTRI8#~I<m1JL^^ep; z{;z(#z<chgdaeH}|1AGB|J47BhQD`M{pUY^(&@^7<B1vn???4{%n{{U^GRuC!HX%v z+OF5Rrv4B47yQ$|KVA91v)%`;r}pNZH~u#;7liz~-d?}!0o0)2$OWJN|2*~o!!`Sh zU+Z1|aod=eJ+)`ATkx-+srUbir#lMk4eD+?{@h@EtXrhinx!GQ!)n*u1SSIu>Dgje z-_{gedT~J4d`G(RzKbVyUK~rgT57#rc6oE-_bcYd<_6R(U$59~)p$@^D7vn6=KF+{ zh;qUHC#*Y5tn>CRm#h%vl4F}bH$vjal}p|ex$BN!tg-+8d(-k?JN;8me=2_O=l`Mj z{h9jtx7p{ld?*TfI_HcwgXElt?3xE|3bYu$l8cFv7yA6Tr!h|D``-&QpZtCIW6GWV z6SGh5?y&Khz-49Ly?0-je*rT?z23jm0XCCzC9=QlGUVs{ysdeD)Pa~^Yq`?j+&{J` z`!lbLpv3*B1=Yp5cgyZ<iTdGj@yM+_^(j8lH5&SJx7FW1sJZ3fLJ!r8W!8RkeVUTX zSIR8?RnPf%{<r#kzyHhs-e39e{j2{L*UES9Qr`cs|JVN|g(?62g;xBFpZstA-MeQO zZvMV4S-ZS=i8kX^hQEzfYG)+YIY%;1{eR`Z```L66?~uOR}{I<`Xk@%bmYJK$B=*5 zi~oG6cdI@vqx<Ep$L+~~ODEMY`gwm5&*S=3t^X_ky8o=t{dWK5laME_jkoI0&;HNe zEqEpIzi-8Y|BnC8`?_T6H2wZzsNZ?z-|EK&Jyx~c-kW4at{3_4V?X^@^jbm#OOvk4 z_I=lcM0<*LT|(n;?P!tNm%W&w`rOWKQPOQU4?dTla`x6{t*KMZ+Lt<7E%Zt_pi=+I zZEJ5|_*?J5(2$3(d39_%ou;I}TWX$f9}{0E@u(~L!>={pAO8J$G&TQ$?cM;L+Rk)| z${$ak`pf^fX>hH-8<pn0TukoP?e{<CU;E$Yvvpqbn?p_0Z>)O#FzdIO1;1b2XPv$C zR;``#_ZHt=9vg<&G57u~Tp!_mqM!Ym?q_xz%leFD{s8%}_Fv4~cEvaEKlkAMhTw0q zKa>L;KkxpZeZEQc%+{v$-j$7?7niTkxw`f9QrqQe`9D?%s_@p#<bITW`^uEF=YJfG zE7<pfX;0|yEM{%_0NL!Dt2S<LF0Z`MYHl_Egn_*QU&+TecV5nH6KpHzuT`oMNwl&k zco3Yo$N%8ndWL=F`<Q1PaCAKLGc3|R;+Fdc0lS9Q3+3S~-2Znqv}zX~PRXuZpDQA9 z_~WtMX<QqYuVu{0|J58Vak0rgUh?<aDz?>!7o8RR@<zRO`{e^Cr5Qw?U+cTv%3_sZ z_wLuUZE?JRuASKt`Ni+{w`!dWFAvmjXn4}mx;){k<Oh51>(Tl346jeGdw1T+gpob@ zFK2c4#{IkG@BDZgz4qQ)-}5`ymf!9)D`=TwoYHgDUSX}34C}S0w=-t5GUUiBi3o2f zWnTUCOrhzupKl+$S-_$*OR$OOv%GPe{f>3(1DILA>#le@JN4_q)5&ayw{~scw(o9s zq4L_Q`wx8f?cdTn&p3xe<)d=_E|#@f-G5{2uQq!e)=2wMutMVZw?B8MI&%wDZzvJq z5&9I@aj)HOi+M*a?>r7Q4l%R3yG&bH)ND?C-<e_I)A25&mcOvM(Lc@ahR7aa!P^24 zzxObTbiT7~woPkm%y&{}J9Dz%gW-pPv-6pUmJU%L-0#o-#P$7fb8d%x!D)x``Yp5P z6~|p?SlepI5WrT^(scdb#N~N+7UrLSbm87_^Wf-84t*n!AD{nNKWtydSN^#6aIT$5 zQ)GG#<F5m^XPc&Q+xPq_wJGALz9KzmZb$q2|BTx@ZZaSI7MVP)eeWJ2dnv*22?Ym! zxBt*t<Nj{0G>`M^*K8MzExJ$q{5D};G9zRC$K|(g9a}Y-DQ`~ry?LRnhUtHP1(rLr zlyAQ|vE4CVp!|F)=Zsl<&9^s}|NL`Pp0_ytgGtgk#-HU1Q<%^EZ&>`O;I*WbI@`Sr zxr7-nu1qL;?0agn?DK1NJFl2r?b6a(ccsNp-Jx%<lhVK0`tSA|pL6GZ(6XQPYs>q+ zj*b4^U77VQ(kpH*o_$`%^Nm^TX{AldO5)vrB<Fbi@2|Hxu;2W&b4xYzJw7&ehF^;o zusJ0hli!}F>}?><pyP4cac#l}+sbPUed&A^b9Xlf^e8-Ly7rMx%D#f>X69eJ^K%T? z*C)F%e$6@XXW~Q4ybpi*8w(S6GrV$H^e_I^|5~4a_g|KrsrMFs^?&KV`^~2|hyJQ( z?VJAb-+T=&rl|juH>w2u&+q*ge}3)jUzK;~=q)&+V_&+dJiWsrKT`Bt?UC}>gsfjD zuWY?~u(mGr$$<qMF0L<Q+_J*^a!XwDapv-eVYYU!nz>&u35YH`VHs)e>bK>>^v&xJ z+HY9S@@3XR;l#T^zjrk+s}KHg`qzfr0Y%=*>nnGyd|aV+rIa}%)au;srjr?qxsP6Z z$MgB&8`%wxU*=v`*)-cui|;s>z39f1bq@0d0}~FmGckOvUg5BndD*=QKigAt(#;<z z=kJKVw$bt1?AUq%!%OuJ2Jc*~W-GsGwa(?ap&<9G*;!pBuc_we`MsOoHH-7t?`>o| zF0ku<-7Ts3ZN)cc?y(8`+;GCFazSy#i)yt3C#{&AhO5jbX{{43D||~xmFepcDcCS0 zyeHen@$x$B`S}M9%{;&R2WS4x1DpRcivAAyzx>z#;%omcf0kG+`(=OiKmTp-kY)e5 zCv!f3@qZ5wAK$hALM-!M{rC6(fBcF`$~v?96;pSXvt^z;m-)OrLXD-YUoT0MC-M1# z)9bBf?En1z=e>RHvi{RN)XV(#g<Uh4<q$k~|Np)zi^AJ>I;`cnyRhMxh{WnCqD|2; zzg~B3QGIk)vstt$xApo4>&K_(OUz5IoF^Kb!&94mIBw%>%eo3?`7rU~d9y$Nv3dKj z`tYXo*pT{Qr`RQTxIbDwW(}Matj405*7ibe@x!Om8s!YjpE1u6WYSqJefN!j`#$^Q z#dTReY8CAK>IYK$9F)86SR7xxYtyx93_lJWN_qd4^~l1t8_#84Ti7`L$9bDzqtXwK z#arY)Jm7P=QNN;F^|w&$IYYS`F0rhg=2w&sxZ2hxE`OPEtKRq4!%wsJt%}~g_0xk1 z-@iWnz4~+fF6TQJtFEz5(_{$j<7`bA*AaUB+-RpjwAAd2%a3~8?i2eZ8<D<v(ff;Q zf7*X<Tf1^|_$jF{A13t+bs~3M4)yMBzU_OQ=bmiD#(hV-ExTWfG4QBA5$c$AsK!y; zafx*4md_^AsS7Pw*NQ((uHV~qz`9O>?^?0N3<ib98|Q80AD=9IbAaj6^;>h7owMEW zV8*sp@y{LiwyWm5>X$@DO1fWY^a<T|>|0_oLr_mCyQ{{>1B#QM>^$XFAsTQ}&}s!! zreQ{*jlW@5h(yJW_a!p+LdQejtnhvi?a0Qe7I-H7`;Q%A!gE$LzPrl7Zhff!=p0pH zGowj1TQjxYat?P1zU*44z3i8$u-Sp`brLIiwcQqJx2>D;D%|JB?a-2=KDRd{Eh{;C zK{WVq7pHY;x9-fUMSMm&(v4EaB{#2Z%rSDGcck@ILej=(x6;z>C*1ydLS(J*x7d4A z`r?cBsp>Ypd}e0aaI%%_<%})NM_SBpZ>oPgP2{Gs)^1;x#{KsXU15K+#;<<ne%2}K z4E<O7_!{TVU3^=<`AXqC(bsYtUIizvTDAPt%aupwb7?KtT7IcQwJ$aFa)slAa4mbe z&vOoWpAN1o+%;=m%gQ}bACnW6d`)M*Zu9)P?TgfEr5uCDn@$T^yjZte%9%|##XL~i zkTvAVk9v!{yOu>?FL^yHFLry$Ypb@8eLt4$%{EF}`Tn!pj(MFYS4hp7>3Lz*h1oON zD~{fcNpvuqpf-WSXJ2B1STN&(Sr=DvCU`fg)g@~=Y<?1VWT!=y_Td+-F*18wlfJR# ze6i+Nn8h^h)%P97hn9Y@GxtoGcvGyGanlVkh3>U1MU8W})JrIM=Q3`(;-w%y!HeBt zox4G5+S0cvk}WD>CqHbMaOLbD$)AswXPvpd_-DMy|I_FHPdYYvrO)U68UMu3{STTO zwpW$gLFVlLN34y)bN}ckDtT|>_`F|1dcn_lf9?OLbN|?Usk3I^wm6kn@{jPYjeoNJ zq;9yMKFxRdW#mcA<P@W$^^0D{fAmb+_%mhyJJZh(Z<+a&zsbI%AnsGST9?_}>iOZH zDeu~!>tsD#caiN|=-qJPTVY@KEqSwU75^lagd=Y!wsEYlkI*%`=GtEx^W)hJ-O2?Q zlU+BITZ#EkpQAGG#2%IT9^7xgxCokZ{xO^BxBO32@Q=bX3?8#%ZW-qbe%Z`lf9!{r zMOy6M8FP<(SjO?IZ|A0nRffeE*Z$1gAMyHhOKfC;toVHHdt$pzAAgm*HpH_=*~oa| zvR@UoUTbfgN;U`y?oUZmn0l}AOX4<@Z_&G}+RFKT7CW!FtK58YR_*J*Z=W#vv51L2 zw_NvqE>G^m_1=pOJ{(#j(zY;^f9}!dHAznO-K`RaMcxxt*L~sO?sHx^QNv)uh81m> z!?oNP8s1NRJNH?~gd0D$^dvo-(a|ZYZ#bXR^l+rg70u~7<%_xgtyyCloLDihw?DO~ zX7Xlnsq$nKJI%6u6H6wA+&>TQ)$sd-C$zTgZmPa=uYtXsPpIYF0=~kKi*jqNYv!w~ zZp^+>Q}5B>*J>Ggyis)bN(Ot+)8~C&-??PRWV^ELMeEtKO&7AgB6YUB_L6F1Uu0t~ zF!w;I)}@sm%a!&@O_Vzk)+zPqsdk&r#_NWPk*=J}SGh3Fx*QbCH!n^3&La7k=ROsS z`%A3cDsC=$q4RF~#vPX#<~>ws{dzU3Me!or8jakQp*wu)52xoi_!Q0z%U;{ya->US zW9rwZ&PTj-9oD!AMu$zccX_jgwPSA3kzF0VZyt*tUvq}DH#tl#dy#G4nPd4Ura5l7 z!Nd}rDD7I{x#ilt8}l2Y8rR+R`eUc5xS&6L;i>lHIsyHhB`5j5|MlZN_;+*OOYYjW z@|?j7*O|YnTD)$1(w+LW`WNfve|qb!miEh-DXllN^UL1i!Z&L+32AbkR$o2+-0Y_l z4)&)$n`!#vO_1jb#s9HsN-OwYMm9ZowQSR)lO^saeR3pcc1}5S%OQ>R5@-LUnOBUA zCTq;x+IWUbB}7hfvs6vN&J%0g>Sa_n|Jiro(-XCAJ$F`o$PwNtsJLm?pUL$*IeZr! zbFk)E8?oZIVAkpt^Su&x+wqF2R!wzz-eSB%>O-g&cj-o}xqf~ol~%SBO(HD=kBF8V zO>BMna^(_Dne)N%s$WCxG~-pHIQ)<LcG@lDt7K6(J%7e{Q<dh$FOjjbMv=$Q9`cm_ zl(4Jis?hV)+$Dk2Y)<SHkNwj9)^Wc_{l)pbe_8I->HS*zZ9)8^7w6mRnBH0R{A;r* zEPRoFf%E%~3;q{;pG|7KA!oF}NkLw6ifdi-yww&=0xN`OOl3H+W2%AZ6|ws36RZNb zw{bo&x#~JiaCKk3+U)r{$3!Pxj||(gENJPw4Xa{ex9(0fo3-|Uy}Oyt?)huwoZBwi zy}l)0f9R;}rB!E+UCykKoTkY!aRZ;!ry`jLYu{Nt_<7Lx+`$J8azc^W5Bfd+-u^B! zRr&X&%C;XlCz7XZnsVe@)4YbwYI~*}N#8JK9;==7r+rIxR9Eg@p#I<om%i#tNu8zX zjpy5JX1Y%gN}Qf1yFmSg3y<E)Z4VZnQvG`7gVy$dhm&uwsaKd%cBV~y$`2l~E5--X zn(MwT_V&y$HdlW9h;Q9;vxN&!nSQOg;I*kbWS_p4;58{Nxm63&q$THm-C^u5U$$)S z&seJ)-={y<5B{dFV0D^ptJH&F##h;^Y-|oqSh<B^BlF)Fy^QiZ3G+o-8Xeh8%!8NR zU{B4x+GXspZHKq2+@_%VZUybFjGI`czql#hj;VZH@ggkhsfBe(_sNaTx6G&fJudd_ z;{^Lt7UzFxd}UejM0NQk);UQhS1n?g%=F~qs)X-~ORB``jw;-Kl)0oLFOMnLedS#% z&W&kFIeL5S8ug^tWM5Nzb;hIl>IARm#K_J&UNt3O6oT@;mTYnqdKpwzQc|xOxU0r0 zQ;W0YrpMK1K_xe1degn8i#|KAa%uUG7cVBC`m8?r#$<=7y;slZxz1$T+C9JGnBdoP zwcHnB&)==NcU!VQ_0?OQr*C~Ctaz6O+i<0)H<$d#nKQRDMbpk~lZa-do$UHBrAV*- zUL94hY5vDoPIZ{Z+j`2LYrdH3>1SDo>aRS%e9Jy;x|r(uUD;Q!yuNhHKCE9%^^BTr zRIk{@%-&ryCvwe?S<}91?N*sQzoaV-_r0ejhDM(<S2pfu&nP{kqyIL=ss8Iat4}}F zqfRbi?Z`bBIL$-kk+KTcL?Ko|^H8NgkNyc7DqbQkb6hxG0{2etun81c+y9}YV^K@D z+QfQ`BkmqDAw3fcCa6qsvE`ej<-@nCNT}Ff<$_!6yUwyzl9HJV()gX+;|+^L=9k%} zrx`D^o}VvLYdydGqww#wd58T|AKv`8;B%9l|K9}nH!u9(Pg!rD-L-1w)jiFJ-7op~ z2_O6S{)5eV&OJYxenzn~d`oya`@z@qBLABX<mAY9)Em|*`7KX&e4wV|F8*(`Wx@4* z!t+=&<Q?zj_kLK$EWqku;COJ;CDX}wZKp*4PxfrG|JiwlwZ7?oMW6T*@jWIJQv*d( z3qLgpTL{La?XbFTulH(RP5iB|?o}^l&rQ5F?+LpWlbvADS*y8IGjk+-wAZYEW^nH8 zznK?$9h8$pZx__R-}Pxlro<1~cgJ{UW<T95X0iNscEKkmw=>cYcYmC^U%B+C{okO? z)0XXP<_aiTb75)xl(%=|c3M|FT>Uq!^>S1C{p{?c*RDLs`S_YoZ-H>eoo4SJtNG#u zjCY8e)cuIO?xB4&SuufS*&9anDn*VxGyIRdKM<arCS3c5BW13n%z}EE*GnHTo<3T0 zW4dk64#Rdq{%Zz)OH0+|-d~q!^SSkKp=$HJoq;(YmVG{dK(5jB;)C3d6BlJ2tmD=- zPLpBy@4i99uHkj9zkXYNEW=w_38RgkhIWTlwhOl#i~NZ^c!z18x1s#!8M9Ud$?otM z3CcU-t1003jDJ?rp|#eUr;V@etxr2wC2wc6pHc3jcO}!?D{bLIzpt-8eLqMp+S<GN z*}B4SpM0ez)ZE&ZX1>vczfqT`xxDE;!;EC6?_b!qXU=Dtp7KI8W8$HMM-}(I;^{uO zoPUQ?x21_v-2DQN%oj1`RulL9dK>zyLoJP!k&A8d^4%JI794X9q@1V;yH@=nYhH4F zrQ?*8gf{(Z=RZOmhh4%>#l_U_*rWGE+Ob6VbjQu<`RjuiHypXcQ?vE(^#{{WIDg;6 ze46`cOvbXG1}XoNB6bzc=Zkm~Ipe5d>9@Pb=hyAr_3x*Vu8`t7=aPr(Oq=&~mf3lx zyghsR`qkOu{D<WV?jQC$UHDL8=8T@*Wywc#>~GiK>P>En+?i>%@0nps#m4*Rj|e1H zIy5c2&>#EoY0a#uo7#<flyo%uR(SmV)1-8$obT)EIxTjs%ZFYB6t3L5BeY|?Kqr^x z;mAMFH*c5{l+!Abt?4<hGkIEK<kShJFOwn_g~X#BA1SF8dOcEUs(IuQlf~NUJ>`gI z=VXpZE0vE?^{-7-CsjQBq3rd@f7X%H*K4^Z?z+Jhw494uwUp^$N;^wj_16_HO5!UX zdUno<D7d4zbaIZu<+A<inZGogrCnYwO3|O!&@B4BQ)y3R#pL4c2G`3Hzx_SrB;CeZ z#?zfADR$F%P5$Kxf7T_k-fsI?&9<|Q_2d!9>s!hlGB$7Abl0t3>2`0+cj^4%ZI3x8 zOxpdhg89cS-g4<%C3|FzzH4M$omKn#(3y90@7gBsI+geQ(;UH?ZNK-1JYIJoWzojl zjCK(-n5Q}<&5WJDLSWN3Ztgisx@{f_`wC60H#FMJRXGtD?Z)-dq9ggjfvK)S4>ESX z6A8Zg!&CBU=!X}}clbQqP?%hAa6@PNv=;)2PcMJ(ocn=2VNRG`eSZmu|Ne7n^$$%w z?Tj_Kj3=%AbI3q?J5$=@T?u6pNl_emrQ7X&+GIPo?UPIlUu7c1yL)Nkc9S>L+V0vl zZn*tdF<kCr%(Vm23!fdh&HV2+|At3C^V|<vOGn;t^jSCY@EvZ;t0(dkCzM6XCDx}D zW(M$m)_uTp=EVJ^&1*hHuhzbQBIIRlPOJYWDgV@2fBepDTP?9Lb?@urE`d4oq=Td_ zKFNn<R(xOB6q9b=zk=tq^n+Np2-%y9)wQ>sIKBE6YpANwswEk#;?%Y}NnBNLoh53| z^3?AzQ~QD?E2EEGnU*Z5o_=K73CW44B(>64)X!O1)OKoS*~yuYe7C>yEjgu;uA-H` z0xT-2m3~V#y{r7<YV+F$ljls-zV`&A7^H2^!lGs8rrfuvRNm%tFW|rARP&H~0hP{A zeXXDRN@@m|ci&E)<hDSNG2~K!r?V>WRFmAvCQCLMdx-5<kg1Mwy-_GDcwCfKdU{{I z@jB%rJ5(<oEoBokmkstYnX}`gN75q4BVUj6Uk~1R?4g0lX+7chOC!rnPWPqVv^}M> zd*bGKw`b*+pXlHZxo5Of$*^W#%qEW1FH<fCyZKB0RZjU5boB0_;>}+lWlC+-iCdyG zZ&SsoN1EOB=XBz7RJ-*jC<>l_qzV#Qt}|~_{g3Bo9xV;q^n>Xnr=iZgm@=l+k5i5Y zi}^?XQBL`2)L67Mbi)s!O2&<A=2_)vtX{rm-lkvaXI~vP+x#ntXI_qvUFxSPCxg}e zXZ~5-vmx{OvFwc*KP3G8jb!YuAAi!#_V$H#TAxM*YPEG2RBg@N^dYDILS?;UzkBfp z<+3l!%THaOA9#Fu*1dxdm0zkK=S==zUNP@EOI*#tnzhUf)dvcFKKx4Ws&`B<+s5}p z*<NsYaO4axrPCKh|K#wMCT3YbZb?_yF>ms@BlYl(?t#nC9b&IH%t<ciUwZw2#H0uQ zbxOqt=U05?zQY|i>%^uL%&93%*Z!yI)c3|4#LRsy|JwZI_ocD*OWOC{lw9_<vq0hX z$Ic0zH(##tNj{tql~}vAxiIhB`IbDESMsZGwN+o&pD~Ls@8BtpEsK~Qw~Fd4Xx6#z zAYOR<2gfpQ-g*0$R~^`|*Km~U%JReSqWEN^i*q+`mOqiYe#!T1Mfcu(57W77eDQBz zo!1QW`kaRqYjhW}^Iv+aF8hVW#6RJ4%$z@8?yC!NU;g`jnceHVx4)gUlJ1?5xupKu zv}0+^X{V%~&E?k5-clja=<arW?cWWtwd)PV&rLYPDmU43dv0+2n}@PJ#%7DxTt6nx zU30H<RrJ5q)YXTI4<sb?h%Vl-eKn7Pgq`67wguY8-pQ-$U%e>%9k=nLX3j&yT}L%` z&&_<}BYR`QYxWApJF8db=$CWf(YSeJ>;AQ^lY*>ss+NS5U$>HXxmvQuyCEP>c*EOm z!dL&V{3n0mzoqAtmH+&|*01@`T$gJ%<?6r7U+Ob;80N~q{y#^>Tj|PwRljAw>U)3L z>nvrw*|7Sb^VY?a&zd>Zzxu<M;or4<|NfAir&Bpo<RlM24EJbr{=;mwuf6B_>2nD_ zEtgZ;CN}I&R5^C5@~r8F7bgGPJfiO_elAzp)4aR(u=CsmiRTGleI&oklWF6*WNf-! z*dp`n-)R5v>U19al&W>7W&YfZmUMgndqUwlu8FI;kG`qpf4%J$SI@JD^IPj*%$)6T z)cjzGV&KMr>a7dnW|pcS+z>PM{N1TCAC-An!|nTcWM0JI|9$(U=$y*__W6R>M1Ib? zT<*-#^KH-lgL~cid;<SZpSC+!EoSF~+h)6G?(U2HKHctCN^1q{|H8)qd#oSY|2Ntu zwR`*Y=9>4epAxU_-S_9|r$@|-SO2RM{QRo^@9pb7sSI1ix2B}m{r>ssuj-E0omGdw z{9I`8LM=*8{><KM-#tB=+d8g>hch~-6qMv%x$x+nMWE10IUVPkf1lk~t_wDw)}5~B zW~j4`^RUv<f}cm0YP2miON>|~p*MfKz(E81Ou@FFoJR{-4hy>OVCYKi%jfTU%ENWv zIOVe7<@#j;(~g=Y&g6Q0$#G@kpKBq?R@Qy2tAd2PJh_!`@w+d+*V?s*d*!><XLC5# z8a{hJp?Wo!zWAk#gdeXhBu!kJQzyqSuDv=f<Ni*k>Ac4>)(f~*YaTwgJ)ks#*(vzs ze#WCo)$iiIUGJa%{=fClcRf53{=efkzDu_aofy9QV}+(>{il=~txv*n!eOhIZWBpK ztXh@%I5@NB)XF`_I+FuqRvmg-Vfyr#aH)-`imR=yQMtpl-&^1AahLKI?u^z*juT+1 zJk{OJs;}Sju}l2u$&^FB%Py5Dp1u_!=I6il^2?x@xq3^UMo9UK=I)%(x5s_^GwTB_ z4XkViAGmb1bW8ni|E*7B%=pc_V2<)*Hsv4r?3U$E`DeVym?QE!R;x~N-hay&X1x!a z3VF9$&bpM~zRSl~@rUU5S1k#eTe+qME#9E>z@GD9(H*UbzS+x8E2ZTy%qv=bZRed2 zR_AjK*c2kmWg@IhP9AL$ZB8@1%(IVwm5$ZV4WY+1cI$FyIt8vh7v6TTKFY1mdamON zUdLRHEa#MMiVK$Bo5T4~z2}*M;-}9)E9{==TfLabRlzus|5Uc=lvDpse%C0x&^*Dp zPxYFB!p8H9ZH0V3>vkVh7SNa5Bhb3<hSrPje$HR4J{L5;EDdvvukyK|pRmPkLHyrk z^>Q!7?|#i^`{io(<nV*((MPME96wrL)wS*R+H&dA`Ns|FLYlUR2%l=!^-JQ_;I5DA zoR;JGoFQ|&gBbI6J?`yd!rQf^x3ejmFP}Pl=els;vb@~3ymfas#ca#Fazpibi1NJ8 z-gnN6J#p&In-aRscN$~L({0CUK6vUf%@48u!S$|f=Yz@7F11C>SHd$6A7hPsY;896 zZT<BW_JohNQtlU<*H_pj7Q1i1e_?0K14|}Hd5$ZtO7^E(7b&tFt`GZ=+4U-Hv6Qy{ ztFEo@L}%!~*~j%iR<$+cebo6DflL3sK8nzMXKK%~_J-YsuCvYCVnU`dN3E<~Fm)Dt z?oI_=mZ+VzA==v;vrZq8P&}|r;erO=jwOqGxfrL{_gL*V`4;`?qp_3PhQlJ=B|F%K z4fP(RGzO*IR131-H~Esify63)Q@(~hRjNwTHQLveiVjViqxbMoWRBvTquUP5Y)E=| zC^AcN&QcJ2TH`~V?Gxrb{dS=^b1Jj*PPwDX_Di%c+H^VoIyvR|lCS?W|DI0|`7b;z z=}E?4|ET}M_1FKK1okq_sfb&|mErZbzV1+`-(UYgp~{D>>IDzNqyBF`_G^CIRmHoU z2i6w9oPR3#jZg;vww>{Zu0?wCb#zoEN37ZQcg^f$-<Ey<_vzQ+KY#9C{qyV7qsPBb z-_zajvHHU9`>&To{GYodm$9DPG5XzEW@kH##M?iX<i37m#PGePs9q)c=+(I$N8TR2 z({JMZW7(BOA2T`@{+?l7B$5>WjyH92x`vg|&nA`aymI<-&EaA_k6x-*CeB$oWmZGH zds?al1H;|N#)l>pz2~*;$hz9O@}K+H{R{r7&*=lP?AQEX*l?xm_5ROH=e_g(s|U)Q zPLB8=`$RqD|KhLrKgP-zoUJdta>w1dK1LyzyTkrA)AQc1b(>r5`TZVceSE<5#cQF* zS4HNn0nfu@j>`6O++Ou++FJd+>3fZxpUqvFFY@`}{w?g^7a22DU6H-c+a_;h-~5~> zV$;2!Pd^#|aI%=r^z_x@r!N;jeSM$7pxy65f7eMZ38U%pxhs~eSud{>ecM9)aJ}oB zx%(MTY`bOjA*0A!kEQuf=^Md(&ybxT;uiA9-SOC2lVE-A!h<`zj=OPxnfmI{u~P+V z$K@D9+8w&3|CYU-Vt(KcXX(C*6SGVUO*Z{C?#W^Ql^exp-qqypyTkZShVJ{Vy+V8H z1Hv!5yGTVA?~`8jsQ;NnX*c^y?U@}jRFf3z4Pq6-4^^;KfAlzI`smX08JjEKN$Fmm znqO|c<;v_;r``tzYj=Ix-Z^j8!j(xSp}Pzlypxl<Gkn%;sjdt=q!=`Lk<g>n6O~R* z%KZ3_O>d@`u2OL4rbA+z4n6uS8Y4A(TgS0wQ;yy8NKU+MXg~4foC{J)le^pY2Pmzc za^jIKmup77Z;s&F&MDV!d1td~t~u!@UKpYlpuKf!NZ6|DY-(GlSef*Dx_jU1&!3jE z%3O_mvVYdW`N|hhaLhWw&Gg)>j;k`=d)mLF^Cz!X;#|<W_@)V8i^ucy^!r^WHl7bC z*{pbdn)}4Joi)2zPe!w4@=v_Y)_I>>Gq_LP=lPM<A4L@YUa9vnYX2tfHD%o?&RL>y zPd81ox#9V?ac+qD8?H1Z%MIBE%I0ykVz1ibKkm8x`1V8ArD8%VnxC{LFFB>Z*vM;n zP0`9_tC}shU14<lCN-~y-|t^UV0m)>>)X43s`GYOtFy2yyw5DE-yt;H$SZ8&oM4&u zDK{I~cHe(B;RRRb1MS0C>c8yP{qrD+x#6e2y=ZkwyK<SphWtMt=GOJe^-A(>$w&{p zIzjW2;HDFeC*SFAP&*UXx}J0W#d(2We>a^`Tlzz(@$9iP2aQ|I&9rL+L#>yoO!>jM zb7jK+13Che+Qlv6W_;FZi?Z}uo4IhecWij|)P1gzue(CO&azI>2(1@gHSu-*@#anT zv44NQI@`{;;eOvq=i{GS=AYIy-(Xby)yVw=>zAX?GHygo_|&zgyQ6E_YRi3Ea$hX( z<(}RC`)k!YP!n%^(fb8H;a)6_69YVhPep_;=Py#aR=fC^ZIiU%=XnwmoDzR~Z~ZY; zn0kxxlF`0~W3i0v3A%516nL*C=`kHxSij}Ug36?Vqxs65w~VYOofAtDU^$*p$5L>$ zUEz6iOmgB0OGhc^W2{Q0$}0q-+qgb%T(qd+P4@z)EJ>{;$Gf_ijEq~lUOj&KY2l)c zGj@Gip&?i%=Gb||Xi7)Fj4G>OV87SQ@UN9ynC3LdMTH9l`#w@$a&LM=&dVS3e%ks; ztI5?Ld9+0NyXlO6n{GAr&Efg$^zX}mKX;>T?V8{{?gsrb3Mrel?`~dQ^5a;BRZ+sv zdfmVAw|buM=u)<dxubgN%#<GK6RH#2e(}mQ=9#)Sb2Dy_+513a!O<}0s2s)x-jxq) z9K6@EZMnkaF#Xfnoek5XeJ>ViYwQX*`M_X?bb0Htrutb03ql+NruWWWB)h|=Cj9Eu zlk6o%dEB{A#R4Qf-%F@xENF>#W%Zc)O(>iH;<hCdBO0uvuD$j&V^Hjt5wfbC{Pswn zQ$&tni?`-y-!f5auEdqD0(wi2n%|6h!_o3I>|z1u*S#<0lHC(xVs)GaC4?{Dj=r9y z!}RZ!Rj+HKLqz>%y;br2Cw6E?U%0Zya;h5dLQze#v)|0J{q}3Jy!#a8w^{extl%=P z#@%~PUCvp)`I*Ulrw4kg|C`+Zu*TAKg}?z$E$8UN$M!GeUi(=0^0k9@%XXFiJEW7c z_XO*yO)3|y;@x}RGHQ5bFaA)uz;t)qvHcR$*4=6Df2~>mp+%)R{(b!x-GFrupZ0FL zR&}3!B}dklX$Fb0lL9mZDzAvT%S&!G<9nO*`+{E37WKt@bC%wj^{0dNf?gn)_wm-O zIkR_O)VqAOj_2*uQ~K9l6zVRh4}4k2@{vVLN$Jh@1v*L(TjxgzO)QaMHH;DCjlcK) z%B{02Y=8C&GlgAYRFT@a$f%yLch%<|g39d6t}6y*8|?kofBKVB|GTb0x%M(6wP=~0 z9cz`vCr<KaeG+uwO1HB3%F-uFfki7DVz_2>v_DbW-naY2l-(gtdOLkjJ14C?x#f<% z-sw*(g?JkOT&wDt@%ZLi-&=<42P~YVG|P@C#>`%K^paQbB9S8}S9~a(A#}S#v;L!J z;;J0M>9e*xcbYM2p2)IO*D6+e7V0)={_I@4vgoT@))h(al??vgK@)?n-wK@EqND7i z<Kx8i!R5~19Wi<@fBenaT7FsUd79?2*<0u2E&H`|C)cxQ>n7|r*(Q*`!OQ;7%)P3C zUvA9)wWd1%_U_FWJ!0ROgoZ~P-Xs0Cq0?*^L;a4u#ter0jJGb`cRANZcIRx*WR8~O z7GeLZ_g{T`)BS`0#PeKr7pCjS-_ZZ1E~_L~E2>iXJMoM5d4K<>A46u9e4bVu_nKj? z*yhVV$9_GJGc-+O7F$&LrTWop@#$ZcIh6O@bE^rGd|Y+*=;5+P!!wFIJ0{(JzP3QL z)Wh`isSWiT>c2d54fC5>GRq?D_6xI^4u<I6qT#Z4L;VV#X!Kr)o9AAdq`lH_Nyv4# zRoc5%Uj)v*;<akB#?`G8U!8iVV>Myb!tJ$;tFm_~=`Y>IvPwHJ-(udcBVj@EQ@7+U z+gD_A{Rdm6(p}Cg>oU~uiWc8KCK#W)@P6s4D#i1;YyBq9s!=*p&$()ab<|C**X*ZX zPhgHuYz$oE74<5v`tWyt%eKpw@1#rq%(Jx1dEfXiJ=OO9i`$ati=5g1F07gB`%qrm z_vX2jKhg~IKkrUmT^#z`M)*c&MMS3B+IbV0r&<JkcXT<|Ib+J5xh-?Ds+Ouwa++)U zb(7P)nyqg(9ngDcXvI{q@@Yf;^jpk7n4V=TJy^Xx@ib$cT2SQ-fd}3Z1?~b0+hiD% zUJE!dyeYl@R-376q3<2L&2slIhM$pnn{)p8nVe%K&mEdCZvR{<ZqNAD?}wz0&29OT zxC@J~vRfy)*H<mC`70@EvF4eqjNPQVqB#cN>f4`J`aL)*e&)Ir!v^;3V=U|Im(~9e zXGvo|?Qrf#r-kj@f~J~NMI~45W;@5uxOL9r;Z4rdy$X-Fx!rJW{=@!2zU;e0(%*hn z&VNtTjl}<ShS?wQkN<GVWtyer9gT*s_7Bw$aks55{+quqW7ksE`_s$*PL%tVmOf*f z`nJZJ<LXYo0+%yq|2Liy77_nHVb1Ko#tWqz>(h>`+V=3?)1#%bcUq<jEGUd_6g>Qk z<ATk!>;;Vm^15eRlxrE@zp1{(_UAQIhPA_4Yn`?1@0H$h?BZ-)xpe1?1@&vhKOB*a zz8xW5&aZy#6^k$bzfBiKvh%Y}6sBcO+h{)h)`=T)I2Lo~=Dw_c-MsB)rdoia@7n2~ zoSr;*XL;VR{vdm?d1&+J)$6jQe*LPunRQs=XzA*|d?~A5E)`~%She<Y^Q-?M|JVEd zpPn)k#47(%uh6J{{eR`m=PCaG#g7ZG_|HAZ<?H|D%l<QGS%Jqt4z6x{k-x;@aeVtz zo|eRv$0;ZN$gZ?_C~+n64%=sgCzWz;+xB%u$$^`<^~YZ?%H!|~Q9O2@Wy-z=wVKqu zhTCR|?=|YEkDW9%*hE0hAXr`O*$tVE+xptPXQ>C}9yHD7%Mtp$@YgRc#!}fm*NjuV zqI5rSUs^M5_HB{Htc{I3VqfWLXH5U*cl^=INt2HV&z$~5ICJ6Lc^Zq<8t<!JemNz+ zfXn{f&l|J88qC+OPf%rR^uFhHhUtBYwjkr4GHpTUWuLCe6dHILNj%)1F|%6uz(mi> znkturL}tBU2(*zj=I)+j_ux+fL#UyBqu}*Z-}2VqX%xP-ZTjwJ)j8)iZr^#VE+t(Y zTs2W)ncaDwa3Sqg*FN;gB&<(AI+dv+=Y;#WtuI|f!nWF+_MWI%yu7~t+BOT}UEiY& zb8By(p8Y>c<SCQ7Ky202B`3rb7AkJO<a?U$po#yBw2t?@lI@!7zV5D`En>ey`9-Se zg1)H+Gr9I?&DF7}ELF;6s$cY>sX)m$HBeG}^2rcE4^`e{#f@>xG$-UZhAF?+<;_~D zx<Kzn9Z%yfyR92db}ZLrEMNJio`L1dugy$dPIJ#3^IsEk!eVyvtz6cr@iPAoZ<RAv zIkc+wY+9<s-i9UbbwxIZbLAi1y~|DO<P(?rkCPZoIV*)`h-*IcT=w+(lHv&m_P7}O z8=3BN6YXfxStc{Tt@lFnvHA-?`fWbS2WOt?ca{3@_}ISS&++uw-$9js+I6^u1&`O) za|nA%bZh)$URN*mKQQ_a`<IULO-Gv++~}FRDO6Nn;_=cX?e#tj^d@kM{M1(1t@ukk z{XD<qeupfL9F}{NOcPY3*oAt<IA<T`EL5^sqN4UqW!d)%lT|8qd#`lsHQt|OyiQi{ zJli1+CeOYCwiYF=3&&eFi+Q(&Cw!Q|xBf#$y`J|C`+HJNr<K?4a9fhGVb;TmYh1fO ze%Q6P`J$pvf#|I%><lqy+9SXJ`ZWD?H-FDMqxJXp*PhLh3y{<NeEa<L_xg-m-p`Pi zTsJ#)#m~J-chBz%&a|AUcIai(^Qj-FTuzCT^%kzHva+)kUDBzsen)WKCXcnQOltys z=jzLC%A2{g-r@MH_usm=?weC<@IC6+*=s@(ab6#0-g#)`+1*j`#OGh>)Lkdr#lz<A z{?~qCRZYIVXx`IpQw(@s^SN5_9X}K;q4FRiXZ?v<=1epGoi-^Sl9Y^39J*C(_%-K^ z4ZE`Xp+hH)@=t6#E4h&4Xo^H?^7D;7HXrl0ue;p4e)_lK>(9LEUx!X`NjqN6u|z2D z-to^FVuI6C?v=4^%;;P>vwn7uo9L>S+OfuKC1g$1-DNsGuWs<-ewg9PcVwGFx1wTS zcGphNHpz*(=1vMa;^B`Qg0loImYOweZdr7B%e-QSOQ%fc)+p$T$_G!qHTmj}vpKh) zndcUtn7^k@*K+qZrp?n<gx0^#c9c9&w19i++mPmIvhk&vCwpdZIUc6wpJQ#t_-<xG z^a@2E-=_Z-b<$niE&DFj9GTC*bL9>l+0@|4Y?Ij63mwh=DKSebbm5yFYYoGe{oSFv zeu8P#u{}o1VnkXi6XH!|Dl@Y}R~^2>?XkDv3il6{y$#lfy>9k-Z;t*kYcd;i{T{tj zt<7^Zynb7D?okofOuor7vyykG>T!+*qP4owE=*5PEU38TIYZ^hw+SsCo=q&CA{!<j zR#DvAuA<^4q~futp;K0gbD?dF(}I{L4$mVj5zm%&OIcN=E$u#btHRE7m&U~{sy<Rl z)gH~8cqT0g>`}-nx}2uU)hMNq(y?epd%d}b<krdx?QrYKO_EYa4HRv}zpAai6{Y;n z*U!nYPV(T4sYa{sM&4s&kl{@8WQ+P5H#;U^veY}7IlOaHY*Z6XI^H@p|FF0iaKKv7 zt@(<ciATRMFRKlcq6x>_DBeTLvAnKpKPc#}+J30`;UYutJvw?`5&IHLI^H_9|5$M` zkf)yWYs75Jt7qL;S%_}_&~#(P=|ijCo4IC|wJwahGVfCm!-Lx$>dE!5UuM1UVch(F zrwZFYm%xns?LEbz9WkwjnfDL>+yxrS4K++iG;Q3uQkStes#b#Iz@fMG+<CG5Ug{DH zjq@5DPd(T<xkq5e=X5DY=e_Ui_p_P5TDxx-SI(7s{yrtKf18`m2Z>B}`Z&`*`p}JI zg%aRFrij49waWi?TPdx)XF7pV-DM85%Jjs-YJ0BOjky;@qnYm-?QGyHS-Q<JJd3yF z^b$6!3v;*e?z()<Vf%`UvTPggn0-^&-eLR1?B1abxi))E`SwkHx<jlX|KuY%juYO= z`?q?op1yoiy@{au%mel7HM6Atybl!h&HlFb`}WD)7V!&uqPBI4?0=s!rJAQbtDBSM zLG0dh(^%Ji)y&;_z}u^|*im;I-<71(4zW@F#g4jL`K|<k*ei=2ZF6N;EZ1c=mE`3= z9GxdCJ~8^ZtJkV(i3?vfYAYLK*Io-}xv}MyjqM9Z{;CU;otH~bwp}jC{p!bm{g&OL I3=h~C0A{7)&Hw-a diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl index 42c0e32ce8e4f895afa9e105ecdcb3d508ba2257..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7 100644 GIT binary patch delta 6022 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%0AQN4Z<M=a{y+d4cxMs%+Ur zrrhs~j+C-oFVKH!(a-tBx+rJ&5+~zTVUKHLGFqLhd{30lPd&6$RZ~7?#i5sdD+`Y~ zE&D2S?Z--k-VYi{`OyU;FCUzc`1Vmcz?+dtgjs}vfq{d;X3plqf*wY+aci!k0LE#P zql=sv7f+s7q^<x;uzv)2>~i=S7-Dr87~~ibU`gXFx5*!KBq#qX5|#%kWT*~&>?Fp( z@W7dYK^~!wVM(LYWP@Toa4twJmS#GbGx=kV+~hgMJYb>K#nMdSxnPqP<nm5_SIh&p f7MxF*7#NIL7#L)cOxx192%^}yM2yY103-tda{p~8 delta 6057 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz index 8ecf0661cfdd270b33d7fe4e8bdce444569e995c..be1dcfe68165001dbeacd670709955723a01e323 100644 GIT binary patch delta 42432 zcmaEJj_K7orh55q4i2Yt+tQi-rz91n7Ub(1>Y3{q=#?ZEF}&IPyXv;vCWU$XzlvB` z%@*C-z9?_noD9Bne%*_P$2TqM2(posujleG(d=<-U~ZTsnLjUU|9$Q^lmD(-rJoVQ z*(IQQ{K@nPl?&5fy?V8)G_*W<_r|~R;?JI&pV>0w|J}tkWk1yG-@iY1?qBx{YrFe* zZ{EK9``nK|cZKXGE11;2__sU%^XBi(hFot2v)}EjVHDn2zhm?D9}l1Q|K7dZeogK6 zUw>ZOhn-JP&d=Wdanr`lfA2nC`+qt+`;YSPPY?F}3t#*5u6V$s2S-oeom(66zgoYn ze7`Z@w4MLlzn|fYsM{I&e*Y!^$Mu#U{_j0(^8bGP$Nx(|{I@;&|9hQ{jm4e2);Vw1 zSp469^1r|J@wc1vej8r<|FB!!@=yKyg7W_iKmVV5c<%IGas5W|H}Ce}sQx*3<K{D8 z|M!0SZ<>5<xvAOj?Pn~u{yxJS5%@EHhWw3r*>6nCULCvdQ=arII5|K4xoh6i+Xgc7 zx%u_?@837~dA01}&%?Rx<)S(36OXR`_H_5Ui&oZ#edo{nS%uI2ym{TnUw<y`c(?8K zvDDv>KK*&}OG5to$}67Bt4nWImiGFuXuR82c!+IVb~{7Ng$UsbYq|y3N*`SN(&AXh z%yoi?Je;5PGaW9`UHpEh*!ol+oBK0Z*5n;1`e>Vd>G<*b(u*R~w!TsL^7bCfeCf1= zh#RV#d+uF%vB@q!Mf}$Hy(d3h`*HCD+lRw#MRD~;NqI9`PJa$=_`3JwmF?}@7e2hZ z`;0k*%8HEk;KOrTw$ID|@AtQ}Y*SXt_OuL#<<9q8y53FT;<U+N*s$=WL~fQ9>yaZz z8HK)_G5CF@tA*(TL#k`Nv7Cqi!!4Z$vCK}+_lsY(y)^!LSaHE?3#l5bLP!3_^2HOM zcTIC~e0+~DztVco;kJ*rK6CbcJR)E1U?>=NwdJ&Bl=#{;mjjp<r{#ZIb<g(mYlB+5 zGeS&>yZ=<*<*;3xe`rav<wdS~SBVe36JO49Zkycxmu>RDwG3<W?%X$$va3I1_cc4{ zwpH4@+$CxmOVgNDOl%LXwLLbC?Hj`e%d|TA+3RHA)a>`XTiGDjS8?-#3d=jz4~Jw9 znEce4pzAc*_8F7VFEgLiHKn}gGEUWhReSBm`|6Q-eQogk(jWYVMd{JPIj7A_ehKhy zIM1+FRzZQ``w2cKrHVzy`#3V9f|gvXZ@u?x1509M@1!Ya-)=Viv<q3jo%zrY^*2dR zBF%WtE(ujtzft!4TuT6B_l1JJ7Yg1??A?3VhV7oh9`{dNE1YMDaBtARE@!GT>mlo_ zqQCra9v)f#-9VS`@{Qw_@8>&kWnS<tKQ;egiH}T_JoA0&gQx$keaUpCsF5Lb2jeso zRmY3<!tQ@$B$ge#=zR9-V`h<Dl{U`PX*rLZK5<wWo>2^7>S2^S&bFplU*e_g^Lvcj z4qt!Q5xFh1<?=?mH{a*|*E}ln?xCWiPYs8rZWPlt?e>LY4DNF!u5s}2AKqh}d;E=M z(ckQvm3?<aI5*^T1sRFPPq@Q-fuU8j`tgjWLuL!F^3*#|(QQ%WT${0ojX7cd*^3fY zZCwX$HJ+(-)wwCvFZtz<q}b%gck|sMEE4zCvPbMmW>Zp$@DF16HnEr4u<D}F@kW+C z>1-C2db+OMza3t&zk0ZbYxkm;hqe~fXMfK(O=FlW+Qic^_2p*k*~^4hN(3lh>paMC zc%FW}qj1u!uUA#-rJOa7Gc6D~w2yOcC7&+WiZuRQ@hZ>rm9yl%?Myp#|L>aUGXH>F z(B>J|S#ch`^Lu@w*ZP~8)h-e_!p)m}q~@7VqU?_O9EG+E#FhwOm)YoR`O?flsXpPG zr^gjj$(0jkF>!4?yvNbx_3;y@T6@mV`S?UCz&q@<zhZ!ng{HTtO#O|B9KVh>-G!Ye zrrGpKuVQ`wxnX^Fx01`c_m0>5Qf?ny!oJ7ZfPZDVK&jvpmU$6eR|G$PoD!v&KJ!TI z!Yvm>MW39yVtc8&pV5fDp{wTU(m7kquU(yS%{4map7u7LsWX_lFMMy1yk00)wamGs z<bAU3^eO$F+8gp8XkD0iPRT{Fe%>L4D4mx73*t1oMBZQe-SA&&MuYM#zOXWfr7hP? zCN2$Gm>|`XBl1E=CgokrLXMY{dqh-!d|CYD@vW{)TT7N)H#HMl%*1=U!~8<w@5v2I zY`$73)oETi@%_k0rHe=Gyj6}I*Lo?~Ce-ux-;voY8!FtF{pXCFFQ4fi^fal_wxqNE zJG15^8NnoDO~IL0e@Q;LZSrO7tq6bphb?t$+jPSp_)K+oSNL>1a8dAMv4)q13)BN7 zB@2rfqTZ`VwJ`p^&hp~;!Mxvc4`z2~hg58RdR+2i+~FUbSGC@Ji{OpV3Uezz)Vg}X zRi9+H=rpVFGzC>&UPrb~0u3{_SX|<Euxtrzs&6w-Q%rE1B)`G#_^$1N*9&aRyVL9% z1RtN*y-@W>QOfV$m6Ag*uN_GLaGLGtyK}FVmHj=76aOc+U%J&Kwc*$?kK>wt;u}AI zT*6+;*zK?)`8bPHxIaUhUKVqek_h+RyvtW>j&^%S`hA_Dc&>B%2hLm9)m|KOS@v6f z#$2h8<i`T_;u14t7KTh@IM5*NGW*z!{?OUB0oNC9jQ-p=ahf`#lJzZVo`CbriU(v8 z_Wy~0pfOMWQ)gg}gT^T*Z51<R_co0O#VXaN$CKI5`krs~RM$~{FSOvR>}9r^&zo*N zVCcTm(HDEvJT_vlW5O@9wdWf7@3=>qoSC-CKmNzo1mQCY=j&6Ql$d@q_qt?$4bhEs z<m-su;dG1XN6g7?X7yb=j<1}sX<cFoo5lZAVq6WuioUBoIo~R>AC#H(W7dp026wV2 z9thgC^*!rBF-4yCi{I5&*nhll@Ojz88Q%{c;VWFhCtak-ATjxXyOm>;wwR&CBu<$R z4l`~ATK~-`T2>TMWaqY|ex;LfjA(c8qL7(O47I|#OiUJ;s=3U&vT8@k0oAU}>X}D* zmK;hu=<Hd;wfln9txmCYR(+{ss+Vn@d0$nf_$i;8_QdG`d+y5HM}7o0PIC`#%2F;d zV^ni5X_4an^L2_#-|Vw7Ezb)!Ri$tVIw@U}GCY=E`M@$kxbUZ5<@JlRHr1~-`{|+X zkm=kae(>=(HlNkJ&MwQAuHJXb>WF{V0=1LvOH@CK3oYJse%>|p@;ff8Ol}2c>@Qy4 z*RR6ztog0d+=ADJ7k0UeE%%VR?Q*%+<3z%qxfSPY*QU>J-EiPlQ2sTaicNeBi=I5# z(ihq;=y;{D)%DUwy%oFraxNyVFu!V=THoYh(lc$ggmk%M%7Mu#D+|x|7W?01V@$7H za-nI;!9*pipIx61dlY!`+F4$(xU|MMB`WJ*>%;coy>(@ES1t3_AAa;(MrdE*%}%?3 zr`LX644;0C$tcW=YqLpwRPd!QCW(B$-8pAEUPP!xP1KzE;`!BCf<C<#%<>$(3**?< zM;X`OlsI=pTTpt-Ljz-nVz2L)y0tE5u^#2HvYnJLOXwKKb-}iz5K)msAH?U*Jl^3G zf4z`>N+Q3KU9(cLgy(^h-}B=AlW$JhHSgI|p>2+A)7UzvI&rZ?G}LTb;CTPmAxFQf zcXqs(&)h62%AM9ESXFv@t-+J{Oq1--zNeVYmrk9`U!T))qQaF|m9H-%`pCv*hWGaf zNiR!%ST6rocCOOaFqIcf&Z%KebCc~GIxie|`6jZ<T&H{IwG@@B*CdX596R*Z-g2(z zJU5PMemoA&&ytk#MQ`}T@PAPE{Pnow<n8SzTmn-<C*1NnSGA5oMJE1MNP=>bjMa%3 zlQsut_h#;tl&YzJa_jUBqeo{ms$K6XFwd&mlEapw<5%n>c-MOQG@-5SvDx?ba5P-W z3-#gBUMpRDa*3C+?9n?$r-D2qm^N}+DkQtVVJV0<y~NbqR`|9_gg4{Tjr12Q@)!T~ z*3FVuIkn%=H*4Z7WAEbRr@PiE`N~)OSQYJ9b^Y?*^Pgv=Ih|E9s5fnT=v#30>ZINM zd;ZN7Pg31l?fhx!^TNeE)89@wV=bc05@o<xC}7b2u~#96?beizz8z%;WtTL#rV8;M zT&8?zewV0|nB?y>zofd=kF6GXw0Ysn&$UaJyjA?h#Mdb5#j4`4ZN<xr)7<A6KhfI0 zO}V8*TskYJcH(V`XB>aiycRpwuNVLP{=#zoIwqf{w#r1$Ekci~o|FoutvdhDbmP%? zf?Qu1p0T)E`D$|1<+t3v%)y%=`K8Z}C%~uG$m&Ay>`&)UT~&GR>(R_3c);-Mro=fn z7-#zJ$h0=N*ZhyOV&*E>1rBe0cQSfUGoKY9D7_$3<+19grmKrNg|qED9M&qXc~NiT zF>6ItW=Z@pwQ}LVQ3pO<kB(h@Io3RG>#n)$T;BaYcXjsX*V>P3Uw_(ET6Q(Fy!W$r zZS=oCTQ6GuzFKkH(wedK_%rJR^DkOUxhQY!TpuxOwn>!Z6LnM7`LmiPdaqDwKH<MP z!r@uy^H*D9+1Jd^Ej<?(Uv{o8Yk&6q*sHzeZ|hG#HfKnE9r}Dr@mKAM7ha#c8oB%Q zVfLs+z1`PTeQtcse0^!hj(vM9-f!Ev<>~HLzIQqdf0AEZSr*HFYv#kS#5pku&ua4D z++H#7as#_VY(&co{YN`y?VnOD-ONy;B(pB%dYQu<+Yi6C8BMkf7XQ8GN$*wjsLRK6 zmhY99`VhTHM7w_Ot+exH8K3twPrA<V^*Apl-#s>)q7yec4Vsp&-5K@7PfQ?S#crM$ zvyz+(`+ntYURSpJwPE<WPk+uV`7RYMa$))V8@53&ICd!hQogdU^^MUHj+Tb9<D0Lu zKc8p#vC&V`GPTcFmb;(9cdeySd!fADwP}isfdvi*X*;&Bduw;Nsh;WRw0zYCOowZC z?NC&gnkpkzo5x_jYjy3u^uC~&lUa96{iJraob7yMDE#k8+0m4&n$YhOSGc|(Q4O)k zIsTZ%`isr$du1i}AF2zSx>u32Xu3dY6DO0ML2mk^;>;AQ=1yr%a}^e2CC37BhR*Qg z?C)o=I#_tLuUMciTeyh#sZYK6TI<<np6p6B%wY`<O+0x5XFrR6NIsnLHBe1KOy&8} zdC?OWToXI`J38d<<I|=)BO`X)Roi;u-`eMe`Wls1$+O=+DQ4Z9d!S=J!)j#?-|gpr zC>*=PtF`0)lox%yF+94RGD$LP`&#aPsOtORH1Xc1-W+z*_<dKI9v}Rw^hVpdqdxb0 zL*vI|yWPDzW>4ZuZ1G?FFr!A~;v=hDc^#K_9^J-aS$H%#Wr?7)YK7<J&ayzIKDo*+ z6C(k;#4R)5Fg`!O<H64=^*cNwc{*kc#jV#F&fYjxFn9L94vUE)>qNyCKehSzH)Fd` zMPH+Ob7<c&t@1_JF4sN27os73v0+(9BggW3ubKO=uLum57S);4a64UHBYg9r2QO-0 zKVs@C`B&Ex>~W9j!HQtPeGA&(J+x+e8uwN;u_E>)SE-<z;CD5Tt+$#(A2&<Nd98P| z-SmXrta!}<21ds2xyFCx-US&gIP;ZX{<^X<tF5rpEnihb!En*A`Dvc!J-0fa=dGw< z%<VmOtp0!QWrggyXRa_@;a<QJ@KIFekky4F+qRi^XRFR&vj4xv%<1Hc=L`(<8@l`& zq(k;>`7qf_&o9;TF2mG?$4;Hq3o<?)ByoD}Rk?1bu#EN)C!vI+r3`&C*H1KG4-7j} zZs+=eyNR<Uef8gpM$4V=SKTq5IQj6G-`jU2pY2q<<@3j&zV*EOW9Ear1!`rH_CbY? zD$~-8kDgq<j=e?7RA)hwp85YKUyo`QNk;MbL$!KWD{hOXX>4?J4fHyCaZTNN_j^Xh z&o)hN$!VK(C%tt}m%s~MhMB9TT)gnPgkP|D+p=oS<R6nBByu!|DflzT2mGDZWxjCj z=?ESc&nHW+F`PYc;ZFTS77o4;CIRj|qfP!5-b%H$9{sB~a;=Yl`hU$Q`|zLhSD(K= z@qh8hZ|WtB=IERLf6f{dr}V%0f5P{pTL04}=a=i4=o*`BZ&_Eya_ZK-Tap@e?rh6@ zO~1Bvq^z};T=@LU35&{7&h@?BnH8@S8DwAF{a5m~*E}hD#Y(w}t3)|s>rczE^cEE5 z8*fkiCY`pUccHXe-ls2zIW;tH@7bLDBDs34Yv3aHW7Zdf92Zyh&k*O|ZXkBU(&*aP z^3unzZdLH-u9yCAx#&6XthN6yRsVTCE5N(2=ccFsXLWm98_rcZMpJZ_n{Npy3JGgI znX+<?(N#77m4EkoO<K|QFxFzFSASmp4E>#2;v2jst-UfWH`O!zQ?Tc!sZzPBo)LjB z+*waX7@i58IAy6+jD@9ke~OszwXR1s&%AG)YF>UwWnG2FxkD#owB}`p1%=<cAm;Ze zh-YzAioWiF<cCZ2=e|DY_wSUmzv#(?Pr-pf5l6O*`SDGjUpe{6rwyTzmuCD4nQpTz z!l{0$XUeDGT%$;xN2?YsF*>Tg%17^VX{(TDT4l)Qf=e^`+)YoWuR7{A>4M0o)jn>Q zlWu5vdua#!lbbU~&Hk$D%A;z_XQgcISROWW%d+kTU6ZaqS-weSTZzY)q?0*brE67I z=Bk~JusG?fyLi>4yIYRNnZ4A_o)W5d(Dn4LNhR8%(e*K|w?d<4R~8h_>C#@W<>^-^ zH%Di>>Bgz5=WBU4N2LbM{Sz`RM!b9CdWDmIbz=V8CeQDh^zKVflh&m7O44N)RcyBY zTJ3r4^5b8tJx*P|6>VYZU$@Hh(&ZwyQ>w31H!fN=>3dR5(L)uxr3PUW&xmKvZ}qIT ztU9*HvyR{E+v(<|^}C+zubj;ASz(oq=7vj84y>BQqU|d-XRgVN_9t1BIOG*)Zg{lh zP}gK`Z9k(mHa9n1T5|Z+WPWX5r!{tx8!s(6k~LXa+dpWHMdZduOOD<=*=^agc2kO* z>Z8@3Syy7thpL#rI;%V5$%^XP+MZ=SyML#t*{1oXEcKi)asQe{DIRB)>Q}318r^;} z&)zbqZk6|>E6X=^rJS5`GQud+sM}7<cTvcit(#K3e2=fzS!wj>I=6awTH=;jDc)PJ zi23gF*{LNruV&?$6JC=HrdCD88ZBE^sxxPbru|ga^i`5;wLF76XJ<_^-JG#=(-U9c z!)p{egDa)9y`F{CtX{Ol@8?Rroxz*ypRV%!)KfCmYm#lU+_IyS?M&mpKRP-8<B2Ut zCpm;JdEz|DadTKi>B)sF&;E0r<dS^QQdFfo%PdIMbMeRAYey%$Z;d_XHOa%&b4!6y z=9c8$1wkv1xoLUnU1j_ALFMwA*1#zxvqJwZ^ju+iEnn4h<*7X@6)Z!I^~C*yu2vpB zbaGXFRnD;{&()_S)~i*9{=6venG~9x)|YZkXVEO>ou;d+SWm9|6zqB_`;xbb_D|FF znP(^S%)aX4dUB)Y``=2Qn?z@NZcK^%xl$w3EGVFRQu=kh8vgAcwyo3mpSZS9BK)x2 zoKWHH_bTtW>mwGo-%j@W=egzX!Gv`RStS|meK)gv^6PzXfAUo_3{d>5d&=5K-D3H( zX;*I_3S;iEpPR?8Q|xV_+w^vAE*C%dqrD}rKINf%*X&IVo}d|~U_ASkdVp|qR<Czx z>RX9Qr991F0X!vg$EAgDzhzQWZ!9cH*<-M+CtSxQ*>(LM!wJU)oph6~e?9eK&T{|8 zOxe|J%yPe;Wwg|{lxSsgdv(vz{;}=;jk~>}mhy||wu<f&acOTompGB3HgSg0G0s;< zRW*ZG@*Ok!E$5bhF#q5Kkt0T&uO{h#Pv~|oO!>3bGhmL(r^MGYcIR$ew=B8L#VJ?1 z)?aKx#LTv>U!^MK7!FkWTzSQ*^GW%UrVdB*ezWgVzjvS9p8R|A%=#*`trsjW`rEZ< zO8N)4CTh+)c<ZFdl7_qXLW&D6zK@=HblbLX?=3s?vY#_gJb1A@=bi0x@gt&kAFSlF z`J*HBrGDQ|;F~G2%|T^{SfFlypz2cjsflex{m1LpGnUA!JX*Bw_~nhhrxVXiKfg_< zDYj-phPH-&cR;06x?^J1{=GZ(+N2J%&sn~x?crCmd#gUZ|If!F)ezgOxFkD!|KD%Y zQSuAkt^dp4yjdbSn`N`zvdMqMWb17<{+@4e*ElBncW0~8yWWB`<!wI7Pwt&@5a{?Q z{i)&l29}%o?kwW%X}w*=5>nF}PAB^@*&I35F>lRU&PN$p{Mj4$j?1lZK3m!;b?-`E z^VejNP5U^Xv@e+DX0Rwxc?~01#*|P0k6dW_Am%H6e>eZNHH=>lTj%gZRyZ%-dC<zV z-qXW;+tr%L=Z}xP-~GEZ=;SPGg~@O4M+(<PH$R(dpEx^v$>ytT7@ZpDpEs}Nw^*{S zxJkF|uyg(d-g>Ftw!(BP;bV){ZLV+A_#*PzW5Gn(!#8YmWZuZW+h@{qy+^J1l5v*! z`?7Ke#((wy?-x{m`TtKp|JaS&tiGoV%F6l;5@*zZ|MBc@bw*nGy0mYfXWg8=dgkFd zX$uze|8A*&ym{kpc8@|eW%C~=GB+RAY<k8!;iackci?0NX~$xZ+H03I*7SL;=s#6Z zT>GH%_17~tR}DRQMEcHto%fPCRA_1M+O{Y;mxQzW(oHUAeIi+}kF_lluGllt<%^rG zxp5hDC)ewamGw7PJdXLZQM2vNgA*Fw&sHSgf8daBGvDhzkH9CjOXg=qH+1Mdms4Pf zH=aCW(?@&9S?mw5u~vQ72+GJkUE%)lMT;ea+?u?e6UJHcI_u?araYI=o1I+!`~L5Q z2kklBv+oJ<=I5=_TWD^1B;nydHO4JFT4%kQd-h%E^-aucqpxaK)=M}z{+rLh@r<2Q zKWM6Qf9d(@{Su`Iv<?|ApRIdQt+d2v?&58FbK<fmp5;8h>ZSPAbqiO!?J(V@`)beG za`A=U0%umRgk6@6Ft+gF+WLI4OQ2Avb(HKuGrzhGXT4dsaP_%%sbtve^5`?)?z7&h zdFSAVV_BOed+Jwg?KOFFTcV==;M>q=_ipZcKB=ghJxjM#<(v6Kd$m8W`Eo`1)cD@{ zT+q{F>ygT?pUsfWQvBi!cjWoccB~>7yN!>;Mj!C({NWJt|60SoI^m7F3yLh}d9KU1 zej-!$cGKOxyE0=-@@}Q8i$9;cdG$>l!&Sw1bK~c2y|>jeyJuefmR)zhKcB8XN4DPW z{O-4pUwdoxJ}RzV`}N&(?y5h}_Czm>4*mD&kI*T3nSFOI%c&)Fave_$JYWAZCN6fn zpX>8I!HloI9(`H)dWnr&#~iifBX7-E?ba2yc{)xskWH9g+<jk~&sB~)p!JqZ^YOOk zXMC&Htuf4z*#A&dng7a)Bf=N2&-&5*>zrmyYJFYqX2!Ymlj==>3hllf!+dk1rq07k z6-K?p3ChJiG5frCnPx7j32aedx_0fK_^j0CwvP*+M!o1Y)pML-XdkskamMPxKZ?<e z#+Cn%AD$~Owf*6Vn}7T-1pn9aTl?dD?jOdt^GX(k{!Qo>%6<3u!>6bB;_?=+{(V3E zx&72V|7BNvu0Jjx_pe~XuK$0dZU4XAbl0l#dS1_()Or866z}*x>0P~j#m4>ncmGZj zKVQ#ual6(3Ov(9E%d?-}jjG%pc5f|q=K4dsw;J6Kf4+bHpZflSf4>j@d-twiTmQlK zXa9w@t|hMl&1+Tuvyb}R`T2f5KYx5py3CqC_4nES$G`n=)BSh;-NSeH%72Sr_pN?k z;lKM*f3wf@wjZnb_2akwfp7d1|G$^pV{zkVHDgiI_k#NL@~!_j_w;Wt-|Mh5({M{v z4ga!NAMKk@OxEtbJR_9bt)y9fLx5egM%VPR1;wq)-)^bB|M~iqz}v>myU*`6G@Vz! z=*pcR`_kBIQ#@ujeyr`~i@bO1?&0?-$)DNVe^j@yv+^yx<2Lv9ec!us=gM}oDbCok zSgmKZV9PXfPV?&*4)<jG310mC`P{YZmG8vWQeEG>_+2^h`D=4RvOD|7w<aYa5^KBp zp6+#t`_$H`r*2c6)ROt?&f_C@eQZo$?_YV@`gZ-9Z$?*lwlj8nt6RL6+LaqWM|(N@ z`AO>KV&!p$m9v<>uXt$4A}FvY*t8|*zu11q_Z_PwZSVg+@@IB5fAdRD*P=Z?RwT~h zR+qY~mgFa+vGrX=?d5~lU-$Mb6L9TZ_8~AW_=WYV^ev1Dk7v$}Oy~?}eZVOn#ACLz zazciW-8HF8li6hjnSCGoOqP~aX4%?c**w`vR<nL#ub@|zqq7eGmy=h`lHvj$xJ11? zd#0>IRAfu@y^AYkb!4|D^M88%lJ8=#?-%Ffro<W>&xn#IVh2U?qfL*`Sy1y>(*N;~ ziNWD49bbg<U4B<_>YSdb>$35KX8sjX#T+*i|KHCJ>Z(^B{;qNQ|1;s)LL0Ai_L}QT z_jfW>y1P5ot8p4PPkExW+}XE+zhaKoyRZw}H09>MT*amwcV<4f22VrNexqKwHJkk( zE%2K@Uu@00FQIcZ*ldlI*DiG1WWaRTd*TwWeSK`*t|Ck3@ITvd@yUsg8SOV>m}k!G zbgq7USv~H^$<yW^O{Vh9U1SzfpL<DGqrs=JYpajq<CC$0tW)dP?UI|=r^Y>d38QJB zXqf($-BLoi#wSHysVtv$(lk!L{-nhJ7ut(wZlCZhFZA}^tV;*Bu=jEw-*Wfy3rAfu z%i`~*_tnkr&%PMr@<r$Qqp1pCGyJkHwq%MnD#SiZnBcKR<;dZvRT9_j@}Fc)|8i$a ze3JM6m9^~m-b7wj(>lVNZB#GCzD0MwWdob)d*}Pw|IeTL|M|~fd;2$U_SAGvbkP2P z-u&(V%J1t9Vix^>e)QZ!?=S!NSX5N**j`@X@o&Dkwf6t>lYi8w{iq2sxWD$g1mj#2 zmlKR~1>E-kW9$}YC@!gWy14t2-NJJF_}E%+J4MrbM{Au{t&Ev};T^yIo9mxz&Ffb+ z?yNBn+<x^}p1_Ug@1}PO{MsTXHm6z3MrYMrCH~Vo{w-N4ivBJvUZ(Rp?5FR4m|Y;T z!ohk{qtYe4pHYsr#{2d&ew$;kURbPP)20K(x^MG6c1raeo*Pnn{PQvMDSVUKyoJKf ztkN~eNY<@-oSu7Oot^gY`qcmSC;t8ac>M6)dinZ4g{lARAAhSCvDwG+yIy|H-{$Ey z|MKhW>+`>>-uz$9uKl~d^IQF)J^j0xpOnvxJe^xJ@x1!Il_8cNgH*1bx?aJTaN6j2 zLe#NXmg`f>1^wGE%wPJ4Gc3jC|9YWwZQgY;Cf46{+-Akge$Kl!|KqfzkF%q9t+(Cp zZfW=ErS;`{$E6b@H;MJ=hP{2x`FVNlhFPh*-=0^@D&w;+H@sHS#ujy4&OMFe!j>nt z-%B4)S{yOu#iz}hkM}Q%o$&mPRcD3At<puR2d0$HO-SOGdSqOy>Z#xPVeXkPQ<n&> zRNAc<=nz$RA>_vS4=X>&aocEr{t==w;f~*=h=BghbG06Y++SEPxv9EX%ikjQe0krB zvgbv8E21jT2?lB>{O#no-Md`J!Yw?EH(`^+-3`lkbXg@btXEp_fc3zNJy|}HDUUMh zttx-N+OqrZ+j(wfT%V5$UYwE4ac99n<M%&U<ugok6Wf#|YO7BA@|NyT%(|Ulc-_y0 zmHX(Gg8dA~UCw`=v$NL9v);n&h>7^GQn3%$QbfED_-B5xw3FSs>(agcD?!YC%H7ky zA6atkakGu#$~nhps4r7^r#4Z<()dx^;&mKMR|ABfi3RR9)V|=h_2m8)Op^+u*O*IQ zOZv(t?UAzW<&FKudvZASy`RpBNZHnP<d^<N&p*!Ii~lR_Kj^&AA;0OsK`xHN_43lQ z{=a&5?|3&??ZX31-^yP{9x6BeDEqN@hD$+8&5DQT&-PFH^Wdn+*9Nu!rQU2>Q=Hqw z?K+z@UT&675%2PeFOECh8u~{waD9pc?@Dc%m%{R<9+Eq@=9G)X*3Wy|e=BB^GuH>s zW~m$%wRhY$|C5#5jo74%y!L(2ug^Fbd$N9!N#dTJHx50xJl+5A$+9OU^$+8P)_(NV zx<6~q75zWn7a3GO|5~(muFLzTW2eg3cYNyp@y$K4VouI}PnVe6Iytw$hExj7@?3KH z(h2quv5Zssy@DDC&hh^GzNM~njVWX3i=wkjKE8R!`au3#bjiAHf2}XRwOaS~;4kg8 zUuVQWE8MRCmAqF#vUcX?^ZD~W=d9j;_wm~Y5=jx~r5ad@=Q(mbneye<w1!zCCC#6g zb<96D>%X#){n=Z(H<f4KdQc<gS7ZJt;*oc+{(ZIo&S$oA{=dF*z1lzJ%F<xve>XqI zz7WdeVhWPkq5042+}$VjuTDuVu%9KdWB=DP6MZvO>bkX#{nxC&weCQ1<&(4FF|t?9 zq%63Y)-}0pcA6|V?Y_&2NV5`^3kkM{ny)`*iftCq-aIYm(V1=@j)ph)uLW<G2><`V zMR|>YONSL}_UFT<Hq}pW=X@}fjxMPa(l`@hE*yA+XaDoQwBGpjt<UH1sQIm7I<-t8 z*HHc;@9oC+Bd*INGr8;D)bC4q!R@eTa#y{Oo93J!p4<$_+S<79NoN{1_%Ai)m=wpp zXN`7OpP^&qR>2E*xy@@CB&IIkJ9qAnHA#EqwyZy;9C_Vnc}Q{a6`>pVa}IpS;nr!B zu3P5JJNv5IRF!J3$^)!QJMA`nT(+-4rA^ABiI+(w+oayZ>+X!5A?(ryIg9Jd{*?vi zbL+=-tW0r9UBI|(1<$;xi;UJ}*A#ucq+A%U<1@wcch{!})032ru+3u>e00$}o>y?y z$(4N^g;MjTa4@HeKe#SETbj*f;*J+wCnjip$b7#0>X+NwxRxHd<l$!~{#|`q#_21e zOG~N?*Q;(-cTFh?H8?D!TKVCdc;gTIdG)WI9IOPYR;&DG*(?6#cT&3j=`UUW-e%=? zN-?u4X3K0g^ZNEpY4!FWOGLk#eNbC>?|RImCo9E1rTDDTNY|ZQ?Z0E*t5;b%ABz)y zJI?sz<G8YC`OF8inj7EV*b?!`w_$JI^22>o6wasVTsN7tK&H4eW`#+}$)p8S%2HRK ze}AoeUHzxWCpHBo8Zdc=2b#L^MNH>A7*qZs%POMy^|Y7uhxUI-=#IZAy~6xra|pZO zvrze0^Nfn*yyh+bm7-^Q`ciJ@Ww+jshMXa(m3_$tDWS3rxet8OulAnZ78hH+aBfEU zg-HthdwV~hetgc;?`^A#R}H`C$DGVL_b<1;stD8BZ{1(NZqnm(zn*LQiwRDZx!JEd z`<Sq=*;UiyvU9&jDb4n@lCd;)=nGtY^v05UWwC2h;!Vu1h1{2$W~M6c9$dHb^^&_+ z_HpxFUs7-Ged@tp*A#<~XIWW3`c2E|S>HP&=J66GmFTEHHeDaC|GHA<JZ%B{5jO9; z_93zzTfcB{9h?`KE$bk^U4Pvz_03<aMckLYUG`V<_$OD%V&kl(7gqFi+3rnUnea2~ z%;_UNA!*5On?FryTh`>1vEr5a%e);=JC>|02uPVcOU<f2^~R2@#RV%@1o@voqN)+k z%in+AEmbGR_vGdU2c)g^?G`ylvrSih{%Ho^n)$w!d*=96d7k>s#lgS*vDi`@$FLp6 zOJ8;5+I0m*{@>%eBmVxMTb&*mjJJHbCJHHt2TtS@2=rRVCy;8sQZ8kZaI8_lgO$@# z|FP_9k~#HFoLBgKSbgw>;Qcw}n~$9R6m#yQocx=zzFC#COwX>r?4g(a)au-Y&xyXQ ze|Ai-(`hoiAJ6=>`Jb-z%*d-=1w4hX+s>Kfn4j<KkV`9^d?MeAk@e77nYTOCx{kBg zizf4w-C|v<$aXp_e13+kX@~uX4|fFw7Q}sMxGN`Y?q?b791}lLa_*Y?_8Z3>Jswy| z3&nZlTBS2h)%a}iL+sgw_=TUh@A=}PVn3yU<9*%CLzh~#UOw9tES<Jxm8^)Wli-ok z!krmcK5M3#y!$F3{Hc%s_ES#LEvFw$d-Yl}t1DT5#R=zgmb0JKO$opB#4mg9XOpk; zQonOo<@4Jo>73M`b&@^R_VI526-M=EUQ0Z8@}IodyQpvZuh^zdlU^Ao`9*elC*HSD z`#Luv@#tLsN$X9@+GG^P7()5hG(TC!!>&DBbXsd4YsK5CvMM{1=R{9sE!fX+pk3i? z*=I)0#g)sdDp>9oUtb{`zb)F>+_HsfR*8PL)C#Lw)`<HjWHxyS%KrW)+mm@>&FqM# zdcQZmI_k?C0$-(X`@qrBIoGPAO-{{w+Q*vsO^Wv<o*%yww(HS_w~sX!RBV-wjh+^k zTzH0e*VCSMr<Mx)SwT9#f-J*K7a4w2TljG2f)%XKWVOyN6xp>h!g)!T+}p}X6}N>l z=OuDfw%k)#vc~Ax8iy+n86s9){&4NP+TrNJ*6B~{zuG&R)<62xDAW4v!i`OJ+CgVc z`CJ`OcQ#!-=n?2xGcD3$(TtXFedjlq{P3C8b-lOiL+>$-Jy!eIR-B5ji`HT{xH`@1 zu;=QYnLBNtJP0cGo+B`|YwO1Rt_|(sTY6=SxejnRJ^W~)C-CmTn{@48f0V)vwCfJ1 z)t!E2EdH(i%lG=(NB0M=-k*59ru9jr)Wuytw)ytDJTl!nVbj9S?E;!J_|{}!c(`Kg zf{&qZ{)erdp*?S1_Op_82KEjfM$?!5*>oUqzhuqwnIG58k_*Z6Ic8kQ_qq98+%=&z z%jKC}`@Qnaj^1}S*IspFbIpR-g>TLEu5a*oGhOfarVCbUZ*B3|u;x?!-sO@v4x2nV ze%DfOwNm$ogs1=e_f%T$HqaE$wLQ)redwo_a#g8)=Arp3R!*FyY?eNM*_n0cCf!+e z{!sZZUn`HRIp>3-!uZbqY^vK_&b?h(s;<l8LHWE?{$=}JVzf^;N6u9*dawP-r7Pkx z&#_%^I_~-iOcUQe`}SX%s3SG=4s5O8;-SZW_45azY0UvssyYrAyj9#W)7!hN-AO#t z=3ea+Ngr+Nl}C=VXP8_$Y&2!&q7wD#cZ(guq7Hg#SJbR+@K|frs-XD(eCF9(VZi}^ zylU1T`MzCupEko!f2H#~<KorYwz#Y-^eK7J^XYQuyPOHjPW`LnIXQ3oWvxqz;hT0j zMb`UH-XY={d*^cSiA>KUw_WZ`<$TlLw&OYXqn&KcuZxv8zid5j{C<YlD@n;+$Ap)D zS#|Ze<jcvL(wly(2bg?WH@|(7qGHv&e~l(3r!T0ctS^2gXj5RT?9*Y9uuj>5n?Y+Q z<D|z&-&CJVQ7L|9_u=dV?Ki(>#MP|nHeTsC>A^?;jrB~gD*bMYasS$9>nFFvDT?3J zaQ&&xCf8ldKJ4lE|8UlI^KIpm{lq&u9(m1;@#8<W&|6S$y|4YLt34A%&!&7)*xh<_ z`R0~C27g(vhX2;S7Pq-MZO25z^aE$S1fP8opS`>?^x;m^2VKfd9geRrI`H2<Rh5v? zyKTwrTi<s*5%K+KUavN9)~)aE{ku9@ZhShN*I_nIwn*73Hf~4nwTD4WIWF~co(eAZ zX1!vQR<Q3y-8R3q#jD+WPy0JAu@AT8;bwi-tvAo$2}kf=&aMR~Jl$^<Zh4YECr<Fy z_f0yFQYN#<wmj0B75VFAaj@1rwbYutn?JXx7iOfGzLx0o`e`L6ahOv&TQes1y`SI( zrS`igj?H`5(UBxQ_ujD`9A`@|PJW_eCUGz$q3DKBeZs8kPwr1EbmFzs&-=V}SNN&P zM!NR(Q>`;gr>Ssr@kO2WRhzz}WBJ)6shz4)Prt8i`xj#1ay9$cuURu^KDLvtEI+gA zc<|A$Qul7`Fm1klf5)A@se;~~)4#dz$%)cAZ*}zL>`6QNbrxw^-1_!<s^@9{KR)Gq zY;J}ee7Wc4w0Xbwl&*7O4Cb+|k2<$ug>>Uz>&fg*Z{EGB7pVXDp>2EM1Cd^xvWxPv zX$%W~KHPSohn>6G!tsO0HMd0)@|?LJ{oQQk!WJByP%6jF^TYq3)9Ign^S0}L<cOP< z>p1(rwCCcVtpEQ$UR|hk+H}VR_R6@#1$#CWMe6%XrF_}rBVM-W`p!2~f9f>#$feKF z+Tt{&>z9GE;^OPei#JIne|hs}@6PxIS9;d&Y+!oYoXU2>`cS2x?ElQkoqEdk<rk-k ztFE6CIVo_}=|g;(tSbF;d`u;y5C8agGpD*%bWOtVZif$>L+4M>n7;RYt3~9!ZQ)mL zJM}#4e9x(SHtU%+yGLik`ewtY?6cez@BR@e+T}1cT;(hOvZst6pRlg&YWR4jEd0-B z&7bKvr<Bf%Xw+U1_VVK`Z`-Eoe8FS;GcMG>V-7w!?b!d|zq$pcPZpnSxU|k|B44Nm z=aw7|tJLa!XI4mNt=cuY`E&C3&dL1(T_K`|ue3|Eoo0Hiwzl!Q|8U{skF(DSW!3Y2 zED2j~&Ff^=Wp3ousA8fx^S{yw!L~CC)|}qsxxwnmvzr!4tIkO(t#$I2Ty!%3(tgpn zXCJ?aSJvxf*x4DpZa@9#soGy1-%QW1=KiP7$31&tR1sP?y{Yo1p6?2g75q-$4$X9s zS(IMt>Mo?RCvD-X)0T3+$8}~isVtiK>~r?CPA{#shI*H`|9sB>M|1U(6AAODPTF)v z;vRdo#lCwPE0=n`i<p19dt%hGCw-+eC){}?tNT**sDQnCW&K>{Ak|M+*S-a}uNP!? zJQh?`pU@L-)Olj-+!Te`RvquR_Me-6C${lL!`|o0w<d2_zi6@k#5^7~zYhMK>8Dxc zUQT<-a8r|Gg133g`y!_&T;CZpD(c<Xx#VM9t2hO=BuEu&s7=k_Ik{tD`Yv6krAqUh zzDPMp%iF!uDfRh2@1tbBWA5BArJ!~H49>+=dh^cVzP{?J*@jNubJk|&+}=sMrRS`D zVSexY*4MG(Yt4SnZ=V;nqVKJ8+BJzE_g)-JuRXuLDeBP9j~#`LSv&Pj)dF6ZdVXx^ zloPjKnKJFu<QF26?0PnOujSutnqjXK*zA}tsrqHX%v%Q%7B?}t@$Ng`omj6SnjF7k zsS48@?yFN`>N7L?1#T`jJj;4`KJQOg`_g<pQFqzTL4L<8pQJoYU;a$xVc#-^TW!MI z=PKQNJY|Ya`#b;Ds=D?cAKcV3S^1=Sz3Wm&4Uv`8--m`avRy4t*#D2A{_3^;|4U#0 zzIg5XwX5Ir`}WnBf2sX0|9ZBztyb6J`1)N+OUrj(In%|yGKk-Qb;U8R9=->cT@qip z3!Yzklw-}Uzme6dvZokD4tDAB{F%90wkBbdp_C$5iNIHzi?g4bOtKEL_>-)@!l)$j z^yd88uk12I*Li8?U(vYv=gS|_FXn|hO1vzEE!!^{Wfw1H(^<jx;bfhOY{J72yrOdp zO(m`C*R-uQ|2Uuhn7hq0H%|Ab!5q7L=1o_4UsSa=;)$r-tNDzF<|Gw3N=|1yAk4;C zu<eIKq`AUut01v-Puo}A{koj*R@fagT2#l`&t~Siztv^o#a+9y=Es(vJHO~(XX3{? z#`+kh+(y0AH7WUw#mv?%VgGxNTW1yYsySxddGt?^vtFFXbL#P}r)$%=f{!laG47C^ zDl}`~rIcyv3y$W*Oq@}o+u&&%%X!1TyWy?1nez4<UnQQuoKctcuxdx2M%^yWE;F@| z4a+hTiwhI?o_+qy(@D=#c%^0B{Io@y>^x%Dhqnq;)fF$^*BCe>?!+wV*B`!4o4LX3 z^tUNLEVglPWBBY|f5`UQogew-$)A6+#&YO=7un^q>v`%6p__Z_qIbDSvHMFdNZ7T^ zn0JSqpx^P0n~zT3<#adUUCNQ*z?Sv%?00e6y8rr@ELW4W(be|GL1s~&5OJ0XZM|C_ z6)$|wIz`#>FMDa!rw_6LtvXWLg%{7KPj{Q9d(BjE&B=Q%j&|=VwAkzAciFTZ=g9Ni z)D$A?7a{OKFiVc%)&1Kg6(;pu8(yya+7oA?<yrVaCgaZA$*SvC9k*V4)A{=6iyiV8 zx}RlV=Dd-{`F-zEi+YiAr6L~PtCQz17QC?J@!PI0;}g@Onz(j_a^(dFJb&E%?nIzm z^uevXH#t0Pf0k~Zr?HqtRfH*UW_?xv<oyRVjXujxy6UziLV1N<+G??+qq*AKHf#*x z|L*ji_q9)Y=T81fp01}~9=uc&w{zCjuL|>&^m|Ng_Fp`{c4j;0`Zay?n!o%yvdp!q z`^m*<v)YtElW%VYts)p_Ri>QH;p0tuAZ%ptu;J=2!(R*{6Tfv;hM(Uv`*iYS;~xe> z^*_Q7HEk{Z7IH^?<5!b2)4$I-T)n&Ld)fbxJ=1?nZg4)(f0zH+-qa<lv(h%F9<=;n zczns9TeX)Lsz|H7E2znfE^Jja7F@Qks4q5f-o>2uJH_Wsw8WfuR+UO#k9E=MuW`6~ z&&hnVOZE@Wh`ORk-MOEaGX@mRJM{4H()i}N{E?;g=hksG$9y{I`-F96ICnb7)AFBF zj6!A9ws}Z+$G%Wdb&6WIxclJF7k^eUM_Ig+lRH1@MPIVuZf9ff*St?W|A%==+}|BO zyL%;{Tqbva+x}a}tEbf3___E?Xc*5__G?>zUn8nb|F7D=&phV4k66a~Z@4-2;^$9% z=GCXpuHzAyw!8l3RK^3wJI<uneT<4)(k1<RpU}i#XHxEXRoU*&e*J7}ys`g2j}C)< zaardh^In!u)D6!|{j%pt^t*kbJEt}_KQH7II>Z#~duPL%7h1CmI9t<~L<Mb+cRZA8 z`m<N*_@&E!z7vi!*Db!;x7t~8+8pPfJe$Q0bv_qf5^wzPva`$PSG{ot!{gPte`;S# zSe`$Y{8X=K-#3;|ws$`o^{qei=F3O^W{>Z?w|rLMD(y9iIUQ<x>976UTFcaso-2Zr zi#7Sre_C^r=i+*Yf1kA(Ry!}8_aR_~W$U|e-PGyz*Me5vUwZP!()rt`y!vM8d81wa zP)KJ(>?uj_%}-W8;#BkOU$j~&x;}(yJ&VqcpPi?40#`gc;myc?Y{}Yn{#x2X7MJF| z-de2A6yn!5)6tf9&imum*IWhV+^<|ZS9bEvcg62Qsb=4nEMGh&+1?@fK*me)yS^=# zYnFUm9Q4LB&Q-;tIee0S;`wgv-&}P%D`xprab`wvehcO8{@s;-^<z!nhDp_l-N)+c z_4MC;j-16hXVtd-98G^88~TMj)SkHhy40n7;r};d+?2vfnVvL$zp&)S`=a$rD!By1 zu6&J&u9$js(KAPr=#TY(4qU#u;cIf!nX+D2or!bq&2v2RQYe&JZtJnjmMl?*lg~YA zN?)qACZu)hs(`ht46fJizCUA`L1)r~`A)$nUe{IDe_VOqBltw~3(E|y&56RQS{Fq= zRaLVc+{}Mb#4FDEdyi?;)CX~#@0N1ETmM~Z=W?Otm3Q^^bG}J-Ubg9&*K9GDceX}g zr^VUVZ#nr3MfH9rT;h(XThP1X&h(zQ?02^ZT`bkk?V7iAcG7P9`KNaD{m6T)`}ya= z)qgwRE9<K&7H8KxExk}ML$akIU!XV1Z8K{n^U-zZ6b%K~&p&)QTQAM3OWQvoYNg#C z&WYuhbA?~EaT-V+x_!3o<FR9x``+y9aCoGv@WyQVsYTzSxFWe%2_#)x^dMP9-RzKX zn$|9vXWQrAU$s;2+4j3V(}WnW1WIW6Jo&r!?*85-x;Hb+JRI#B&PkrJ`xh+KlJ#Q! zW~cQFR@!fV@51tO`n4l<Zj(1!h}GX^Og{3j(s~YS=d&Z*ES(<bu}(HTuYK&xhUz`O zPo%Hhx2OvHe%Hn%$!2GuYSXz{@z*XsH0HbB-&4Bc;f+594{}RH*8ZQ^p)>#ShD60x z87HrZJkAxWwEtkmcwCzA;}buX$P3y(`evz$^9jzD?OrF8{Aa_z?`!+E{tFB*pMSd5 zcCwqLaQ$zi)%#iO^<EiF_C8<w^m86xpYWMI937G|wVvUIY7Mgz+b(Q+q+ZKW_GiOg zvzvE?U;UE!b^M@)pOtv(s@)vFCgpDQC_aDX*5|vKi+(KnXObH*Yg^!5+s^*gT>2M+ z`r5PwKBVupFbpcR{CnnQ&L69<9*XZ1W9xoCW<2%uoA_3b`bj$(`7i5ieEt8xzW?T7 zd36Wt|NodDu^ikWf9T%n_0{*!-(C4SPgHh&k>>uIH(liFtT&$~=IdP9U7ce&|IPcC zhklz%+ABBe>Ama@exW7!=*!{axtjj%94z6^6UA(1HT*wTYjb}B!y1=swbGRZ&S$T) z{k3U)Aoy1=^ixKyUcKv=j(>8_-_|^RyM1ZZd~YF7&B?kU&nBuonS0{A)MJINYTkLR ziZhhez0#uXi}%fYS|;v$O60@~9sl{gjUE~6S?*O&F0hI0?6O>}Hf@%=dv<Q4@%raa zAC=5MAar;6%74#JCE3+9yf(U)d}ROeedX!VHLvT=l%Kznq}Ws^(>aN`{_NujqmAe0 zo$GmM{iOBg$>k2Z@*Uso#ki$1mM>YcQbAmD;h~(2iyt=&%W6j}<OhGPG%P(6n;H4c zf`!4v>wb<0U%l}>rigcojjJ3_oPPXeBcFU=V1M~Gk$qZCMf2L$cIm9%S@LriBez1s z$w%UO=YrnuuCQ+k@^xSK-}7Fenty$(X_nf(yk`t5cDY~k?H-?1u>A65?rg0CtP4tI zcwQXpR(!Hj?2nw;!Jic$ws9|(ol(0i{<x&+r~4}<+g7?iahz;;=j7*p^#h7KxaByP zY&h=9J3C+DNX@<j%bq;^qg}n?*B5;`bLDCA!GCJM$ZT*uyMjHfmUHHYJ2CnfUw$&$ zv!$L--u#Q|z4&KF&s^n9UA;^G-|%wXvwgYG8KH$w5@dHTwB3;S^0^$ZZ|51=&<|Zj zQ=F|!W*E%3`|!YQEyun;5hC^G^8|`!>OZ=|DRcgO_J<k!|3y3(t-Nyo?39^y?3)&- zceB>sUsln*=bHZ_CHbeKPg!;O5-c~w1jJvCzS_rlq26c)W8|MH|8*|+C+|AUd35`n zuKZOOcU)R7_u4&YRr|)pd%a6mC*Lqy{_)tC>B{GM^G|PkWgMcY+xy@V$DSwem2K*- z81pVVepH>k(Irfk_p~|t!<t>oZFX$dUu3%Y8rP@aA8*@;9zFFi@Y9dlzEih$9sKp` zxs0!i_gk+p20hW7bM@S=If7aVKZ2R(pSze)Gx1Y*&(+CEH?}z66z*MBTIFhG@wXx) z`l8mcV@KArn=cbHGgTA+?mX+%=H4!;-6{WP-LOkLe5dK6o8|Ajufy+to0|9bhTh5$ z*4Xs9eb(vQ_m|vy|NOPdZ<GI)yZ2`8waPtzJ-<s+jZ;p}E`!NfB5PA-ebt`@$Bbv{ z^)D+BT03RgQ<={uT7P(-JovD<@@P_YQQDU^yEEqh-n-o;_D1`HZ8|F_WWRE2{dz~r z&&*eOW!F`c!24JB70=x!nbnmu`Tt6Hp{*<TO+BG(I3*<alzwLD)|oW{{U`S>`?ok` zzSA<(qxU_o=bX|nRgInXsryEk+Z2t5^?|F*55AxMD1S+W+0*G&lYGsD_j`Yx{HWvX zmC03N>Dg&Ew`*E9e>`%(J(YFp_dJ)BJuc$y9`zjtJKm_s?|uGM^_NO@?Iq*)B?+f~ zC>Q0Mth3`*mp0jzQh9OpRO70OLr<hPex3BG&xQZdc8%#DW{4aR|Gf0UG@nzGjZVi4 ztzWXIUR8DNpA-F)p6YgP-#cNw%DpS6f{m6hXSuk2#(bBUd%3$}JY8jdi)UP@^mrs@ z`!|WlnCI+2-T38YZSJZYwH`flxVQF>w)mM-tecAtu8A>#F>8ADX1vumJow*znzvez zM?mGun_<Rb>dS1Wmt0&k^|OLXjRk-4g){H8>+d&zcKCkgjh^uz^VB)U*~OJ{oA#J5 zjWOQ5yOQPp*(ZiE=GF02U$;d+JY9Zg$*<U^+iIK7FE6~c#Gz78Z#L6`mfr0vPODu# z9DHmuhhO}$)ZkM=`yRYib>iBRaDB~&Yd70Ic$G%4%sU@YdRy%D@=Y8U?U#0ldQ@>~ z&c6Cph$T0!e!IVN_T~kZdXKhAZ0l0V3sd*kEHV7(f6GWEZ?TR2%f08%e<^l(G&jfL zQc>cxxD-p(BTsyusb|%hzDyQs+$?nB)Vwm`o&NLnJVnIR)E=p2KAmA-_w;s7KvP1B z_A&MAyTd2Nz76xpT|A*LMf&sQi7S3yy%5N=GgNT0%l%-X$<OMwPISiBpHNHCYneH_ zd1mz9!0jzee@my&%V=HX8lYzK%+T(a-=qHr&py4$9dOu2qi$RC%Em)iKHT)sI6AK& zTzZ-PoCle^KFdj({_pFqTes*&F-On+Eq-;*zmC4K7n^p=J95RrH?@<F&I*y9H!ITf z`zcWcZ-K-`V)Zu3;SWu+57npNTyE*6VBhR0!|K7)cyq_^WR>%UY<`0EFCzXoo}XUi zb;@aHRpw%y8K<?l)8r)9UG)5Uc$cn$mRZsr!+EooPYbS_{Bqsp)RLbc*K=k(_9_u* zcX;#gE9WZX_@MpwHZA(w`{?kQ|E|tKy+_$qrhPJMQ{EkwVNh-&aWUjkPT4`1`e}w@ zSFbxYb7mTBT6-iT;KNk=6gjW_0>Rk|5szY@N<VsPzQkePbA?|=9G89k{B&{hOY<Ka zzeu|ubDK0b_s_<Xss6$*xn=D?PMCZ<>GvJG<z_bD?B-Zyz4FXo|I1>5(|Jd(O*>4a zd>zg)mM(V*+@?}>AaXJ17Mq8KLN%%1Y}1YEi#`|Im8Ndb`*7)3e$fAXwSB%HJ5(3l za(J<`Y!%ze{l~9VB_4=k$Wnc<UcPv9(-za#xTB0NYSU_kTDyV{$}jqG=y}i+jf#~C z>p3b#-im&mr?nz+s`yg&V_#F3I~?r(;5D89(E60tIlk<CC+8O)ekfRS_Ub=p(Or4x z0!3@0Uv$^U1k~pgU%K;e(KWx;^zbSBMca(!&&|ua^(rUp{_Cv2rcbB4+y7{C-tuR% z{*N4;-!HgdmCkgJ&ycmdW#?YEeY1X4%&{^zIiIOds*Xs{|9l|2wwUSH-*vD2;m01R z*zBvGa-Q%1lfQRw-n8!7_xSVOxqI*aecyBbzV1Wj`du4dI)A@kJA3|K+vJw#b4<(Q z-~Ipb_#FRk{Wz1dYx|;W_f71-`uXOK+qZJ}<h;rGEPwlY@)h<zS?T=8GXC0;|J(KB z9^Ah>o!$CZ{GT`PWn^l$|9<rJ;K6qf@10Xz_y6$WyVLJWTAz;jzqp!hjm`c$Yre<7 zJTCXpHT~1CeWo8TbJssHpMNs{ph?8y<gDED0{wBm&SE9!uK)OK7%@9d;r`0*>>u6& zxwT3fKj-}y3blM_>X4qd;rxp1B#(_cCr?g%^6J*CJ?R2dGI#T59XlX*ZHMLs$TBgj zErtgB*6+OV{n@p5a&_f5WQ%_^JO8m|dd<Inf{VW7-t1Fl*6HidZ+0wAGk84HGK)#d zAtd^q%AJ_#=-1Y10usNP9#*xRa9;Ru<-XJ&Cb`)+zPl-3Sa?zBvTxty@aYX)k2l@j zYZN7(aAVu#4rjIcybZ@TI3Asu-D`X2?Bab3=6^f-)A#qACy(|NmxV6hVd4__=4<Kp z+RAHH*W1z#)gAtEb+!P*J=xE-Hd#`N&up76u}RGO;w&+XZJpF~zQs*`GwvVSGM%BQ zIyT9{_S_!#oWEu~$K7w=b`IG1?(EBH0T)mFnI-UOJNtqT*4G;|JFB|t=NM0X{o>g% zx7*L$esoW2HTNpp>G*Emj{VboEKCJ`BQkg!CF(Y_@%?)C>(Q4zrHhuODKjZPyMJh& z$@FUt?{;)wll>}p`@s~Gyp8u*!p>UdH<jd@9?>`C_#e?95*y@aDQJH5Rc?$glizjI zE%wQwi@WxoOlVkW-4yMR`*H2E19|l=_k8VltiHMKsGWH{bE5Ifyl4B(7RFxb$(Ej6 zu;FWS-DeJY*26P99db@AH=WZZy|K(v<>jhHThi+KPMG8t?A^cZ<Ng18V}B>)@s@3? z`}0G7_J8Iyl~t?QEfdnWw9PuU!tl%9lRLI;{+akaBinr2`lVf|dGQ6aogP<honh!$ z+*Yr<;Ow$lmvSZ@30<>CG4cF?S4WQ6?~M0Y{aN_%XW3NeUA5Xg1wXTviv9a(r~NxW z^*`tD{P)KXH-i>1hJU+np7-DL?{co&>s$W1XUn~@H~1U(PWH{4L%-}RDmQH3^nah^ zzy1G}&i?-%_NQL+&wuu#|Kkt1ypezR#<Z@Ya>M@Jzv~}+an&sTBhPzt)%E|Uo0}v5 z{D1HOb_j@m+#7k&(#aqHz5d64{6F>I{$DzC|A%KXpIQH3Uhd7?^<Vyrf+SQw)nEG0 zANOwkkN;i&^P?ArPyL<F_TQf2Xubc-|JM3^7ycLT*uMGE|I<G%eEWTtcmL-1&)nYa zoW1V#N9+3LW>ZOqhQOQ?T1Tesm7KL@=GiN5e-EVf9ldW<ZZxU?_J>#&MxWy)Y})mG zC#6fbE{`^k+T)*gvZ86F>Y@j(TN))dluNKgnd`}1F57)(yYKOTbAM)Mhck%#Jjuv0 zSzJ~zX(h{U#r;cGU6(1ovf1bHyAwOISr*zK2-@2FzW(m7y810&_m+PBJA3i_`?9t7 zb8GBx-1t+lW$XWoKlqa$%S)GTbS!gj-|l$y?ACrQwFSmT?Q51L+<Q`8BO%7mdi}?{ zTLK0R=E*13_1-=>6<=Plan5r$ew~KtU!C7J<~uKxeq~Vg%YXIt{SPl5j0)VBSl2vb z$riRw>B$SGr@wpj&QR^fgL=c=CUZ?A3lkn)`?sYta^viefkB%}9|mx<sYO59E;*;e z;$=woN3mb?x-UL>^g!|F6~4S5jJbcz0)FbexW8$lWWA_so<iuKq|Lug{(Rnk?0A7r z<7~r@X#ES%F1h&}Ycp=UxmDII<yvpg*%LLEZR_6K#;>;Am|yX@sIa!d{L_<^`pBl> zCM`x4LG8c~R(5w@D<m(;Y%mPIb@4$zqwM^?Gh)sTyRXHRELvM*wBfJ9liFu|(pED= zkI3-k99O#*9&qaOZ;Q~G@2@5#NNk?&CKYVVpz~_h{OKGqyw}#18ZTBnB|9rLBcU%R zJu1X2&{^;1^J1o5>|#=TG@~R7r@6j<(ot_b&#S|h_5YqXKJ6W^#CXrn-!bFJqJvE` zDs1o8O5Qnl#B`b38SV_7yWVy^mv*K3aGgK)+;(xtgVn6lybPFcXunA`TQl>5Dw}|; zMU=r^%MZ-&#hTh93#Y|RJA3)n?)F#ado!Ez4=UxgF3kU~rpW#5dF<wEUvic$aW+!l zZz%e}y}q;2hSPrLL8i-#9&v4qZuwj?m0PhkXzQk<LEV>FC%(uok!8)=GW(;0f6bAa zsVi3sY5K0Z)iHH%&UU{9i`NQvx}wu7RNo&v_QR{D`KA38Kjzng8^2GVyZYPNpTCXQ z)V{y1xSO%+OkPvm<ERfBFABOjrmz3j@X3k$cgEa#ZnX{z>mS*znE7Z~a!<CL&oQI8 zmq(N@g+G?Ct-HL-rQ-MYW#{MrxwLBv|9gWrf4lmtmf5lYy85fPW&a8ewW?x#`n5cK z?&kRTx%2iP3Saovue$Gg_q~{{|LaumCsfU-P@ca^eN*d-Z@a&FKL0gW$1-V}t)%PI zpV5)s`+Hx_n>YWjO19O!dh4E752Yiy@4J-VO27X8gXXNXKc3rbZ)RS!VNc;cxjg*O z#Fjn9M=y%HEq*s=r6Y4|XVLTLSHw1XUA$zipd4r-!Dzc;Q%%VuQTaJl>hs**memRM zSA7ext*x!Px2T=@xbe}=lRv)>U!Gf&QF&nd%!*rf@Af=Cyd^@uWoyH`C8bB}Pc!*< z%!?_#w{m#~+bP5S+2!k_-s}BX(YjW0@8tfUljCpC`S8K#ZO50VvAU_8@m`%QE4OE4 z`5LZVEB4pu==$qlvK8v~E{&gmB;}9K<q!HF`#cVcv>Z4%)q9ESo1-E%PkGmNMsJje zimg&Vv@&}Ch4t1SyDubgsccy>PxJNP=DNT2ddsF%z3;pie^H_;iRW#$(xuJ{_uOwT zv)6NMn%D5=s`Rf??UOB&JASwpd}EojKBLC=Bvaj@cxT5hmggP^Dt$J5Vb#g!Jm;@` zGR2}>a6iYUeGPAVq6%HL|1X%d|MVo2Mf)T!8a`a3U-0dl?bibRdvh;a`~P{Q<LmIZ zt?q7D{PB8|eRT?)(<iU_;c6SPsNHx`O}LQl+2*giQ#j`+cEn$?7T#N|r!doDw%h3= z8S%j<8#R9Z%K!3u{v+|ThaJuw&TgtwSWxHt#ZutQPhrl33k4eO1?M<3KG!@uQTf>m z-QM?;W#r=*FiqQj<-YpG_}Nj3i>7Y>@_O=*ufn}$8g9RZ&(@y`ICDx`>g`&Ix6-fP zhkg0p_G`E3-@S@F_qcfWExecS`aYjSe>;<Y{)+bKi_Yz7XT*%%5<k4&rg3xO#al^R zWDj-gez>F<k;CZSp0JTsNA}ghX|@-twjZtf-}#C+)%INQ(I5ZZ-v86Q_qX@O)A^H> zIKAhyOuKjKPp#1B@6(Qb@T~87sQdN1=a+KNDQ~#F>b!I7CgooGVR!Q8l8yC3$@Sh> zK6?h7kCwWqZn$XsmQ{AXOEVrj`TkjCXpzLT{K|agU)E0_`Ez;CQg%OcQM32F;A88j zN+DeSukH%&-M{!_?~xz(E=ssf$`(*_V-kMfan7yj+`Yn;YPbG$DoAskxF@KiT+evg z`p`R%gzvJ2y%QfuO*e^(@A)R{Xe$&j|Kg2U!*9l~4o-bNcg1nhE5&XByO~}YFOr+? z>3II>o(lKBI~VOYKD0pFpu%nM?nU4EdJl>vTi73qkBk4a=;oIrIrA?6urb_M{Ak&{ z2g{zfIQl1iXu2iSZKj`5lWe$;Tgy^RHU9GM`o<df8S>m`;su@^XZmb^Ip?4EnP;kB z-*w;9&ve-*aZz>Z7xkdrhg{u1TqSr|*mhs3R;YS^=?1gmH@#jnfyHlw_#0m=^xiDg z5&7~`2D9NUy^E0wPffy4Ea7qm3l@cX^}O%-RqR@yduWnR$*W5pOqNPfvl}C3$7)HQ znB-D#+qht!_A6VFz3~@+aW7T!nZd!TwvI!1;ejKf*V(83Iz2W1WA_WIDMi2LXm<ux zK3X;ThwFQ%pM4K_Sm%VdoDX>Lx$Br**T#53Hs{8J+ETe1Zq>d4{w!CnhZHG!#RY2% zUp!@6_^tE7oBbCg-W`#sQ?z)`GH1WQoN}gf-&;DX8|yoh4@Jg5cw_oksw4jW%6ofP zd@nzAI=yjv{L1!~FCK<#S&FLuceMSZSM`Ja?A!N~J+@AXE6!WK%s27V9T&GXpO|G_ z?M}4>Z_n{Ayj*oJs<T@@STs~jb>C9v33qPD2F4!a*-&%hc5+1Ae7<`kaY8<qxcjzk zZ$2q8x1RUbdZyy7^`Mi)G^BG*t4Dv*xvTr`%gtTYACt0MPOjPUaHHwBy@sEiXS4p_ zx8HU8rz4`DW*GCvr(0G{(RPkvG%RO#pP=P@c<OEgNxAQl8Pz!&M(^INNp+f5V83*E z?C!YDH_TU9{}Yp$el1;7M*QFopB+W|YHLLuY>L@_tX<N2;<>n$>Yn<Qj~3RMRPQ^l zANftq@JkA7RC~|-PgCCu?=`P|&6e{lF7f%E84*H9{l2nD6$gA?yFmH%w_8zWeMKvL z=DeKe7$Z1sN_5nmDbx3^xe|6LWzNC(6UyZ!r`_d$%(^o`ORLY`eq-i@(BCbVI*ZHP zKJpz^U*csIcfY5&ts!wy^^45M&+0wT-C{euUo9?TM{DNpH*7BVPLz4SWq;9LrK;E? zdvN;x+GT!swBK+_ZDYS2|K`BEn|-o=t8WB6&z*N){H@lp>H4{5XKz%@FFxHqKPTaq zo*cvauSGJp;!g!m8ck9P6No><wNhjI!KsF~=A6{sSpD2j=DFJ(qh-81?wCcZ9y$E| zb-m8FpT`p48SK&J@ZflJKk{Jq>IbsB_I!=?nx(*^e2<a4n>+PU+(ic~wnJM#+C-G@ z-+t|mjunH~oBBzntozcgO8)+K;>&XLDd+6{k2XFxu6}W^;M_97_u2m*>CT?U%WlOy z>vG?J^_`~Y)A;R09Idy_jXH7bqvd{^XLUxulw#FV>dzmPe_3R$yqN1hSNa*%^)2<v zpI3^$U8l#iXPakq9uI$OcuYn7iY=Yl_LH+t86~G|m>9W=cdF)6Q&q2`ytU?Y-K$lj zW-g6#J*>-~UDj%HqWG$|ViRlPnZB(jmi4VKkD6}eTv_IHujtRWX$d>I>Ze^5GoPR$ z`Xs=;?^4xCeWv=pE^)ov)|Y24DcKbw?6r4sbX%uGP^#Y1)hvPM*`5nJI@By<Ji)l; z0*6L}y)~QO<0$1?&f`}XUAgmV^V~_>Gu;)tUq!uZS!}RA^3&W}pH+`4mzw6EcR#y- zLQv{v-|s=MRy@7gdPnQ&doSs=pUk#d_<Xvy-N@lY^#Sf(ok^0#-SsP~`?(&aOCEb7 zzJGt=$1{#+<TSFnYSaFn<Pn=&C|dFD%+hHNnrnXQ91v$UTpG1<%6AP>5xM<Jds94j zY1X=ZS*!M_k$1_C7e4mS{w!R&vs+I2X;QTEpD)M%oId+3{$FH`>!*nl*&3%so~5&E zyM6d-*p%POYGV+wr@+<S@%B~y`sYI4+X^1)G%r$}wz+ujv+l#<+RER8FHG;sIG?oW z=ft0%e<XiQV3L+P`0?1CExUe;wrl=b*J<1S#b)Z)yuyW3IuAJgu{rSZ@3CWxtuEV@ zl(oC_oW7p>XQ_wT7pKdeFG5;Z%1LTj8@aJgU6Nw+YRa@Fn@jB4>bP?X&06-oH97pG zUhn;!;}tw9Zn_!<yl=K-TO=!cOw`ZQtyP$w{ABI_9~0Kj-<~sz+hI%h(cMmUb2u)! zw{fJTeczmOK)T`Ki3K-aznJ(lvfd<Vne_kMn;+F3Gww#b@v{qhcVpw({=L45z6QCS zMulD5`<%5Wesc7yGM%K5%&x=!dX-<xv}}b-%NNzJFw+!xlODr3vm#Mh&2L5DF+FCB zQ&t<kMu%xWQahY}*J|$};e+d~_HW5wXBBR9XWvr+VUD-fZgWpbYzbfGQhtehv3dCP zwVU5%zFt);w6*Z*>^z58z1NQXygJ+L=ZW(l?N)zPsSf$G{tZWdrR_Pl&285$UvJZQ z{m0m$H#6dbU2c7M3ga!2xbxrdpJDF3@MF^U+iDJ0mdkw^e<(L!({SVecjA8fpYJny zo-LO!|Djy}fA8VPU;ggDU2YWd@9Ia({>ATZ+QyhM9k_P$ot@oM{YR0@PbW*h?B<zZ zXZ`T<w__!`meF(PS2+IBE;p$-VfSyU|GK`PlUFB8&eOhS-+Rmc?Wg)${y*AI*7rZE z{|L7c?AXy^Q0VA;SY9x1`}x;*-X|NBzMJCd9<ufFwU_r~$|oF(59CNtx7fDulJ?AW zhV>eI1n0A@a{K=4(W5PY*VUGl9!^%Yb}ToNv);06{hpqpDE7dUE96@q{du#hxNNO6 z)2SVA{Y)}k1o<XbNIRBZdM6iORv(wCTcEsIe5*ot0QaX{h0dkbpV!r1waWZB<Dz-m z2S1lPEA^iIo_)Q>f6d~qJ<}c@zHvtX?diPde|)xl;`V<Y(%Z4!{Q3Gy;YWXeI!v|5 z-tRxvD*5}%Ch_TS<E@@we`%&)Q<h#mxo4Yx)b#K`!^`|ntyyH^xmJ7(4SD%Xbi!Zh zdWYQSK37DZwO;LHE4x{DcVEtY*=*y2lWb?w7d%~|8PJ-+ccnU4>U{rtVU=Q~B(<%b zBCS7Mx~@06`MlS&T5cF6)%!8$SI3kU4GUDN#IOEaT6!~+G54^_{_ZqR{pJGaJ&!{U zKl`b=tahv4<J9xDK8(h5T^^p}bhu;LcB$y<hpY8>&1G{hKA5uY{_%p2U(5O&brdeN zum7T2z$x_p$+NGj{Yl4F8`|?D*4Ij2=sW%C&#zBA)-HHkCA|N<iG}`c`}lIbWPuA; z4@<FxI5Zqsui6*zX;pP!k;baJd)zit+*j?>apFC(y-`d<rr)rpA!)%%otdu=uGZuD zp1kO57{9afuX?Sg?_Zt$$;tSw@0=RvB9$X%J`W}ROkRlAls<l_qw~ULyUnQupTn1T z#3yA<^71@xEw6CDE92{`+CR^FJeZ=FC9SFNzP{GtM%KnE$E<5M97?BExaB<pY>MXG zJzkVi*;{QauupM<`UlxHO%vk3bcrrna%cYf+cxG?S53|6h!>Ts_ugAOqc2G3Nm2Xq z(9O(0v%A{=tF*I4EjnYNI>Xz1F@Io6{<gTSyNs$Q^IX5wdy*@#*d@#6sN>Q}(=s}| zo<FcHGPGs*{YdOXk7s~U%cS@vKQtO5rY=m$tu~pJ5g@FkAH6=)OXt3f$XN~rKJO3J zZNB0STV&bSt20IOYka);vVQ#&m6PioYnq-dliEAi<mi+ro+@Gf7>+7o$=5cw-LCjv z@wq?e*`mHXu9AKd?@~f#jPCnSdAindyMUHoh3Bqk&pRtuJpNkxy{e=j%rd-m;`x5I zxN9GeH)m`X)IK)(!~K)RTQ2=RUuIBtCi772v>T!ROEzWPSp4F_k&mi-JKsil)L*@o z%rotY-K;|uUhg(*>Ls0Ay{)VJr_)qTtDDDWF-|gNmRrqY5N7G|;lbwUT_3gXKjr%z z9-{V6Z}mSJIjc4o+3G2;)6a4~n)`dlyiXJNbGtk$TE3vlw{O1-<2zLy4JD@jtwy_c zn~T=2nHns&=hMZ5o6W9wHMON*)s_5VvzbA#{_~lj4O{X~O=YRM^W$D^K!D562JUB` zKU=s@X^0p2N!IR9dRHnI?J%=DZ{Ff{pQhhh6Z%y>T0e9`?iu_2FXTd&*-bui?7}vt z$3JB{Rr-GN@iWV&9-5@Sr&4&&#mUDX+Lzet*s~>^JNv&#W^R9S*n$^1+X770jo!E2 zc<QSeH7T<G!e_Z|_x8?58&?%FDXr2vtSgtC_j8r@^lt}$9Q(h*;#1nbyQj|>M?8;f zoLP}N|M&J~);@Z(vnH(OYqRy5^E~3?rblJh7p)C3FZXKpX>^g<CSvmBqfeOo!RS?H z_Am7A*8j<A3i4IeSYok%;-ocPo~BQ>1(xunuB&;l+Hb4uQ~P?&{Hnr5B~v^~mxTI# zt6U;~Uy~>5<(d5_wS?ZrbS8byHR|%3De3X{-PP3g-Ps3M@zqA}%I=T8`&jJ0;+xry z_qSYGXc%suetr3)D?28HC{;F`@qHcfD?j!<+p^G~xf`!}{w{s}D`cLoy6(=eJUQaV zA4+~&N=!Y}Hs?o=<-Z6A)B0OJsp22*%;v1*HrdsCHu{fF{P(u^8s~Ln`yI6;s^_dL zJo$uSo>QmFzL2}e<u0?HkC|gS+4Z$W^}#9U&ppX`k{oBZWE$tpx$|dEZj|hO^VoQA zaB}JY)35$bzxp?R_3!ve-}f_Y{`R5jx7NFcnWg`)A547pZ@u{L_SL`Rr+pMGUtRyl z_<)N|-9~OfN9K+NiLLYY)Tqij)!3!wO@DavRIZ=4Y0i?5+u!}1Sur8NXT7tP_>l)! z9ZyNQr0mF-y0=Lq?q)-r_1)sf?T6>aHnTH0F#b5s$1~lqJJK!R>#p>k{~pVyhR;3m z+Api(OX=MYRsTgcOz<;on3i*a$0y{)!&qCX`nh2}uiYy4b6?B9(Re&@W$rrFIQGeg zJ$9}AR<e8c-kh*OLF9bj=5<g0d;MDvB9=e-pMFR20MFs0p$(Fs>g(S>?QZ!~zq7hx z!=(SGe|Ve^GH6?wc3fe5#XHyNbM>Dz{3cx4r{VikOk=8UwZpgCj1SrO@;*kKGkl$F zASLmuuztR9+(yCO>sV|}-kwj;W8b`c+V<%IA0{?`_wo7okF%o3s_|u�mGMTvoY{ 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 delta 42387 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 I3=h~C0A{7)&Hw-a diff --git a/dbrepo-ui/components/database/DatabaseCreate.vue b/dbrepo-ui/components/database/DatabaseCreate.vue index 07fd9d34ea..177e640aa9 100644 --- a/dbrepo-ui/components/database/DatabaseCreate.vue +++ b/dbrepo-ui/components/database/DatabaseCreate.vue @@ -46,7 +46,7 @@ return-object required> <template - v-if="engine" + v-if="engine && engine.quota" v-slot:details> {{ $t('pages.database.subpages.create.utilization.label') }} {{ engine.count }}/{{ engine.quota }} </template> @@ -139,7 +139,7 @@ export default { this.loadingContainers = true containerService.findAll() .then((containers) => { - const freeContainers = containers.filter(c => c.count < c.quota) + const freeContainers = containers.filter(c => c.quota === null || c.count < c.quota) const defaultContainers = freeContainers.filter(c => c.image.default) defaultContainers.sort(this.compareContainerUtilization) this.engines = defaultContainers diff --git a/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue b/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue index 4940e75d66..d391ac153a 100644 --- a/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue +++ b/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue @@ -89,7 +89,7 @@ import { useCacheStore } from '@/stores/cache.js' export default { props: { id: { - type: Number, + type: String, default () { return null } diff --git a/dbrepo-ui/components/dialogs/Semantics.vue b/dbrepo-ui/components/dialogs/Semantics.vue index e68a4fa55d..ff59effa95 100644 --- a/dbrepo-ui/components/dialogs/Semantics.vue +++ b/dbrepo-ui/components/dialogs/Semantics.vue @@ -147,8 +147,8 @@ export default { default: () => null }, tableId: { - type: Number, - default: () => -1 + type: String, + default: () => null }, mode: { type: String, diff --git a/dbrepo-ui/components/dialogs/ViewVisibility.vue b/dbrepo-ui/components/dialogs/ViewVisibility.vue index 6a37bf4153..7ccdb12df6 100644 --- a/dbrepo-ui/components/dialogs/ViewVisibility.vue +++ b/dbrepo-ui/components/dialogs/ViewVisibility.vue @@ -11,7 +11,7 @@ <v-row dense> <v-col - md="6"> + lg="6"> <v-select v-model="modify.is_public" :items="dataOptions" @@ -25,7 +25,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'view' })" /> </v-col> <v-col - md="6"> + lg="6"> <v-select v-model="modify.is_schema_public" :items="schemaOptions" diff --git a/dbrepo-ui/components/identifier/Citation.vue b/dbrepo-ui/components/identifier/Citation.vue index 9ee434c943..a52cd87159 100644 --- a/dbrepo-ui/components/identifier/Citation.vue +++ b/dbrepo-ui/components/identifier/Citation.vue @@ -3,12 +3,12 @@ no-gutters> <v-col v-if="!loading" - md="10"> + lg="10"> {{ citation }} </v-col> <v-col v-if="!$vuetify.display.mdAndDown" - md="2" + lg="2" class="cite-style"> <v-select v-model="style" diff --git a/dbrepo-ui/components/identifier/DownloadButton.vue b/dbrepo-ui/components/identifier/DownloadButton.vue index 85b58dc818..3f9fdd10d9 100644 --- a/dbrepo-ui/components/identifier/DownloadButton.vue +++ b/dbrepo-ui/components/identifier/DownloadButton.vue @@ -11,7 +11,7 @@ export default { props: { pid: { - type: Number, + type: String, default () { return null } diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue index f37c5c6d7d..89b1ca9d8a 100644 --- a/dbrepo-ui/components/identifier/Persist.vue +++ b/dbrepo-ui/components/identifier/Persist.vue @@ -867,10 +867,10 @@ export default { error: false, // XXX: `error` is never changed licenses: [], identifier: { - database_id: parseInt(this.$route.params.database_id), - query_id: parseInt(this.$route.params.subset_id), - view_id: parseInt(this.$route.params.view_id), - table_id: parseInt(this.$route.params.table_id), + database_id: this.$route.params.database_id, + query_id: this.$route.params.subset_id, + view_id: this.$route.params.view_id, + table_id: this.$route.params.table_id, titles: [], descriptions: [], publisher: this.$config.public.pid.default.publisher, diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index f670700f2f..e66f72e362 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -42,7 +42,8 @@ v-if="isView" class="mt-1" dense> - <v-col lg="8"> + <v-col + lg="8"> <v-text-field v-model="view.name" :disabled="isExecuted" @@ -63,7 +64,7 @@ v-if="isView" dense> <v-col - md="4"> + lg="4"> <v-select v-model="view.is_public" :items="dataOptions" @@ -78,7 +79,7 @@ :hint="$t('pages.database.resource.data.hint')" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="view.is_schema_public" :items="schemaOptions" @@ -99,7 +100,8 @@ <v-window-item value="0"> <v-row dense> - <v-col lg="4"> + <v-col + lg="4"> <v-select v-model="table" :disabled="isExecuted" @@ -113,7 +115,8 @@ :hint="$t('pages.view.subpages.create.table.hint')" :rules="[v => !!v || $t('validation.required')]" /> </v-col> - <v-col lg="4"> + <v-col + lg="4"> <v-select v-model="select" item-title="internal_name" @@ -147,8 +150,10 @@ </v-select> </v-col> </v-row> - <v-row v-if="select.length > 0"> - <v-col lg="8"> + <v-row + v-if="select.length > 0"> + <v-col + lg="8"> <v-btn v-if="clauses.length === 0" size="small" @@ -160,7 +165,8 @@ </v-col> </v-row> <div class="mb-5"> - <v-row v-if="clauses.length > 0"> + <v-row + v-if="clauses.length > 0"> <v-col lg="8" class="text-center"> @@ -170,7 +176,8 @@ <div v-for="(clause, idx) in clauses" :key="idx"> <v-row v-if="clause.type === 'where'"> - <v-col lg="3"> + <v-col + lg="3"> <v-select v-model="clause.params[0]" :disabled="clausesDisabled" @@ -182,7 +189,8 @@ :hint="$t('pages.subset.subpages.create.filter.column.hint')" :items="select" /> </v-col> - <v-col lg="2"> + <v-col + lg="2"> <v-select v-model="clause.params[1]" :disabled="clausesDisabled" @@ -211,7 +219,8 @@ </template> </v-select> </v-col> - <v-col lg="3"> + <v-col + lg="3"> <v-text-field v-model="clause.params[2]" :disabled="clausesDisabled" @@ -219,7 +228,8 @@ :label="$t('pages.subset.subpages.create.filter.value.label')" :hint="$t('pages.subset.subpages.create.filter.value.hint')" /> </v-col> - <v-col lg="1"> + <v-col + lg="1"> <v-btn :disabled="clausesDisabled" class="mt-4" @@ -469,6 +479,7 @@ export default { }, mounted () { this.selectTable() + this.initViewVisibility() }, methods: { fetchTableColumns (tableId) { @@ -488,6 +499,13 @@ export default { toast.error(this.$t(code)) }) }, + initViewVisibility () { + if (!this.database) { + return + } + this.view.is_public = this.database.is_public + this.view.is_schema_public = this.database.is_schema_public + }, validViewName (name) { if (!name) { return false @@ -499,7 +517,7 @@ export default { if (this.$route.query.tid === undefined) { return } - const tid = parseInt(this.$route.query.tid) + const tid = this.$route.query.tid const selection = this.tables.filter(t => t.id === tid) if (selection.length > 0) { this.table = selection[0] @@ -509,9 +527,9 @@ export default { console.warn('Failed to find table with id', tid) } }, - async execute () { + execute () { if (this.isView) { - await this.createView() + this.createView() return } if (this.timestamp === '') { diff --git a/dbrepo-ui/components/subset/Results.vue b/dbrepo-ui/components/subset/Results.vue index 661c7d1a3d..a4a2565d70 100644 --- a/dbrepo-ui/components/subset/Results.vue +++ b/dbrepo-ui/components/subset/Results.vue @@ -80,7 +80,7 @@ export default { } }, methods: { - reExecute (id) { + reExecute (id, timestamp) { if (id === null) { return } @@ -110,7 +110,7 @@ export default { }) } else if (this.type === 'table') { const tableService = useTableService() - tableService.getData(this.$route.params.database_id, id, (this.options.page - 1), this.options.itemsPerPage, this.timestamp) + tableService.getData(this.$route.params.database_id, id, (this.options.page - 1), this.options.itemsPerPage, timestamp ? timestamp : this.timestamp) .then((result) => { this.mapResults(result) this.id = id @@ -156,7 +156,7 @@ export default { }) } }, - reExecuteCount (id) { + reExecuteCount (id, timestamp) { if (id === null) { return } @@ -181,7 +181,7 @@ export default { }) } else if (this.type === 'table') { const tableService = useTableService() - tableService.getCount(this.$route.params.database_id, id, this.timestamp) + tableService.getCount(this.$route.params.database_id, id, timestamp ? timestamp : this.timestamp) .then((count) => { this.total = count this.loadingCount = false diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue index e602609097..2e6dae6302 100644 --- a/dbrepo-ui/components/subset/SubsetToolbar.vue +++ b/dbrepo-ui/components/subset/SubsetToolbar.vue @@ -110,7 +110,7 @@ export default { identifier () { /* mount pid */ if (this.pid) { - const filter = this.identifiers.filter(i => i.id === Number(this.pid)) + const filter = this.identifiers.filter(i => i.id === this.pid) if (filter.length > 0) { return filter[0] } diff --git a/dbrepo-ui/components/table/TableImport.vue b/dbrepo-ui/components/table/TableImport.vue index a4eb63733b..319fe3b37c 100644 --- a/dbrepo-ui/components/table/TableImport.vue +++ b/dbrepo-ui/components/table/TableImport.vue @@ -14,8 +14,10 @@ :disabled="disabled" @submit.prevent="submit"> <v-container> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.separator" :items="separators" @@ -30,8 +32,10 @@ :label="$t('pages.table.subpages.import.separator.label')"/> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.header" :items="headers" @@ -45,8 +49,10 @@ :label="$t('pages.table.subpages.import.skip.label')" /> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.quote" :items="quotes" @@ -59,8 +65,10 @@ :label="$t('pages.table.subpages.import.quote.label')"/> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-select v-model="tableImport.line_termination" :items="lineTerminationItems" @@ -117,7 +125,7 @@ v-if="step > 1 && suggestedAnalyseSeparator && providedSeparator !== analysedSeparator" dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="warning"> @@ -137,7 +145,7 @@ v-if="step > 1 && suggestedAnalyseLineTerminator && providedTerminator !== analysedTerminator" dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="warning"> @@ -153,7 +161,7 @@ v-if="!hasCompatibleSchema" dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="warning" @@ -236,7 +244,7 @@ <v-row dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="success"> diff --git a/dbrepo-ui/components/table/TableSchema.vue b/dbrepo-ui/components/table/TableSchema.vue index baf04272b4..811efae792 100644 --- a/dbrepo-ui/components/table/TableSchema.vue +++ b/dbrepo-ui/components/table/TableSchema.vue @@ -6,7 +6,8 @@ :disabled="disabled"> <v-row v-if="showPrimaryKeyWarning"> - <v-col md="8"> + <v-col + lg="8"> <v-alert border="start" color="warning"> @@ -268,7 +269,7 @@ export default { } this.loadingColumnTypes = true const imageService = useImageService() - imageService.findById(this.database.container.id) + imageService.findById(this.database.container.image.id) .then((image) => { const types = image.data_types if (this.columns.filter(c => c.type === 'serial').length > 0) { diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue index d9e0bfb6bf..9f44c8d480 100644 --- a/dbrepo-ui/components/view/ViewToolbar.vue +++ b/dbrepo-ui/components/view/ViewToolbar.vue @@ -145,12 +145,12 @@ export default { if (!this.view) { return [] } - return this.view.identifiers.filter(s => s.view_id === Number(this.$route.params.view_id)) + return this.view.identifiers.filter(s => s.view_id === this.$route.params.view_id) }, identifier () { /* mount pid */ if (this.pid) { - const filter = this.identifiers.filter(i => i.id === Number(this.pid)) + const filter = this.identifiers.filter(i => i.id === this.pid) if (filter.length > 0) { const identifier = filter[0] console.debug('identifier set according to route pid', identifier) diff --git a/dbrepo-ui/composables/access-service.ts b/dbrepo-ui/composables/access-service.ts index 056efec117..169d5126b7 100644 --- a/dbrepo-ui/composables/access-service.ts +++ b/dbrepo-ui/composables/access-service.ts @@ -1,7 +1,7 @@ import {axiosErrorToApiError} from '@/utils' export const useAccessService = (): any => { - async function findOne(databaseId: number, userId: string): Promise<DatabaseAccessDto> { + async function findOne(databaseId: string, userId: string): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('find access of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { @@ -17,7 +17,7 @@ export const useAccessService = (): any => { }) } - async function create(databaseId: number, userId: number, payload: DatabaseGiveAccessDto): Promise<DatabaseAccessDto> { + async function create(databaseId: string, userId: string, payload: DatabaseGiveAccessDto): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('create access for user with id', userId, 'of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { @@ -33,7 +33,7 @@ export const useAccessService = (): any => { }) } - async function update(databaseId: number, userId: number, payload: DatabaseModifyAccessDto): Promise<DatabaseAccessDto> { + async function update(databaseId: string, userId: string, payload: DatabaseModifyAccessDto): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('update access for user with id', userId, 'of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { @@ -49,7 +49,7 @@ export const useAccessService = (): any => { }) } - async function remove(databaseId: number, userId: number): Promise<DatabaseAccessDto> { + async function remove(databaseId: string, userId: string): Promise<DatabaseAccessDto> { const axios = useAxiosInstance() console.debug('remove access for user with id', userId, 'of database with id', databaseId) return new Promise<DatabaseAccessDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/container-service.ts b/dbrepo-ui/composables/container-service.ts index f128051756..e21622eab1 100644 --- a/dbrepo-ui/composables/container-service.ts +++ b/dbrepo-ui/composables/container-service.ts @@ -17,7 +17,7 @@ export const useContainerService = (): any => { }) } - async function findOne(containerId: number): Promise<ContainerDto> { + async function findOne(containerId: string): Promise<ContainerDto> { const axios = useAxiosInstance(); console.debug('find containers'); return new Promise<ContainerDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/database-service.ts b/dbrepo-ui/composables/database-service.ts index f318e07305..0609373923 100644 --- a/dbrepo-ui/composables/database-service.ts +++ b/dbrepo-ui/composables/database-service.ts @@ -17,7 +17,7 @@ export const useDatabaseService = (): any => { }); } - async function refreshTablesMetadata(databaseId: number): Promise<DatabaseDto> { + async function refreshTablesMetadata(databaseId: string): Promise<DatabaseDto> { const axios = useAxiosInstance(); console.debug('refresh database tables metadata'); return new Promise<DatabaseDto>((resolve, reject) => { @@ -33,7 +33,7 @@ export const useDatabaseService = (): any => { }); } - async function refreshViewsMetadata(databaseId: number): Promise<DatabaseDto> { + async function refreshViewsMetadata(databaseId: string): Promise<DatabaseDto> { const axios = useAxiosInstance(); console.debug('refresh database views metadata'); return new Promise<DatabaseDto>((resolve, reject) => { @@ -66,7 +66,7 @@ export const useDatabaseService = (): any => { }); } - async function findOne(id: number, rawError: boolean = false): Promise<DatabaseDto | null> { + async function findOne(id: string, rawError: boolean = false): Promise<DatabaseDto | null> { const axios = useAxiosInstance(); console.debug('find database with id', id); return new Promise((resolve, reject) => { @@ -85,7 +85,7 @@ export const useDatabaseService = (): any => { }); } - async function findPreviewImage(id: number): Promise<string> { + async function findPreviewImage(id: string): Promise<string> { const axios = useAxiosInstance(); console.debug('find database preview image with id', id); return new Promise((resolve, reject) => { @@ -101,7 +101,7 @@ export const useDatabaseService = (): any => { }); } - async function updateVisibility(id: number, payload: DatabaseModifyVisibilityDto): Promise<DatabaseDto | null> { + async function updateVisibility(id: string, payload: DatabaseModifyVisibilityDto): Promise<DatabaseDto | null> { const axios = useAxiosInstance() console.debug('update database visibility for database with id', id); return new Promise((resolve, reject) => { @@ -117,7 +117,7 @@ export const useDatabaseService = (): any => { }); } - async function updateImage(id: number, payload: DatabaseModifyImageDto): Promise<DatabaseDto | null> { + async function updateImage(id: string, payload: DatabaseModifyImageDto): Promise<DatabaseDto | null> { const axios = useAxiosInstance() console.debug('update database image for database with id', id); return new Promise((resolve, reject) => { @@ -133,7 +133,7 @@ export const useDatabaseService = (): any => { }); } - async function updateOwner(id: number, payload: DatabaseTransferDto): Promise<DatabaseDto | null> { + async function updateOwner(id: string, payload: DatabaseTransferDto): Promise<DatabaseDto | null> { const axios = useAxiosInstance() console.debug('update database owner for database with id', id); return new Promise((resolve, reject) => { diff --git a/dbrepo-ui/composables/identifier-service.ts b/dbrepo-ui/composables/identifier-service.ts index 6875a7cb7b..585356994b 100644 --- a/dbrepo-ui/composables/identifier-service.ts +++ b/dbrepo-ui/composables/identifier-service.ts @@ -2,7 +2,7 @@ import type {AxiosError, AxiosRequestConfig} from 'axios' import {axiosErrorToApiError} from '@/utils' export const useIdentifierService = (): any => { - async function findOne(id: number, accept: string): Promise<IdentifierDto> { + async function findOne(id: string, accept: string): Promise<IdentifierDto> { const axios = useAxiosInstance() console.debug('find identifier with id', id) const config: AxiosRequestConfig = { @@ -55,7 +55,7 @@ export const useIdentifierService = (): any => { }) } - async function remove(id: number): Promise<void> { + async function remove(id: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete identifier', id) return new Promise<void>((resolve, reject) => { @@ -71,7 +71,7 @@ export const useIdentifierService = (): any => { }) } - async function publish(id: number): Promise<IdentifierDto> { + async function publish(id: string): Promise<IdentifierDto> { const axios = useAxiosInstance() console.debug('publish identifier', id) return new Promise<IdentifierDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/image-service.ts b/dbrepo-ui/composables/image-service.ts index 9af0304a16..bcddbc5d7d 100644 --- a/dbrepo-ui/composables/image-service.ts +++ b/dbrepo-ui/composables/image-service.ts @@ -1,7 +1,7 @@ import {axiosErrorToApiError} from '@/utils' export const useImageService = (): any => { - async function findById(id: number): Promise<ImageDto> { + async function findById(id: string): Promise<ImageDto> { const axios = useAxiosInstance(); console.debug('find image by id', id); return new Promise<ImageDto>((resolve, reject) => { diff --git a/dbrepo-ui/composables/message-service.ts b/dbrepo-ui/composables/message-service.ts index a170b3ba03..648cb6d388 100644 --- a/dbrepo-ui/composables/message-service.ts +++ b/dbrepo-ui/composables/message-service.ts @@ -17,7 +17,7 @@ export const useMessageService = (): any => { }) } - async function findOne(id: number): Promise<BannerMessageDto> { + async function findOne(id: string): Promise<BannerMessageDto> { const axios = useAxiosInstance() console.debug('find message with id', id) return new Promise<BannerMessageDto>((resolve, reject) => { @@ -49,7 +49,7 @@ export const useMessageService = (): any => { }) } - async function update(id: number, data: BannerMessageUpdateDto): Promise<BannerMessageDto> { + async function update(id: string, data: BannerMessageUpdateDto): Promise<BannerMessageDto> { const axios = useAxiosInstance() console.debug('update message with id', id) return new Promise<BannerMessageDto>((resolve, reject) => { @@ -65,7 +65,7 @@ export const useMessageService = (): any => { }) } - async function remove(id: number): Promise<void> { + async function remove(id: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete message with id', id) return new Promise<void>((resolve, reject) => { diff --git a/dbrepo-ui/composables/ontology-service.ts b/dbrepo-ui/composables/ontology-service.ts index da207d6c56..67c6beaf25 100644 --- a/dbrepo-ui/composables/ontology-service.ts +++ b/dbrepo-ui/composables/ontology-service.ts @@ -17,7 +17,7 @@ export const useOntologyService = (): any => { }) } - async function findOne(id: number): Promise<OntologyDto> { + async function findOne(id: string): Promise<OntologyDto> { const axios = useAxiosInstance() console.debug('find ontology for id', id) return new Promise<OntologyDto>((resolve, reject) => { @@ -49,7 +49,7 @@ export const useOntologyService = (): any => { }) } - async function update(id: number, data: OntologyModifyDto): Promise<OntologyDto> { + async function update(id: string, data: OntologyModifyDto): Promise<OntologyDto> { const axios = useAxiosInstance() console.debug('update ontology with id', id) return new Promise<OntologyDto>((resolve, reject) => { @@ -65,7 +65,7 @@ export const useOntologyService = (): any => { }) } - async function remove(id: number): Promise<void> { + async function remove(id: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete ontology with id', id) return new Promise<void>((resolve, reject) => { diff --git a/dbrepo-ui/composables/query-service.ts b/dbrepo-ui/composables/query-service.ts index e314993ecd..c0d5c0db7c 100644 --- a/dbrepo-ui/composables/query-service.ts +++ b/dbrepo-ui/composables/query-service.ts @@ -3,7 +3,7 @@ import type {AxiosRequestConfig} from 'axios' import {axiosErrorToApiError} from '@/utils' export const useQueryService = (): any => { - async function findAll(databaseId: number, persisted: boolean): Promise<QueryDto[]> { + async function findAll(databaseId: string, persisted: boolean): Promise<QueryDto[]> { const axios = useAxiosInstance() console.debug('find queries') return new Promise<QueryDto[]>((resolve, reject) => { @@ -23,7 +23,7 @@ export const useQueryService = (): any => { }) } - async function findOne(databaseId: number, queryId: number): Promise<QueryDto> { + async function findOne(databaseId: string, queryId: string): Promise<QueryDto> { const axios = useAxiosInstance() console.debug('find query with id', queryId, 'in database with id', databaseId) return new Promise<QueryDto>((resolve, reject) => { @@ -39,7 +39,7 @@ export const useQueryService = (): any => { }) } - async function update(databaseId: number, queryId: number, data: QueryPersistDto): Promise<QueryDto> { + async function update(databaseId: string, queryId: string, data: QueryPersistDto): Promise<QueryDto> { const axios = useAxiosInstance() console.debug('update query with id', queryId, 'in database with id', databaseId) return new Promise<QueryDto>((resolve, reject) => { @@ -55,7 +55,7 @@ export const useQueryService = (): any => { }) } - async function exportCsv(databaseId: number, queryId: number): Promise<any> { + async function exportCsv(databaseId: string, queryId: string): Promise<any> { const axios = useAxiosInstance() const config: AxiosRequestConfig = { responseType: 'blob', @@ -77,7 +77,7 @@ export const useQueryService = (): any => { }) } - async function execute(databaseId: number, data: ExecuteStatementDto, timestamp: Date | null, page: number, size: number): Promise<QueryResultDto> { + async function execute(databaseId: string, data: ExecuteStatementDto, timestamp: Date | null, page: number, size: number): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('execute query in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { @@ -85,7 +85,7 @@ export const useQueryService = (): any => { .then((response) => { console.info('Executed query with id', response.data.id, ' in database with id', databaseId) const result: QueryResultDto = { - id: 1, + id: response.headers['x-id'], headers: [], result: response.data } @@ -98,7 +98,7 @@ export const useQueryService = (): any => { }) } - async function reExecuteData(databaseId: number, queryId: number, page: number, size: number): Promise<QueryResultDto> { + async function reExecuteData(databaseId: string, queryId: string, page: number, size: number): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('re-execute query in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { @@ -106,7 +106,7 @@ export const useQueryService = (): any => { .then((response) => { console.info('Re-executed query in database with id', databaseId) const result: QueryResultDto = { - id: Number(response.headers['x-id']), + id: response.headers['x-id'], headers: response.headers['x-headers'] ? response.headers['x-headers'].split(',') : [], result: response.data } @@ -119,7 +119,7 @@ export const useQueryService = (): any => { }) } - async function reExecuteCount(databaseId: number, queryId: number): Promise<number> { + async function reExecuteCount(databaseId: string, queryId: string): Promise<number> { const axios = useAxiosInstance() console.debug('re-execute query in database with id', databaseId) return new Promise<number>((resolve, reject) => { diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index 5f29074524..45ee0a7b93 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -3,7 +3,7 @@ import {axiosErrorToApiError} from '@/utils' export const useTableService = (): any => { - function findAll(databaseId: number): Promise<TableBriefDto> { + function findAll(databaseId: string): Promise<TableBriefDto> { const axios = useAxiosInstance() console.debug('find tables') return new Promise<TableBriefDto>((resolve, reject) => { @@ -19,7 +19,7 @@ export const useTableService = (): any => { }) } - async function findOne(databaseId: number, tableId: number): Promise<TableDto> { + async function findOne(databaseId: string, tableId: string): Promise<TableDto> { const axios = useAxiosInstance() console.debug('find table with id', tableId, 'in database with id', databaseId); return new Promise<TableDto>((resolve, reject) => { @@ -35,7 +35,7 @@ export const useTableService = (): any => { }) } - async function updateSemantics(databaseId: number, tableId: number, columnId: number, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> { + async function updateSemantics(databaseId: string, tableId: string, columnId: string, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> { const axios = useAxiosInstance() console.debug('update column with id', columnId, 'table with id', tableId, 'in database with id', databaseId); return new Promise<ColumnDto>((resolve, reject) => { @@ -51,7 +51,7 @@ export const useTableService = (): any => { }) } - async function update(databaseId: number, tableId: number, data: TableUpdateDto): Promise<TableDto> { + async function update(databaseId: string, tableId: string, data: TableUpdateDto): Promise<TableDto> { const axios = useAxiosInstance() console.debug('update table with id', tableId, 'in database with id', databaseId); return new Promise<TableDto>((resolve, reject) => { @@ -67,7 +67,7 @@ export const useTableService = (): any => { }) } - async function importCsv(databaseId: number, tableId: number, data: ImportCsv): Promise<ImportDto> { + async function importCsv(databaseId: string, tableId: string, data: ImportCsv): Promise<ImportDto> { const axios = useAxiosInstance() console.debug('import csv to table with id', tableId, 'in database with id', databaseId); return new Promise<ImportDto>((resolve, reject) => { @@ -83,7 +83,7 @@ export const useTableService = (): any => { }) } - async function getData(databaseId: number, tableId: number, page: number, size: number, timestamp: Date): Promise<QueryResultDto> { + async function getData(databaseId: string, tableId: string, page: number, size: number, timestamp: Date): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('get data for table with id', tableId, 'in database with id', databaseId); return new Promise<QueryResultDto>((resolve, reject) => { @@ -104,7 +104,7 @@ export const useTableService = (): any => { }) } - async function getCount(databaseId: number, tableId: number, timestamp: Date): Promise<number> { + async function getCount(databaseId: string, tableId: string, timestamp: Date): Promise<number> { const axios = useAxiosInstance() console.debug('get data count for table with id', tableId, 'in database with id', databaseId); return new Promise<number>((resolve, reject) => { @@ -121,7 +121,7 @@ export const useTableService = (): any => { }) } - async function exportData(databaseId: number, tableId: number, timestamp: Date): Promise<QueryResultDto> { + async function exportData(databaseId: string, tableId: string, timestamp: Date): Promise<QueryResultDto> { const axios = useAxiosInstance() const config: AxiosRequestConfig = { params: (timestamp && {timestamp}), @@ -144,7 +144,7 @@ export const useTableService = (): any => { }) } - async function create(databaseId: number, data: TableCreateDto): Promise<TableDto> { + async function create(databaseId: string, data: TableCreateDto): Promise<TableDto> { const axios = useAxiosInstance() console.debug('create table in database with id', databaseId, data) return new Promise<TableDto>((resolve, reject) => { @@ -160,7 +160,7 @@ export const useTableService = (): any => { }); } - async function remove(databaseId: number, tableId: number): Promise<void> { + async function remove(databaseId: string, tableId: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -176,7 +176,7 @@ export const useTableService = (): any => { }); } - async function removeTuple(databaseId: number, tableId: number, data: TableCsvDeleteDto): Promise<void> { + async function removeTuple(databaseId: string, tableId: string, data: TableCsvDeleteDto): Promise<void> { const axios = useAxiosInstance() console.debug('delete tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -192,7 +192,7 @@ export const useTableService = (): any => { }); } - async function history(databaseId: number, tableId: number): Promise<TableHistoryDto[]> { + async function history(databaseId: string, tableId: string): Promise<TableHistoryDto[]> { const axios = useAxiosInstance() console.debug('Load history of table with id', tableId, 'in database with id', databaseId) return new Promise<TableHistoryDto[]>((resolve, reject) => { @@ -208,7 +208,7 @@ export const useTableService = (): any => { }); } - async function suggest(databaseId: number, tableId: number, columnId: number): Promise<TableColumnEntityDto[]> { + async function suggest(databaseId: string, tableId: string, columnId: string): Promise<TableColumnEntityDto[]> { const axios = useAxiosInstance() console.debug('suggest semantic entities for table column with id', columnId, 'of table with id', tableId, 'of database with id', databaseId) return new Promise<TableColumnEntityDto[]>((resolve, reject) => { diff --git a/dbrepo-ui/composables/tuple-service.ts b/dbrepo-ui/composables/tuple-service.ts index e54cbe6a0d..aa8407a258 100644 --- a/dbrepo-ui/composables/tuple-service.ts +++ b/dbrepo-ui/composables/tuple-service.ts @@ -1,7 +1,7 @@ import {axiosErrorToApiError} from '@/utils' export const useTupleService = (): any => { - async function create(databaseId: number, tableId: number, data: TableCsvDto): Promise<void> { + async function create(databaseId: string, tableId: string, data: TableCsvDto): Promise<void> { const axios = useAxiosInstance() console.debug('create tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -17,7 +17,7 @@ export const useTupleService = (): any => { }) } - async function update(databaseId: number, tableId: number, data: TableCsvDto): Promise<void> { + async function update(databaseId: string, tableId: string, data: TableCsvDto): Promise<void> { const axios = useAxiosInstance() console.debug('update tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -33,7 +33,7 @@ export const useTupleService = (): any => { }) } - async function remove(databaseId: number, tableId: number, data: TableCsvDeleteDto): Promise<void> { + async function remove(databaseId: string, tableId: string, data: TableCsvDeleteDto): Promise<void> { const axios = useAxiosInstance() console.debug('delete tuple(s) in table with id', tableId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { diff --git a/dbrepo-ui/composables/view-service.ts b/dbrepo-ui/composables/view-service.ts index 417f5a645e..9029a553ac 100644 --- a/dbrepo-ui/composables/view-service.ts +++ b/dbrepo-ui/composables/view-service.ts @@ -2,7 +2,7 @@ import {axiosErrorToApiError} from '@/utils' import type {AxiosRequestConfig} from "axios"; export const useViewService = (): any => { - async function remove(databaseId: number, viewId: number): Promise<void> { + async function remove(databaseId: string, viewId: string): Promise<void> { const axios = useAxiosInstance() console.debug('delete view with id', viewId, 'in database with id', databaseId) return new Promise<void>((resolve, reject) => { @@ -18,7 +18,7 @@ export const useViewService = (): any => { }) } - async function findOne(databaseId: number, viewId: number): Promise<ViewDto> { + async function findOne(databaseId: string, viewId: string): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('get view with id', viewId, 'in database with id', databaseId) return new Promise<ViewDto>((resolve, reject) => { @@ -34,7 +34,7 @@ export const useViewService = (): any => { }) } - async function create(databaseId: number, payload: ViewCreateDto): Promise<ViewDto> { + async function create(databaseId: string, payload: ViewCreateDto): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('create view in database with id', databaseId) return new Promise<ViewDto>((resolve, reject) => { @@ -50,7 +50,7 @@ export const useViewService = (): any => { }) } - async function update(databaseId: number, viewId: number, payload: ViewUpdateDto): Promise<ViewDto> { + async function update(databaseId: string, viewId: string, payload: ViewUpdateDto): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('update view with id', viewId) return new Promise<ViewDto>((resolve, reject) => { @@ -66,7 +66,7 @@ export const useViewService = (): any => { }) } - async function reExecuteData(databaseId: number, viewId: number, page: number | null, size: number | null): Promise<QueryResultDto> { + async function reExecuteData(databaseId: string, viewId: string, page: number | null, size: number | null): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('re-execute view with id', viewId, 'in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { @@ -87,7 +87,7 @@ export const useViewService = (): any => { }) } - async function reExecuteCount(databaseId: number, viewId: number): Promise<number> { + async function reExecuteCount(databaseId: string, viewId: string): Promise<number> { const axios = useAxiosInstance() console.debug('re-execute view with id', viewId, 'in database with id', databaseId) return new Promise<number>((resolve, reject) => { @@ -104,7 +104,7 @@ export const useViewService = (): any => { }) } - async function exportData(databaseId: number, viewId: number): Promise<QueryResultDto> { + async function exportData(databaseId: string, viewId: string): Promise<QueryResultDto> { const axios = useAxiosInstance() const config: AxiosRequestConfig = { responseType: 'blob', diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index 605a7c0db9..2f20f17429 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -1,5 +1,5 @@ interface DatabaseDto { - id: number; + id: string; name: string; creator: UserDto; owner: UserDto; @@ -22,7 +22,7 @@ interface DatabaseDto { interface DatabaseCreateDto { name: string; - container_id: number; + container_id: string; is_public: boolean; } @@ -69,7 +69,7 @@ interface ContainerBriefDto { } interface ImageDto { - id: number; + id: string; registry: string; name: string; version: string; @@ -82,15 +82,15 @@ interface ImageDto { } interface OperatorDto { - id: number; - image_id: number; + id: string; + image_id: string; display_name: string; documentation: string; value: string; } interface TableBriefDto { - id: number; + id: string; name: string; description: string; internal_name: string; @@ -107,18 +107,18 @@ interface TableUpdateDto { } interface ColumnBriefDto { - id: number; + id: string; name: string; alias: string; - database_id: number; - table_id: number; + database_id: string; + table_id: string; internal_name: string; column_type: string; } interface TableDto { - id: number; - database_id: number; + id: string; + database_id: string; name: string; identifiers: IdentifierDto[]; creator: UserDto; @@ -170,18 +170,18 @@ interface DataTypesDto { } interface UniqueDto { - uid: number; + uid: string; table: TableBriefDto; columns: ColumnDto[]; } interface IdentifierCreateDto { - database_id: number; + database_id: string; doi: string | null; } interface IdentifierSaveDto { - id: number; + id: string; type: string; doi: string | null; titles: IdentifierSaveTitleDto[] | []; @@ -191,10 +191,10 @@ interface IdentifierSaveDto { publisher: string | null; language: string | null; creators: CreatorSaveDto[] | []; - database_id: number | null; - query_id: number | null; - view_id: number | null; - table_id: number | null; + database_id: string | null; + query_id: string | null; + view_id: string | null; + table_id: string | null; publication_day: number | null; publication_month: number | null; publication_year: number | null; @@ -223,11 +223,11 @@ interface IdentifierFunderSaveDto { } interface IdentifierDto { - id: number; - database_id: number | null; - query_id: number | null; - table_id: number | null; - view_id: number | null; + id: string; + database_id: string; + query_id: string | null; + table_id: string | null; + view_id: string | null; type: IdentifierTypeDto; titles: IdentifierTitleDto[] | []; descriptions: IdentifierDescriptionDto[] | []; @@ -263,11 +263,11 @@ enum IdentifierStatusTypeDto { } interface IdentifierBriefDto { - id: number; - database_id: number | null; - query_id: number | null; - table_id: number | null; - view_id: number | null; + id: string; + database_id: string | null; + query_id: string | null; + table_id: string | null; + view_id: string | null; type: IdentifierTypeDto; creators: CreatorBriefDto[] | []; titles: IdentifierTitleDto[] | []; @@ -280,21 +280,21 @@ interface IdentifierBriefDto { } interface IdentifierTitleDto { - id: number; + id: string; title: string; language: string; type: string; } interface IdentifierDescriptionDto { - id: number; + id: string; description: string; language: string; type: string; } interface IdentifierFunderDto { - id: number; + id: string; funder_name: string; funder_identifier: string; funder_identifier_type: string; @@ -309,7 +309,7 @@ enum NameTypeDto { } interface CreatorDto { - id: number; + id: string; firstname: string; lastname: string; affiliation: string; @@ -324,7 +324,7 @@ interface CreatorDto { } interface CreatorBriefDto { - id: number; + id: string; affiliation: string; creator_name: string; name_type: NameTypeDto | null; @@ -335,7 +335,7 @@ interface CreatorBriefDto { } interface RelatedIdentifierDto { - id: number; + id: string; value: string; type: string; relation: string; @@ -362,7 +362,7 @@ interface RelatedIdentifierSaveDto { } interface ColumnDto { - id: number; + id: string; name: string; alias: string; size: number; @@ -379,8 +379,8 @@ interface ColumnDto { unit: UnitDto; enums: string[]; sets: string[]; - database_id: number; - table_id: number; + database_id: string; + table_id: string; internal_name: string; is_primary_key: boolean; index_length: number; @@ -391,7 +391,7 @@ interface ColumnDto { } interface ConceptDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -400,7 +400,7 @@ interface ConceptDto { } interface UnitDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -446,14 +446,14 @@ interface ViewUpdateDto { } interface QueryDto { - id: number; + id: string; creator: UserDto; execution: Date; query: string; type: string | null; identifiers: IdentifierDto[]; created: Date; - database_id: number; + database_id: string; query_normalized: string | null; query_hash: string; is_persisted: boolean; @@ -515,8 +515,8 @@ interface KeycloakErrorDto { } interface ViewBriefDto { - id: number; - database_id: number; + id: string; + database_id: string; name: string; identifier: any[]; query: string; @@ -530,8 +530,8 @@ interface ViewBriefDto { } interface ViewDto { - id: number; - database_id: number; + id: string; + database_id: string; name: string; identifiers: IdentifierDto[]; query: string; @@ -545,14 +545,14 @@ interface ViewDto { } interface ImageBriefDto { - id: number; + id: string; name: string; version: string; jdbc_method: string; } interface ImageDto { - id: number; + id: string; registry: string; name: string; version: string; @@ -600,7 +600,7 @@ interface ImportCsv { } interface QueryResultDto { - id: number | null; + id: string | null; result: any; headers: string[]; } @@ -660,7 +660,7 @@ interface ForeignKeyCreateDto { } interface OntologyDto { - id: number; + id: string; uri: string; prefix: string; sparql: boolean; @@ -686,7 +686,7 @@ interface OntologyCreateDto { } interface UnitDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -695,7 +695,7 @@ interface UnitDto { } interface ConceptDto { - id: number; + id: string; uri: string; name: string; description: string; @@ -704,9 +704,9 @@ interface ConceptDto { } interface TableColumnEntityDto { - database_id: number; - table_id: number; - column_id: number; + database_id: string; + table_id: string; + column_id: string; uri: string; label: string; description: string; @@ -739,7 +739,7 @@ interface BannerMessageUpdateDto { } interface BannerMessageDto { - id: number; + id: string; type: string; message: string; link: string; diff --git a/dbrepo-ui/dto/jwt.ts b/dbrepo-ui/dto/jwt.ts deleted file mode 100644 index a47085114e..0000000000 --- a/dbrepo-ui/dto/jwt.ts +++ /dev/null @@ -1,20 +0,0 @@ -interface Token { - exp: number; - iat: number; - jti: string; - iss: string; - aud: string; - sub: string; - typ: string; - azp: string; - session_state: string; - realm_access: RealmAccess; - scope: string; - sid: string; - uid: string; - preferred_username: string; -} - -interface RealmAccess { - roles: string[]; -} diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue index 85be5cd6b0..7267242288 100644 --- a/dbrepo-ui/layouts/default.vue +++ b/dbrepo-ui/layouts/default.vue @@ -313,14 +313,14 @@ export default { return } if (this.identifier) { - if (newObj.query_id && this.identifier.query_id !== Number(newObj.query_id)) { + if (newObj.query_id && this.identifier.query_id !== newObj.query_id) { this.cacheStore.setIdentifier(null) - } else if (newObj.table_id && this.identifier.table_id !== Number(newObj.table_id)) { + } else if (newObj.table_id && this.identifier.table_id !== newObj.table_id) { this.cacheStore.setIdentifier(null) - } else if (newObj.view_id && this.identifier.view_id !== Number(newObj.view_id)) { + } else if (newObj.view_id && this.identifier.view_id !== newObj.view_id) { this.cacheStore.setIdentifier(null) } - if (this.$route.query.pid && this.identifier.id !== Number(this.$route.query.pid)) { + if (this.$route.query.pid && this.identifier.id !== this.$route.query.pid) { this.cacheStore.setIdentifier(null) } } diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index d17da2341d..c3da75d79b 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -1305,8 +1305,9 @@ "revoked": "Revoked {access} access successfully" }, "data": { - "add": "Successfully added data entry", - "update": "Successfully updated data entry" + "add": "Successfully added data tuple", + "update": "Successfully updated data tuple", + "deleted": "Successfully deleted {total} data tuple(s)" }, "table": { "created": "Created table {table} successfully", diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index 025cc9c4c4..9f2d426553 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -177,7 +177,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -253,7 +253,7 @@ export default { if (!this.database || !this.database.identifiers) { return [] } - return this.database.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.database.identifiers.filter(i => i.query_id === this.$route.params.subset_id) }, pid () { return this.$route.query.pid diff --git a/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue index 505a765123..1adbe4bf9b 100644 --- a/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue @@ -58,7 +58,7 @@ export default { if (!this.database) { return false } - const filter = this.database.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.database.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 8905ede1d2..3d82b13bda 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -20,7 +20,8 @@ <v-row v-if="previewImage" dense> - <v-col md="8"> + <v-col + lg="8"> <v-alert v-if="file" border="start" @@ -45,8 +46,10 @@ @click="removeDatabaseImage" /> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-file-input v-model="file" accept="image/*" @@ -134,7 +137,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="modifyVisibility.is_public" :items="dataOptions" @@ -148,7 +151,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'database' })" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="modifyVisibility.is_schema_public" :items="schemaOptions" @@ -184,7 +187,8 @@ rounded="0"> <v-card-text> <v-row> - <v-col md="8"> + <v-col + lg="8"> <v-select v-model="modifyOwner.id" :items="users" diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue index db5d45b461..d3b5f624d7 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue @@ -94,7 +94,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -162,11 +162,14 @@ export default { subset () { return this.cacheStore.getSubset }, + access () { + return this.cacheStore.getAccess + }, identifiers () { if (!this.database || !this.database.subsets) { return [] } - return this.database.subsets.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.database.subsets.filter(i => i.query_id === this.$route.params.subset_id) }, canViewInfo () { if (!this.database) { diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue index 78878a0015..e97ac3eb88 100644 --- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue @@ -69,7 +69,7 @@ export default { if (!this.subset) { return false } - const filter = this.subset.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.subset.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue index 13ee3951c8..75e9537007 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue @@ -45,7 +45,7 @@ class="ml-2" :disabled="loadingData" :loading="loadingData" - @click="reload" /> + @click="reload()" /> <v-btn :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-update' : null" variant="flat" @@ -68,7 +68,7 @@ class="mt-0 mb-0" type="table" :select="canSelectTuples" - :timestamp="versionISO || lastReload.toISOString()" + :timestamp="lastReload.toISOString()" @selection="updateSelect" /> </v-card> <v-dialog @@ -310,7 +310,7 @@ export default { } const tupleService = useTupleService() wait.push(tupleService.remove(this.$route.params.database_id, this.$route.params.table_id, { keys: constraints }) - .catch(({code, message}) => { + .catch(({ code }) => { const toast = useToastInstance() if (typeof code !== 'string') { return @@ -321,7 +321,7 @@ export default { Promise.all(wait) .then(() => { const toast = useToastInstance() - toast.success(`Deleted ${this.selection.length} row(s)`) + toast.success(this.$t('success.data.deleted', { total: this.selection.length })) this.$emit('modified', { success: true, action: 'delete' }) this.selection = [] this.$refs.queryResults.resetSelection() @@ -400,8 +400,8 @@ export default { if (!this.canViewTableData) { return } - this.$refs.queryResults.reExecute(Number(this.$route.params.table_id)) - this.$refs.queryResults.reExecuteCount(Number(this.$route.params.table_id)) + this.$refs.queryResults.reExecute(this.$route.params.table_id, this.lastReload) + this.$refs.queryResults.reExecuteCount(this.$route.params.table_id, this.lastReload) }, isFileField (column) { return ['blob', 'longblob', 'mediumblob', 'tinyblob'].includes(column.type) diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue index 687358f029..18662f55dd 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue @@ -131,7 +131,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -244,7 +244,7 @@ export default { if (!this.table || !this.table.identifiers) { return [] } - return this.table.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.table.identifiers.filter(i => i.query_id === this.$route.params.subset_id) }, brokerExtraInfo () { return this.$config.public.broker.extra diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue index e2d16e8db4..2d7b94744c 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue @@ -67,7 +67,7 @@ export default { if (!this.table) { return false } - const filter = this.table.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.table.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue index 0f0a8feab6..4667a7f30c 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue @@ -18,7 +18,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-textarea v-model="modify.description" rows="2" @@ -34,7 +34,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_public" :items="dataOptions" @@ -48,7 +48,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'table' })" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_schema_public" :items="schemaOptions" @@ -90,7 +90,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-btn size="small" variant="flat" diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue index 24aed7f2ff..a2498d799b 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -21,7 +21,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-alert border="start" color="info"> @@ -54,7 +54,8 @@ <v-container> <v-row dense> - <v-col md="4"> + <v-col + lg="4"> <v-text-field v-model="tableCreate.name" :rules="[ @@ -69,7 +70,8 @@ :hint="$t('pages.table.subpages.import.name.hint')" :label="$t('pages.table.subpages.import.name.label')"/> </v-col> - <v-col md="4"> + <v-col + lg="4"> <v-text-field v-model="generatedTableName" :rules="[ @@ -88,7 +90,8 @@ </v-row> <v-row dense> - <v-col md="8"> + <v-col + lg="8"> <v-textarea v-model="tableCreate.description" rows="2" @@ -104,7 +107,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_public" name="public" @@ -120,7 +123,7 @@ </v-select> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_schema_public" name="schema-public" @@ -175,7 +178,7 @@ <v-container> <v-row dense> <v-col - md="8"> + lg="8"> <v-alert border="start" color="success"> diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue index 804ae03c15..1c48d143ca 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue @@ -32,8 +32,10 @@ :disabled="table" @submit.prevent="submit"> <v-container> - <v-row dense> - <v-col md="4"> + <v-row + dense> + <v-col + lg="4"> <v-text-field v-model="tableCreate.name" :rules="[ @@ -48,7 +50,8 @@ :hint="$t('pages.table.subpages.import.name.hint')" :label="$t('pages.table.subpages.import.name.label')" /> </v-col> - <v-col md="4"> + <v-col + lg="4"> <v-text-field v-model="generatedTableName" :rules="[ @@ -65,8 +68,10 @@ :label="$t('pages.table.subpages.import.generated.label')" /> </v-col> </v-row> - <v-row dense> - <v-col md="8"> + <v-row + dense> + <v-col + lg="8"> <v-textarea v-model="tableCreate.description" rows="2" @@ -82,7 +87,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_public" name="public" @@ -98,7 +103,7 @@ </v-select> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="tableCreate.is_schema_public" name="schema-public" @@ -146,7 +151,8 @@ <v-container> <v-row dense> - <v-col md="8"> + <v-col + lg="8"> <v-alert border="start" color="success"> diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue index f732661f36..43e8f491d9 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue @@ -104,8 +104,8 @@ export default { }, methods: { reload () { - this.$refs.queryResults.reExecute(Number(this.$route.params.view_id)) - this.$refs.queryResults.reExecuteCount(Number(this.$route.params.view_id)) + this.$refs.queryResults.reExecute(this.$route.params.view_id) + this.$refs.queryResults.reExecuteCount(this.$route.params.view_id) }, download () { this.downloadLoading = true diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue index 3c0c40e33c..395be401c0 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue @@ -72,7 +72,7 @@ if (data.value && data.value.length > 0) { useServerHead(identifierService.identifiersToServerHead(data.value)) useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value)) } -const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null) +const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null) const cacheStore = useCacheStore() cacheStore.setIdentifier(identifier) @@ -143,7 +143,7 @@ export default { if (!this.view || !this.view.identifiers) { return [] } - return this.view.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id)) + return this.view.identifiers.filter(i => i.query_id === this.$route.params.subset_id) }, views () { if (!this.database) { diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue index 540bbbdb5e..5a1faeb431 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue @@ -69,7 +69,7 @@ export default { if (!this.view) { return false } - const filter = this.view.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id)) + const filter = this.view.identifiers.filter(i => i.id === this.$route.params.identifier_id) return filter.length === 1 ? filter[0] : null }, canPersistIdentifier () { diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue index d027a4347b..41285c4d3b 100644 --- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue @@ -17,7 +17,7 @@ <v-row dense> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_public" :items="dataOptions" @@ -31,7 +31,7 @@ :hint="$t('pages.database.resource.data.hint', { resource: 'view' })" /> </v-col> <v-col - md="4"> + lg="4"> <v-select v-model="modify.is_schema_public" :items="schemaOptions" @@ -72,7 +72,7 @@ <v-card-text> <v-row> <v-col - md="8"> + lg="8"> <v-btn size="small" variant="flat" diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue index 9c8dbf873d..0f52ca7fcc 100644 --- a/dbrepo-ui/pages/user/info.vue +++ b/dbrepo-ui/pages/user/info.vue @@ -14,7 +14,8 @@ variant="flat"> <v-card-text> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.id" disabled @@ -25,7 +26,8 @@ <v-row v-if="cacheUser" dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="cacheUser.preferred_username" disabled @@ -56,7 +58,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.orcid" :disabled="!canModifyInformation" @@ -71,7 +74,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.firstname" :disabled="!canModifyInformation || identityProvider" @@ -83,7 +87,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.lastname" :disabled="!canModifyInformation || identityProvider" @@ -95,7 +100,8 @@ </v-col> </v-row> <v-row dense> - <v-col md="6"> + <v-col + lg="6"> <v-text-field v-model="model.affiliation" :disabled="!canModifyInformation" diff --git a/docker-compose.yml b/docker-compose.yml index 675794464f..5ab6df06af 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -485,6 +485,7 @@ services: volumes: - dashboard-service-data:/opt/bitnami/grafana/data environment: + BITNAMI_DEBUG: true GF_SERVER_DOMAIN: "dashboard-service" GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: "true" LDAP_ADMIN_USERNAME: "${IDENTITY_SERVICE_ADMIN_USERNAME:-admin}" diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar index a9437e2cc19fae55c40e5ab0ddf772e20f11ab81..3230bc2de1aa82754770364457fda657e7db3279 100644 GIT binary patch delta 1020 zcmbQ^KhIw{z?+#xgn@yBgQ2=6B&t-dxvylRuwuP$@gW6)z3FQI8|@h+J||9&-r9cc zVwqd^`<5K7WG9&$M}EEUzIbfq<;-dZv2PpSf1I}T!YY>TFT6dWz2`g*xa~7HRuJH_ zvQ10Tw7T%*-ifuZ4osNfs(xfkXsF}!qkZeXE8N}M`F^fasFvo1&_(OHv`=_Ul)hme zvSr6oF`wlscj}ec-xbFHGF#bwEG5M*ca7@LiE9=p^fT4IUwJP)p!wMTpLq-Jb431e z{x^Tl?5j%3(MR^4wXm1r^O-s=u{vPE%n3dU;k!%@Ey`5g#-?L``tiQ!J$`qL#OF%< zkW&bE;%|?aExfibqUx1{n@g-p;Qo5Ct<~?GUVdAApZ`b8PPt14^$Wz`L|rSnmcc9Z zd(YI;Z|gS5&)Hph`<aiK>HUL&VZAqa8H+vje(!f!SUl_Q;moBvO>D(_dz$>_W<K6+ z!gcwg##|LgiKRxJ?@uWRv7RvDJLYKO`KUyw_2AEY$3nuN*Ihnvk>SIwN{(l%mWn@O ziQQtMT>Bmz6<iDq91INAOf?~sH!`X)SJi|}zQL#qra748z_cclDsy#B$mBpKEihfj zWCEtQGI@dJnV8Rl=}XMrAbN8G%N!;!<3AfWCz!!2P$LM|(xW&FOlvAl=7dN8<fBTK zU{OY8X~t!fWtAlqs%k=_7?6MvoGrlc*6}Rk<cG{6lQWfhOwbiFqbU5#$iR?Tq95SR z$RxrH@hQlIE0v{X<(R-yC8gz=sd*?WKwf>QEY0XP`LD7Z*j;ie(u~EE8&zbqkxc@* zA8s211A{)C19Ic4$&D&@V1N9X*XGp4z`*c<fq_8-u7-hON#l2>$%4#UlQ~s+zzThS zv#io%U|`T;U|?`UQFxqr@<V2q$(2xr|35YF_Ge;XxW>xBV1%MDlx1>0i^=4hP=(z8 z1pnOPU|?7$z`!7eqVNmbWIlF@$+BuZpa`0*qbAM7BrrLjMSXICngQed$qUt7!Crr< zCe75SIJuWedh&fHvB_r?`JiEd$il)NA?K1A7#KD(Ffa(CSRyyMKwXV(lM+Y}0FzNu A9{>OV delta 925 zcmbQ|KgVA>z?+#xgn@yBgJJKK;HZg@IbIYoGBBKBVqg%Nd{;@lzBlM}-eCoSJ<*@+ zKQKGQ^-15K_2q(FruNeQ-%{6jyLy!)tk2$`Zn1K;Tj*`(4I2)hGdOJ<5xhYCU)Q<W zx6*Pn*b284aJ0-i&o8;VT}*d(SypmXNsf-1`;k3{OP_h~ed=!=@-Rxu{rCwHH^x@4 zKQ{w9B`@zh9D8=*Lf-E$q88VG5V~31zw6R;&(+z}H$L6-ZQfJ%ZEk1t8Xvt_cWY|I z!lnCv>Mgj>;rhw>-~2iHuS1WSxmeHl+<E_ftLB~sY55np0+>9cqAfl=k#g;I*7yIE zBE!0Pd19m!x9xr2XKXq3KW<J;c)R%dalRBDE!(*zzu8wDDh@wp_Wtg^<NmHM6y@ue z{^_X=5{<udZP6mV_n}kwO1^5Fl6cQ#XF#dy_KJX1-rIHpikhL{#Vxiu7FSs4_o{Ds z;n#Zo#;ncLPv*?=Ic6a7>ZOinXxxJcRbdT*&n9~>9nD!0B+=vdJuc?w(>wW6DwZyh zto#>iGheo_IHv0!JYn&R0Td@(3=A9$411ZT1W(?~sKUHwO7P@cjJjZ&i%AYlYcr`b z@0}7nIhaWcOgAu@fa&c_USN3^=Cfe>3UfDz-kiiThY8GJWas7tGx!B+1i@PR6lZ~H zZKcVa@N_WwxRRwjh{u2gIN@vohPRGOCd(^JfQ*`Kr7X>OdUBYuBA8dDEG_n%k%1wx zL_ffrkx7IZ;vJALRx3-h%P@hZCI_krV_3kCVu8!#|H^V;rzxmNGZivT?q`yn9Hqjg zfbK4R6m2U&3Z*B{S5cDRGbK3c&%8FLE(QjM4-5<p8gPXS3`-inPJW<b4tBDXsx;%# z$!4m7U|yH1G*d9k<U$sc$+uN`z(TK7rI|jlO%`C6m@Kab5z<qWW?~SST*#t6xk$}` zX|C+#ekSS3`_(kTE`F^h%~Y=l6_T24t1britguJOxnu?ghK&pi48kamk(peiuEw@O H2_y&r>zPhv diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 9e042b966d..ac071cb412 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -13,7 +13,7 @@ Timestamp = Annotated[ class Image(BaseModel): - id: int + id: str registry: str name: str version: str @@ -25,15 +25,14 @@ class Image(BaseModel): class ImageBrief(BaseModel): - id: int + id: str name: str version: str - jdbc_method: str class CreateDatabase(BaseModel): name: str - container_id: int + container_id: str is_public: bool is_schema_public: bool @@ -46,7 +45,7 @@ class UpdateView(BaseModel): class CreateContainer(BaseModel): name: str host: str - image_id: int + image_id: str privileged_username: str privileged_password: str ui_host: Optional[str] = None @@ -80,7 +79,7 @@ class UserBrief(BaseModel): class Container(BaseModel): - id: int + id: str name: str internal_name: str host: str @@ -91,7 +90,7 @@ class Container(BaseModel): class ContainerBrief(BaseModel): - id: int + id: str name: str image: ImageBrief internal_name: str @@ -100,18 +99,18 @@ class ContainerBrief(BaseModel): class ColumnBrief(BaseModel): - id: int + id: str name: str - database_id: int - table_id: int + database_id: str + table_id: str internal_name: str type: ColumnType alias: Optional[str] = None class TableBrief(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str description: Optional[str] = None internal_name: str @@ -403,7 +402,7 @@ class IdentifierTitle(BaseModel): """ Title of an identifier. See external documentation: https://support.datacite.org/docs/datacite-metadata-schema-v44-mandatory-properties#3-title. """ - id: int + id: str title: str language: Optional[Language] = None type: Optional[TitleType] = None @@ -416,11 +415,11 @@ class CreateIdentifierTitle(BaseModel): class SaveIdentifierTitle(CreateIdentifierTitle): - id: int + id: str class IdentifierDescription(BaseModel): - id: int + id: str description: str language: Optional[Language] = None type: Optional[DescriptionType] = None @@ -433,11 +432,11 @@ class CreateIdentifierDescription(BaseModel): class SaveIdentifierDescription(CreateIdentifierDescription): - id: int + id: str class IdentifierFunder(BaseModel): - id: int + id: str funder_name: str funder_identifier: Optional[str] = None funder_identifier_type: Optional[str] = None @@ -456,7 +455,7 @@ class CreateIdentifierFunder(BaseModel): class SaveIdentifierFunder(CreateIdentifierFunder): - id: int + id: str class License(BaseModel): @@ -550,7 +549,7 @@ class AffiliationIdentifierSchemeType(str, Enum): class Creator(BaseModel): - id: int + id: str creator_name: str firstname: Optional[str] = None lastname: Optional[str] = None @@ -565,7 +564,7 @@ class Creator(BaseModel): class CreatorBrief(BaseModel): - id: int + id: str creator_name: str affiliation: Optional[str] = None name_type: Optional[str] = None @@ -590,11 +589,11 @@ class CreateIdentifierCreator(BaseModel): class SaveIdentifierCreator(CreateIdentifierCreator): - id: int + id: str class RelatedIdentifier(BaseModel): - id: int + id: str value: str type: RelatedIdentifierType relation: RelatedIdentifierRelation @@ -607,11 +606,11 @@ class CreateRelatedIdentifier(BaseModel): class SaveRelatedIdentifier(CreateRelatedIdentifier): - id: int + id: str class CreateIdentifier(BaseModel): - database_id: int + database_id: str type: IdentifierType creators: List[CreateIdentifierCreator] publication_year: int @@ -622,9 +621,9 @@ class CreateIdentifier(BaseModel): doi: Optional[str] = None language: Optional[str] = None licenses: Optional[List[License]] = field(default_factory=list) - query_id: Optional[int] = None - table_id: Optional[int] = None - view_id: Optional[int] = None + query_id: Optional[str] = None + table_id: Optional[str] = None + view_id: Optional[str] = None query: Optional[str] = None query_normalized: Optional[str] = None execution: Optional[str] = None @@ -636,12 +635,12 @@ class CreateIdentifier(BaseModel): class IdentifierSave(CreateIdentifier): - id: int + id: str class Identifier(BaseModel): - id: int - database_id: int + id: str + database_id: str type: IdentifierType owner: UserBrief status: IdentifierStatusType @@ -654,9 +653,9 @@ class Identifier(BaseModel): doi: Optional[str] = None language: Optional[str] = None licenses: Optional[List[License]] = field(default_factory=list) - query_id: Optional[int] = None - table_id: Optional[int] = None - view_id: Optional[int] = None + query_id: Optional[str] = None + table_id: Optional[str] = None + view_id: Optional[str] = None query: Optional[str] = None query_normalized: Optional[str] = None execution: Optional[str] = None @@ -668,8 +667,8 @@ class Identifier(BaseModel): class IdentifierBrief(BaseModel): - id: int - database_id: int + id: str + database_id: str type: IdentifierType owned_by: str status: IdentifierStatusType @@ -677,14 +676,14 @@ class IdentifierBrief(BaseModel): publisher: str titles: List[IdentifierTitle] doi: Optional[str] = None - query_id: Optional[int] = None - table_id: Optional[int] = None - view_id: Optional[int] = None + query_id: Optional[str] = None + table_id: Optional[str] = None + view_id: Optional[str] = None class View(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str query: str query_hash: str @@ -711,8 +710,8 @@ class History(BaseModel): class ViewBrief(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str internal_name: str is_public: bool @@ -724,7 +723,7 @@ class ViewBrief(BaseModel): class ConceptBrief(BaseModel): - id: int + id: str uri: str name: Optional[str] = None description: Optional[str] = None @@ -759,7 +758,7 @@ class TableStatistics(BaseModel): class UnitBrief(BaseModel): - id: int + id: str uri: str name: Optional[str] = None description: Optional[str] = None @@ -920,12 +919,12 @@ class IdentifierType(str, Enum): class Query(BaseModel): - id: int + id: str owner: UserBrief execution: Timestamp query: str type: QueryType - database_id: int + database_id: str query_hash: str is_persisted: bool result_hash: str @@ -957,10 +956,10 @@ class DataType(BaseModel): class Column(BaseModel): - id: int + id: str name: str - database_id: int - table_id: int + database_id: str + table_id: str ord: int internal_name: str is_null_allowed: bool @@ -986,10 +985,10 @@ class Column(BaseModel): class ViewColumn(BaseModel): - id: int + id: str name: str ord: int - database_id: int + database_id: str internal_name: str type: ColumnType is_null_allowed: bool @@ -1005,8 +1004,8 @@ class ViewColumn(BaseModel): class Table(BaseModel): - id: int - database_id: int + id: str + database_id: str name: str owner: UserBrief columns: List[Column] @@ -1027,7 +1026,7 @@ class Table(BaseModel): class DatabaseBrief(BaseModel): - id: int + id: str name: str contact: UserBrief owner_id: str @@ -1040,7 +1039,7 @@ class DatabaseBrief(BaseModel): class Database(BaseModel): - id: int + id: str name: str owner: UserBrief contact: UserBrief @@ -1060,13 +1059,13 @@ class Database(BaseModel): class Unique(BaseModel): - id: int + id: str table: TableBrief columns: List[ColumnBrief] class ForeignKeyReference(BaseModel): - id: int + id: str foreign_key: ForeignKeyBrief column: ColumnBrief referenced_column: ColumnBrief @@ -1084,11 +1083,11 @@ class ReferenceType(str, Enum): class ForeignKeyBrief(BaseModel): - id: int + id: str class ForeignKey(BaseModel): - id: int + id: str name: str references: List[ForeignKeyReference] table: TableBrief @@ -1106,7 +1105,7 @@ class CreateForeignKey(BaseModel): class PrimaryKey(BaseModel): - id: int + id: str table: TableBrief column: ColumnBrief -- GitLab